Vulkan-Docs/doc/specs/vulkan/genspec.py

116 lines
4.0 KiB
Python
Raw Normal View History

Change log for July 1, 2016 Vulkan 1.0.19 spec update: * Bump API patch number and header version number to 19 for this update. Github Issues: * Clarified how flink:vkGetImageSubresourceLayout interacts with image layouts (public issue 247). * Remove ename:VK_IMAGE_LAYOUT_PREINITIALIZED from valid usage rule for slink:VkImageMemoryBarrier::pname:oldLayout. It is only valid if it is the current layout (public issue 248). * Modify valid usage for flink:vkBindBufferMemory so implementations are free to require a different backing memory size than the buffer size (public issue 251). * Clarify that filtering rules for flink:vkCmdBlitImage always apply, and are usually no-ops if the formats are the same (public issue 253). * Remove 'non-sparse' from description of flink:vkGetBufferMemoryRequirements and flink:vkGetImageMemoryRequirements (public issue 257). * Remove ename:VK_ERROR_LAYER_NOT_PRESENT error code from flink:vkCreateDevice (public issue 259). * Change "must not" to "should not" in constraint on when flink:vkAcquireNextImageKHR is called in the +VK_KHR_swapchain+ branch (public issue 262). * Change type of flink:vkCmdUpdateBuffer::pname:pData from basetype:uint32_t* to basetype:void* (public issue 263). * Change should: to must: in description of where additional segments are placed in the <<[tessellation-tessellator-spacing,Tessellator Spacing>> section (public issue 264). Internal Issues: * Normalize the language of all the compute shader built-ins in the <<interfaces-builtin-variables,Built-in Variables>> section (internal issue 323). * Remove definition of presentation engine internal queue lengths associated with ename:VK_PRESENT_MODE_FIFO_KHR and ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the <<Window System Integration,wsi>> chapter (internal issue 374). * The language of a Note was too broad, and implied that loaders for a given OS would statically export functions for WSI extensions that weren't relevant to (or supported on) the OS. Also, removed "Khronos-provided" since the Android loader isn't (internal issue 380) Other Commits: * Add ename:VK_INCOMPLETE to list of return values for flink:vkGetPipelineCacheData. Spec says this value is returnable, but it wasn't listed in the error codes. * Fix "correponds" typo in member definitions for slink:VkSubpassDescription.
2016-07-01 02:34:54 +00:00
#!/usr/bin/python3
import time
from datetime import timedelta, date
# These can be changed to tags, etc.
coreBranch = '1.0'
wsiBranch = '1.0-wsi_extensions'
# This script builds a full release package including XHTML and PDF
# versions of the specified branches (usually 1.0 and 1.0-wsi_extensions,
# but tags or commits can be used as well). Other files in the release
# directory are removed, including man pages, XHTML chunked, HTML,
# validity output, etc.
#
# Both branches must be fully committed and up to date when the script
# is run, with no outstanding un-added / un-committed files. Both
# branches must have fully regenerated all automatically generated
# files. After completing the build, the current branch is set to
# the first (core) branch and suggestions for creating tags are printed out.
# Return a date for the current, or upcoming if not already, Friday,
# which is when releases happen
def buildOnFriday():
today = date.today()
friday = today + timedelta((4 - today.weekday()) % 7)
return friday
# branch = branch or commit or tag name
# label = textual label to apply
# outdir = directory to generate specs in
# xmlDir = directory containing registry XML
# xmlTargets = targets to build in src/spec/
# specDir = directory containing spec source & Makefile
# specTargets = targets to build in doc/specs/vulkan/
# miscSrc = path to copy misc files from, if non-None
# miscDst = path to copy misc files to, if non-None
def buildRelease(branch, label, outdir,
xmlDir, xmlTargets,
specDir, specTargets,
miscSrc = None, miscDst = None):
print('echo Info: Generating branch=' + branch,
'label=' + label,
'outdir=' + outdir)
print('git checkout', branch)
print('echo Info: Cleaning spec in', outdir)
print('cd', specDir)
print('rm -rf',
outdir + '/man',
outdir + '/xhtml',
outdir + '/pdf',
outdir + '/chunked',
outdir + '/style',
outdir + '/vkspec.html',
'styleguide.html',
'specversion.txt')
print('echo Info: Generating headers and spec include files')
print('cd', xmlDir)
print('make OUTDIR=' + outdir, xmlTargets)
print('echo Info: Generating spec')
print('cd', specDir)
print('make specversion.txt')
print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"',
specTargets)
print('rm', outdir + '/pdf/vkspec.xml')
if (miscSrc != None and miscDst != None):
print('cp', miscSrc + '/*.txt', miscDst + '/')
# Build all target branches
# repoDir = path to the Vulkan git repo containing the specs
# outDir = path to the output base directory in which each branch is generated
def buildBranch(branch, coreTargets, repoDir, outDir):
# Directory with vk.xml and generation tools
xmlDir = repoDir + '/src/spec'
# Directory with spec sources
specDir = repoDir + '/doc/specs/vulkan'
# Src/dst directories with misc. GLSL extension specs
miscSrc = repoDir + '/doc/specs/misc'
miscDst = outDir + '/misc'
# Generate specs
if (coreTargets):
xmlTargets = 'clobber full_install pdf_install'
specTargets = 'xhtml pdf styleguide manhtml manpdf manhtmlpages'
else:
xmlTargets = 'clobber full_install'
specTargets = 'xhtml pdf'
buildRelease(branch, branch, outDir + '/' + branch,
xmlDir, xmlTargets, specDir, specTargets,
miscSrc, miscDst)
# Commands to tag the git branches
# tagdate = date to tag the tree with when done
def createTags(tagdate):
global coreBranch, wsiBranch
# Tag date in YYYYMMDD format
now = tagdate.strftime('%Y%m%d')
print('echo To tag the spec branches, execute these commands:')
print('echo git checkout', coreBranch)
print('echo git tag -a -m \\"Tag core API specification for', now,
'release\\"', 'v1.0-core-' + now)
print('echo git checkout', wsiBranch)
print('echo git tag -a -m \\"Tag core+WSI API specification for', now,
'release\\"', 'v1.0-core+wsi-' + now)