Jon Leech 789549ff08 Change log for November 25, 2016 Vulkan 1.0.35 spec update:
* Bump API patch number and header version number to 35 for this update.

Github Issues:

  * Document in the <<memory-device-hostaccess,Host Access>> section that
    mapping and unmapping does not invalidate or flush the mapped memory
    (public issues 27, 126).
  * Redefine the entire <<synchronization>> chapter in terms of consistent
    and well defined terminology, that's called out at the start of the
    chapter. This terminology is applied equally to all synchronization
    types, including subpass dependencies, submissions, and much of the
    implicit ordering stuff dotted around the spec. Key terms are laid out
    in the <<synchronization-dependencies,Execution and Memory
    Dependencies>> section at the top of the rewritten chapter (public
    issues 128, 131, 132, 217, 299, 300, 302, 306, 322, 346, 347, 371, 407).
  * Specify order of submission for batches in the
    <<vkQueueSubmit,vkQueueSubmit>> and
    <<vkQueueBindSparse,vkQueueBindSparse>> commands (public issue 371).
  * Add valid usage statements to each of the WSI extension sections
    indicating that the WSI-specific structure parameters must be valid, and
    remove automatically generated valid usage statements now covered by the
    manual sections (public issue 383).
  * Clarify render pass compatibility for flink:vkCmdExecuteCommands (public
    issue 390).

Internal Issues:

  * Update +vk.xml+ to make previously explicit valid usage statements for
    <<vkDebugReportMessageEXT,vkDebugReportMessageEXT>> implicit instead
    (internal issue 553).
  * Add valid usage statement for slink:VkCreateImageInfo preventing
    creation of 1D sparse images (internal issue 573).
  * Fix Python scripts to always read/write files in utf-8 encoding, and a
    logic error in reflib.py which could cause a fatal error for
    malstructured asciidoc (internal issues 578, 586).
2016-11-26 02:33:44 -08:00

174 lines
6.1 KiB
Python

#!/usr/bin/python3
#
# Copyright (c) 2016 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import time
from datetime import timedelta, date
# This script builds a full release package including XHTML and PDF
# versions of the specification, including an optional list of
# extensions. Other files in the release directory are removed,
#including man pages, XHTML chunked, HTML, validity output, etc.
# The current branch must be fully committed and up to date when the
# script is run, with no outstanding un-added / un-committed files.
# After completing the build, suggestions for creating tags are made.
# Khronos extensions
KHRextensions = [
'VK_KHR_android_surface',
'VK_KHR_display',
'VK_KHR_display_swapchain',
'VK_KHR_mir_surface',
'VK_KHR_surface',
'VK_KHR_swapchain',
'VK_KHR_wayland_surface',
'VK_KHR_win32_surface',
'VK_KHR_xcb_surface',
'VK_KHR_xlib_surface'
]
# All published extensions
allExtensions = KHRextensions + [
'VK_AMD_draw_indirect_count',
'VK_AMD_gcn_shader',
'VK_AMD_negative_viewport_height',
'VK_AMD_rasterization_order',
'VK_AMD_shader_ballot',
'VK_AMD_shader_explicit_vertex_parameter',
'VK_AMD_shader_trinary_minmax',
'VK_EXT_debug_marker',
'VK_EXT_debug_report',
'VK_IMG_filter_cubic',
'VK_NV_dedicated_allocation',
'VK_NV_external_memory',
'VK_NV_external_memory_capabilities',
'VK_NV_external_memory_win32',
'VK_NV_win32_keyed_mutex',
'VK_NV_glsl_shader',
'VK_NVX_device_generated_commands'
]
# Return the Vulkan release number, used for tags
def releaseNum():
return '$REVISION'
# 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
# label = textual label to use for target being generated
# extensions = list of extension names to include
# outdir = directory to generate specs in
# apititle = extra title to apply to the specification
# 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
# needRefSources = True if ref pages must be extracted from the spec sources
def buildRelease(label, extensions, outdir,
apititle,
xmlDir, xmlTargets,
specDir, specTargets,
miscSrc = None, miscDst = None, needRefSources = False):
print('echo Info: Generating target=', label,
'outdir=' + outdir)
outarg = 'OUTDIR=' + outdir
if (extensions != None and len(extensions) > 0):
extarg = 'EXTENSIONS="' + ' '.join(extensions) + '"'
else:
extarg = ''
if (apititle != None):
titlearg = 'APITITLE="' + apititle + '"'
else:
titlearg = ''
# print('echo Info: Cleaning spec in', outdir)
print('(cd ', outdir, '&& rm -rf',
'xhtml chunked pdf',
'man config checks',
'vkspec.html styleguide.html apispec.html apispec.pdf registry.html',
')')
# print('echo Info: Generating specversion.txt')
print('cd', specDir)
print('rm specversion.txt ; make specversion.txt')
# print('echo Info: Generating headers and spec include files')
print('cd', xmlDir)
print('make', outarg, xmlTargets)
# print('echo Info: Generating ref pages sources and spec targets')
print('cd', specDir)
print('make', outarg, 'clean')
# This is a temporary workaround for a dependency bug - if any of the
# specTargets require ref page sources, and they aren't already present
# at the time the make is invoked, that target will not be built.
if needRefSources:
print('make', outarg, extarg, 'man/apispec.txt')
# Now make the actual targets.
print('make -O -k -j 8',
outarg,
extarg,
titlearg,
'NOTEOPTS="-a implementation-guide"',
specTargets)
if (miscSrc != None and miscDst != None):
print('cp', miscSrc + '/*.txt', miscDst + '/')
print('')
# Build all target documents
# repoDir = path to the Vulkan git repo containing the specs
# outDir = path to the output base directory in which targets are generated
def buildBranch(targetDir, extensions, apititle,
xmlTargets, specTargets,
repoDir, outDir, needRefSources = False):
# 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'
buildRelease(targetDir, extensions, outDir + '/' + targetDir,
apititle,
xmlDir, xmlTargets, specDir, specTargets,
miscSrc, miscDst, needRefSources)
# Commands to tag the git branches
# releaseNum = release number of this spec update, to tag the tree with
# tagdate = date (used to be used to tag the tree with)
def createTags(releaseNum, tagdate):
# Tag date in YYYYMMDD format
now = tagdate.strftime('%Y%m%d')
print('echo To tag the spec branch for this release, execute the command:')
print('echo git tag -a -m \\"Tag Vulkan API specification for 1.0.' +
releaseNum, 'release\\"', 'v1.0.' + releaseNum + '-core')
#print('echo git tag -a -m \\"Tag Vulkan API specification for', now,
# 'release\\"', 'v1.0-core-' + now)