Skip to content

Commit 8c3c9b4

Browse files
committed
Change log for March 25, 2016 Vulkan 1.0.7 spec update:
* Bump API patch number and header version number to 7 for this update. Github Issues: * Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict aliasing issues (public issue 14). * Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets validity language (public issue 33). * Add stub reference pages so xrefs to not-yet-written pages don't generate 404 errors. However, the actual content of these pages still needs to be filled in as time allows (public issue 44, but does not close that issue out). * Remove incorrect validity statement for flink:vkGetImageSparseMemoryRequirements (public issue 85). * Reword the <<features-limits-bufferImageGranularity,bufferImageGranularity>> feature in terms of "aliasing", and clarify that it applies to bindings in the same memory object (public issue 90). * Clarify the relationship of the slink:VkPhysicalDeviceLimits pname:maxViewportDimensions and pname:viewportBoundsRange limits (public issue 92). * Specify sparse unbound texture replacement in the <<textures-texel-replacement,Texel Replacement>> section independently of robust buffer access language (public issue 100). * Add the <<fundamentals-architecture-model,Architecture Model>> section to explain architecture constraints Vulkan has chosen to accept in order to enable portable and performant code (public issue 122). * State that an object must not be destroyed until *all* (not *any*) uses of that object have completed (public issue 123). * Minor editorial cleanup (public issues 129, 134, 146, 148). * Add validity language for layer and extension names to slink:VkDeviceCreateInfo matching that used for slink:VkInstanceCreateInfo (public issue 130). * Clean up terminology for the case when the bits set in one bitmask are a subset of the bits set in another bitmask (public issue 138). * Document that input attachments are UniformConstant not Input, in the <<interfaces-inputattachment,Fragment Input Attachment Interface>> section (public glslang bug 169). Internal Issues: * Add max enum values to "flag bits" enums (internal issue flutter#136). * Clarify language around the various uses of the term "block" in the <<appendix-compressedtex-bc,Block Compressed Image Formats>> section (internal issue flutter#202). * Removed "expand" dependency from <enums> groups in vk.xml and added auto-generation code in the scripts to infer it instead, to ensure consistency. This caused renaming of sname:VkColorSpaceKHR and sname:VkPresentModeKHR etext:BEGIN_RANGE (etc.) tokens, but those tokens are metadata, not part of the API, and the Vulkan WG is OK with this change. This change adds ranges to two additional enums that were missing them due to not defining the "expand" attribute (internal issue 217). * Tweak makefile to generate ref page nroff (.3) files in the right output directory, working around an a2x limitation (internal issue 223). Other Commits: * Add validity requirements for flink:vkCmdCopyQueryPoolResults pname:dstBuffer parameter. * Fix ref page build to generate .3 targets in the right output directory.
1 parent 13f85fa commit 8c3c9b4

File tree

284 files changed

+7672
-638
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

284 files changed

+7672
-638
lines changed

ChangeLog.txt

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,3 +273,89 @@ Other Commits:
273273

274274
* Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
275275
sets.
276+
277+
-----------------------------------------------------
278+
279+
Change log for March 25, 2016 Vulkan 1.0.7 spec update:
280+
281+
* Bump API patch number and header version number to 7 for this
282+
update.
283+
284+
Github Issues:
285+
286+
* Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
287+
aliasing issues (public issue 14).
288+
289+
* Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
290+
validity language (public issue 33).
291+
292+
* Add stub reference pages so xrefs to not-yet-written pages don't
293+
generate 404 errors. However, the actual content of these pages
294+
still needs to be filled in as time allows (public issue 44, but
295+
does not close that issue out).
296+
297+
* Remove incorrect validity statement for
298+
flink:vkGetImageSparseMemoryRequirements (public issue 85).
299+
300+
* Reword the
301+
<<features-limits-bufferImageGranularity,bufferImageGranularity>>
302+
feature in terms of "aliasing", and clarify that it applies to
303+
bindings in the same memory object (public issue 90).
304+
305+
* Clarify the relationship of the slink:VkPhysicalDeviceLimits
306+
pname:maxViewportDimensions and pname:viewportBoundsRange limits
307+
(public issue 92).
308+
309+
* Specify sparse unbound texture replacement in the
310+
<<textures-texel-replacement,Texel Replacement>> section
311+
independently of robust buffer access language (public issue 100).
312+
313+
* Add the <<fundamentals-architecture-model,Architecture Model>>
314+
section to explain architecture constraints Vulkan has chosen to
315+
accept in order to enable portable and performant code (public issue
316+
122).
317+
318+
* State that an object must not be destroyed until *all* (not *any*)
319+
uses of that object have completed (public issue 123).
320+
321+
* Minor editorial cleanup (public issues 129, 134, 146, 148).
322+
323+
* Add validity language for layer and extension names to
324+
slink:VkDeviceCreateInfo matching that used for
325+
slink:VkInstanceCreateInfo (public issue 130).
326+
327+
* Clean up terminology for the case when the bits set in one bitmask
328+
are a subset of the bits set in another bitmask (public issue 138).
329+
330+
* Document that input attachments are UniformConstant not Input, in
331+
the <<interfaces-inputattachment,Fragment Input Attachment
332+
Interface>> section (public glslang bug 169).
333+
334+
Internal Issues:
335+
336+
* Add max enum values to "flag bits" enums (internal issue #136).
337+
338+
* Clarify language around the various uses of the term "block" in the
339+
<<appendix-compressedtex-bc,Block Compressed Image Formats>> section
340+
(internal issue #202).
341+
342+
* Removed "expand" dependency from <enums> groups in vk.xml and added
343+
auto-generation code in the scripts to infer it instead, to ensure
344+
consistency. This caused renaming of sname:VkColorSpaceKHR and
345+
sname:VkPresentModeKHR etext:BEGIN_RANGE (etc.) tokens, but those
346+
tokens are metadata, not part of the API, and the Vulkan WG is OK
347+
with this change. This change adds ranges to two additional enums
348+
that were missing them due to not defining the "expand" attribute
349+
(internal issue 217).
350+
351+
* Tweak makefile to generate ref page nroff (.3) files in the right
352+
output directory, working around an a2x limitation (internal issue
353+
223).
354+
355+
Other Commits:
356+
357+
* Add validity requirements for flink:vkCmdCopyQueryPoolResults
358+
pname:dstBuffer parameter.
359+
360+
* Fix ref page build to generate .3 targets in the right output
361+
directory.

doc/specs/vulkan/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ ECHO:=echo
4444
# XHTMLDIR - 'xhtml' target
4545
# PDFDIR - 'pdf' target
4646
# CHECKDIR - 'allchecks' target
47-
OUTDIR :=../../../out/core
47+
OUTDIR :=../../../out/1.0
4848
HTMLDIR := $(OUTDIR)/html
4949
XHTMLDIR := $(OUTDIR)/xhtml
5050
PDFDIR := $(OUTDIR)/pdf
@@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
126126
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
127127
# A generated included file with the spec version, date, and git commit
128128
SPECVERSION = specversion.txt
129-
SPECREVISION = 1.0.6
129+
SPECREVISION = 1.0.7
130130
SPECREMARK =
131131

132132
# Spec targets

doc/specs/vulkan/appendices/compressedtex.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Format Specification.
2424
<<<
2525

2626
[[appendix-compressedtex-bc]]
27-
== Block Compressed Image Formats
27+
== Block-Compressed Image Formats
2828

2929
.Mapping of {apiname} BC formats to descriptions
3030
[width="90%",options="header",cols="5,4"]
@@ -86,7 +86,7 @@ chapter of the Khronos Data Format Specification.
8686
.Mapping of {apiname} ASTC formats to descriptions
8787
[width="75%",options="header",cols="63%,15%,22%"]
8888
|==============================
89-
| VkFormat ^| Block size ^| sRGB-encoded
89+
| VkFormat ^| Compressed texel block dimensions ^| sRGB-encoded
9090
| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK ^|latexmath:[$4\times 4$] ^|No
9191
| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK ^|latexmath:[$4\times 4$] ^|Yes
9292
| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK ^|latexmath:[$5\times 4$] ^|No

doc/specs/vulkan/appendices/extensions.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -415,14 +415,14 @@ The information needed to add new values to the XML are as follows:
415415
positive, if not specified.
416416

417417
Implicit is the registered number of an extension, which is used to create a
418-
block of unused values offset against a global extension base value.
419-
Individual enumerant values are calculated as offsets in that block. Values
418+
range of unused values offset against a global extension base value.
419+
Individual enumerant values are calculated as offsets in that range. Values
420420
are calculated as follows:
421421

422422
* base_value = 1000000000
423-
* block_size = 1000
423+
* range_size = 1000
424424
* enum_offset(extension_number,offset) = base_value +
425-
(extension_number - 1) × block_size + offset
425+
(extension_number - 1) × range_size + offset
426426
* Positive values: enum_offset(extension_number,offset)
427427
* Negative values: -enum_offset(extension_number,offset)
428428

doc/specs/vulkan/appendices/glossary.txt

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,14 @@ Compatible Queues::
139139
Queues within a queue family. Compatible queues have identical
140140
properties.
141141

142+
Compressed Texel Block::
143+
An element of an image having a block-compressed format, comprising a
144+
rectangular block of texel values that are encoded as a single value in
145+
memory. Compressed texel blocks of a particular block-compressed format
146+
have a corresponding width, height, and depth that define the dimensions
147+
of these elements in units of texels, and a size in bytes of the encoding
148+
in memory.
149+
142150
Cull Distance::
143151
A built-in output from vertex processing stages that defines a cull
144152
half-space where the primitive is rejected if all vertices have a
@@ -435,8 +443,8 @@ Memory Type::
435443

436444
Mip Tail Region::
437445
The set of mipmap levels of a sparse residency texture that are too
438-
small to fill a block, and that must all be bound to memory collectively
439-
and opaquely.
446+
small to fill a sparse block, and that must all be bound to memory
447+
collectively and opaquely.
440448

441449
Non-Dispatchable Handle::
442450
A handle of an integer handle type. Handle values may: not be unique,
@@ -607,6 +615,18 @@ Shader Stage::
607615
Side Effect::
608616
A store to memory or atomic operation on memory from a shader invocation.
609617

618+
Sparse Block::
619+
An element of a sparse resource that can be independently bound to memory.
620+
Sparse blocks of a particular sparse resource have a corresponding size
621+
in bytes that they use in the bound memory.
622+
623+
Sparse Image Block::
624+
A sparse block in a sparse partially-resident image. In addition to the
625+
sparse block size in bytes, sparse image blocks have a corresponding
626+
width, height, and depth that define the dimensions of these elements
627+
in units of texels or compressed texel blocks, the latter being used in
628+
case of sparse images having a block-compressed format.
629+
610630
Sparse Unbound Texel::
611631
A texel read from a region of a sparse texture that does not have
612632
memory bound to it.

doc/specs/vulkan/chapters/copies.txt

Lines changed: 63 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ Some rules for valid operation are common to all copy commands:
2828
* Copy regions must: be non-empty.
2929
* Regions must: not extend outside the bounds of the buffer or image
3030
level, except that regions of compressed images can: extend as far as
31-
the dimension of the image level rounded up to a complete block.
31+
the dimension of the image level rounded up to a complete compressed
32+
texel block.
3233
* Source image subresources must: be in either the
3334
ename:VK_IMAGE_LAYOUT_GENERAL or
3435
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL layout. Destination image
@@ -154,51 +155,57 @@ destination. pname:layerCount layers are copied to the destination image.
154155
The formats of pname:srcImage and pname:dstImage must: be compatible.
155156
Formats are considered compatible if their texel size in bytes is the same
156157
between both formats. For example, ename:VK_FORMAT_R8G8B8A8_UNORM is
157-
compatible with ename:VK_FORMAT_R32_UINT because because both texels are 4
158+
compatible with ename:VK_FORMAT_R32_UINT because both texels are 4
158159
bytes in size. Depth/stencil formats must: match exactly.
159160

160161
fname:vkCmdCopyImage allows copying between size-compatible compressed
161162
and uncompressed internal formats. Formats are size-compatible if the texel
162-
size of the uncompressed format is equal to the block size in bytes of the
163-
compressed format. Such a copy does not perform on-the-fly compression or
164-
decompression. When copying from an uncompressed format to a compressed
165-
format, each texel of uncompressed data becomes a single block of compressed
166-
data. When copying from a compressed format to an uncompressed format, a
167-
block of compressed data becomes a single texel of uncompressed data. Thus,
168-
for example, it is legal to copy between a 128-bit uncompressed format and a
169-
compressed format which uses 8-bit/texel 4x4 blocks, or between a 64-bit
170-
uncompressed format and a compressed format which uses 4-bit/texel 4x4
171-
blocks.
163+
size of the uncompressed format is equal to the compressed texel block size in
164+
bytes of the compressed format. Such a copy does not perform on-the-fly
165+
compression or decompression. When copying from an uncompressed format to a
166+
compressed format, each texel of uncompressed data of the source image is
167+
copied as a raw value to the corresponding compressed texel block of the
168+
destination image. When copying from a compressed format to an uncompressed
169+
format, each compressed texel block of the source image is copied as a raw
170+
value to the corresponding texel of uncompressed data in the destination
171+
image. Thus, for example, it is legal to copy between a 128-bit uncompressed
172+
format and a compressed format which has a 128-bit sized compressed texel
173+
block representing 4x4 texels (using 8 bits per texel), or between a 64-bit
174+
uncompressed format and a compressed format which has a 64-bit sized
175+
compressed texel block representing 4x4 texels (using 4 bits per texel).
172176

173177
When copying between compressed and uncompressed formats the pname:extent
174178
members represent the texel dimensions of the source image and not the
175179
destination. When copying from a compressed image to an uncompressed image
176180
the image texel dimensions written to the uncompressed image will be source
177-
extent divided by the block size. When copying from an uncompressed image to
178-
a compressed image the image texel dimensions written to the compressed
179-
image will be the source extent multiplied by the block size. In both cases
180-
the number of bytes read and the number of bytes written will be identical.
181+
extent divided by the compressed texel block dimensions. When copying from an
182+
uncompressed image to a compressed image the image texel dimensions written
183+
to the compressed image will be the source extent multiplied by the
184+
compressed texel block dimensions. In both cases the number of bytes read and
185+
the number of bytes written will be identical.
181186

182187
Copying to or from block-compressed images is typically done in multiples of
183-
the block. For this reason the pname:extent must: be a multiple of the
184-
block dimension. There is one exception to this rule which is required: to
185-
handle compressed images created with dimensions that are not a multiple
186-
of the block dimensions. If the pname:srcImage is compressed and if
187-
pname:extent.width is not a multiple of the block width then
188-
(pname:extent.width + pname:srcOffset.x) must: equal the subresource width,
189-
if pname:extent.height is not a multiple of the block height then
190-
(pname:extent.height + pname:srcOffset.y) must: equal
191-
the subresource height and if pname:extent.depth is not a multiple of the
192-
block depth then (pname:extent.depth + pname:srcOffset.z) must: equal
193-
the subresource depth. Similarily if the pname:dstImage is compressed and
194-
if pname:extent.width is not a multiple of the block width then
195-
(pname:extent.width + pname:dstOffset.x) must: equal the subresource width,
196-
if pname:extent.height is not a multiple of the block height then
197-
(pname:extent.height + pname:dstOffset.y) must: equal
198-
the subresource height and if pname:extent.depth is not a multiple of the
199-
block depth then (pname:extent.depth + pname:dstOffset.z) must: equal
200-
the subresource depth. This allows the last block of the image in each
201-
non-multiple dimension to be included as a source or target of the copy.
188+
the compressed texel block. For this reason the pname:extent must: be a
189+
multiple of the compressed texel block dimension. There is one exception to
190+
this rule which is required: to handle compressed images created with
191+
dimensions that are not a multiple of the compressed texel block dimensions.
192+
If the pname:srcImage is compressed and if pname:extent.width is not a
193+
multiple of the compressed texel block width then (pname:extent.width +
194+
pname:srcOffset.x) must: equal the subresource width, if pname:extent.height
195+
is not a multiple of the compressed texel block height then
196+
(pname:extent.height + pname:srcOffset.y) must: equal the subresource height
197+
and if pname:extent.depth is not a multiple of the compressed texel block
198+
depth then (pname:extent.depth + pname:srcOffset.z) must: equal the
199+
subresource depth. Similarily if the pname:dstImage is compressed and if
200+
pname:extent.width is not a multiple of the compressed texel block width then
201+
(pname:extent.width + pname:dstOffset.x) must: equal the subresource width, if
202+
pname:extent.height is not a multiple of the compressed texel block height
203+
then (pname:extent.height + pname:dstOffset.y) must: equal the subresource
204+
height and if pname:extent.depth is not a multiple of the compressed texel
205+
block depth then (pname:extent.depth + pname:dstOffset.z) must: equal the
206+
subresource depth. This allows the last compressed texel block of the image
207+
in each non-multiple dimension to be included as a source or destination of
208+
the copy.
202209

203210
fname:vkCmdCopyImage can: be used to copy image data between multisample
204211
images, but both images must: have the same number of samples.
@@ -330,8 +337,8 @@ buffer memory. Instead, pname:bufferOffset can: be used to
330337
select the starting address in buffer memory.
331338

332339
For block-compression formats, all parameters are still specified in texels
333-
rather than blocks, but the addressing math operates on whole blocks.
334-
Pseudocode for compressed copy addressing is:
340+
rather than compressed texel blocks, but the addressing math operates on
341+
whole compressed texel blocks. Pseudocode for compressed copy addressing is:
335342

336343
[source,c]
337344
---------------------------------------------------
@@ -343,28 +350,30 @@ imageHeight = region->bufferImageHeight;
343350
if (imageHeight == 0)
344351
imageHeight = region->imageExtent.height;
345352

346-
blockSizeInBytes = <block size taken from the src/dstImage>;
347-
rowLength /= blockWidth;
348-
imageHeight /= blockHeight;
353+
compressedTexelBlockSizeInBytes = <compressed texel block size taken from the src/dstImage>;
354+
rowLength /= compressedTexelBlockWidth;
355+
imageHeight /= compressedTexelBlockHeight;
349356

350-
address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * blockSizeInBytes;
357+
address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * compressedTexelBlockSizeInBytes;
351358

352-
where x,y,z range from (0,0,0) to region->imageExtent.{width/blockWidth,height/blockHeight,depth/blockDepth}.
359+
where x,y,z range from (0,0,0) to region->imageExtent.{width/compressedTexelBlockWidth,height/compressedTexelBlockHeight,depth/compressedTexelBlockDepth}.
353360
---------------------------------------------------
354361

355362
Copying to or from block-compressed images is typically done in multiples of
356-
the block. For this reason the pname:imageExtent must: be a multiple of the
357-
block dimension. There is one exception to this rule which is required: to
358-
handle compressed images created with dimensions that are not a multiple of
359-
the block dimensions. If pname:imageExtent.width is not a multiple of the
360-
block width then (pname:imageExtent.width + pname:imageOffset.x) must: equal
361-
the subresource width, if pname:imageExtent.height is not a multiple of the
362-
block height then (pname:imageExtent.height + pname:imageOffset.y) must:
363-
equal the subresource height and if pname:imageExtent.depth is not a
364-
multiple of the block depth then (pname:imageExtent.depth +
365-
pname:imageOffset.z) must: equal the subresource depth. This allows the last
366-
block of the image in each non-multiple dimension to be included as a source
367-
or target of the copy.
363+
the compressed texel block. For this reason the pname:imageExtent must: be a
364+
multiple of the compressed texel block dimension. There is one exception to
365+
this rule which is required: to handle compressed images created with
366+
dimensions that are not a multiple of the compressed texel block dimensions.
367+
If pname:imageExtent.width is not a multiple of the compressed texel block
368+
width then (pname:imageExtent.width + pname:imageOffset.x) must: equal the
369+
subresource width, if pname:imageExtent.height is not a multiple of the
370+
compressed texel block height then (pname:imageExtent.height +
371+
pname:imageOffset.y) must: equal the subresource height and if
372+
pname:imageExtent.depth is not a multiple of the compressed texel block depth
373+
then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
374+
subresource depth. This allows the last compressed texel block of the image
375+
in each non-multiple dimension to be included as a source or destination of
376+
the copy.
368377

369378

370379
[[copies-imagescaling]]

doc/specs/vulkan/chapters/devsandqueues.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,9 @@ include::../validity/structs/VkQueueFamilyProperties.txt[]
220220

221221
For further details see <<devsandqueues-queues,Queues>>.
222222

223-
The value returned in pname:minImageTransferGranularity has a unit of blocks
224-
for images having a block compressed format, and a unit of texels otherwise.
223+
The value returned in pname:minImageTransferGranularity has a unit of
224+
compressed texel blocks for images having a block-compressed format, and a
225+
unit of texels otherwise.
225226

226227
Possible values of pname:minImageTransferGranularity are:
227228

@@ -257,8 +258,9 @@ Possible values of pname:minImageTransferGranularity are:
257258
equal the depth of the image subresource corresponding to the
258259
parameter.
259260
** If the format of the image corresponding to the parameters is one of
260-
the block compressed formats then for the purposes of the above
261-
calculations the granularity must: be scaled up by the block size.
261+
the block-compressed formats then for the purposes of the above
262+
calculations the granularity must: be scaled up by the compressed
263+
texel block dimensions.
262264

263265
Queues supporting graphics and/or compute operations must: report
264266
latexmath:[$(1,1,1)$] in pname:minImageTransferGranularity, meaning that

0 commit comments

Comments
 (0)