Skip to content
Permalink
Browse files

Change log for November 18, 2016 Vulkan 1.0.34 spec update:

  * Bump API patch number and header version number to 34 for this update.

Github Issues:

  * Allow vkUpdateDescriptorSets overflow to skip empty bindings. Clarify
    that unused bindings have a descriptorCount of zero. Improve some valid
    usage for vkUpdateDescriptorSets (public issue 256).
  * Require that slink:VkImageSubresourceRange always define a non-empty
    range of the resource (public issue 303).
  * Added valid usage for slink:VkPresentInfoKHR on the layout of presented
    images (public issue 397).

Internal Issues:

  * Add dependency in src/spec/Makefile so specversion.txt is regenerated
    when needed (internal issue 462).
  * Shorten the table of contents in the single-page ref page HTML output.
    Still working on the PDF (internal issue 536).
  • Loading branch information...
oddhack committed Nov 18, 2016
1 parent 6cdc56d commit 08310a88df8c803ac916102e7a364fff912e3281
@@ -32,7 +32,7 @@

# Python cache
__pycache__
.pyc
*.pyc

# Spec build generated, temporary, and output files

@@ -1598,3 +1598,26 @@ Other Issues:
+src/ext_loader/vulkan_ext.[ch]+ from +vk.xml+. This code can be
included in your project, and is expected to be packaged in the Vulkan
SDK provided by LunarG in the future.

-----------------------------------------------------

Change log for November 18, 2016 Vulkan 1.0.34 spec update:

* Bump API patch number and header version number to 34 for this update.

Github Issues:

* Allow vkUpdateDescriptorSets overflow to skip empty bindings. Clarify
that unused bindings have a descriptorCount of zero. Improve some valid
usage for vkUpdateDescriptorSets (public issue 256).
* Require that slink:VkImageSubresourceRange always define a non-empty
range of the resource (public issue 303).
* Added valid usage for slink:VkPresentInfoKHR on the layout of presented
images (public issue 397).

Internal Issues:

* Add dependency in src/spec/Makefile so specversion.txt is regenerated
when needed (internal issue 462).
* Shorten the table of contents in the single-page ref page HTML output.
Still working on the PDF (internal issue 536).
@@ -160,7 +160,7 @@ GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
# A generated included file containing the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.33
SPECREVISION = 1.0.34
SPECREMARK =

# Spec targets
@@ -706,7 +706,9 @@ include::../../api/structs/VkPresentInfoKHR.txt[]
****
* Any given element of pname:pImageIndices must: be the index of a
presentable image acquired from the swapchain specified by the
corresponding element of the pname:pSwapchains array
corresponding element of the pname:pSwapchains array, and the presented
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
layout at the time the operation is executed on a sname:VkDevice
* Any given element of sname:VkSemaphore in pname:pWaitSemaphores must:
refer to a prior signal of that sname:VkSemaphore that will not be
consumed by any other wait on that semaphore
@@ -658,6 +658,9 @@ graphics stages and the compute stage.
The above layout definition allows the descriptor bindings to be specified
sparsely such that not all binding numbers between 0 and the maximum binding
number need to be specified in the pname:pBindings array.
Bindings that are not specified have a pname:descriptorCount and
pname:stageFlags of zero, and the pname:descriptorType is treated as
undefined.
However, all binding numbers between 0 and the maximum binding number in the
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings array may: consume
memory in the descriptor set layout even if not all descriptor bindings are
@@ -1546,16 +1549,21 @@ If the pname:dstBinding has fewer than pname:descriptorCount array elements
remaining starting from pname:dstArrayElement, then the remainder will be
used to update the subsequent binding - pname:dstBinding+1 starting at array
element zero.
If a binding has a pname:descriptorCount of zero, it is skipped.
This behavior applies recursively, with the update affecting consecutive
bindings as needed to update all pname:descriptorCount descriptors.
All consecutive bindings updated via a single sname:VkWriteDescriptorSet
structure must: have identical pname:descriptorType and pname:stageFlags,
and must: all either use immutable samplers or must: all not use immutable
samplers.
structure, except those with a pname:descriptorCount of zero, must: have
identical pname:descriptorType and pname:stageFlags, and must: all either
use immutable samplers or must: all not use immutable samplers.

.Valid Usage
****
* pname:dstBinding must: be a valid binding point within pname:dstSet
* pname:dstBinding must: be less than or equal to the maximum value of
pname:binding of all slink:VkDescriptorSetLayoutBinding structures
specified when pname:dstSet's descriptor set layout was created
* pname:dstBinding must: be a binding with a non-zero
pname:descriptorCount
* pname:descriptorType must: match the type of pname:dstBinding within
pname:dstSet
* The sum of pname:dstArrayElement and pname:descriptorCount must: be less
@@ -264,13 +264,12 @@ The values for each sample must: be evaluated at the location of the sample.
The data associated with any other variables not decorated with code:Sample
and code:Input need not be evaluated independently for each sample.

If the pname:standardSampleLocations member of
slink:VkPhysicalDeviceFeatures is ename:VK_TRUE, then the sample counts
ename:VK_SAMPLE_COUNT_1_BIT, ename:VK_SAMPLE_COUNT_2_BIT,
ename:VK_SAMPLE_COUNT_4_BIT, ename:VK_SAMPLE_COUNT_8_BIT, and
ename:VK_SAMPLE_COUNT_16_BIT have sample locations as listed in the
following table, with the [eq]##i##th entry in the table corresponding to
bit [eq]#i# in the sample masks.
If the pname:standardSampleLocations member of slink:VkPhysicalDeviceLimits
is ename:VK_TRUE, then the sample counts ename:VK_SAMPLE_COUNT_1_BIT,
ename:VK_SAMPLE_COUNT_2_BIT, ename:VK_SAMPLE_COUNT_4_BIT,
ename:VK_SAMPLE_COUNT_8_BIT, and ename:VK_SAMPLE_COUNT_16_BIT have sample
locations as listed in the following table, with the [eq]##i##th entry in
the table corresponding to bit [eq]#i# in the sample masks.
ename:VK_SAMPLE_COUNT_32_BIT and ename:VK_SAMPLE_COUNT_64_BIT do not have
standard sample locations.
Locations are defined relative to an origin in the upper left corner of the
@@ -1571,13 +1571,14 @@ attachment descriptors, and framebuffer attachments.
.Valid Usage
****
* If pname:levelCount is not ename:VK_REMAINING_MIP_LEVELS,
[eq]#(pname:baseMipLevel + pname:levelCount)# must: be less than or
equal to the pname:mipLevels specified in slink:VkImageCreateInfo when
the image was created
[eq]#pname:levelCount# must: be non-zero and [eq]#(pname:baseMipLevel +
pname:levelCount)# must: be less than or equal to the pname:mipLevels
specified in slink:VkImageCreateInfo when the image was created
* If pname:layerCount is not ename:VK_REMAINING_ARRAY_LAYERS,
[eq]#(pname:baseArrayLayer + pname:layerCount)# must: be less than or
equal to the pname:arrayLayers specified in slink:VkImageCreateInfo when
the image was created
[eq]#pname:layerCount# must: be non-zero and [eq]#(pname:baseArrayLayer
+ pname:layerCount)# must: be less than or equal to the
pname:arrayLayers specified in slink:VkImageCreateInfo when the image
was created
****

include::../validity/structs/VkImageSubresourceRange.txt[]
@@ -21,7 +21,7 @@

from reflib import *
from vkapi import *
import argparse, copy, os, pdb, re, string, sys
import argparse, copy, io, os, pdb, re, string, sys

# Return True if name is a Vulkan extension name (ends with an upper-case
# author ID). This assumes that author IDs are at least two characters.
@@ -431,29 +431,31 @@ def genRef(specFile, baseDir):
# This assumes there's a page for everything in the vkapi.py dictionaries.
# Extensions (KHR, EXT, etc.) are currently skipped
def genSinglePageRef(baseDir):
pageName = baseDir + '/apispec.txt'
fp = open(pageName, 'w')
# Accumulate head of page
head = io.StringIO()

printCopyrightBlock(fp, comment=True)
printCopyrightBlock(head, comment=True)

# Removed autogenerated TOC. Unfortunately this doesn't work for the PDF
# target yet.
# ':toc2:',
# ':toclevels: 4',

print('Vulkan API Reference Pages',
'==========================',
'include::../specversion.txt[]',
'',
':doctype: book',
':numbered!:',
':toc2:',
':max-width: 200',
':numbered:',
':doctype: book',
':data-uri:',
':asciimath:',
':toclevels: 4',
':toc!:',
'',
sep='\n', file=fp)
sep='\n', file=head)

print('include::copyright-ccby.txt[]', file=fp)
print('', file=fp)
print('include::copyright-ccby.txt[]', file=head)
print('', file=head)

# Inject the table of contents. Asciidoc really ought to be generating
# this for us.
@@ -468,29 +470,53 @@ def genSinglePageRef(baseDir):
[ basetypes, 'basetypes', 'Vulkan Scalar types' ],
[ defines, 'defines', 'C Macro Definitions' ] ]

print('Table of Contents', file=fp)
print('-----------------', file=fp)
for (apiDict,label,title) in sections:
print(' * <<' + label + ',' + title + '>>', file=fp)
print('', file=fp)
# Accumulate body of page
body = io.StringIO()

print('Table of Contents', file=head)
print('-----------------', file=head)
for (apiDict,label,title) in sections:
# Add section title/xref to TOC
print(' * <<' + label + ',' + title + '>>', file=head)

# Add section title/anchor header to body
anchor = '[[' + label + ',' + title + ']]'
print(anchor,
title,
''.ljust(len(title), '-'),
'',
':leveloffset: 2',
'',
sep='\n', file=fp)
sep='\n', file=body)

# count = 0
for refPage in sorted(apiDict.keys()):
# if count > 3:
# continue
# count = count + 1

# Add page title/xref to TOC
print(' ** <<' + refPage + ',' + refPage + '>>', file=head)

# Add page to body
if apiDict == defines or not isextension(refPage):
print('include::' + refPage + '.txt[]', file=fp)
print('include::' + refPage + '.txt[]', file=body)
else:
print('// not including ' + refPage, file=fp)
print('\n' + ':leveloffset: 0' + '\n', file=fp)
print('// not including ' + refPage, file=body)
print('\n' + ':leveloffset: 0' + '\n', file=body)

# An index of pages could be generated here
print('', file=head)

# Write head and body to the output file
pageName = baseDir + '/apispec.txt'
fp = open(pageName, 'w')

print(head.getvalue(), file=fp, end='')
print(body.getvalue(), file=fp, end='')

head.close()
body.close()
fp.close()

if __name__ == '__main__':
global genDict
@@ -189,7 +189,7 @@ def lookupPage(pageMap, name):
# Load a file into a list of strings. Return the list or None on failure
def loadFile(filename):
try:
fp = open(filename, 'r')
fp = open(filename, 'r', encoding='utf-8')
except:
logWarn('Cannot open file', filename, ':', sys.exc_info()[0])
return None
@@ -387,7 +387,7 @@ def reflowFile(filename, overwrite, outDir, suffix):
outFilename = outDir + '/' + os.path.basename(filename) + suffix

try:
fp = open(outFilename, 'w')
fp = open(outFilename, 'w', encoding='utf8')
except:
logWarn('Cannot open output file', filename, ':', sys.exc_info()[0])
return None
@@ -79,11 +79,16 @@ $(EXTSRCS): $(VKH_DEPENDS)

# Documentation targets
ASCIIDOC = asciidoc
SPECDIR = ../../doc/specs/vulkan
SPECVERSION = $(SPECDIR)/specversion.txt

$(OUTDIR)/registry.html: registry.txt registry.conf Makefile
$(OUTDIR)/registry.html: registry.txt registry.conf Makefile $(SPECVERSION)
mkdir -p $(OUTDIR)
$(ASCIIDOC) -b html5 -f registry.conf -o $@ registry.txt

$(SPECVERSION):
$(MAKE) -C $(SPECDIR) specversion.txt

################################################

# Administrative stuff
@@ -113,7 +113,7 @@ a variety of ways to run on Windows, this is just one.
* Install python (32-bit works great): https://www.python.org/downloads/
* Ensure the pip module is installed (should be by default)
* Run the genvk.py script in C:\PathToVulkan\src\specfile
** C:\PathToPython\python.exe genvk.py vulkan.h
** C:\PathToPython\python3.exe genvk.py vulkan.h


[[history]]
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/python3
#
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
@@ -209,8 +209,8 @@ def makeGenOpts(extensions = [], protect = True, directory = '.'):
prefixText = prefixStrings + vkPrefixStrings,
alignFuncParam = 48)
]


# Generate a target based on the options in the matching genOpts{} object.
# This is encapsulated in a function so it can be profiled and/or timed.
# The args parameter is an parsed argument object containing the following
@@ -104,7 +104,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 33</type>
#define <name>VK_HEADER_VERSION</name> 34</type>

<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@@ -4559,5 +4559,23 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<enum value="&quot;VK_KHR_extension_88&quot;" name="VK_KHR_EXTENSION_88_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_89" number="89" author="NV" contact="James Jones @cubanismo" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_89_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_89&quot;" name="VK_EXT_EXTENSION_89_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_90" number="90" author="NV" contact="James Jones @cubanismo" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_90_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_90&quot;" name="VK_EXT_EXTENSION_90_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_91" number="91" author="NV" contact="James Jones @cubanismo" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_91_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_91&quot;" name="VK_EXT_EXTENSION_91_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>
@@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 33
#define VK_HEADER_VERSION 34


#define VK_NULL_HANDLE 0

0 comments on commit 08310a8

Please sign in to comment.
You can’t perform that action at this time.