diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index 89eb723e..57a8bb8a 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -2,6 +2,8 @@ // Copyright notice at https://www.khronos.org/registry/speccopyright.html [appendix] + +[[extensions]] = Layers & Extensions Extensions to the {apiname} API can: be defined by authors, groups of @@ -118,25 +120,28 @@ only for layers. an author prefix can: instead use a fully-qualified domain name (FQDN) in reverse-order as an author prefix, using all lower-case characters, and replacing +.+ (period) with `_` (underscore) characters. For - example, a layer written by the owner of www.3dxcl.com would use the - prefix `VK_LAYER_com_3dxcl_www_`. FQDNs must: be encoded in UTF-8. + example, a layer written by the owner of www.3dxcl.invalid would use + the prefix `VK_LAYER_invalid_3dxcl_www_`. FQDNs must: be encoded in + UTF-8. + +[NOTE] +.Note +==== +To avoid linking to a nonexistent domain, the reserved TLD +.invalid+ is +used. +==== -== Extension Command, Token, and Type Naming Conventions +[[extensions-naming]] +== Extension Command, Type, and Token Naming Conventions -Extensions may: add new commands, tokens, and types, or collectively -``objects'' to the {apiname} API. These objects also require globally unique -names. These names shall conform to the following template: +Extensions may: add new commands, types, and tokens, or collectively +``objects'', to the {apiname} API. These objects are given globally unique +names by appending the author prefix defined above for the extension name +according to the following templates. -["source","{basebackend@docbook:c++:cpp}",title=""] ------------------------------------------------------------------------------- -vk ------------------------------------------------------------------------------- - -Where +ExtensionAuthorPrefix+ is equal to that of the prefixes defined above -for extension names with the exception that a leading `_` (underscore) is -added for non-Khronos extensions. For example, a Khronos-blessed extension -could expose the following command: +A command or type name simply appends the author prefix. For example, a +Khronos-blessed extension could expose the following command: ["source","{basebackend@docbook:c++:cpp}",title=""] ------------------------------------------------------------------------------ @@ -150,14 +155,16 @@ A Google extension could expose the following command: void vkDoSomethingGOOGLE(void); ------------------------------------------------------------------------------ -A multi-author extension could expose the following type: +And a multi-author extension could expose the following type: ["source","{basebackend@docbook:c++:cpp}",title=""] ------------------------------------------------------------------------------ typedef struct VkSomeDataEXT; ------------------------------------------------------------------------------ -And a non-Khronos extension could expose this enumerant: +Enumeration or constant token names are constructed by following the token +name with `_` and the author prefix, so a non-Khronos extension could expose +this enumeration: ["source","{basebackend@docbook:c++:cpp}",title=""] ------------------------------------------------------------------------------ @@ -359,7 +366,7 @@ extensions. This includes the following: Extensions can: define their own enumeration types and assign any values to their enumerants that they like. Each enumeration has a private namespace, so collisions are not a problem. However, when extending existing -enumeration object with new values, care must: be taken to preserve global +enumeration objects with new values, care must: be taken to preserve global uniqueness of values. Enumerations which define new bitfields are treated specially as described in <> below. @@ -450,9 +457,9 @@ the following definitions were in effect: == Extension Objects, Enums, and Typedefs Expanding on previous discussion, extensions can: add values to existing -enums; and can: add their own objects, enums, typedefs, etc. This is done by -adding to <>. All such additions will be -included in the +vulkan.h+ header supplied by Khronos. +enums; and can: add their own commands, enums, typedefs, etc. This is done +by adding to <>. All such additions will +be included in the +vulkan.h+ header supplied by Khronos. [NOTE] .Note @@ -468,22 +475,23 @@ values to existing enums. The use of a +default:+ statement, within a == Extension Function Prototypes Function pointer declarations and function prototypes for all core {apiname} -API functions are included in the +vulkan.h+ file. These come from the +API commands are included in the +vulkan.h+ file. These come from the official XML specification of the {apiname} API hosted by Khronos. Function pointer declarations are also included in the +vulkan.h+ file for -all extension functions. Function prototypes for extensions may: be included -in +vulkan.h+. Extension functions that are part of the {apiname} ABI must: -be flagged in the XML. Prototypes will be included in +vulkan.h+ for all -extension functions that are part of the {apiname} ABI. +all commands defined by registered extensions. Function prototypes for +extensions may: be included in +vulkan.h+. Extension commands that are part +of the {apiname} ABI must: be flagged in the XML. Function prototypes will +be included in +vulkan.h+ for all extension commands that are part of the +{apiname} ABI. -An extension can: be considered platform specific, in which case, its -objects, functions, etc. are protected by #ifdefs. This is orthogonal to -whether a function is considered to be part of the {apiname} ABI. +An extension can: be considered platform specific, in which case its +interfaces in +vulkan.h+ are protected by #ifdefs. This is orthogonal to +whether an extension command is considered to be part of the {apiname} ABI. -The initial set of WSI extension functions are considered to be part of the -{apiname} ABI. Prototypes for these WSI functions are included in the -+vulkan.h+ provided by Khronos, though the platform-specific portions of +The initial set of WSI extension commands are considered to be part of the +{apiname} ABI. Function prototypes for these WSI commands are included in +the +vulkan.h+ provided by Khronos, though the platform-specific portions of +vulkan.h+ are protected by #ifdefs. [NOTE] @@ -498,27 +506,27 @@ these implementations. ==== -== Accessing Extension Function from Programs +== Accessing Extension Functions from Programs -The {apiname} API flink:vkGetInstanceProcAddr and flink:vkGetDeviceProcAddr -functions (i.e. GPA functions) can: be used in order to obtain addresses for -core and extension functions (per the description in -<>). Various -{apiname} API loaders can: be created on different platforms, which can: -statically export some or all of the core {apiname} API functions, and which -can: statically export some or all extension functions. If a loader -statically exports a function, an application can: link against that -function without needing to call a GPA function. +flink:vkGetInstanceProcAddr and flink:vkGetDeviceProcAddr can: be used in +order to obtain function pointer addresses for core and extension commands +(per the description in <>). Different {apiname} API loaders can: choose to statically +export functions for some or all of the core {apiname} API commands, and +can: statically export functions for some or all extension commands. If a +loader statically exports a function, an application can: link against that +function without needing to call one of the ftext:vkGet*ProcAddr commands. [NOTE] .Note ==== -As mentioned above, the {apiname} API loader on Android, Linux, and Windows -will export all core {apiname} API and WSI extension functions. The WSI -functions are considered special, because they are required for many +The Khronos-provided {apiname} API loader for Android, Linux, and Windows +exports functions for all core {apiname} API and WSI extension commands. The +WSI functions are considered special, because they are required for many applications. ==== + [[extensions-reserving-bitfield-values]] === Reserving Bitfield Values @@ -544,7 +552,7 @@ defined and locked down, it's safest to refer to the listed contact. == Extension Interactions Extensions modifying the behavior of existing commands should: provide -additional parameters by using the param:pNext field of an existing +additional parameters by using the pname:pNext field of an existing structure, pointing to a new structure defined by the extension, as described in the <> section. Extension structures defined by multiple extensions affecting the same structure can diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt index d43fdc62..41f42fce 100644 --- a/doc/specs/vulkan/appendices/spirvenv.txt +++ b/doc/specs/vulkan/appendices/spirvenv.txt @@ -153,7 +153,7 @@ The precision of double-precision instructions is at least that of single precision. For single precision (32 bit) instructions, precisions are required: to be at least as follows, unless decorated with RelaxedPrecision: -.Precision of core SPIRV Instructions +.Precision of core SPIR-V Instructions [options="header"] |==== |Instruction | Precision diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index a896d0f4..f989ffa1 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -241,7 +241,7 @@ include::../protos/vkCmdCopyImageToBuffer.txt[] structures specifying the regions to copy. Each region in pname:pRegions is copied from the specified region of the -source buffer to the specified region of the destination image. +source image to the specified region of the destination buffer. include::../validity/protos/vkCmdCopyImageToBuffer.txt[] @@ -456,7 +456,7 @@ following conversion rules apply: converted to sRGB color space before writing the pixel to the image. Signed and unsigned integers are converted by first clamping to the -representable range of destination format, then casting the value. +representable range of the destination format, then casting the value. [[copies-resolve]] @@ -470,11 +470,11 @@ include::../protos/vkCmdResolveImage.txt[] recorded. * pname:srcImage is the source image. * pname:srcImageLayout is the layout of the source image subresources for - the blit. + the resolve. * pname:dstImage is the destination image. * pname:dstImageLayout is the layout of the destination image subresources - for the blit. - * pname:regionCount is the number of regions to blit. + for the resolve. + * pname:regionCount is the number of regions to resolve. * pname:pRegions is a pointer to an array of slink:VkImageResolve structures specifying the regions to resolve. @@ -516,4 +516,4 @@ pname:height and pname:depth. Resolves are done layer by layer starting with pname:baseArrayLayer member of pname:srcSubresource for the source and pname:dstSubresource for the -destination. pname:layerCount layers are blitted to the destination image. +destination. pname:layerCount layers are resolved to the destination image. diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index e14f1ada..c9c8adf5 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -324,8 +324,7 @@ The members of sname:VkDeviceCreateInfo have the following meanings: * pname:ppEnabledLayerNames is a pointer to an array of pname:enabledLayerCount null-terminated UTF-8 strings containing the names of layers to enable for the created device. See the - <> - chapter for further details. + <> section for further details. * pname:enabledExtensionCount is the number of device extensions to enable. * pname:ppEnabledExtensionNames is a pointer to an array of diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index afd56f00..3c64b74f 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -4,7 +4,7 @@ [[drawing]] = Drawing Commands -_Drawing commands_ (command with ftext:Draw in the name) provoke work in a +_Drawing commands_ (commands with ftext:Draw in the name) provoke work in a graphics pipeline. Drawing commands are recorded into a command buffer and when executed by a queue, will produce work which executes according to the currently bound graphics pipeline. A graphics pipeline must: be bound to a diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 802374fc..0daacaee 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -80,16 +80,17 @@ The definition of sname:VkLayerProperties is: include::../structs/VkLayerProperties.txt[] - * pname:layerName is a null-terminated string specifying the name of the - layer. Use this name in the pname:ppEnabledLayerNames array in the - sname:VkInstanceCreateInfo given to fname:vkCreateInstance to enable - this layer in the instance. + * pname:layerName is a null-terminated UTF-8 string specifying the name of + the layer. Use this name in the pname:ppEnabledLayerNames array passed + in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo + structures passed to flink:vkCreateInstance and flink:vkCreateDevice, + respectively, to enable this layer for an instance or device. * pname:apiVersion is the {apiname} version the layer was written to, encoded as described in the <> section. * pname:implementationVersion is the version of this layer. It is an integer, increasing with backward compatible changes. - * pname:description is a null-terminated string providing additional + * pname:description is a null-terminated UTF-8 string providing additional details that can: be used by the application to identify the layer. include::../validity/structs/VkLayerProperties.txt[] diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 55723efc..bf07eeb4 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -377,14 +377,14 @@ check for the supported properties of individual formats. pname:shaderStorageImageReadWithoutFormat indicates whether storage images require a format qualifier to be specified when reading from storage images. If this feature is not enabled, the code:OpImageRead - instruction mustnot: have an code:OpImageType of code:Unknown. This also + instruction mustnot: have an code:OpTypeImage of code:Unknown. This also indicates whether shader modules can: declare the code:StorageImageReadWithoutFormat capability. * [[features-features-shaderStorageImageWriteWithoutFormat]] pname:shaderStorageImageWriteWithoutFormat indicates whether storage images require a format qualifier to be specified when writing to storage images. If this feature is not enabled, the code:OpImageWrite - instruction mustnot: have an code:OpImageType of code:Unknown. This also + instruction mustnot: have an code:OpTypeImage of code:Unknown. This also indicates whether shader modules can: declare the code:StorageImageWriteWithoutFormat capability. * [[features-features-shaderUniformBufferArrayDynamicIndexing]] @@ -429,7 +429,7 @@ check for the supported properties of individual formats. mustnot: be used in shader modules. This also indicates whether shader modules can: declare the code:ClipDistance capability. * [[features-features-shaderCullDistance]] pname:shaderCullDistance - indicates whether cull distances are suppored in shader code. If this + indicates whether cull distances are supported in shader code. If this feature is not enabled, the code:CullDistance built-in decoration mustnot: be used in shader modules. This also indicates whether shader modules can: declare the code:CullDistance capability. @@ -453,7 +453,7 @@ check for the supported properties of individual formats. return resource residency information are supported in shader code. If this feature is not enabled, the code:OpImageSparse* instructions mustnot: be used in shader code. This also indicates whether shader - modules can: declare the op:SparseResidency capability. The feature + modules can: declare the code:SparseResidency capability. The feature requires at least one of the ptext:sparseResidency* features to be supported. * [[features-features-shaderResourceMinLod]] pname:shaderResourceMinLod @@ -713,7 +713,7 @@ properties of the physical device: ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, or - enume:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit. For + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit. * [[features-limits-maxDescriptorSetSamplers]] @@ -917,14 +917,14 @@ properties of the physical device: * [[features-limits-subTexelPrecisionBits]] pname:subTexelPrecisionBits is the number of bits of precision in the division along an axis of an image used for minification and magnification filters. - latexmath[$2^\mathit{subTexelPrecisionBits}$] is the actual number of + latexmath:[$2^\mathit{subTexelPrecisionBits}$] is the actual number of divisions along each axis of the image represented. The filtering hardware will snap to these locations when computing the filtered results. * [[features-limits-mipmapPrecisionBits]] pname:mipmapPrecisionBits is the number of bits of division that the LOD calculation for mipmap fetching get snapped to when determining the contribution from each miplevel to - the mip filtered results. latexmath[$2^\mathit{mipmapPrecisionBits}$] is + the mip filtered results. latexmath:[$2^\mathit{mipmapPrecisionBits}$] is the actual number of divisions. + -- @@ -952,7 +952,7 @@ different equations in the spec). the code:Bias operand of image sampling operations in shader modules (or 0 if no code:Bias operand is provided to an image sampling operation) are clamped to the range - latexmath[$[-\mathit{maxSamplerLodBias},+\mathit{maxSamplerLodBias}]$]. + latexmath:[$[-\mathit{maxSamplerLodBias},+\mathit{maxSamplerLodBias}\]$]. See <>. * [[features-limits-maxSamplerAnisotropy]] pname:maxSamplerAnisotropy is the maximum degree of sampler anisotropy. The maximum degree of @@ -972,7 +972,7 @@ different equations in the spec). <>. * [[features-limits-viewportboundsrange]] pname:viewportBoundsRange[2] is the viewport bounds range - latexmath[$[\mathit{minimum},\mathit{maximum}]$]. See + latexmath:[$[\mathit{minimum},\mathit{maximum}\]$]. See <>. * [[features-limits-viewportSubPixelBits]] pname:viewportSubPixelBits is the number of bits of subpixel precision for viewport bounds. The @@ -1126,12 +1126,12 @@ different equations in the spec). least 2, and levels must: be spread evenly over the range, with at least one level at 1.0, and another at 0.0. See <>. * [[features-limits-pointSizeRange]] pname:pointSizeRange[2] is the range - latexmath[$[\mathit{minimum},\mathit{maximum}]$] of supported sizes for - points. Values written to variables decorated with the code:PointSize - built-in decoration are clamped to this range. + latexmath:[$[\mathit{minimum},\mathit{maximum}\]$] of supported sizes + for points. Values written to variables decorated with the + code:PointSize built-in decoration are clamped to this range. * [[features-limits-lineWidthRange]] pname:lineWidthRange[2] is the range - latexmath[$[\mathit{minimum},\mathit{maximum}]$] of supported widths for - lines. Values specified by the pname:lineWidth member of the + latexmath:[$[\mathit{minimum},\mathit{maximum}\]$] of supported widths + for lines. Values specified by the pname:lineWidth member of the sname:VkPipelineRasterizationStateCreateInfo or the pname:lineWidth parameter to fname:vkCmdSetLineWidth are clamped to this range. * [[features-limits-pointSizeGranularity]] pname:pointSizeGranularity is @@ -1181,8 +1181,9 @@ different equations in the spec). For all bitmasks of type elink:VkSampleCountFlags above, the bits which can: be set include: + +-- include::../enums/VkSampleCountFlagBits.txt[] -+ + The sample count limits defined above represent the minimum supported sample counts for each image type. Individual images may: support additional sample counts, which are queried using @@ -1190,6 +1191,7 @@ flink:vkGetPhysicalDeviceImageFormatProperties. The sample count limits for images only apply to images created with the pname:tiling set to ename:VK_IMAGE_TILING_OPTIMAL. For ename:VK_IMAGE_TILING_LINEAR images the only supported sample count is ename:VK_SAMPLE_COUNT_1_BIT. +-- include::../validity/structs/VkPhysicalDeviceLimits.txt[] @@ -1334,7 +1336,7 @@ the same whether or not the feature is enabled. |maxMemoryAllocationCount |- |4096 | min |maxSamplerAllocationCount |- |4000 | min |bufferImageGranularity |- |131072 | max -|sparseAddressSpaceSize | 0 | 2 GB | min +|sparseAddressSpaceSize | 0 | 2^31^ | min |maxBoundDescriptorSets |- |4 | min |maxPerStageDescriptorSamplers |- |16 | min |maxPerStageDescriptorUniformBuffers|- |12 | min diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index 0d53281a..356e428d 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -376,7 +376,7 @@ include::../protos/vkCmdSetStencilWriteMask.txt[] * pname:commandBuffer is the command buffer into which the command will be recorded. * pname:faceMask is a bitmask of elink:VkStencilFaceFlagBits specifying - the set of stencil state for which to update the compare mask, as + the set of stencil state for which to update the write mask, as described above for flink:vkCmdSetStencilCompareMask. * pname:writeMask is the new value to use as the stencil write mask. @@ -391,7 +391,7 @@ include::../protos/vkCmdSetStencilReference.txt[] * pname:commandBuffer is the command buffer into which the command will be recorded. * pname:faceMask is a bitmask of elink:VkStencilFaceFlagBits specifying - the set of stencil state for which to update the compare mask, as + the set of stencil state for which to update the reference value, as described above for flink:vkCmdSetStencilCompareMask. * pname:reference is the new value to use as the stencil reference value. diff --git a/doc/specs/vulkan/chapters/initialization.txt b/doc/specs/vulkan/chapters/initialization.txt index d4589d9f..cb7f4965 100644 --- a/doc/specs/vulkan/chapters/initialization.txt +++ b/doc/specs/vulkan/chapters/initialization.txt @@ -126,7 +126,8 @@ include::../structs/VkInstanceCreateInfo.txt[] * pname:enabledLayerCount is the number of global layers to enable. * pname:ppEnabledLayerNames is a pointer to an array of pname:enabledLayerCount null-terminated UTF-8 strings containing the - names of layers to enable. + names of layers to enable for the created instance. See the + <> section for further details. * pname:enabledExtensionCount is the number of global extensions to enable. * pname:ppEnabledExtensionNames is a pointer to an array of diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 83e97a81..2ee4e4b8 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -96,7 +96,7 @@ interface block must: match exactly, as described above. At an interface involving the fragment shader inputs, the presence or absence of any built-in output does not affect the interface matching. -Any input value to a shader stage is well-defined as long as the preceeding +Any input value to a shader stage is well-defined as long as the preceding stages writes to a matching output, as described above. Additionally, scalar and vector inputs are well-defined if there @@ -165,7 +165,7 @@ order. The locations consumed by block and structure members are determined by applying the rules above in a depth-first traversal of the instantiated -members as though the structure or block member were declared as in input or +members as though the structure or block member were declared as an input or output variable of the same type. Any two inputs listed as operands on the same code:OpEntryPoint mustnot: be @@ -217,7 +217,7 @@ and components 0 and 1 of the second location. This leaves components A scalar or two-component 64-bit data type mustnot: specify a code:Component decoration of 1 or 3. -A code:Component decoration mustnot: be specified any type that is +A code:Component decoration mustnot: be specified for any type that is not a scalar or vector. @@ -322,10 +322,10 @@ the fragment shader is executed in. The fragment shader input variables listed by code:OpEntryPoint with the code:Input storage class and a decoration of code:InputAttachmentIndex form the _fragment input attachment interface_. These variables must: -be declared with a type of code:OpImageType and a code:Dim operand +be declared with a type of code:OpTypeImage and a code:Dim operand of code:SubpassData. -A fragment shader input variable identified with a code:InputAttachmentIndex +A fragment shader input variable identified with an code:InputAttachmentIndex decoration of _i_ reads from the input attachment indicated by pname:pInputAttachments[_i_]. If the input variable is declared as an array of size N, it consumes N consecutive input attachments, starting @@ -539,7 +539,7 @@ that has a pname:binding equal to latexmath:[$b$] in pname:pSetLayouts[_s_] that was specified in slink:VkPipelineLayoutCreateInfo. The range of descriptor sets is between zero and -pname:maxBoundDescriptorSets minus one, inclusive. If a descriptor set value +pname:maxBoundDescriptorSets minus one. If a descriptor set value is statically used by an entry point there must: be an associated pname:pSetLayout in the corresponding pipeline layout as described in <>. @@ -613,7 +613,7 @@ depending on the specific resources. [[interfaces-resources-layout-std140]] *Standard Uniform Buffer Layout* -Member variables of an code:OpTypeStructure with storage class of +Member variables of an code:OpTypeStruct with storage class of code:Uniform and a decoration of code:Block (uniform buffers) must: be laid out according to the following rules. @@ -648,7 +648,7 @@ The *std140 layout* in GLSL satisfies these rules. [[interfaces-resources-layout-std430]] *Standard Storage Buffer Layout* -Member variables of an code:OpTypeStructure with a storage class of +Member variables of an code:OpTypeStruct with a storage class of code:PushConstant (push constants), or a storage class of code:Uniform with a decoration of code:BufferBlock (storage buffers) must: be laid out as <>, except @@ -735,7 +735,7 @@ location of the sample corresponding to the shader invocation when using sample shading. + The z component of code:FragCoord is the interpolated depth value of the -primitive, and the w components is the interpolated +primitive, and the w component is the interpolated latexmath:[$\frac{1}{w}$]. + The code:FragCoord decoration is only supported in fragment shaders. The @@ -976,7 +976,7 @@ vertex processing stage, the output position is used in subsequent primitive assembly, clipping and rasterization operations. + Variables decorated as code:Position mustnot: be used as inputs in vertex -shaders and are mustnot: be used in fragment or compute shaders. +shaders and mustnot: be used in fragment or compute shaders. + code:Position must: be declared as a four-component vector of 32-bit floating-point values. diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index b0844800..13ddda7c 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -102,7 +102,7 @@ If pname:pOriginal is `NULL`, then pname:pfnReallocation must: behave similarly to tlink:PFN_vkAllocationFunction. If pname:size is zero, then pname:pfnReallocation must: behave similarly to tlink:PFN_vkFreeFunction. The contents of the original allocation from bytes zero to -latexmath:[$\min(\textrm{original size, new size})-1$], inclusive, must: be +latexmath:[$\min(\textrm{original size, new size})-1$] must: be preserved in the new allocation. If the new allocation is larger than the old allocation, then the contents of the additional space are undefined. If pname:pOriginal is non-`NULL`, pname:alignment must: be equal to the diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt index 67ca1a79..84fa8c36 100644 --- a/doc/specs/vulkan/chapters/primsrast.txt +++ b/doc/specs/vulkan/chapters/primsrast.txt @@ -73,13 +73,13 @@ as follows: * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. * pname:flags is reserved for future use. - * pname:rasterizationSamples is an elink:VkSampleCountFlagBits specifying + * pname:rasterizationSamples is a elink:VkSampleCountFlagBits specifying the number of samples per pixel used in rasterization. * pname:sampleShadingEnable specifies that fragment shading executes per-sample if ename:VK_TRUE, or per-fragment if ename:VK_FALSE, as described in <>. - * pname:minSampleShading is the minimum number of unique samples to shade - for each fragment. + * pname:minSampleShading is the minimum fraction of sample shading, as + described in <>. * pname:pSampleMask is a bitmask of static coverage information that is ANDed with the coverage information generated during rasterization, as described in <>. @@ -235,10 +235,9 @@ latexmath:[$\max(\lceil{minSampleShading \times rasterizationSamples}\rceil, is the minimum fraction of sample shading and pname:rasterizationSamples is the number of samples requested in slink:VkPipelineMultisampleStateCreateInfo. These are associated with the -samples in an implementation-dependent manner. pname:minSampleShading must: -be in the range latexmath:[$[0,1\]$]. When the sample shading fraction is -1.0, a separate set of associated data are evaluated for each sample, and -each set of values is evaluated at the sample location. +samples in an implementation-dependent manner. When the sample shading +fraction is 1.0, a separate set of associated data are evaluated for each +sample, and each set of values is evaluated at the sample location. [[primsrast-points]] @@ -447,7 +446,7 @@ image:images/non_strict_lines.{svgpdf}["Non strict lines",{fullimagewidth}] A polygon results from the decomposition of a triangle strip, triangle fan or a series of independent triangles. Like points and line segments, -polygon rasterization is controled by several variables in the +polygon rasterization is controlled by several variables in the slink:VkPipelineRasterizationStateCreateInfo structure. diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt index 06c09a7f..c6fbdae2 100644 --- a/doc/specs/vulkan/chapters/queries.txt +++ b/doc/specs/vulkan/chapters/queries.txt @@ -362,7 +362,7 @@ uses of fname:vkCmdResetQueryPool in the same queue, without any additional synchronization. Thus, the results will always reflect the most recent use of the query. -pname:flags has the same possible values described above for the param:flags +pname:flags has the same possible values described above for the pname:flags parameter of flink:vkGetQueryPoolResults, but the different style of execution causes some subtle behavioral differences. Because fname:vkCmdCopyQueryPoolResults executes in order with respect to other @@ -438,7 +438,7 @@ non-zero. Not setting ename:VK_QUERY_CONTROL_PRECISE_BIT mode may: be more efficient on some implementations, and should: be used where it is sufficient to know a boolean result on whether any samples passed the per-fragment tests. In -this case, some implementations may: only return zero or one, indifferent of +this case, some implementations may: only return zero or one, indifferent to the actual number of samples passing the per-fragment tests. ==== @@ -505,7 +505,7 @@ These bits have the following meanings: * If ename:VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT is set, queries managed by the pool will count the number of geometry shader invocations. This counter's value is incremented each time a - geometry shader is <>. In case of + geometry shader is <>. In the case of <>, the geometry shader invocations count is incremented for each separate instanced invocation. diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index e4b04d13..d1439403 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -263,7 +263,7 @@ requirements. image::images/sparseimage.{svgpdf}[align="center", title="Sparse Image"] -In the absense of ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT and +In the absence of ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT and ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, each array layer contains a mip tail region containing pixel data for all mip levels smaller than the sparse block size in any dimension. @@ -479,7 +479,7 @@ understanding of sparse resources. .Device Virtual Address The basic pname:sparseBinding feature allows the resource to reserve its own -device virtual address range at resource creation time rather relying on a +device virtual address range at resource creation time rather than relying on a bind operation to set this. Without any other creation flags, no other constraints are relaxed compared to normal resources. All pages must: be bound to physical memory before the device accesses the resource. @@ -563,7 +563,7 @@ virtual address holes with this operation. .Binding Metadata Memory -All metadata for sparse images have their own sparse properties and is +All metadata for sparse images have their own sparse properties and are embedded in the mip tail region for said properties. See the <> section for details. diff --git a/doc/specs/vulkan/chapters/tessellation.txt b/doc/specs/vulkan/chapters/tessellation.txt index f2efa39b..1926bfe4 100644 --- a/doc/specs/vulkan/chapters/tessellation.txt +++ b/doc/specs/vulkan/chapters/tessellation.txt @@ -64,7 +64,7 @@ in strips stretching across the rectangle in the latexmath:[$u$] dimension for all tessellation evaluation shader invocations that share a line). Each vertex produced by the tessellator has an associated (u,v,w) or (u,v) -position in a normalized parameter space, with parameter values in the +position in a normalized parameter space, with parameter values in the range latexmath:[$[0,1\]$], as illustrated in figure <>. @@ -146,7 +146,7 @@ code:VertexOrderCcw, the vertices will be generated with counter-clockwise order. The vertices of a triangle are defined to be in counter-clockwise ordering -of the value +if the value [latexmath] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \[ diff --git a/doc/specs/vulkan/chapters/textures.txt b/doc/specs/vulkan/chapters/textures.txt index 79525d5c..b6e3a9ea 100644 --- a/doc/specs/vulkan/chapters/textures.txt +++ b/doc/specs/vulkan/chapters/textures.txt @@ -8,7 +8,7 @@ Image Operations are steps performed by SPIR-V image instructions, where those instructions which take an code:OpTypeImage (representing a -sname:VkImageView) or code:OpTypeImageSampler (representing a +sname:VkImageView) or code:OpTypeSampledImage (representing a (sname:VkImageView, sname:VkSampler) pair) and texel coordinates as operands, and return a value based on one or more neighboring texture elements (_texels_) in the image. @@ -37,10 +37,10 @@ SPIR-V Image Instructions include the following functionality: used in the sampling operation based on additional coordinates. ** Instructions with code:Proj in the name apply homogeneous <> to the coordinates. - * code:OpImageFetch and code:OpImageSparseFetch returns a single texel of + * code:OpImageFetch and code:OpImageSparseFetch return a single texel of the image. No sampler is used. * code:OpImage*code:Gather and code:OpImageSparse*code:Gather read - neighboring texels and <> of + neighboring texels and <> of each. * code:OpImageRead (and code:OpImageSparseRead) and code:OpImageWrite read and write, respectively, a texel in the image. No sampler is used. @@ -406,7 +406,7 @@ unnormalized texel coordinates, this is performed on the coordinates that result after <> to integer texel coordinates. -If the integer texel coordinates satifies any of the conditions +If the integer texel coordinates satisfy any of the conditions [latexmath] +++++++++++++++++++ \begin{align*} @@ -523,7 +523,7 @@ elink:VkFormat), using the appropriate equations in <>, <>, <>, -<>, and +<>, and <>. If the image format is sRGB, the color components are first converted as if @@ -734,7 +734,7 @@ code to a boolean value. _Texel output instructions_ are SPIR-V image instructions that write to an image. _Texel output operations_ are a set of steps that are performed on state, coordinates, and texel values while processing a texel output -instruction, and which are common to some or all texel ouitput instructions. +instruction, and which are common to some or all texel output instructions. They include the following steps, which are performed in the listed order: * <> @@ -845,7 +845,7 @@ dPdy & = \end{align*} +++++++++++++++++++ -code:OpDPdx and code:OpDPdy must return: the same result as either +code:OpDPdx and code:OpDPdy must: return the same result as either code:OpDPdxFine or code:OpDPdxCoarse and either code:OpDPdyFine or code:OpDPdyCoarse, respectively. Implementations must: make the same choice of either coarse or fine for both code:OpDPdx and code:OpDPdy, and @@ -929,7 +929,7 @@ transform the derivatives to per-face derivatives. === Cube Map Face Selection -The direction vector selects one of the cube maps face's layers based on the +The direction vector selects one of the cube map's faces based on the largest magnitude coordinate direction (the major axis direction). Since two or more coordinates can: have identical magnitude, the implementation must: have rules to disambiguate this situation. @@ -1571,7 +1571,7 @@ latexmath:[$(i,j,k)$] texel coordinates, with all texels taken from layer l. ++++++++++++++++++++++++ Within a miplevel, etext:LINEAR filtering computes a weighted average of 8 -(for 3D), 4 (for 2D or ube), or 2 (for 1D) texel values, using the weights +(for 3D), 4 (for 2D or Cube), or 2 (for 1D) texel values, using the weights computed earlier: [latexmath] diff --git a/doc/specs/vulkan/chapters/vertexpostproc.txt b/doc/specs/vulkan/chapters/vertexpostproc.txt index 2ad2b538..702b7bb1 100644 --- a/doc/specs/vulkan/chapters/vertexpostproc.txt +++ b/doc/specs/vulkan/chapters/vertexpostproc.txt @@ -284,10 +284,11 @@ latexmath:[$ \end{array}\right). $] -Multiple viewports are available and are numbered zero up to the value of -sname:VkPhysicalDeviceLimits::pname:maxViewports. The number of viewports -used by a pipeline is controlled by the pname:viewportCount member of the -sname:VkPipelineViewportStateCreateInfo structure used in pipeline creation: +Multiple viewports are available, numbered zero up to +sname:VkPhysicalDeviceLimits::pname:maxViewports minus one. The number of +viewports used by a pipeline is controlled by the pname:viewportCount member +of the sname:VkPipelineViewportStateCreateInfo structure used in pipeline +creation: include::../structs/VkPipelineViewportStateCreateInfo.txt[] diff --git a/doc/specs/vulkan/enums/VkCullModeFlagBits.txt b/doc/specs/vulkan/enums/VkCullModeFlagBits.txt index 72d142ca..3db86c9f 100644 --- a/doc/specs/vulkan/enums/VkCullModeFlagBits.txt +++ b/doc/specs/vulkan/enums/VkCullModeFlagBits.txt @@ -11,6 +11,6 @@ typedef enum VkCullModeFlagBits { VK_CULL_MODE_NONE = 0, VK_CULL_MODE_FRONT_BIT = 0x00000001, VK_CULL_MODE_BACK_BIT = 0x00000002, - VK_CULL_MODE_FRONT_AND_BACK = 0x3, + VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, } VkCullModeFlagBits; ------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/enums/VkStencilFaceFlagBits.txt b/doc/specs/vulkan/enums/VkStencilFaceFlagBits.txt index 2366ce2f..7dc64629 100644 --- a/doc/specs/vulkan/enums/VkStencilFaceFlagBits.txt +++ b/doc/specs/vulkan/enums/VkStencilFaceFlagBits.txt @@ -10,6 +10,6 @@ endif::doctype-manpage[] typedef enum VkStencilFaceFlagBits { VK_STENCIL_FACE_FRONT_BIT = 0x00000001, VK_STENCIL_FACE_BACK_BIT = 0x00000002, - VK_STENCIL_FRONT_AND_BACK = 0x3, + VK_STENCIL_FRONT_AND_BACK = 0x00000003, } VkStencilFaceFlagBits; ------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index d6768c85..1c9a9198 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -282,7 +282,7 @@ following table: something that should be rendered like a structure name, but is not actually one (e.g. is a wildcard or subset of an actual structure name). -| elink{cl} | Formats the macro argument as a Vulkan enumerantion +| elink{cl} | Formats the macro argument as a Vulkan enumeration name and links to the definition of that enumeration type. Example: ename{cl}VkResult -> ename:VkResult. | ename{cl} | Formats the macro argument as a Vulkan enumerant name. diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt index 9d605e35..f3ad2c1b 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt @@ -11,7 +11,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of a layer available on the system +* If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt index 359ead8c..7a202b76 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt @@ -10,7 +10,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of a layer available on the system +* If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt index 7c63a096..bf1b419f 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt @@ -22,9 +22,9 @@ endif::doctype-manpage[] * pname:imageExtent.height must: be a multiple of the block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height * pname:imageExtent.depth must: be a multiple of the block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth * pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> -* The pname:aspectMask member of pname:srcSubresource must: specify aspects present in the calling command's sname:VkImage parameter -* The pname:aspectMask member of pname:pSubresource must: only have a single bit set -* If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of both pname:srcSubresource and pname:dstSubresource must: be `0` and `1`, respectively +* The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter +* The pname:aspectMask member of pname:imageSubresource must: only have a single bit set +* If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkPipelineMultisampleStateCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkPipelineMultisampleStateCreateInfo.txt index a0e8eeb9..f56a27a1 100644 --- a/doc/specs/vulkan/validity/structs/VkPipelineMultisampleStateCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkPipelineMultisampleStateCreateInfo.txt @@ -14,6 +14,7 @@ endif::doctype-manpage[] * If pname:pSampleMask is not `NULL`, pname:pSampleMask must: be a pointer to an array of latexmath:[$\lceil{\mathit{rasterizationSamples} \over 32}\rceil$] basetype:VkSampleMask values * If the <> feature is not enabled, pname:sampleShadingEnable must: be ename:VK_FALSE * If the <> feature is not enabled, pname:alphaToOneEnable must: be ename:VK_FALSE +* pname:minSampleShading must: be in the range latexmath:[$[0,1\]$] ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkPipelineRasterizationStateCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkPipelineRasterizationStateCreateInfo.txt index f3a58b77..8052e5b9 100644 --- a/doc/specs/vulkan/validity/structs/VkPipelineRasterizationStateCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkPipelineRasterizationStateCreateInfo.txt @@ -14,7 +14,7 @@ endif::doctype-manpage[] * pname:cullMode must: be a valid combination of elink:VkCullModeFlagBits values * pname:frontFace must: be a valid elink:VkFrontFace value * If the <> feature is not enabled, the value of pname:depthClampEnable must: be ename:VK_FALSE -* If the <> feature is not enabled, the value of pname:fillMode must: be ename:VK_POLYGON_MODE_FILL +* If the <> feature is not enabled, the value of pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 2184e540..3e259602 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -1018,9 +1018,9 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:imageExtent.height must: be a multiple of the block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height pname:imageExtent.depth must: be a multiple of the block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>> - The pname:aspectMask member of pname:srcSubresource must: specify aspects present in the calling command's sname:VkImage parameter - The pname:aspectMask member of pname:pSubresource must: only have a single bit set - If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of both pname:srcSubresource and pname:dstSubresource must: be `0` and `1`, respectively + The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter + The pname:aspectMask member of pname:imageSubresource must: only have a single bit set + If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively @@ -1248,7 +1248,7 @@ maintained in the master branch of the Khronos Vulkan Github project. float lineWidth If the <<features-features-depthClamp,depth clamping>> feature is not enabled, the value of pname:depthClampEnable must: be ename:VK_FALSE - If the <<features-features-fillModeNonSolid,non-solid fill modes>> feature is not enabled, the value of pname:fillMode must: be ename:VK_POLYGON_MODE_FILL + If the <<features-features-fillModeNonSolid,non-solid fill modes>> feature is not enabled, the value of pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL @@ -1264,6 +1264,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If the <<features-features-sampleRateShading,sample rate shading>> feature is not enabled, pname:sampleShadingEnable must: be ename:VK_FALSE If the <<features-features-alphaToOne,alpha to one>> feature is not enabled, pname:alphaToOneEnable must: be ename:VK_FALSE + pname:minSampleShading must: be in the range latexmath:[$[0,1\]$] @@ -2279,7 +2280,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -2831,7 +2832,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -3021,7 +3022,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of a layer available on the system + If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties @@ -3037,7 +3038,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of a layer available on the system + If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index e195151a..d7abf682 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -992,7 +992,7 @@ typedef enum VkCullModeFlagBits { VK_CULL_MODE_NONE = 0, VK_CULL_MODE_FRONT_BIT = 0x00000001, VK_CULL_MODE_BACK_BIT = 0x00000002, - VK_CULL_MODE_FRONT_AND_BACK = 0x3, + VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, } VkCullModeFlagBits; typedef VkFlags VkCullModeFlags; typedef VkFlags VkPipelineMultisampleStateCreateFlags; @@ -1083,7 +1083,7 @@ typedef VkFlags VkCommandBufferResetFlags; typedef enum VkStencilFaceFlagBits { VK_STENCIL_FACE_FRONT_BIT = 0x00000001, VK_STENCIL_FACE_BACK_BIT = 0x00000002, - VK_STENCIL_FRONT_AND_BACK = 0x3, + VK_STENCIL_FRONT_AND_BACK = 0x00000003, } VkStencilFaceFlagBits; typedef VkFlags VkStencilFaceFlags;