2016-12-17 00:57:35 +00:00
|
|
|
= Vulkan^(R)^ API Registry Build Instructions and Notes =
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
Jon Leech
|
|
|
|
|
|
|
|
* <<intro,Introduction>>
|
|
|
|
* <<files,Files>>
|
|
|
|
* <<targets,Makefile Targets>>
|
|
|
|
* <<linux,Linux Software Dependencies>>
|
|
|
|
* <<windows,Windows Software Dependencies>>
|
|
|
|
* <<history,Revision History>>
|
|
|
|
|
|
|
|
|
|
|
|
[[intro]]
|
|
|
|
== Introduction ==
|
|
|
|
|
|
|
|
This is the Vulkan XML API Registry. It is used to generate the canonical
|
|
|
|
vulkan.h and the API Asciidoc include files used by the Vulkan Specification
|
|
|
|
and Reference Pages.
|
|
|
|
|
|
|
|
When changes to the header or the includes are needed, follow this workflow.
|
|
|
|
Normally changes are done only when defining a new extension, or when adding
|
|
|
|
missing validity language to existing APIs.
|
|
|
|
|
|
|
|
* Create a git branch to work in locally
|
|
|
|
* Edit vk.xml
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
* `make ; make test`
|
|
|
|
** This generates `../vulkan/vulkan.h` and `../ext_loader/vulkan_ext.[ch]`
|
|
|
|
* `(cd ../../doc/specs/vulkan && make generated)`
|
2016-08-28 10:47:19 +00:00
|
|
|
** This generates asciidoc includes for the spec. There are many ways to
|
|
|
|
invoke the Makefile in the spec directory; this simple recipe only
|
|
|
|
generates includes for the core Vulkan API without any extensions.
|
|
|
|
* Repeat until the header and/or includes are correct.
|
|
|
|
* Commit your changes to your local git branch, push to the Khronos git
|
|
|
|
server, and create a merge request against the specification branch
|
|
|
|
("1.0") or other appropriate target.
|
|
|
|
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
For a detailed description of the schema, go to `../../doc/specs/vulkan` and
|
|
|
|
`make registry_doc`, which generates $(OUTDIR)/registry.html. This includes
|
|
|
|
some examples of how to make simple changes in the API via the XML.
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
The generator scripts are written in Python 3, using the etree package for
|
|
|
|
processing XML.
|
|
|
|
|
|
|
|
|
|
|
|
[[files]]
|
|
|
|
== Files ==
|
|
|
|
|
|
|
|
* Makefile - generates header and asciidoc includes from XML (see
|
|
|
|
<<targets,Makefile Targets>> below).
|
|
|
|
* vk.xml - XML API description.
|
|
|
|
* genvk.py - Python script to generate vulkan.h and other targets.
|
|
|
|
* readme.txt - Source for detailed description of the XML schema.
|
|
|
|
* registry.rnc - RelaxNG compact schema for validating XML against the
|
|
|
|
schema.
|
|
|
|
* reg.py - Python tools to read XML file and convert it into C headers.
|
|
|
|
* generator.py - output generator base class.
|
|
|
|
** cgenerator.py - C header output generator.
|
|
|
|
** docgenerator.py - Asciidoc interface language include generator.
|
|
|
|
** hostsyncgenerator.py - Asciidoc host sync table generator.
|
|
|
|
** pygenerator.py - Generates python encoding of the API description.
|
|
|
|
** validitygenerator.py - Asciidoc validity language generator.
|
|
|
|
* ../vulkan/vulkan.h - Generated Vulkan header.
|
Change log for February 10, 2017 Vulkan 1.0.40 spec update:
* Bump API patch number and header version number to 40 for this update.
* There is a major build change in this release. We are now using the
Ruby-based ``asciidoctor'' implementation, rather than the Python-based
``asciidoc'' implementation, to process the specification. While the
actual specification markup changes were minimal, this requires a new
set of build tools and a very different installation process, especially
because we now use an experimental direct-to-PDF backend for Asciidoctor
instead of Docbook->dblatex->PDF. It is no longer possible to build the
Specification using asciidoc. See doc/specs/vulkan/README.adoc
for some guidance on installing the new toolchain components.
* There are some minor rendering issues in the PDF output due to teething
problems with the asciidoctor toolchain, especially with mathematical
equations. We are aware of these and working on them.
Github Issues:
* Updated sample code for the <<sparsememory-examples-basic,sparse
resource binding example>> (public issue 97).
* Modify line and point clipping behavior in the
<<vertexpostproc-clipping, Primitive Clipping>> section to allow for
pop-free behavior. The ability to check for which behavior is
implemented may be added a future feature or extension (public issue
113).
* Unify the discussions of implicit ordering throughout the spec, in
particular in the new sections <<drawing-primitive-order, Primitive
Order>>, <<primrast-order, Rasterization Order>>, and
<<synchronization-implicit, Implicit Synchronization Guarantees>>; the
discussion of <<synchronization-submission-order, submission order>>;
and references elsewhere to these sections (public issue 133).
* Clarify \<\<descriptorsets-compatibility,Pipeline Layout Compatibility>>
language and introduce the term ``identically defined'' (public issue
164).
* Add a dependency to the +VK_EXT_debug_marker+ extension that's needed to
reuse the object type enum from +VK_EXT_debug_report+, and moves the
definition of that enum into +VK_EXT_debug_report+ where it should be
(public issue 409).
* Remove redundant valid usage statement from slink:VkImageBlit (public
issue 421).
* Update GL_KHR_vulkan_glsl to allow the ternary operator to result in a
specialization constant (public issue 424).
* Fix valid usage for flink:VkPipelineShaderStageCreateInfo (public issue
426).
* Correct typo in New Objects list for <<VK_EXT_debug_report>> (public
issue 447).
Internal Issues:
* Moved to asciidoctor for spec builds (internal issue 121).
* Update style guide to describe where to put new extensions-specific
asciidoc files, and what to name them (internal issue 626).
* Add src/spec/indexExt.py to autogenerate registry index entries linking
into the 1.0-extensions specification, instead of maintaining the index
manually. (internal issue 642).
* Autogenerate extension dependencies and lists of all extensions and all
KHR extensions from the "supported" attributes in +vk.xml+. Execute
+make config/extDependency.sh+ from +doc/specs/vulkan+ when a supported
extension is added to vk.xml, to regenerate the dependency script. The
consequence is that specifying a single extension to the +makeExt+
script will automatically enable all extensions it depends on as well,
and that the +makeAllExts+ and +makeKHR+ scripts do not need to be
updated when a new extension is supported (internal issue 648).
* Put extension appendices all at the same asciidoc section level, so KHR
WSI extensions show up in the HTML index (internal issue 648).
Other Issues:
* Imbed images in the generated HTML specs instead of loading them from
the images/ directory.
* Fix missing EXT in extension name
(ename:VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME).
* Add new +VK_EXT_SMPTE_2086_metadata+ extension.
* In the <<platformCreateSurface_xlib,Xlib Surface>> section of the
+VK_KHR_xlib_surface+ specification, add language warning users that
they always need to call code:XinitThreads.
* Use the term "presentable image" (rather than "swapchain image")
consistently in +VK_KHR_swapchain+ and related extensions, and add a
glossary term defining it.
* Relocate the valid usage for samples of
flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR::pname:pFormatInfo
to be below the flink:VkPhysicalDeviceSparseImageFormatInfo2KHR
structure.
2017-02-11 04:37:39 +00:00
|
|
|
* indexExt.py - generate HTML index of all extensions for inclusion into the
|
|
|
|
Vulkan registry index page.
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
* extDependency.py - generate extension dependencies in Bash and Python form
|
|
|
|
for use when building the specification.
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
[[targets]]
|
|
|
|
== Makefile Targets ==
|
|
|
|
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
* `install` or `../vulkan/vulkan.h` (default target) - regenerate
|
|
|
|
`../vulkan/vulkan.h` .
|
|
|
|
* `test` - make sure `../vulkan/vulkan.h` compiles. Important!
|
|
|
|
* `validate` - validate `vk.xml` against the schema. Requires installing
|
|
|
|
`jing` (see <<linux,Software Dependencies>> below). Also important!
|
|
|
|
* `clean_dirt` - remove intermediate files.
|
|
|
|
* `clean` - remove generated files. Usually done when preparing to merge to
|
|
|
|
1.0 via ```make clean ; make install```.
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
If you have trouble running the Makefile on your platform, the following
|
|
|
|
steps will build vulkan.h and test that it compiles:
|
|
|
|
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
[source,sh]
|
|
|
|
----
|
|
|
|
# Regenerate header from XML
|
|
|
|
python3 genvk.py ../vulkan/vulkan.h
|
|
|
|
# Verify that the resulting header compiles
|
|
|
|
gcc -Wall -c -I.. test.c
|
|
|
|
g++ -Wall -c -std=c++98 -I.. test.c
|
|
|
|
g++ -Wall -c -std=c++11 -I.. test.c
|
|
|
|
----
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
[[linux]]
|
|
|
|
== Linux Software Depencies ==
|
|
|
|
|
|
|
|
These are the versions of required tools in a Debian 8 development
|
|
|
|
environment. Earlier versions *may* work but unless they are verified by
|
|
|
|
someone else, there's no way to know that:
|
|
|
|
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
* Python 3 (`python3`, version: 3.4.2)
|
|
|
|
* pass:[g++] and gcc (`g++-4.9` / `gcc-4.9`, version: 4.9.2-10 - gcc 4.8
|
|
|
|
also reported to work)
|
|
|
|
* GNU make (`make` version: 4.0.8-1; older versions probably OK)
|
|
|
|
* Jing (`jing` version: 20131210+dfsg+1-1; needed only for optional XML
|
2016-08-28 10:47:19 +00:00
|
|
|
validation)
|
|
|
|
|
|
|
|
|
|
|
|
[[windows]]
|
|
|
|
== Windows Software Dependencies ==
|
|
|
|
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
Using the Windows 10 Ubuntu subsystem, if available, is probably the most
|
|
|
|
pleasant way of building. Cygwin64 is also a viable approach.
|
|
|
|
|
|
|
|
On native Windows without a Linux emulation environment, one way to build on
|
|
|
|
Windows is:
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
* 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
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
** ```C:\PathToPython\python3.exe genvk.py vulkan.h```
|
2016-08-28 10:47:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
[[history]]
|
|
|
|
== Revision History ==
|
|
|
|
|
|
|
|
* 2015/06/01 -
|
|
|
|
The header that is generated has been improved relative to the first
|
|
|
|
version. Function arguments are indented like the hand-generated header,
|
|
|
|
enumerant BEGIN/END_RANGE enums are named the same, etc. The ordering of
|
|
|
|
declarations is unlike the hand-generated header, and probably always
|
|
|
|
will because it results from a type/enum/function dependency analysis.
|
|
|
|
Some of this can be forced by being more explicit about it, if that is a
|
|
|
|
big deal.
|
|
|
|
* 2015/06/02 -
|
|
|
|
Per WG signoff, converted hex constant values to decimal (for
|
|
|
|
non-bitmasks) and VK_BIT macros to 'bitpos' attributes in the XML and
|
|
|
|
hex constants in the header. Updated schema to match. Changed <ptype> tag
|
|
|
|
to <type>.
|
|
|
|
* 2015/06/03 -
|
|
|
|
Moved into new 'vulkan' tree (did not bother preserving history in
|
|
|
|
previous repo). Added semantic knowledge about structs and unions to
|
|
|
|
<type> tags instead of just imbedding C struct definitions. Improved
|
|
|
|
registry.rnc schema a bit.
|
|
|
|
* 2015/06/07 -
|
|
|
|
Incorporate feedback from F2F including Python 3 and Windows fixes to
|
|
|
|
the scripts. Add documentation to readme.pdf. Fold in multiple merge
|
|
|
|
requests resulting from action items agreed at the F2F, to prepare
|
|
|
|
for everyone moving to XML instead of directly editing the header.
|
|
|
|
* 2015/06/20 -
|
|
|
|
Add vulkan-docs target and instructions for installing python3 and
|
|
|
|
python-lxml for Windows.
|
|
|
|
* 2015/08/13 -
|
|
|
|
Bring documentation up to date with Makefile targets (default is now
|
|
|
|
../include/vulkan.h).
|
|
|
|
* 2015/09/02 -
|
|
|
|
Update README with required (or known working) versions of toolchain
|
|
|
|
components.
|
|
|
|
* 2015/09/02 -
|
|
|
|
Move include/vulkan.h to vulkan/vulkan.h so #include "vulkan/vulkan.h"
|
|
|
|
is the normal usage (Bug 14576).
|
|
|
|
* 2016/02/12 -
|
|
|
|
Update README and remove old files to stage for public release.
|
|
|
|
* 2016/05/31 -
|
|
|
|
Remove dependency on lxml.
|
|
|
|
* 2016/07/27 -
|
|
|
|
Update documentation for changes to schema and generator scripts.
|
|
|
|
* 2016/08/26 -
|
|
|
|
Move README to an asciidoc file and update for the single-branch model.
|
|
|
|
Use 'clean' target to remove generated files in both spec source and
|
|
|
|
registry Makefiles.
|
Change log for February 27, 2017 Vulkan 1.0.42 spec update:
* Bump API patch number and header version number to 42 for this update
(the first anniversary edition).
Github Issues:
* Changed asciidoctor macros so cross-page links in the standalone
reference pages function properly (public issue 462).
Internal Issues:
* Clarified host visibility discussion for slink:VkMemoryType,
flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
<<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
section, removing duplicated information and adding a central definition
in the access types section (internal issue 552).
* Change description of
slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
return an array of values, not structures (internal issue 699).
New Extensions:
* Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
the experimental status of `KHX` extensions.
* Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
release at GDC:
** VK_KHR_descriptor_update_template
** VK_KHR_push_descriptor
** VK_KHX_device_group
** VK_KHX_device_group_creation
** VK_KHX_external_memory
** VK_KHX_external_memory_capabilities
** VK_KHX_external_memory_fd
** VK_KHX_external_memory_win32
** VK_KHX_external_semaphore
** VK_KHX_external_semaphore_capabilities
** VK_KHX_external_semaphore_fd
** VK_KHX_external_semaphore_win32
** VK_KHX_multiview
** VK_KHX_win32_keyed_mutex
** VK_EXT_discard_rectangles
** VK_MVK_ios_surface
** VK_MVK_macos_surface
** VK_NVX_multiview_per_view_attributes
** VK_NV_clip_space_w_scaling
** VK_NV_geometry_shader_passthrough
** VK_NV_sample_mask_override_coverage
** VK_NV_viewport_array2
** VK_NV_viewport_swizzle
* Add new GLSL vendor extensions to support new builtin variables:
** GL_EXT_device_group
** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
|
|
|
* 2017/02/20 -
|
|
|
|
Move registry.txt (schema documentation) to the Vulkan spec source
|
|
|
|
directory and update the README here.
|