diff --git a/.gitignore b/.gitignore index 09d68ba7fc..af2fdc3fd7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,14 +34,9 @@ __pycache__ # Spec build temporary files and outputs -out/checks -out/html -out/xhtml -out/vkspec* -out/apispec* -out/man -out/pdf -out/core +out/1.0* +out/genRef +out/misc doc/specs/vulkan/specversion.txt # Header build temporary files diff --git a/ChangeLog.txt b/ChangeLog.txt index 4607079974..a277faf055 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -923,3 +923,24 @@ Other Commits: wasn't listed in the error codes. * Fix "correponds" typo in member definitions for slink:VkSubpassDescription. + +----------------------------------------------------- + +Change log for July 10, 2016 Vulkan 1.0.20 spec update: + + * Bump API patch number and header version number to 20 for this + update. + +Github Issues: + + * Replaced existing reference pages by text automatically extracted + from the specification source, or generated from vk.xml in some + cases. This isn't a complete solution for the reference pages, but + puts them in a much better state. The ref pages (only) are now + placed under a CC BY open source license, which is more current than + the obsolete license previously used. + + Further improvements to the pages should not edit them directly, but + instead concentrate on the specification source from which the ref + pages are being extracted (public issues 44, 55, 160; internal issue + 389). diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index a0d70222d6..550c06b2f2 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -93,7 +93,7 @@ A2XDBLATEXOPTS := --dblatex-opts='$(DBLATEXOPTS)' # Misc. files to clean up (see 'checkinc' target below) DIRT = $(SPECVERSION) -.PHONY: directories +.PHONY: directories $(MANHTMLDIR) $(MANPAGEDIR) ICONFILES := \ $(ICONPATH)/caution.png \ @@ -118,14 +118,15 @@ SVGTYPEHTML := svg SVGTYPEPDF := pdf # Main (root) asciidoc spec source file TOPDOC := vkspec.txt -# Included chapters of the API spec -CHAPTERS := $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt) +# Files making up sections of the API spec. The wildcard expression +# should work in extension branches to pull in those files as well. +CHAPTERS := $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt chapters/*/[A-Za-z]*.txt appendices/*/[A-Za-z]*.txt) INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpointers/*.txt validity/structs/*.txt validity/protos/*.txt) # All non-format-specific dependencies COMMONDOCS := $(CHAPTERS) $(INCLUDES) # A generated included file with the spec version, date, and git commit SPECVERSION = specversion.txt -SPECREVISION = 1.0.19 +SPECREVISION = 1.0.20 SPECREMARK = # Spec targets @@ -203,7 +204,13 @@ $(OUTDIR)/styleguide.html: $(VKCONF) $(SPECVERSION) $(STYLESRC) -o $(OUTDIR)/styleguide.html -a svgpdf=$(SVGTYPEHTML) \ $(STYLESRC) -clean: clean_html clean_pdf clean_chunked clean_checks clean_dirt +clean: clean_html clean_pdf clean_chunked clean_checks clean_dirt clean_man + +clean_man: + $(RM) $(MANHTML) + $(RMRF) $(MANHTMLDIR) + $(RM) $(MANPAGES) + $(RMRF) $(MANPAGEDIR) clean_html: $(QUIET)$(RMRF) $(HTMLDIR) $(XHTMLDIR) @@ -221,9 +228,59 @@ clean_checks: clean_dirt: $(QUIET)$(RM) $(DIRT) -# Man page targets for individual pages -MANDIR:=man --include man/manpages.mak +# Ref page targets for individual pages +MANDIR := man +MANSECTION := 3 + +# These lists should be autogenerated + +# Ref page sources, split up by core vs. author IDs +# CORESOURCES expansion will accidentally pull in macros defined by +# extensions. Hopefully that won't happen. +WSISOURCES := $(wildcard $(MANDIR)/*KHR.txt) +EXTSOURCES := $(wildcard $(MANDIR)/*EXT.txt) +CORESOURCES := $(filter-out $(WSISOURCES) $(EXTSOURCES) $(MANDIR)/vkman.css,$(wildcard $(MANDIR)/[Vv][Kk]* $(MANDIR)/PFN*txt)) +MANSOURCES := $(CORESOURCES) $(WSISOURCES) $(EXTSOURCES) + +MANCOPYRIGHT:= $(MANDIR)/khronoscopyright.txt $(MANDIR)/footer.txt +MANPAGEDIR := $(OUTDIR)/man/$(MANSECTION) +MANPAGES := $(MANSOURCES:$(MANDIR)/%.txt=$(MANPAGEDIR)/%.$(MANSECTION)) +MANHTMLDIR := $(OUTDIR)/man/html +MANHTML := $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html) + +manpagesall: manpages manhtmlpages + +manpages: $(MANPAGEDIR) $(MANPAGES) + +manhtmlpages: $(MANHTMLDIR) $(MANHTML) + +manhtmlpages: VKCONF=config/manpages.conf + +# Automatic generation of ref pages. Needs to have a proper dependency +# causing the man page sources to be generated by running genRef (once), +# but adding $(MANSOURCES) to the targets causes genRef to run +# once/target. +man/apispec.txt: $(CHAPTERS) genRef.py reflib.py vkapi.py + $(PYTHON) genRef.py $(CHAPTERS) + +# These dependencies don't take into account include directives + +$(MANPAGEDIR)/%.$(MANSECTION): $(MANDIR)/%.$(MANSECTION) + $(QUIET)mv $< $@ + +$(MANDIR)/%.$(MANSECTION): $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf + $(QUIET)$(ECHO) Building $@ + $(QUIET)$(A2X) -d manpage -f manpage --asciidoc-opts "-f config/manpages.conf" $(A2XOPTS) $< + +$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf + $(QUIET)$(ECHO) Building $@ + $(QUIET)$(A2X) -d manpage -f xhtml --asciidoc-opts "-f config/manpages.conf" --stylesheet=vkman.css $(A2XOPTS) --destination-dir=$(@D) $< + +$(MANHTMLDIR): + $(QUIET)$(MKDIR) $@ + +$(MANPAGEDIR): + $(QUIET)$(MKDIR) $@ # Man page targets for HTML and PDF single-file documents @@ -231,13 +288,13 @@ manpdf: $(OUTDIR)/apispec.pdf manhtml: $(OUTDIR)/apispec.html -$(OUTDIR)/apispec.pdf: $(CONFFILE) man/apispec.txt $(MANSOURCES) $(PDFXSL) +$(OUTDIR)/apispec.pdf: $(CONFFILE) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(PDFXSL) $(QUIET)if test ! -d $(OUTDIR) ; then $(MKDIR) $(OUTDIR) ; fi $(QUIET)$(A2X) -f pdf $(A2XDBLATEXOPTS) $(A2XOPTS) --icons man/apispec.txt --destination-dir=$(OUTDIR) -$(OUTDIR)/apispec.html: $(CONFFILE) man/apispec.txt $(MANSOURCES) $(SVGFILES) +$(OUTDIR)/apispec.html: $(CONFFILE) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(SVGFILES) $(QUIET)if test ! -d $(OUTDIR) ; then $(MKDIR) $(OUTDIR) ; fi - $(QUIET)$(ASCIIDOC) $(ADOCOPTS) -d book -b html --out-file=$(OUTDIR)/apispec.html man/apispec.txt + $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) -d book -b html --out-file=$(OUTDIR)/apispec.html man/apispec.txt $(HTMLDIR)/images/%: images/% $(QUIET)$(MKDIR) $(@D) diff --git a/doc/specs/vulkan/README.html b/doc/specs/vulkan/README.html index 74de192cb4..049cbaee23 100644 --- a/doc/specs/vulkan/README.html +++ b/doc/specs/vulkan/README.html @@ -755,6 +755,11 @@

Vulkan Specification Build Instructions and Notes

  • +Reference Pages +

    +
  • +
  • +

    Our stylesheets

  • @@ -792,7 +797,7 @@

    Introduction

    Building The Spec

    Assuming you have all the right tools installed (see Software Dependencies below), you should be able to go to -…path-to-git-repo/vulkan/doc/specs/vulkan and:

    +…path-to-git-repo/vulkan/doc/specs/vulkan and:

    $ make all
    @@ -802,9 +807,9 @@

    Building The Spec

    $ make xhtml chunked pdf manhtml manpdf manpages manhtmlpages checkinc checklinks
    -

    This should generate a variety of targets under $(OUTDIR) (by default, -../../../out/). The checked-in file $(OUTDIR)/index.html links to them -all, or they can individually be found as follows:

    +

    This should generate a variety of targets under $(OUTDIR) (by default, +../../../out/1.0). The checked-in file $(OUTDIR)/index.html links to +them all, or they can individually be found as follows:

    -

    We strongly sugges that once you have the basic build working, you use e.g. --j 8 (or other appropriate number depending on the number of cores in your -CPU) to parallelize the reference page builds, since there are so many of -them.

    -

    If your asciidoc installation does not put the stylesheets and xsl files in -the standard /etc/asciidoc/dblatex directory, set the environment variable -DBLATEXPREFIX to the path to that directory (the one containing the -asciidoc-dblatex.xsl and asciidoc-dblatex.sty installed with asciidoc).

    -
    -

    Alternate and Test Builds

    -

    If you are just testing asciidoc formatting, macros, stylesheets, etc., you -can edit test.txt, which is a stripped-down version of vkspec.txt, -and build an alternate version of the spec with either

    +

    We strongly sugges that once you have the basic build working, you use e.g.

    -
    $ make TOPDOCHTML=test.txt xhtml
    +
    $ make -j 8
    -

    or the simpler

    -
    -
    -
    tmake xhtml
    -
    -

    This example will generate the file $(OUTDIR)/xhtml/test.html . Note that -TOPDOCHTML only applies to the xhtml and chunked targets at present.

    +

    (or other appropriate number depending on the number of CPU cores you have) +to parallelize the reference page builds, since there are so many of them.

    +

    If your asciidoc installation does not put the stylesheets and xsl files in +the standard /etc/asciidoc/dblatex directory, set the environment variable +DBLATEXPREFIX to the path to that directory (the one containing the +asciidoc-dblatex.xsl and asciidoc-dblatex.sty files installed with +asciidoc).

    +
    +

    Alternate and Test Builds

    +

    If you are just testing asciidoc formatting, macros, stylesheets, etc., +we suggest editing vkspec.txt to comment out most of the chapter +includes.

    In addition to the XHTML and PDF targets, there is also a single-file HTML5 -target, html, which generates output directly from asciidoc without going +target, html, which generates output directly from asciidoc without going through Docbook. This is somewhat quicker to generate, but formatting and section numbers aren’t consistent with the other builds and it is not for -publication - just testing. The html target will generate the file -$(OUTDIR)/html/vkspec.html .

    +publication - just testing. The html target will generate the file +$(OUTDIR)/html/vkspec.html .

    Rebuilding The Generated Images

    -

    There are some images in the images/ directory which are maintained in one +

    There are some images in the images/ directory which are maintained in one format but need to be converted to another format for corresponding types of output. Most are SVG converted to PDF, some are PPT converted to PDF converted to SVG. SVG and PDF forms are needed for the HTML and PDF output formats, respectively.

    These files are not automatically converted by the Makefile. Instead, all -output forms required are checked into images/ . On the rare occasions that -someone changes a source document and needs to regenerate the other forms, -go into images and make in the directory.

    +output forms required are checked into images/ . On the rare occasions that +someone changes a source document and needs to regenerate the other forms:

    +
    +
    +
    cd images
    +make
    +
    @@ -928,118 +930,49 @@

    Our Asciidoc Macros

    checks, and you should use the macros whenever referring to an API command, struct, token, or enum name, so the documents are semantically tagged and more easily verifiable.

    -

    The supported macros are defined in config/vkspec.conf (for the API spec) -and config/manpages.conf (for the reference pages).

    -

    Tags used in both the specification and reference pages:

    -
    -

    Tags used only in the specification, at present:

    -
    -

    The [efs]link: macros are used for validation, and are also expanded into -xref links to the correspondingly named anchor.

    -

    The [efsp]name: macros are used for validation, but are not expanded into -links.

    -

    The [efs]text: macros are not used for validation, and are not expanded into -links.

    +

    The supported macros are defined in config/vkspec.conf (for the API spec) +and config/manpages.conf (for the reference pages).

    +

    The tags used are described in the style guide (styleguide.txt).

    We will eventually tool up the spec and ref pages to the point that anywhere -there’s a type or token referred to, you could click/hover on it in the HTML -view and be taken to the definition of that type/token. That will take some -more plumbing work to tag the stuff in the autogenerated include files, and -do something sensible in the spec (e.g. resolve links to internal -references).

    -

    In that light, the [fs]name: vs. [fs]link: distinction seems mostly -unneeded. Probably the only time we would not want a tag to be a link to its -definition is when tagging a function name inside its own ref page. So once -the plumbing is done, most of the [fs]name: tags can turn into [fs]link: -tags.

    -

    The ename: vs. elink: distinction is different since they’re referring to -different namespaces - individual enumerant names vs. "enum" type names - -rather than different ways of presenting the same command or struct name as -for the other tags.

    +there’s a type or token referred to, clicking on (or perhaps hovering over) +it in the HTML view and be taken to the definition of that type/token. That +will take some more plumbing work to tag the stuff in the autogenerated +include files, and do something sensible in the spec (e.g. resolve links to +internal references).

    Most of these macros deeply need more intuitive names.

    +

    Reference Pages

    +
    +

    Prior to the 1.0.20 update of the API spec, the reference pages in man/ +were handwritten, incomplete, and often way out of date with respect to the +spec.

    +

    Our initial effort to address this was to tag the API spec to help identify +boundaries of language talking about different commands, structures, +enumerants, and other types, then use a set of Python scripts to +automatically extract that language into the corresponding ref page. Pages +without corresponding content in the API spec are generated automatically, +when possible.

    +

    This has generated a semantically complete set of ref pages. Although they +are still far from ideal, they now fully document the API, and will stay in +sync with it. A significant drawback of this approach is that the only place +ref pages for extension interfaces can be generated is inside the +corresponding extension branches.

    +

    If for some reason you want to regenerate the ref pages from scratch +yourself, you can do so by

    +
    +
    +
    $ rm man/apispec.txt
    +$ make apispec.txt
    +
    +

    The genRef.py script will generate many warnings, but most are just +reminders that some pages are automatically generated. If everything is +working correctly, all the man/*.txt files will be regenerated, but their +contents will not change.

    +
    +
    +

    Our stylesheets

    @@ -1051,13 +984,13 @@

    Our stylesheets

    This branch introduces a Vulkan-specific XHTML CSS stylesheet -in config/vkspec-xhtml.css. Mostly it just clones the default +in config/vkspec-xhtml.css . Mostly it just clones the default Asciidoc stylesheet, but adds some new features:

    Marking Changes

    There is the start of support for marking added, removed, and changed text in the spec body. Currently this is supported only in the XHTML targets -(xhtml and chunked), and only for paragraphs and spans of words.

    +(xhtml and chunked), and only for paragraphs and spans of words.

    Added, removed, and changed material is marked with the asciidoc roles named added, removed, and changed respectively. They can be used to mark an entire paragraph, as follows:

    @@ -1079,7 +1012,7 @@

    Marking Changes

    Marking Normative Language

    There is support for marking normative language in the document. Currently -this is supported only in the XHTML targets (xhtml and chunked).

    +this is supported only in the XHTML targets (xhtml and chunked).

    Normative language is marked with the asciidoc role named normative. It can be used to mark entire paragraphs or spans of words, in the same fashion as change markings (described above). In addition, the @@ -1107,10 +1040,10 @@

    Imbedding Equations

    • -The special characters < > & can currently be used only in +The special characters < , > , and & can currently be used only in [latexmath] block macros, not in latexmath:[] inline macros. - Instead use \lt for < and \gt for >. & is an alignment construct for - multiline equations, and should only appear in block macros anyway. + Instead use \lt for < and \gt for >. & is an alignment construct + for multiline equations, and should only appear in block macros anyway.

    • @@ -1145,7 +1078,7 @@

      Asciidoc Anchors And Xrefs

      following syntax. In general the anchor should immediately precede the chapter or section title and should use the form [[chapter-section-label]]. For example,

    -

    For example, in chapter synchronization.txt:

    +

    For example, in chapter synchronization.txt:

    Synchronization Primitives

    Cross-references to those anchors can then be generated with, for example,

    @@ -1154,9 +1087,10 @@

    Asciidoc Anchors And Xrefs

    You can also add anchors on arbitrary paragraphs, using a similar naming scheme.

    Anything whose definition comes from one of the autogenerated API include -files ({protos,flags,enums,structs}/*.txt) has a corresponding anchor whose -name is the name of the function, struct, etc. being defined. Therefore you -can say something like:

    +files (.txt files in the directories basetypes, enums, flags, +funcpointers, handles, protos, and structs) has a corresponding +anchor whose name is the name of the function, struct, etc. being defined. +Therefore you can say something like:

    Fences are used with the +++<<vkQueueSubmit>>+++ command...
    @@ -1172,10 +1106,10 @@

    Software Dependencies

    Cygwin Dependencies

    General Dependencies

    -

    These are versions of required tools in Jon’s development environment -(Debian 8, shown as Debian package names). Earlier versions may work but -unless they are verified by someone else, there’s no way to know that. Later -versions should work.

    +

    These are versions of required tools in one of the editors' development +environment (Debian 8, shown as Debian package names). Earlier versions +may work but unless they are verified by someone else, there’s no way to +know that. Later versions should work.

    • @@ -1194,15 +1128,11 @@

      General Dependencies

    • -Python LXML library (python-lxml, version: 3.4.0-1) -

      -
    • -
    • -

      Git command-line client (git, version: 2.1.4) Only needed if regenerating specversion.txt. Any version supporting the - operations git symbolic-ref --short HEAD and git log -1 - --format="%H" should work). + operations +  — git symbolic-ref --short HEAD and +  — git log -1 --format="%H" should work).

    • @@ -1292,6 +1222,11 @@

      Revision History

      • +2016/07/10 - Update for current state of spec and ref page generation. +

        +
      • +
      • +

        2015/11/11 - Add new can: etc. macros and DBLATEXPREFIX variable.

      • @@ -1326,7 +1261,7 @@

        Revision History

        diff --git a/doc/specs/vulkan/README.txt b/doc/specs/vulkan/README.txt index be40cc07c4..dede033cde 100644 --- a/doc/specs/vulkan/README.txt +++ b/doc/specs/vulkan/README.txt @@ -3,24 +3,27 @@ * <> * <> * <> +* <> * <> * <> * <> * <> (general and platform-specific) * <> + [[intro]] == Introduction == This README describes important stuff for getting the Vulkan API specification and reference pages building properly. + [[building]] == Building The Spec == Assuming you have all the right tools installed (see <> below), you should be able to go to -...path-to-git-repo/vulkan/doc/specs/vulkan and: ++...path-to-git-repo/vulkan/doc/specs/vulkan+ and: $ make all @@ -28,70 +31,69 @@ or equivalently: $ make xhtml chunked pdf manhtml manpdf manpages manhtmlpages checkinc checklinks -This should generate a variety of targets under $(OUTDIR) (by default, -../../../out/). The checked-in file $(OUTDIR)/index.html links to them -all, or they can individually be found as follows: +This should generate a variety of targets under +$(OUTDIR)+ (by default, ++../../../out/1.0+). The checked-in file +$(OUTDIR)/index.html+ links to +them all, or they can individually be found as follows: * API spec: -** Single-file XHTML (from a2x) - $(OUTDIR)/xhtml/vkspec.html -** Chunked HTML (from a2x) - $(OUTDIR)/vkspec.chunked/index.html -** PDF (from a2x) - $(OUTDIR)/pdf/vkspec.pdf +** Single-file XHTML (from a2x) - +$(OUTDIR)/xhtml/vkspec.html+ +** Chunked HTML (from a2x) - +$(OUTDIR)/vkspec.chunked/index.html+ +** PDF (from a2x) - +$(OUTDIR)/pdf/vkspec.pdf+ * Man pages: -** Single-file HTML - $(OUTDIR)/apispec.html -** File-per-entry-point HTML - $(OUTDIR)/man/html/* -** File-per-entry-point nroff source - $(OUTDIR)/man/3/* +** Single-file HTML - +$(OUTDIR)/apispec.html+ +** File-per-entry-point HTML - +$(OUTDIR)/man/html/*+ +** File-per-entry-point nroff source - +$(OUTDIR)/man/3/*+ * Validator output: ** List of commands, structs, etc. missing from the API spec - - $(OUTDIR)/checks/notInSpec.txt -** Validator script output for API spec - $(OUTDIR)/checks/specErrs.txt + +$(OUTDIR)/checks/notInSpec.txt+ +** Validator script output for API spec - +$(OUTDIR)/checks/specErrs.txt ** Validator script output for reference pages - - $(OUTDIR)/checks/manErrs.txt + +$(OUTDIR)/checks/manErrs.txt+ We strongly sugges that once you have the basic build working, you use e.g. -'-j 8' (or other appropriate number depending on the number of cores in your -CPU) to parallelize the reference page builds, since there are so many of -them. - -If your asciidoc installation does not put the stylesheets and xsl files in -the standard /etc/asciidoc/dblatex directory, set the environment variable -DBLATEXPREFIX to the path to that directory (the one containing the -asciidoc-dblatex.xsl and asciidoc-dblatex.sty installed with asciidoc). -[[building-test]] -=== Alternate and Test Builds === + $ make -j 8 -If you are just testing asciidoc formatting, macros, stylesheets, etc., you -can edit test.txt, which is a stripped-down version of vkspec.txt, -and build an alternate version of the spec with either +(or other appropriate number depending on the number of CPU cores you have) +to parallelize the reference page builds, since there are so many of them. - $ make TOPDOCHTML=test.txt xhtml +If your asciidoc installation does not put the stylesheets and xsl files in +the standard +/etc/asciidoc/dblatex+ directory, set the environment variable ++DBLATEXPREFIX+ to the path to that directory (the one containing the ++asciidoc-dblatex.xsl+ and +asciidoc-dblatex.sty+ files installed with +asciidoc). -or the simpler - tmake xhtml +[[building-test]] +=== Alternate and Test Builds === -This example will generate the file $(OUTDIR)/xhtml/test.html . Note that -TOPDOCHTML only applies to the xhtml and chunked targets at present. +If you are just testing asciidoc formatting, macros, stylesheets, etc., +we suggest editing +vkspec.txt+ to comment out most of the chapter +includes. In addition to the XHTML and PDF targets, there is also a single-file HTML5 -target, 'html', which generates output directly from asciidoc without going +target, +html+, which generates output directly from asciidoc without going through Docbook. This is somewhat quicker to generate, but formatting and section numbers aren't consistent with the other builds and it is not for -publication - just testing. The 'html' target will generate the file -$(OUTDIR)/html/vkspec.html . +publication - just testing. The +html+ target will generate the file ++$(OUTDIR)/html/vkspec.html+ . + === Rebuilding The Generated Images === -There are some images in the images/ directory which are maintained in one +There are some images in the +images/+ directory which are maintained in one format but need to be converted to another format for corresponding types of output. Most are SVG converted to PDF, some are PPT converted to PDF converted to SVG. SVG and PDF forms are needed for the HTML and PDF output formats, respectively. These files are not automatically converted by the Makefile. Instead, all -output forms required are checked into images/ . On the rare occasions that -someone changes a source document and needs to regenerate the other forms, -go into images and 'make' in the directory. +output forms required are checked into +images/+ . On the rare occasions that +someone changes a source document and needs to regenerate the other forms: + + cd images + make + [[macros]] == Our Asciidoc Macros == @@ -102,85 +104,68 @@ checks, and you should use the macros whenever referring to an API command, struct, token, or enum name, so the documents are semantically tagged and more easily verifiable. -The supported macros are defined in config/vkspec.conf (for the API spec) -and config/manpages.conf (for the reference pages). - -Tags used in both the specification and reference pages: - -* flink:vkBlah - the name of an API command. -* fname:vkBlah - the name of an API command. -* ftext:anything - the name of something that looks like an API command, but - isn't (wildcards like ftext:vkCmd*). -* slink:VkBlah - the name of an API C structure, handle, or scalar type. The - slink:VkBlah.membername syntax is *not* currently supported. -* sname:VkBlah - the name of an API C structure, handle, or scalar type. The - notation sname:VkBlah.membername is also allowed where that makes sense - (NOTE: VkBlah.membername is *not* properly validated at present). -* stext:anything - the name of something that looks like an API structure, - handle, or scalar type, but isn't (wildcards like stext:Vk*CreateInfo). -* elink:VkBlahFlags - the name of an API C "enum" type (bitmask or - enumeration). -* ename:VK_BLAH - the name of an API enumeration or #define token. -* etext:anything - the name of something that looks like an API "enum" type, - enumeration or #define token, but isn't (wildcards or partial token names, - like etext:BC5). -* pname:param - the name of a command parameter or struct member being - documented -* basetype:type - the name of a base scalar type, such as basetype:VkBool32. -* code:varname - the name of a shading language variable - -Tags used only in the specification, at present: - -* can:, cannot:, may:, maynot:, must:, mustnot:, optional:, recommend:, - required:, should:, and shouldnot: - used to tag places in the spec where - these terms are used in accordance with their definitions in section 1.3 - "Terminology". They do not currently do anything but expand to their names - (adding a space for e.g. mustnot: -> must not), but may be used to - generate an index or some visual indicator in the future. - -The [efs]link: macros are used for validation, and are also expanded into -xref links to the correspondingly named anchor. - -The [efsp]name: macros are used for validation, but are *not* expanded into -links. - -The [efs]text: macros are not used for validation, and are not expanded into -links. +The supported macros are defined in +config/vkspec.conf+ (for the API spec) +and +config/manpages.conf+ (for the reference pages). + +The tags used are described in the style guide (+styleguide.txt+). We will eventually tool up the spec and ref pages to the point that anywhere -there's a type or token referred to, you could click/hover on it in the HTML -view and be taken to the definition of that type/token. That will take some -more plumbing work to tag the stuff in the autogenerated include files, and -do something sensible in the spec (e.g. resolve links to internal -references). - -In that light, the [fs]name: vs. [fs]link: distinction seems mostly -unneeded. Probably the only time we would not want a tag to be a link to its -definition is when tagging a function name inside its own ref page. So once -the plumbing is done, most of the [fs]name: tags can turn into [fs]link: -tags. - -The ename: vs. elink: distinction is different since they're referring to -different namespaces - individual enumerant names vs. "enum" type names - -rather than different ways of presenting the same command or struct name as -for the other tags. +there's a type or token referred to, clicking on (or perhaps hovering over) +it in the HTML view and be taken to the definition of that type/token. That +will take some more plumbing work to tag the stuff in the autogenerated +include files, and do something sensible in the spec (e.g. resolve links to +internal references). Most of these macros deeply need more intuitive names. + +[[refpages]] +== Reference Pages == + +Prior to the 1.0.20 update of the API spec, the reference pages in +man/+ +were handwritten, incomplete, and often way out of date with respect to the +spec. + +Our initial effort to address this was to tag the API spec to help identify +boundaries of language talking about different commands, structures, +enumerants, and other types, then use a set of Python scripts to +automatically extract that language into the corresponding ref page. Pages +without corresponding content in the API spec are generated automatically, +when possible. + +This has generated a semantically complete set of ref pages. Although they +are still far from ideal, they now fully document the API, and will stay in +sync with it. A significant drawback of this approach is that the only place +ref pages for extension interfaces can be generated is inside the +corresponding extension branches. + +If for some reason you want to regenerate the ref pages from scratch +yourself, you can do so by + + $ rm man/apispec.txt + $ make apispec.txt + +The +genRef.py+ script will generate many warnings, but most are just +reminders that some pages are automatically generated. If everything is +working correctly, all the +man/*.txt+ files will be regenerated, but their +contents will not change. + + [[styles]] == Our stylesheets == NOTE: Section mostly TBD. This branch introduces a Vulkan-specific XHTML CSS stylesheet -in config/vkspec-xhtml.css. Mostly it just clones the default +in +config/vkspec-xhtml.css+ . Mostly it just clones the default Asciidoc stylesheet, but adds some new features: + === Marking Changes === There is the start of support for marking added, removed, and changed text in the spec body. Currently this is supported *only* in the XHTML targets -('xhtml' and 'chunked'), and *only* for paragraphs and spans of words. +(+xhtml+ and +chunked+), and *only* for paragraphs and spans of words. Added, removed, and changed material is marked with the asciidoc *roles* named _added_, _removed_, and _changed_ respectively. They can be used to @@ -198,10 +183,11 @@ The formatting of these roles text depends on the stylesheet. Currently it all three roles are red text, and the "removed" role is also strike-through text. + === Marking Normative Language === There is support for marking normative language in the document. Currently -this is supported *only* in the XHTML targets ('xhtml' and 'chunked'). +this is supported *only* in the XHTML targets (+xhtml+ and +chunked+). Normative language is marked with the asciidoc *role* named _normative_. It can be used to mark entire paragraphs or spans of words, in the @@ -213,6 +199,7 @@ The formatting of normative language depends on the stylesheet. Currently it just comes out in purple. There will be some way to turn this on or off at build time shortly. + [[equations]] == Imbedding Equations @@ -229,10 +216,10 @@ for real-time rendering of equations) and to dblatex for PDF output. The following caveats apply: -* The special characters < > & can currently be used only in +* The special characters +<+ , +>+ , and +&+ can currently be used only in +++[latexmath]+++ block macros, not in +++latexmath:[]+++ inline macros. - Instead use \lt for < and \gt for >. & is an alignment construct for - multiline equations, and should only appear in block macros anyway. + Instead use +\lt+ for +<+ and +\gt+ for +>+. +&+ is an alignment construct + for multiline equations, and should only appear in block macros anyway. * AMSmath environments (e.g. pass:[\begin{equation*}], pass:[{align*}], etc.) can be used, to the extent MathJax supports them. * When using AMSmath environments, do *not* also surround the equation block @@ -244,6 +231,7 @@ The following caveats apply: pass:[\hbox{\tt\small VK\_FOO}] does not work in any of the HTML backends and should be avoided. + [[anchors]] == Asciidoc Anchors And Xrefs @@ -252,7 +240,7 @@ following syntax. In general the anchor should immediately precede the chapter or section title and should use the form '+++[[chapter-section-label]]+++'. For example, -For example, in chapter 'synchronization.txt': +For example, in chapter +synchronization.txt+: ++++ [[synchronization-primitives]] @@ -270,12 +258,14 @@ You can also add anchors on arbitrary paragraphs, using a similar naming scheme. Anything whose definition comes from one of the autogenerated API include -files ({protos,flags,enums,structs}/*.txt) has a corresponding anchor whose -name is the name of the function, struct, etc. being defined. Therefore you -can say something like: +files (+.txt+ files in the directories +basetypes+, +enums+, +flags+, ++funcpointers+, +handles+, +protos+, and +structs+) has a corresponding +anchor whose name is the name of the function, struct, etc. being defined. +Therefore you can say something like: Fences are used with the +++<>+++ command... + [[depends]] == Software Dependencies == @@ -284,26 +274,28 @@ toolchain. under the <> below, then describes specific considerations for Windows environments using Cygin under <> + [[depends-general]] === General Dependencies === -These are versions of required tools in Jon's development environment -(Debian 8, shown as Debian package names). Earlier versions *may* work but -unless they are verified by someone else, there's no way to know that. Later -versions should work. +These are versions of required tools in one of the editors' development +environment (Debian 8, shown as Debian package names). Earlier versions +*may* work but unless they are verified by someone else, there's no way to +know that. Later versions should work. - GNU make (make version: 4.0.8-1; older versions probably OK) - Asciidoc / a2x (asciidoc version: 8.6.9-3) - Python 3 (python, version: 3.4.2) - - Python LXML library (python-lxml, version: 3.4.0-1) - Git command-line client (git, version: 2.1.4) Only needed if regenerating specversion.txt. Any version supporting the - operations 'git symbolic-ref --short HEAD' and 'git log -1 - --format="%H"' should work). + operations + -- +git symbolic-ref --short HEAD+ and + -- +git log -1 --format="%H"+ should work). - Docbook LaTeX toolchain (dblatex, version: 0.3.5-2) - Source code highlighter (source-highlight, version: 3.1.7-1+b1) - LaTeX distribution (texlive, version: 2014.20141024-2) + [[depends-cygin]] === Cygwin Dependencies === @@ -327,9 +319,11 @@ Optional Cygwin packages (current version): * Devel/gcc-g++ (4.9.3-1) - Needed for validating generated headers * Devel/git (2.5.1-1) - Needed for updating specversion.txt + [[history]] == Revision History +* 2016/07/10 - Update for current state of spec and ref page generation. * 2015/11/11 - Add new can: etc. macros and DBLATEXPREFIX variable. * 2015/09/21 - Convert document to asciidoc and rename to README.md in the hope the gitlab browser will render it in some fashion. diff --git a/doc/specs/vulkan/appendices/boilerplate.txt b/doc/specs/vulkan/appendices/boilerplate.txt new file mode 100644 index 0000000000..bb677a96e3 --- /dev/null +++ b/doc/specs/vulkan/appendices/boilerplate.txt @@ -0,0 +1,229 @@ +// Copyright (c) 2016 The Khronos Group Inc. +// Copyright notice at https://www.khronos.org/registry/speccopyright.html + +[appendix] +[[boilerplate]] += API Boilerplate + +This appendix defines Vulkan API features that are infrastructure required +for a complete functional description of Vulkan, but do not logically belong +elsewhere in the Specification. + + +[[boilerplate-sType]] +== Structure Types + +// refBegin VkStructureType Vulkan structure types (pname:stype) + +Vulkan structures containing elink:VkStructureType::pname:sType members +must: have a value of pname:sType matching the type of the structure, as +described more fully in <>. Structure types supported by the Vulkan API include: + +include::../enums/VkStructureType.txt[] + +// refEnd VkStructureType + + +[[boilerplate-flags]] +== Flag Types + +Vulkan flag types are all bitmasks aliasing the base type basetype:VkFlags and +with corresponding bit flag types defining the valid bits for that flag, as +described in <>. Flag +types supported by the Vulkan API include: + +// All of these types have autogenerated ref pages at present, although +// bringing that content into the spec (by adding // refBegin and // refEnd +// comments and explanatory text for the ref pages) would be more complete. + +include::../flags/VkAccessFlags.txt[] +include::../flags/VkAttachmentDescriptionFlags.txt[] +include::../flags/VkBufferCreateFlags.txt[] +include::../flags/VkBufferUsageFlags.txt[] +include::../flags/VkBufferViewCreateFlags.txt[] +include::../flags/VkColorComponentFlags.txt[] +include::../flags/VkCommandBufferResetFlags.txt[] +include::../flags/VkCommandBufferUsageFlags.txt[] +include::../flags/VkCommandPoolCreateFlags.txt[] +include::../flags/VkCommandPoolResetFlags.txt[] +include::../flags/VkCullModeFlags.txt[] +include::../flags/VkDependencyFlags.txt[] +include::../flags/VkDescriptorPoolCreateFlags.txt[] +include::../flags/VkDescriptorPoolResetFlags.txt[] +include::../flags/VkDescriptorSetLayoutCreateFlags.txt[] +include::../flags/VkDeviceCreateFlags.txt[] +include::../flags/VkDeviceQueueCreateFlags.txt[] +include::../flags/VkEventCreateFlags.txt[] +include::../flags/VkFenceCreateFlags.txt[] +include::../flags/VkFormatFeatureFlags.txt[] +include::../flags/VkFramebufferCreateFlags.txt[] +include::../flags/VkImageAspectFlags.txt[] +include::../flags/VkImageCreateFlags.txt[] +include::../flags/VkImageUsageFlags.txt[] +include::../flags/VkImageViewCreateFlags.txt[] +include::../flags/VkInstanceCreateFlags.txt[] +include::../flags/VkMemoryHeapFlags.txt[] +include::../flags/VkMemoryMapFlags.txt[] +include::../flags/VkMemoryPropertyFlags.txt[] +include::../flags/VkPipelineCacheCreateFlags.txt[] +include::../flags/VkPipelineColorBlendStateCreateFlags.txt[] +include::../flags/VkPipelineCreateFlags.txt[] +include::../flags/VkPipelineDepthStencilStateCreateFlags.txt[] +include::../flags/VkPipelineDynamicStateCreateFlags.txt[] +include::../flags/VkPipelineInputAssemblyStateCreateFlags.txt[] +include::../flags/VkPipelineLayoutCreateFlags.txt[] +include::../flags/VkPipelineMultisampleStateCreateFlags.txt[] +include::../flags/VkPipelineRasterizationStateCreateFlags.txt[] +include::../flags/VkPipelineShaderStageCreateFlags.txt[] +include::../flags/VkPipelineStageFlags.txt[] +include::../flags/VkPipelineTessellationStateCreateFlags.txt[] +include::../flags/VkPipelineVertexInputStateCreateFlags.txt[] +include::../flags/VkPipelineViewportStateCreateFlags.txt[] +include::../flags/VkQueryControlFlags.txt[] +include::../flags/VkQueryPipelineStatisticFlags.txt[] +include::../flags/VkQueryPoolCreateFlags.txt[] +include::../flags/VkQueryResultFlags.txt[] +include::../flags/VkQueueFlags.txt[] +include::../flags/VkRenderPassCreateFlags.txt[] +include::../flags/VkSampleCountFlags.txt[] +include::../flags/VkSamplerCreateFlags.txt[] +include::../flags/VkSemaphoreCreateFlags.txt[] +include::../flags/VkShaderModuleCreateFlags.txt[] +include::../flags/VkShaderStageFlags.txt[] +include::../flags/VkSparseImageFormatFlags.txt[] +include::../flags/VkSparseMemoryBindFlags.txt[] +include::../flags/VkStencilFaceFlags.txt[] +include::../flags/VkSubpassDescriptionFlags.txt[] + + +[[boilerplate-macros]] +== Macro Definitions in +vulkan.h+ + +Vulkan is defined as a C API. The supplied +vulkan.h+ header defines a small +number of C preprocessor macros that are described below. + + +[[boilerplate-versions]] +=== Vulkan Version Number Macros + +<> are packed into integers. +These macros manipulate version numbers in useful ways. + +// refBegin VK_VERSION_MAJOR - Extract API major version number + +dname:VK_VERSION_MAJOR extracts the API major version number +from a packed version number: + +include::../defines/VK_VERSION_MAJOR.txt[] + +// refEnd VK_VERSION_MAJOR + +// refBegin VK_VERSION_MINOR - Extract API minor version number + +dname:VK_VERSION_MINOR extracts the API minor version number +from a packed version number: + +include::../defines/VK_VERSION_MINOR.txt[] + +// refEnd VK_VERSION_MINOR + +// refBegin VK_VERSION_PATCH - Extract API patch version number + +dname:VK_VERSION_PATCH extracts the API patch version number +from a packed version number: + +include::../defines/VK_VERSION_PATCH.txt[] + +// refEnd VK_VERSION_PATCH + +// refBegin VK_API_VERSION_1_0 - Return API version number for Vulkan 1.0 + +dname:VK_API_VERSION_1_0 returns the API version number for Vulkan 1.0. The +patch version number in this macro will always be zero. The required patch +version is specified by the application when creating an instance with +flink:vkCreateInstance, and the supported patch version for a physical +device can: be queried with flink:vkGetPhysicalDeviceProperties. + +include::../defines/VK_API_VERSION_1_0.txt[] + +// refEnd VK_API_VERSION_1_0 vkCreateInstance vkGetPhysicalDeviceProperties + +// refBegin VK_API_VERSION - Deprecated version number macro + +dname:VK_API_VERSION is deprecated and should: no longer be used. + +include::../defines/VK_API_VERSION.txt[] + +// refEnd VK_API_VERSION + +// refBegin VK_MAKE_VERSION - Construct an API version number + +dname:VK_MAKE_VERSION constructs an API version number. + +include::../defines/VK_MAKE_VERSION.txt[] + + * pname:major is the major version number. + * pname:minor is the minor version number. + * pname:patch is the patch version number. + +This macro can: be used when constructing the +slink:VkApplicationInfo::pname:apiVersion parameter passed to +flink:vkCreateInstance. + +// refEnd VK_MAKE_VERSION VkApplicationInfo vkCreateInstance + + +=== Vulkan Header File Version Number + +// refBegin VK_HEADER_VERSION - Vulkan header file version number + +dname:VK_HEADER_VERSION is the version number of the +vulkan.h+ header. This +value is currently kept synchronized with the release number of the +Specification. However, it is not guaranteed to remain synchronized, since +most Specification updates have no effect on +vulkan.h+. + +include::../defines/VK_HEADER_VERSION.txt[] + +// refEnd VK_HEADER_VERSION + + +=== Vulkan Handle macros + +// refBegin VK_DEFINE_HANDLE - Declare a dispatchable object handle + +dname:VK_DEFINE_HANDLE defines a <> type. + +include::../defines/VK_DEFINE_HANDLE.txt[] + + * pname:object is the name of the resulting C type. + +The only dispatchable handle types are those related to device and instance +management, such as slink:VkDevice. + +// refEnd VK_DEFINE_HANDLE VkCommandBuffer VkDevice VkInstance VkPhysicalDevice VkQueue + +// refBegin VK_DEFINE_NON_DISPATCHABLE_HANDLE - Declare a non-dispatchable object handle + +dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE defines a +<> type. + +include::../defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt[] + + * pname:object is the name of the resulting C type. + +Most Vulkan handle types, such as slink:VkBuffer, are non-dispatchable. +Only one such type is listed in the See Also section below. + +// refEnd VK_DEFINE_NON_DISPATCHABLE_HANDLE VkBuffer + +// refBegin VK_NULL_HANDLE - Reserved non-valid object handle + +dname:VK_NULL_HANDLE is a reserved value representing a non-valid object +handle. It may be passed to and returned from Vulkan commands only when +<>. + +include::../defines/VK_NULL_HANDLE.txt[] + +// refEnd VK_NULL_HANDLE diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index d0100bf398..452cac189d 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -46,7 +46,7 @@ new paradigms that require rethinking the existing mechanisms: * Layers, and with them a focus on a more open ecosystem where non-Khronos members are expected to extend a Khronos API using the Layer mechanism. - * Namespaced constants (enumerations) that don't necessarily draw from a + * Namespaced constants (enumerations) that do not necessarily draw from a single global set of token values. @@ -355,7 +355,7 @@ extensions. This includes the following: * Each extension's appendix file is included by adding an +include+ statement to the +vkspec.txt+ file. Since most extensions will all put their +include+ line at the same place in this file, they should: add - this statement on the master branch, even though the file won't actually + this statement on the master branch, even though the file will not actually exist on the master branch. This will avoid merge conflicts when multiple extensions' branches are merged in order to create the ``full'' branch specification. @@ -374,9 +374,9 @@ 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 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. +uniqueness of values. Enumerations which define new bits in a bitmask are +treated specially as described in +<> below. Each extension is assigned a range of values that can: be used to create globally-unique enum values. Most values will be negative numbers, but @@ -410,7 +410,7 @@ The information needed to add new values to the XML are as follows: * The **offset**, which is an integer between 0 and 999 relative to the base being used for the extension. * The **direction** may: be specified to indicate a negative value - (+dir="-"+) when needed for negative stext:VkResult values indicating + (+dir="-"+) when needed for negative elink:VkResult values indicating errors, like etext:VK_ERROR_SURFACE_LOST_KHR. The default direction is positive, if not specified. @@ -537,13 +537,13 @@ applications. ==== -[[extensions-reserving-bitfield-values]] -=== Reserving Bitfield Values +[[extensions-reserving-bitmask-values]] +=== Reserving Bitmask Values -Enumerants which define bitfield values are a special case, since there are +Enumerants which define bitmask values are a special case, since there are only a small number of unused bits available for extensions. For core Vulkan -API and KHR extension bitfield types, reservations must: be approved by a -vote of the Vulkan Working Group. For EXT and vendor extension bitfield +API and KHR extension bitmask types, reservations must: be approved by a +vote of the Vulkan Working Group. For EXT and vendor extension bitmask types, reservations must: be approved by the listed contact of the extension. Bits are not reserved, and mustnot: be used in a published implementation or specification until the reservation is merged into @@ -552,10 +552,10 @@ implementation or specification until the reservation is merged into [NOTE] .Note ==== -In reality the approving authority for EXT and vendor extension bitfield +In reality the approving authority for EXT and vendor extension bitmask additions will probably be the owner of the github branch containing the specification of that extension; however, until the github process is fully -defined and locked down, it's safest to refer to the listed contact. +defined and locked down, it is safest to refer to the listed contact. ==== diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 39d5c852e0..01d393eeb5 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -39,7 +39,7 @@ Aspect (Image):: an image. Others operations, like image/buffer copies, only operate on one aspect at a time. - + Attachment (Render Pass):: A zero-based integer index name used in render pass creation to refer to a framebuffer attachment that is accessed by one or more subpasses. The @@ -150,10 +150,10 @@ Compatible Queues:: Queues within a queue family. Compatible queues have identical properties. -Component (Format):: +Component (Format):: A distinct part of a format. Depth, stencil, and color channels (e.g. R, G, B, A), are all separate components. - + Compressed Texel Block:: An element of an image having a block-compressed format, comprising a rectangular block of texel values that are encoded as a single value in @@ -590,13 +590,13 @@ Queue Operation:: submission command details the specific queue operations that occur as a result of calling that command. Queue operations typically include work that is specific to each command, and synchronization tasks. - + Queue Submission:: Zero or more batches and an optional fence to be signaled, passed to a command for execution on a queue. See the <> for more information. - + Recording State (Command Buffer):: A command buffer that is ready to record commands. See also Initial State and Executable State. diff --git a/doc/specs/vulkan/appendices/invariance.txt b/doc/specs/vulkan/appendices/invariance.txt index 3ecbec0301..d02417c5eb 100644 --- a/doc/specs/vulkan/appendices/invariance.txt +++ b/doc/specs/vulkan/appendices/invariance.txt @@ -17,7 +17,7 @@ The obvious and most fundamental case is repeated issuance of a series of Vulkan commands. For any given Vulkan and framebuffer state vector, and for any Vulkan command, the resulting Vulkan and framebuffer state must: be identical whenever the command is executed on that initial -Vulkan and framebuffer state. This repeatability requirement doesn't +Vulkan and framebuffer state. This repeatability requirement does not apply when using shaders containing side effects (image and buffer variable stores and atomic operations), because these memory operations are not guaranteed to be processed in a defined order. diff --git a/doc/specs/vulkan/basetypes/VkBool32.txt b/doc/specs/vulkan/basetypes/VkBool32.txt new file mode 100644 index 0000000000..8db5b12f26 --- /dev/null +++ b/doc/specs/vulkan/basetypes/VkBool32.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkBool32,VkBool32]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +typedef uint32_t VkBool32; + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/basetypes/VkDeviceSize.txt b/doc/specs/vulkan/basetypes/VkDeviceSize.txt new file mode 100644 index 0000000000..a3c446bef1 --- /dev/null +++ b/doc/specs/vulkan/basetypes/VkDeviceSize.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDeviceSize,VkDeviceSize]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +typedef uint64_t VkDeviceSize; + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/basetypes/VkFlags.txt b/doc/specs/vulkan/basetypes/VkFlags.txt new file mode 100644 index 0000000000..139475ede1 --- /dev/null +++ b/doc/specs/vulkan/basetypes/VkFlags.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkFlags,VkFlags]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +typedef uint32_t VkFlags; + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/basetypes/VkSampleMask.txt b/doc/specs/vulkan/basetypes/VkSampleMask.txt new file mode 100644 index 0000000000..14bdbfdc38 --- /dev/null +++ b/doc/specs/vulkan/basetypes/VkSampleMask.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkSampleMask,VkSampleMask]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +typedef uint32_t VkSampleMask; + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt index 28cc021ab8..03c2eef421 100644 --- a/doc/specs/vulkan/chapters/clears.txt +++ b/doc/specs/vulkan/chapters/clears.txt @@ -13,6 +13,8 @@ instance using flink:vkCmdClearColorImage or flink:vkCmdClearDepthStencilImage, respectively. These commands are only allowed outside of a render pass instance. +// refBegin vkCmdClearColorImage Clear regions of a color image. + To clear one or more subranges of a color image, call: include::../protos/vkCmdClearColorImage.txt[] @@ -39,6 +41,8 @@ pname:pColor. include::../validity/protos/vkCmdClearColorImage.txt[] +// refBegin vkCmdClearDepthStencilImage Fill regions of a combined depth-stencil image. + To clear one or more subranges of a depth/stencil image, call: include::../protos/vkCmdClearDepthStencilImage.txt[] @@ -74,6 +78,8 @@ the purposes of memory barriers. [[clears-inside]] == Clearing Images Inside A Render Pass Instance +// refBegin vkCmdClearAttachments Clear regions within currently bound framebuffer attachments. + To clear one or more regions of color and depth/stencil attachments inside a render pass instance, call: @@ -98,6 +104,8 @@ parameters. include::../validity/protos/vkCmdClearAttachments.txt[] +// refBegin VkClearRect - Structure specifying a clear rectangle + The sname:VkClearRect structure is defined as: include::../structs/VkClearRect.txt[] @@ -111,6 +119,8 @@ counting from the base layer of the attachment image view are cleared. include::../validity/structs/VkClearRect.txt[] +// refBegin VkClearAttachment - Structure specifying a clear attachment + The sname:VkClearAttachment structure is defined as: include::../structs/VkClearAttachment.txt[] @@ -151,24 +161,26 @@ include::../validity/structs/VkClearAttachment.txt[] [[clears-values]] == Clear Values +// refBegin VkClearColorValue - Structure specifying a clear color value + The sname:VkClearColorValue structure is defined as: include::../structs/VkClearColorValue.txt[] -Color clear values are taken from the sname:VkClearColorValue union based on -the format of the image or attachment. Floating point, unorm, snorm, -uscaled, packed float, and sRGB images use the pname:float32 member, -unsigned integer formats use the pname:uint32 member, and signed integer -formats use the pname:int32 member. Floating point values are automatically -converted to the format of the image, with the clear value being treated as -linear if the image is sRGB. - -Unsigned integer values are converted to the format of the image by casting -to the integer type with fewer bits. Signed integer values are converted to -the format of the image by casting to the smaller type (with negative 32-bit -values mapping to negative values in the smaller type). If the integer clear -value is not representable in the target type (e.g. would overflow in -conversion to that type), the clear value is undefined. + * pname:float32 are the color clear values when the format of the image or + attachment is floating point, unorm, snorm, uscaled, packed float, or + sRGB. Floating point values are automatically converted to the format of + the image, with the clear value being treated as linear if the image is + sRGB. + * pname:int32 are the color clear values when the format of the image or + attachment is signed integer. Signed integer values are converted to the + format of the image by casting to the smaller type (with negative 32-bit + values mapping to negative values in the smaller type). If the integer + clear value is not representable in the target type (e.g. would overflow + in conversion to that type), the clear value is undefined. + * pname:uint32 are the color clear values when the format of the image or + attachment is unsigned integer. Unsigned integer values are converted to + the format of the image by casting to the integer type with fewer bits. The four array elements of the clear color map to R, G, B, and A components of image formats, in order. @@ -178,6 +190,8 @@ samples for any pixels being cleared. include::../validity/structs/VkClearColorValue.txt[] +// refBegin VkClearDepthStencilValue - Structure specifying a clear depth stencil value + The sname:VkClearDepthStencilValue structure is defined as: include::../structs/VkClearDepthStencilValue.txt[] @@ -192,9 +206,7 @@ include::../structs/VkClearDepthStencilValue.txt[] include::../validity/structs/VkClearDepthStencilValue.txt[] -Some parts of the API require either color or depth/stencil clear values, -depending on the attachment. The sname:VkClearValue union represents such -values. +// refBegin VkClearValue - Structure specifying a clear value The sname:VkClearValue union is defined as: @@ -205,8 +217,9 @@ include::../structs/VkClearValue.txt[] * pname:depthStencil specifies the depth and stencil clear values to use when clearing a depth/stencil image or attachment. -This union is used to define the initial clear values in the -sname:VkRenderPassBeginInfo structure. +This union is used where part of the API requires either color or +depth/stencil clear values, depending on the attachment, and defines the +initial clear values in the slink:VkRenderPassBeginInfo structure. include::../validity/structs/VkClearValue.txt[] @@ -214,6 +227,8 @@ include::../validity/structs/VkClearValue.txt[] [[clears-filling-buffers]] == Filling Buffers +// refBegin vkCmdFillBuffer Fill a region of a buffer with a fixed value. + To clear buffer data, call: include::../protos/vkCmdFillBuffer.txt[] @@ -243,6 +258,8 @@ include::../validity/protos/vkCmdFillBuffer.txt[] [[clears-updating-buffers]] == Updating Buffers +// refBegin vkCmdUpdateBuffer Update a buffer's contents from host memory. + To update buffer data inline in a command buffer, call: include::../protos/vkCmdUpdateBuffer.txt[] @@ -266,7 +283,7 @@ the command is called. fname:vkCmdUpdateBuffer is only allowed outside of a render pass. This command is treated as ``transfer'' operation, for the purposes of synchronization barriers. The ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT must: -be specified in pname:usage of sname:VkBufferCreateInfo in order for the +be specified in pname:usage of slink:VkBufferCreateInfo in order for the buffer to be compatible with fname:vkCmdUpdateBuffer. include::../validity/protos/vkCmdUpdateBuffer.txt[] @@ -276,8 +293,6 @@ include::../validity/protos/vkCmdUpdateBuffer.txt[] ==== The pname:pData parameter was of type basetype:uint32_t* instead of basetype:void* prior to revision 1.0.19 of the Specification and -ename:VK_HEADER_VERSION 19 of +vulkan.h+. This was a +dlink:VK_HEADER_VERSION 19 of +vulkan.h+. This was a historical anomaly, as the source data may be of other types. ==== - -[[clears-end]] diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index 3b39ea1abd..110e4cc9a7 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.txt @@ -4,6 +4,8 @@ [[commandbuffers]] = Command Buffers +// refBegin VkCommandBuffer - Opaque handle to a command buffer object + Command buffers are objects used to record commands which can: be subsequently submitted to a device queue for execution. There are two levels of command buffers - _primary command buffers_, which can: execute secondary @@ -11,6 +13,12 @@ command buffers, and which are submitted to queues, and _secondary command buffers_, which can: be executed by primary command buffers, and which are not directly submitted to queues. +Command buffers are represented by sname:VkCommandBuffer handles: + +include::../handles/VkCommandBuffer.txt[] + +// refEnd VkCommandBuffer + Recorded commands include commands to bind pipelines and descriptor sets to the command buffer, commands to modify dynamic state, commands to draw (for graphics rendering), commands to dispatch (for compute), commands to execute @@ -66,6 +74,8 @@ additionally puts the command buffer in the recording state). [[commandbuffers-pools]] == Command Pools +// refBegin VkCommandPool - Opaque handle to a command pool object + Command pools are opaque objects that command buffer memory is allocated from, and which allow the implementation to amortize the cost of resource creation across multiple command buffers. Command pools are @@ -74,6 +84,14 @@ concurrently in multiple threads. That includes use via recording commands on any command buffers allocated from the pool, as well as operations that allocate, free, and reset command buffers or the pool itself. +Command pools are represented by sname:VkCommandPool handles: + +include::../handles/VkCommandPool.txt[] + +// refEnd VkCommandPool + +// refBegin vkCreateCommandPool Create a new command pool object. + To create a command pool, call: include::../protos/vkCreateCommandPool.txt[] @@ -87,6 +105,8 @@ include::../protos/vkCreateCommandPool.txt[] include::../validity/protos/vkCreateCommandPool.txt[] +// refBegin VkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool + The sname:VkCommandPoolCreateInfo structure is defined as: include::../structs/VkCommandPoolCreateInfo.txt[] @@ -97,22 +117,23 @@ include::../structs/VkCommandPoolCreateInfo.txt[] command buffers allocated from it. Bits which can: be set include: + -- +// refBegin VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command pool include::../enums/VkCommandPoolCreateFlagBits.txt[] - -** ename:VK_COMMAND_POOL_CREATE_TRANSIENT_BIT indicates that command buffers - allocated from the pool will be short-lived, meaning that they will be - reset or freed in a relatively short timeframe. This flag may: be used by - the implementation to control memory allocation behavior within the pool. -** ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT controls whether - command buffers allocated from the pool can: be individually reset. If - this flag is set, individual command buffers allocated from the pool can: - be reset either explicitly, by calling fname:vkResetCommandBuffer, or - implicitly, by calling fname:vkBeginCommandBuffer on an executable - command buffer. If this flag is not set, then fname:vkResetCommandBuffer - and fname:vkBeginCommandBuffer (on an executable command buffer) mustnot: - be called on the command buffers allocated from the pool, and they can: - only be reset in bulk by calling fname:vkResetCommandPool. -- ++ + ** ename:VK_COMMAND_POOL_CREATE_TRANSIENT_BIT indicates that command buffers + allocated from the pool will be short-lived, meaning that they will be + reset or freed in a relatively short timeframe. This flag may: be used by + the implementation to control memory allocation behavior within the pool. + ** ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT controls whether + command buffers allocated from the pool can: be individually reset. If + this flag is set, individual command buffers allocated from the pool can: + be reset either explicitly, by calling fname:vkResetCommandBuffer, or + implicitly, by calling fname:vkBeginCommandBuffer on an executable + command buffer. If this flag is not set, then fname:vkResetCommandBuffer + and fname:vkBeginCommandBuffer (on an executable command buffer) mustnot: + be called on the command buffers allocated from the pool, and they can: + only be reset in bulk by calling fname:vkResetCommandPool. * pname:queueFamilyIndex designates a queue family as described in section <>. All command buffers created from this command pool must: be submitted on queues @@ -120,30 +141,34 @@ include::../enums/VkCommandPoolCreateFlagBits.txt[] include::../validity/structs/VkCommandPoolCreateInfo.txt[] -Reset a command pool by calling: +// refBegin vkResetCommandPool Reset a command pool. + +To reset a command pool, call: include::../protos/vkResetCommandPool.txt[] * pname:device is the logical device that owns the command pool. * pname:commandPool is the command pool to reset. * pname:flags contains additional flags controlling the behavior of the - reset. - -include::../validity/protos/vkResetCommandPool.txt[] + reset. Bits which can: be set include: ++ +-- +// refBegin VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool reset +include::../enums/VkCommandPoolResetFlagBits.txt[] +-- ++ +If pname:flags includes ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, +resetting a command pool recycles all of the resources from the command pool +back to the system. Resetting a command pool recycles all of the resources from all of the command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the initial state. -pname:flags is a bitmask controlling the operation. Bits which can: be -set include: - -include::../enums/VkCommandPoolResetFlagBits.txt[] +include::../validity/protos/vkResetCommandPool.txt[] -If pname:flags includes ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, -resetting a command pool recycles all of the resources from the command pool -back to the system. +// refBegin vkDestroyCommandPool Destroy a command pool object To destroy a command pool, call: @@ -154,17 +179,19 @@ include::../protos/vkDestroyCommandPool.txt[] * pname:pAllocator controls host memory allocation as described in the <> chapter. -include::../validity/protos/vkDestroyCommandPool.txt[] - When a pool is destroyed, all command buffers allocated from the pool are implicitly freed and become invalid. Command buffers allocated from a given pool do not need to be freed before destroying that command pool. +include::../validity/protos/vkDestroyCommandPool.txt[] + [[commandbuffer-allocation]] == Command Buffer Allocation and Management -Command buffers are allocated by calling: +// refBegin vkAllocateCommandBuffers Allocate command buffers from an existing command pool + +To allocate command buffers, call: include::../protos/vkAllocateCommandBuffers.txt[] @@ -180,6 +207,8 @@ include::../protos/vkAllocateCommandBuffers.txt[] include::../validity/protos/vkAllocateCommandBuffers.txt[] +// refBegin VkCommandBufferAllocateInfo Structure specifying the allocation parameters for command buffer object. + The sname:VkCommandBufferAllocateInfo structure is defined as: include::../structs/VkCommandBufferAllocateInfo.txt[] @@ -191,13 +220,19 @@ include::../structs/VkCommandBufferAllocateInfo.txt[] * pname:level determines whether the command buffers are primary or secondary command buffers. Possible values include: + +-- +// refBegin VkCommandBufferLevel - Structure specifying a command buffer level include::../enums/VkCommandBufferLevel.txt[] +-- ++ * pname:commandBufferCount is the number of command buffers to allocate from the pool. include::../validity/structs/VkCommandBufferAllocateInfo.txt[] -Command buffers are reset by calling: +// refBegin vkResetCommandBuffer Reset a command buffer. + +To reset command buffers, call: include::../protos/vkResetCommandBuffer.txt[] @@ -207,18 +242,21 @@ include::../protos/vkResetCommandBuffer.txt[] can: be set include: + -- +// refBegin VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer reset include::../enums/VkCommandBufferResetFlagBits.txt[] - +-- ++ If pname:flags includes ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT, then most or all memory resources currently owned by the command buffer should: be returned to the parent command pool. If this flag is not set, then the command buffer may: hold onto memory resources and reuse them when recording commands. --- include::../validity/protos/vkResetCommandBuffer.txt[] -Command buffers are freed by calling: +// refBegin vkFreeCommandBuffers Free command buffers. + +To free command buffers, call: include::../protos/vkFreeCommandBuffers.txt[] @@ -235,6 +273,8 @@ include::../validity/protos/vkFreeCommandBuffers.txt[] [[commandbuffers-recording]] == Command Buffer Recording +// refBegin vkBeginCommandBuffer Start recording a command buffer + To begin recording a command buffer, call: include::../protos/vkBeginCommandBuffer.txt[] @@ -247,6 +287,8 @@ include::../protos/vkBeginCommandBuffer.txt[] include::../validity/protos/vkBeginCommandBuffer.txt[] +// refBegin VkCommandBufferBeginInfo - Structure specifying a command buffer begin operation + The sname:VkCommandBufferBeginInfo structure is defined as: include::../structs/VkCommandBufferBeginInfo.txt[] @@ -257,18 +299,19 @@ include::../structs/VkCommandBufferBeginInfo.txt[] buffer. Bits which can: be set include: + -- +// refBegin VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command buffer include::../enums/VkCommandBufferUsageFlagBits.txt[] - -** ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT indicates that each - recording of the command buffer will only be submitted once, and the - command buffer will be reset and recorded again between each submission. -** ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT indicates that - a secondary command buffer is considered to be entirely inside a render - pass. If this is a primary command buffer, then this bit is ignored. -** Setting ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT allows the - command buffer to be resubmitted to a queue or recorded into a primary - command buffer while it is pending execution. -- ++ + ** ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT indicates that each + recording of the command buffer will only be submitted once, and the + command buffer will be reset and recorded again between each submission. + ** ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT indicates that + a secondary command buffer is considered to be entirely inside a render + pass. If this is a primary command buffer, then this bit is ignored. + ** Setting ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT allows the + command buffer to be resubmitted to a queue or recorded into a primary + command buffer while it is pending execution. * pname:pInheritanceInfo is a pointer to a sname:VkCommandBufferInheritanceInfo structure, which is used if pname:commandBuffer is a secondary command buffer. If this is a primary @@ -276,6 +319,8 @@ include::../enums/VkCommandBufferUsageFlagBits.txt[] include::../validity/structs/VkCommandBufferBeginInfo.txt[] +// refBegin VkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info + If the command buffer is a secondary command buffer, then the sname:VkCommandBufferInheritanceInfo structure defines any state that will be inherited from the primary command buffer: @@ -293,7 +338,7 @@ include::../structs/VkCommandBufferInheritanceInfo.txt[] * pname:framebuffer refers to the sname:VkFramebuffer object that the sname:VkCommandBuffer will be rendering to if it was allocated with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. It can: - be code:VK_NULL_HANDLE if the framebuffer is not known. + be dlink:VK_NULL_HANDLE if the framebuffer is not known. + [NOTE] .Note @@ -368,6 +413,8 @@ Once recording starts, an application records a sequence of commands (ftext:vkCmd*) to set state in the command buffer, draw, dispatch, and other commands. +// refBegin vkEndCommandBuffer Finish recording a command buffer + To complete recording of a command buffer, call: include::../protos/vkEndCommandBuffer.txt[] @@ -376,13 +423,13 @@ include::../protos/vkEndCommandBuffer.txt[] command buffer must: have been in the recording state, and is moved to the executable state. -include::../validity/protos/vkEndCommandBuffer.txt[] - If there was an error during recording, the application will be notified by an unsuccessful return code returned by fname:vkEndCommandBuffer. If the application wishes to further use the command buffer, the command buffer must: be reset. +include::../validity/protos/vkEndCommandBuffer.txt[] + When a command buffer is in the executable state, it can: be submitted to a queue for execution. @@ -390,7 +437,9 @@ queue for execution. [[commandbuffers-submission]] == Command Buffer Submission -Command buffers are submitted to a queue by calling: +// refBegin vkQueueSubmit Submits a sequence of semaphores or command buffers to a queue. + +To submit command buffers to a queue, call: include::../protos/vkQueueSubmit.txt[] @@ -399,11 +448,9 @@ include::../protos/vkQueueSubmit.txt[] * pname:pSubmits is a pointer to an array of slink:VkSubmitInfo structures, each specifying a command buffer submission batch. * pname:fence is an optional handle to a fence to be signaled. If - pname:fence is not code:VK_NULL_HANDLE, it defines a + pname:fence is not dlink:VK_NULL_HANDLE, it defines a <>. -include::../validity/protos/vkQueueSubmit.txt[] - [NOTE] .Note ==== @@ -417,6 +464,23 @@ fname:vkQueueSubmit is a defined by an element of pname:pSubmits as an instance of the slink:VkSubmitInfo structure. +Fence and semaphore operations submitted with flink:vkQueueSubmit have +additional ordering constraints compared to other submission commands, +with dependencies involving previous and subsequent queue operations. +Information about these additional constraints can be found in the +<> and +<> sections of +<>. + +Details on the interaction of pname:pWaitDstStageMask with synchronization +are described in the +<> section of +<>. + +include::../validity/protos/vkQueueSubmit.txt[] + +// refBegin VkSubmitInfo - Structure specifying a queue submit operation + The sname:VkSubmitInfo structure is defined as: include::../structs/VkSubmitInfo.txt[] @@ -447,18 +511,6 @@ include::../structs/VkSubmitInfo.txt[] include::../validity/structs/VkSubmitInfo.txt[] -Fence and semaphore operations submitted with flink:vkQueueSubmit have -additional ordering constraints compared to other submission commands, -with dependencies involving previous and subsequent queue operations. -Information about these additional constraints can be found in the -<> and -<> sections of -<>. - -Details on the interaction of pname:pWaitDstStageMask with synchronization -are described in the -<> section of -<>. [[commandbuffers-submission-progress]] == Queue Forward Progress @@ -466,22 +518,24 @@ are described in the The application must: ensure that command buffer submissions will be able to complete without any subsequent operations by the application on any queue. After any call to fname:vkQueueSubmit, for every queued wait on a semaphore -there must: be a prior signal of that semaphore that won't be consumed by a +there must: be a prior signal of that semaphore that will not be consumed by a different wait on the semaphore. Command buffers in the submission can: include flink:vkCmdWaitEvents -commands that wait on events that won't be signaled by earlier commands in +commands that wait on events that will not be signaled by earlier commands in the queue. Such events must: be signaled by the application using flink:vkSetEvent, and the fname:vkCmdWaitEvents commands that wait upon them mustnot: be inside a render pass instance. Implementations may: have limits on how long the command buffer will wait, in order to avoid interfering with -progress of other clients of the device. If the event isn't signaled within +progress of other clients of the device. If the event is not signaled within these limits, results are undefined and may: include device loss. [[commandbuffers-secondary]] == Secondary Command Buffer Execution +// refBegin vkCmdExecuteCommands Execute a secondary command buffer from a primary command buffer. + A secondary command buffer mustnot: be directly submitted to a queue. Instead, secondary command buffers are recorded to execute as part of a primary command buffer with the command: @@ -497,10 +551,10 @@ include::../protos/vkCmdExecuteCommands.txt[] which are recorded to execute in the primary command buffer in the order they are listed in the array. -include::../validity/protos/vkCmdExecuteCommands.txt[] - Once fname:vkCmdExecuteCommands has been called, any prior executions of the secondary command buffers specified by pname:pCommandBuffers in any other primary command buffer become invalidated, unless those secondary command buffers were recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT. + +include::../validity/protos/vkCmdExecuteCommands.txt[] diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index 5ed9dcf28a..f54606c9f0 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -53,6 +53,8 @@ synchronization barriers. [[copies-buffers]] == Copying Data Between Buffers +// refBegin vkCmdCopyBuffer Copy data between buffer regions. + To copy data between buffer objects, call: include::../protos/vkCmdCopyBuffer.txt[] @@ -72,6 +74,8 @@ the copy regions overlap in memory. include::../validity/protos/vkCmdCopyBuffer.txt[] +// refBegin VkBufferCopy - Structure specifying a buffer copy operation + The sname:VkBufferCopy structure is defined as: include::../structs/VkBufferCopy.txt[] @@ -95,6 +99,8 @@ Rather, it simply copies raw image data. fname:vkCmdCopyImage can: copy between images with different formats, provided the formats are compatible as defined below. +// refBegin vkCmdCopyImage Copy data between images. + To copy data between image objects, call: include::../protos/vkCmdCopyImage.txt[] @@ -115,39 +121,6 @@ Each region in pname:pRegions is copied from the source image to the same region of the destination image. pname:srcImage and pname:dstImage can: be the same image or alias the same memory. -include::../validity/protos/vkCmdCopyImage.txt[] - -The sname:VkImageCopy structure is defined as: - -include::../structs/VkImageCopy.txt[] - - * pname:srcSubresource and pname:dstSubresource are - slink:VkImageSubresourceLayers structures specifying the image - subresources of the images used for the source and destination image - data, respectively. - * pname:srcOffset and pname:dstOffset select the initial x, y, and z - offsets in texels of the sub-regions of the source and destination image - data. - * pname:extent is the size in texels of the source image to copy in - pname:width, pname:height and pname:depth. 1D images use only pname:x - and pname:width. 2D images use pname:x, pname:y, pname:width and - pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, - pname:height and pname:depth. - -include::../validity/structs/VkImageCopy.txt[] - -The sname:VkImageSubresourceLayers structure is defined as: - -include::../structs/VkImageSubresourceLayers.txt[] - - * pname:aspectMask is a combination of elink:VkImageAspectFlagBits, - selecting the color, depth and/or stencil aspects to be copied. - * pname:mipLevel is the mipmap level to copy from. - * pname:baseArrayLayer and pname:layerCount are the starting layer and - number of layers to copy. - -include::../validity/structs/VkImageSubresourceLayers.txt[] - Copies 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 copied to the destination image. @@ -211,10 +184,49 @@ be included as a source or destination of the copy. fname:vkCmdCopyImage can: be used to copy image data between multisample images, but both images must: have the same number of samples. +include::../validity/protos/vkCmdCopyImage.txt[] + +// refBegin VkImageCopy - Structure specifying an image copy operation + +The sname:VkImageCopy structure is defined as: + +include::../structs/VkImageCopy.txt[] + + * pname:srcSubresource and pname:dstSubresource are + slink:VkImageSubresourceLayers structures specifying the image + subresources of the images used for the source and destination image + data, respectively. + * pname:srcOffset and pname:dstOffset select the initial x, y, and z + offsets in texels of the sub-regions of the source and destination image + data. + * pname:extent is the size in texels of the source image to copy in + pname:width, pname:height and pname:depth. 1D images use only pname:x + and pname:width. 2D images use pname:x, pname:y, pname:width and + pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, + pname:height and pname:depth. + +include::../validity/structs/VkImageCopy.txt[] + +// refBegin VkImageSubresourceLayers - Structure specifying a image subresource layers + +The sname:VkImageSubresourceLayers structure is defined as: + +include::../structs/VkImageSubresourceLayers.txt[] + + * pname:aspectMask is a combination of elink:VkImageAspectFlagBits, + selecting the color, depth and/or stencil aspects to be copied. + * pname:mipLevel is the mipmap level to copy from. + * pname:baseArrayLayer and pname:layerCount are the starting layer and + number of layers to copy. + +include::../validity/structs/VkImageSubresourceLayers.txt[] + [[copies-buffers-images]] == Copying Data Between Buffers and Images +// refBegin vkCmdCopyBufferToImage Copy data from a buffer into an image. + To copy data from a buffer object to an image object, call: include::../protos/vkCmdCopyBufferToImage.txt[] @@ -234,6 +246,8 @@ source buffer to the specified region of the destination image. include::../validity/protos/vkCmdCopyBufferToImage.txt[] +// refBegin vkCmdCopyImageToBuffer Copy image data into a buffer. + To copy data from an image object to a buffer object, call: include::../protos/vkCmdCopyImageToBuffer.txt[] @@ -253,6 +267,8 @@ source image to the specified region of the destination buffer. include::../validity/protos/vkCmdCopyImageToBuffer.txt[] +// refBegin VkBufferImageCopy - Structure specifying a buffer image copy operation + For both flink:vkCmdCopyBufferToImage and flink:vkCmdCopyImageToBuffer, each element of pname:pRegions is a structure defined as: @@ -380,6 +396,8 @@ destination of the copy. [[copies-imagescaling]] == Image Copies with Scaling +// refBegin vkCmdBlitImage - Copy regions of an image, potentially performing format conversion, + To copy regions of a source image into a destination image, potentially performing format conversion, arbitrary scaling, and filtering, call: @@ -399,23 +417,9 @@ include::../protos/vkCmdBlitImage.txt[] * pname:filter is a elink:VkFilter specifying the filter to apply if the blits require scaling. -include::../validity/protos/vkCmdBlitImage.txt[] - fname:vkCmdBlitImage mustnot: be used for multisampled source or destination images. Use flink:vkCmdResolveImage for this purpose. -The sname:VkImageBlit structure is defined as: - -include::../structs/VkImageBlit.txt[] - -For each element of the pname:pRegions array, a blit operation is performed -between the region of pname:srcSubresource of pname:srcImage (bounded by -pname:srcOffsets[0] and pname:srcOffsets[1]) and a region of -pname:dstSubresource of pname:dstImage (bounded by pname:dstOffsets[0] and -pname:dstOffsets[1]). - -include::../validity/structs/VkImageBlit.txt[] - If sizes of source and destination extents do not match, scaling is performed by applying the filtering mode specified by pname:filter parameter. ename:VK_FILTER_LINEAR uses bilinear interpolation, and @@ -468,10 +472,33 @@ The following filtering and conversion rules apply: Signed and unsigned integers are converted by first clamping to the representable range of the destination format, then casting the value. +include::../validity/protos/vkCmdBlitImage.txt[] + +// refBegin VkImageBlit - Structure specifying an image blit operation + +The sname:VkImageBlit structure is defined as: + +include::../structs/VkImageBlit.txt[] + + * pname:srcSubresource is the subresource to blit from. + * pname:srcOffsets is an array of two slink:VkOffset3D structures + specifying the bounds of the source region within pname:srcSubresource. + * pname:dstSubresource is the subresource to blit into. + * pname:dstOffsets is an array of two slink:VkOffset3D structures + specifying the bounds of the destination region within + pname:dstSubresource. + +For each element of the pname:pRegions array, a blit operation is performed +the specified source and destination regions. + +include::../validity/structs/VkImageBlit.txt[] + [[copies-resolve]] == Resolving Multisample Images +// refBegin vkCmdResolveImage Resolve regions of an image. + To resolve a multisample image to a non-multisample image, call: include::../protos/vkCmdResolveImage.txt[] @@ -488,8 +515,29 @@ include::../protos/vkCmdResolveImage.txt[] * pname:pRegions is a pointer to an array of slink:VkImageResolve structures specifying the regions to resolve. +During the resolve the samples corresponding to each pixel location in the +source are converted to a single sample before being written to the +destination. If the source formats are floating-point or normalized types, +the sample values for each pixel are resolved in an implementation-dependent +manner. If the source formats are integer types, a single sample's value is +selected for each pixel. + +pname:srcOffset and pname:dstOffset select the initial x, y, and z +offsets in texels of the sub-regions of the source and destination image +data. pname:extent is the size in texels of the source +image to resolve in pname:width, pname:height and pname:depth. 1D images use +only pname:x and pname:width. 2D images use pname:x, pname:y, pname:width +and pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, +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 resolved to the destination image. + include::../validity/protos/vkCmdResolveImage.txt[] +// refBegin VkImageResolve - Structure specifying an image resolve operation + The sname:VkImageResolve structure is defined as: include::../structs/VkImageResolve.txt[] @@ -509,21 +557,3 @@ include::../structs/VkImageResolve.txt[] include::../validity/structs/VkImageResolve.txt[] -During the resolve the samples corresponding to each pixel location in the -source are converted to a single sample before being written to the -destination. If the source formats are floating-point or normalized types, -the sample values for each pixel are resolved in an implementation-dependent -manner. If the source formats are integer types, a single sample's value is -selected for each pixel. - -pname:srcOffset and pname:dstOffset select the initial x, y, and z -offsets in texels of the sub-regions of the source and destination image -data. pname:extent is the size in texels of the source -image to resolve in pname:width, pname:height and pname:depth. 1D images use -only pname:x and pname:width. 2D images use pname:x, pname:y, pname:width -and pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, -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 resolved to the destination image. diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index badcc6ebfe..f8b73c87b4 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.txt @@ -138,7 +138,7 @@ pname:shaderStorageImageWriteWithoutFormat>> feature is not enabled, storage image declarations must: specify the image format in the shader if the variable is used for store operations. -Storage images are declared in GLSL shader source using uniform ``image'' +Storage images are declared in GLSL shader source using uniform code:image variables of the appropriate dimensionality as well as a format layout qualifier (if necessary): @@ -173,7 +173,7 @@ parameters which control address calculations, filtering behavior, and other properties, that can: be used to perform filtered loads from _sampled images_ (see <>). -Samplers are declared in GLSL shader source using uniform ``sampler'' +Samplers are declared in GLSL shader source using uniform code:sampler variables, where the sampler type has no associated texture dimensionality: .GLSL Example @@ -211,7 +211,7 @@ performed. The same sampler can: be used to sample from multiple images, and it is possible to sample from the same sampled image with multiple samplers, each containing a different set of sampling parameters. -Sampled images are declared in GLSL shader source using uniform ``texture'' +Sampled images are declared in GLSL shader source using uniform code:texture variables of the appropriate dimensionality: .GLSL example @@ -254,7 +254,7 @@ the descriptor set in a combined descriptor. ==== Combined image samplers are declared in GLSL shader source using uniform -``sampler'' variables of the appropriate dimensionality: +code:sampler variables of the appropriate dimensionality: .GLSL example [source,{basebackend@docbook:c:glsl}] @@ -299,7 +299,7 @@ formatted data that is stored in a buffer and is made accessible to shaders. Uniform texel buffers are read-only. Uniform texel buffers are declared in GLSL shader source using uniform -``samplerBuffer'' variables: +code:samplerBuffer variables: .GLSL example [source,{basebackend@docbook:c:glsl}] @@ -337,7 +337,7 @@ operations in shaders, may: support a different maximum length, and may: have different performance characteristics. Storage texel buffers are declared in GLSL shader source using uniform -``imageBuffer'' variables: +code:imageBuffer variables: .GLSL example [source,{basebackend@docbook:c:glsl}] @@ -541,14 +541,24 @@ between shader stages and shader resources. [[descriptorsets-setlayout]] === Descriptor Set Layout +// refBegin VkDescriptorSetLayout - Opaque handle to a descriptor set layout object + A descriptor set layout object is defined by an array of zero or more descriptor bindings. Each individual descriptor binding is specified by a descriptor type, a count (array size) of the number of descriptors in the binding, a set of shader stages that can: access the binding, and (if using immutable samplers) an array of sampler descriptors. -Descriptor set layouts are represented by sname:VkDescriptorSetLayout -objects which are created by calling: +Descriptor set layout objects are represented by sname:VkDescriptorSetLayout +handles: + +include::../handles/VkDescriptorSetLayout.txt[] + +// refEnd VkDescriptorSetLayout + +// refBegin vkCreateDescriptorSetLayout Create a new descriptor set layout. + +To create descriptor set layout objects, call: include::../protos/vkCreateDescriptorSetLayout.txt[] @@ -564,6 +574,8 @@ include::../protos/vkCreateDescriptorSetLayout.txt[] include::../validity/protos/vkCreateDescriptorSetLayout.txt[] +// refBegin VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout + Information about the descriptor set layout is passed in an instance of the sname:VkDescriptorSetLayoutCreateInfo structure: @@ -578,6 +590,8 @@ include::../structs/VkDescriptorSetLayoutCreateInfo.txt[] include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[] +// refBegin VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding + The sname:VkDescriptorSetLayoutBinding structure is defined as: include::../structs/VkDescriptorSetLayoutBinding.txt[] @@ -591,18 +605,19 @@ include::../structs/VkDescriptorSetLayoutBinding.txt[] zero this binding entry is reserved and the resource mustnot: be accessed from any stage via this binding within any pipeline using the set layout. - * pname:stageFlags member is a bitfield of elink:VkShaderStageFlagBits + * pname:stageFlags member is a bitmask of elink:VkShaderStageFlagBits specifying which pipeline shader stages can: access a resource for this binding. ename:VK_SHADER_STAGE_ALL is a shorthand specifying that all defined shader stages, including any additional stages defined by extensions, can: access the resource. + +-- If a shader stage is not included in pname:stageFlags, then a resource mustnot: be accessed from that stage via this binding within any pipeline using the set layout. There are no limitations on what combinations of stages can: be used by a descriptor binding, and in particular a binding can: be used by both graphics stages and the compute stage. - +-- * pname:pImmutableSamplers affects initialization of samplers. If pname:descriptorType specifies a ename:VK_DESCRIPTOR_TYPE_SAMPLER or ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER type descriptor, then @@ -775,6 +790,8 @@ myResult = vkCreateDescriptorSetLayout( &myDescriptorSetLayout[1]); ------------------------------------------------------------------------------- +// refBegin vkDestroyDescriptorSetLayout Destroy a descriptor set layout object + To destroy a descriptor set layout, call: include::../protos/vkDestroyDescriptorSetLayout.txt[] @@ -791,6 +808,8 @@ include::../validity/protos/vkDestroyDescriptorSetLayout.txt[] [[descriptorsets-pipelinelayout]] === Pipeline Layouts +// refBegin VkPipelineLayout - Opaque handle to a pipeline layout object + Access to descriptor sets from a pipeline is accomplished through a _pipeline layout_. Zero or more descriptor set layouts and zero or more push constant ranges are combined to form a @@ -800,7 +819,15 @@ descriptor sets with each having a specific layout. This sequence of layouts is used to determine the interface between shader stages and shader resources. Each pipeline is created using a pipeline layout. -A pipeline layout is created by calling: +Pipeline layout objects are represented by sname:VkPipelineLayout handles: + +include::../handles/VkPipelineLayout.txt[] + +// refEnd VkPipelineLayout + +// refBegin vkCreatePipelineLayout Creates a new pipeline layout object. + +To create a pipeline layout, call: include::../protos/vkCreatePipelineLayout.txt[] @@ -815,6 +842,8 @@ include::../protos/vkCreatePipelineLayout.txt[] include::../validity/protos/vkCreatePipelineLayout.txt[] +// refBegin VkPipelineLayoutCreateInfo Structure specifying the parameters of a newly created pipeline layout object. + The slink:VkPipelineLayoutCreateInfo structure is defined as: include::../structs/VkPipelineLayoutCreateInfo.txt[] @@ -843,6 +872,8 @@ pipelines that is expected to outperform memory-backed resource updates. include::../validity/structs/VkPipelineLayoutCreateInfo.txt[] +// refBegin VkPushConstantRange - Structure specifying a push constant range + The sname:VkPushConstantRange structure is defined as: include::../structs/VkPushConstantRange.txt[] @@ -922,6 +953,8 @@ type of resource that can: be used in any pipeline stage as described in |============================= +// refBegin vkDestroyPipelineLayout Destroy a pipeline layout object + To destroy a pipeline layout, call: include::../protos/vkDestroyPipelineLayout.txt[] @@ -1031,12 +1064,22 @@ myResult = vkCreatePipelineLayout( [[descriptorsets-allocation]] === Allocation of Descriptor Sets -Descriptor sets are allocated from _descriptor pool_ objects. A descriptor -pool maintains a pool of descriptors, from which sets are allocated. +// refBegin VkDescriptorPool - Opaque handle to a descriptor pool object + +A _descriptor pool_ +maintains a pool of descriptors, from which descriptor sets are allocated. Descriptor pools are externally synchronized, meaning that the application mustnot: allocate and/or free descriptor sets from the same pool in multiple threads simultaneously. +Descriptor pools are represented by sname:VkDescriptorPool handles: + +include::../handles/VkDescriptorPool.txt[] + +// refEnd VkDescriptorPool + +// refBegin vkCreateDescriptorPool Creates a descriptor pool object. + To create a descriptor pool object, call: include::../protos/vkCreateDescriptorPool.txt[] @@ -1057,6 +1100,8 @@ The created descriptor pool is returned in pname:pDescriptorPool. include::../validity/protos/vkCreateDescriptorPool.txt[] +// refBegin VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool + Additional information about the pool is passed in an instance of the sname:VkDescriptorPoolCreateInfo structure: @@ -1064,8 +1109,23 @@ include::../structs/VkDescriptorPoolCreateInfo.txt[] * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags specifies certain supported operations on the pool, with - possible values defined below. + * pname:flags specifies certain supported operations on the pool. + Bits which can: be set include: ++ +-- +// refBegin VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool +include::../enums/VkDescriptorPoolCreateFlagBits.txt[] +-- ++ +If pname:flags includes +ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, then descriptor +sets can: return their individual allocations to the pool, i.e. all of +fname:vkAllocateDescriptorSets, fname:vkFreeDescriptorSets, and +fname:vkResetDescriptorPool are allowed. Otherwise, descriptor sets +allocated from the pool mustnot: be individually freed back to the pool, +i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are +allowed. ++ * pname:maxSets is the maximum number of descriptor sets that can: be allocated from the pool. * pname:poolSizeCount is the number of elements in pname:pPoolSizes. @@ -1073,8 +1133,6 @@ include::../structs/VkDescriptorPoolCreateInfo.txt[] structures, each containing a descriptor type and number of descriptors of that type to be allocated in the pool. -include::../validity/structs/VkDescriptorPoolCreateInfo.txt[] - If multiple sname:VkDescriptorPoolSize structures appear in the pname:pPoolSizes array then the pool will be created with enough storage for the total number of descriptors of each type. @@ -1100,19 +1158,9 @@ If an allocation failure occurs due to fragmentation, an application can: create an additional descriptor pool to perform further descriptor set allocations. -The pname:flags member of sname:VkDescriptorPoolCreateInfo can: include the -following values: +include::../validity/structs/VkDescriptorPoolCreateInfo.txt[] -include::../enums/VkDescriptorPoolCreateFlagBits.txt[] - -If pname:flags includes -ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, then descriptor -sets can: return their individual allocations to the pool, i.e. all of -fname:vkAllocateDescriptorSets, fname:vkFreeDescriptorSets, and -fname:vkResetDescriptorPool are allowed. Otherwise, descriptor sets -allocated from the pool mustnot: be individually freed back to the pool, -i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are -allowed. +// refBegin VkDescriptorPoolSize - Structure specifying descriptor pool size The sname:VkDescriptorPoolSize structure is defined as: @@ -1124,6 +1172,8 @@ include::../structs/VkDescriptorPoolSize.txt[] include::../validity/structs/VkDescriptorPoolSize.txt[] +// refBegin vkDestroyDescriptorPool Destroy a descriptor pool object + To destroy a descriptor pool, call: include::../protos/vkDestroyDescriptorPool.txt[] @@ -1133,13 +1183,24 @@ include::../protos/vkDestroyDescriptorPool.txt[] * pname:pAllocator controls host memory allocation as described in the <> chapter. -include::../validity/protos/vkDestroyDescriptorPool.txt[] - When a pool is destroyed, all descriptor sets allocated from the pool are implicitly freed and become invalid. Descriptor sets allocated from a given pool do not need to be freed before destroying that descriptor pool. -Descriptor sets are allocated from a descriptor pool by calling: +include::../validity/protos/vkDestroyDescriptorPool.txt[] + +// refBegin VkDescriptorSet - Opaque handle to a descriptor set object + +Descriptor sets are allocated from descriptor pool objects, and +are represented by sname:VkDescriptorSet handles: + +include::../handles/VkDescriptorSet.txt[] + +// refEnd VkDescriptorSet + +// refBegin vkAllocateDescriptorSets Allocate one or more descriptor sets. + +To allocate descriptor sets from a descriptor pool, call: include::../protos/vkAllocateDescriptorSets.txt[] @@ -1152,8 +1213,24 @@ include::../protos/vkAllocateDescriptorSets.txt[] array must: be at least the length specified by the pname:descriptorSetCount member of pname:pAllocateInfo. +The allocated descriptor sets are returned in pname:pDescriptorSets. + +When a descriptor set is allocated, the initial state is largely +uninitialized and all descriptors are undefined. However, +the descriptor set can: be bound +in a command buffer without causing errors or exceptions. All entries that +are statically used by a pipeline in a drawing or dispatching command must: +have been populated before the descriptor set is bound for use by that command. +Entries that are not statically used by a pipeline can: have uninitialized +descriptors or descriptors of resources that have been destroyed, and executing +a draw or dispatch with such a descriptor set bound does not cause undefined +behavior. This means applications need not populate unused entries with dummy +descriptors. + include::../validity/protos/vkAllocateDescriptorSets.txt[] +// refBegin VkDescriptorSetAllocateInfo Structure specifying the allocation parameters for descriptor sets. + The sname:VkDescriptorSetAllocateInfo structure is defined as: include::../structs/VkDescriptorSetAllocateInfo.txt[] @@ -1166,23 +1243,11 @@ include::../structs/VkDescriptorSetAllocateInfo.txt[] * pname:pSetLayouts is an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated. -The allocated descriptor sets are returned in pname:pDescriptorSets. - include::../validity/structs/VkDescriptorSetAllocateInfo.txt[] -When a descriptor set is allocated, the initial state is largely -uninitialized and all descriptors are undefined. However, -the descriptor set can: be bound -in a command buffer without causing errors or exceptions. All entries that -are statically used by a pipeline in a drawing or dispatching command must: -have been populated before the descriptor set is bound for use by that command. -Entries that are not statically used by a pipeline can: have uninitialized -descriptors or descriptors of resources that have been destroyed, and executing -a draw or dispatch with such a descriptor set bound does not cause undefined -behavior. This means applications need not populate unused entries with dummy -descriptors. +// refBegin vkFreeDescriptorSets Free one or more descriptor sets -Allocated descriptor sets are freed by calling: +To free allocated descriptor sets, call: include::../protos/vkFreeDescriptorSets.txt[] @@ -1192,45 +1257,36 @@ include::../protos/vkFreeDescriptorSets.txt[] * pname:descriptorSetCount is the number of elements in the pname:pDescriptorSets array. * pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet - objects. All elements of pname:pDescriptorSets must: have been allocated - from pname:descriptorPool. - -In order to free individual descriptor sets, pname:descriptorPool must: have -been created with the -ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT flag. + objects. -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -(Jon) Several comments above seem like they belong in validity XML. -==== -endif::editing-notes[] +After a successful call to fname:vkFreeDescriptorSets, all descriptor sets +in pname:pDescriptorSets are invalid. include::../validity/protos/vkFreeDescriptorSets.txt[] -After a successful call to fname:vkFreeDescriptorSets, all descriptor sets -in pname:pDescriptorSets are invalid. +// refBegin vkResetDescriptorPool Resets a descriptor pool object. -Rather than freeing individual descriptor sets, all descriptor sets -allocated from a given pool can: be returned to the pool by calling: +To return all descriptor sets allocated from a given pool to the pool, +rather than freeing individual descriptor sets, call: include::../protos/vkResetDescriptorPool.txt[] * pname:device is the logical device that owns the descriptor pool. * pname:descriptorPool is the descriptor pool to be reset. - * pname:flags is currently unused and must: be zero. - -include::../validity/protos/vkResetDescriptorPool.txt[] + * pname:flags is reserved for future use. Resetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed. +include::../validity/protos/vkResetDescriptorPool.txt[] + [[descriptorsets-updates]] === Descriptor Set Updates +// refBegin vkUpdateDescriptorSets Update the contents of a descriptor set object. + Once allocated, descriptor sets can: be updated with a combination of write and copy operations. To update descriptor sets, call: @@ -1253,12 +1309,18 @@ followed by the operations described by pname:pDescriptorCopies. Within each array, the operations are performed in the order they appear in the array. -include::../validity/protos/vkUpdateDescriptorSets.txt[] - Each element in the pname:pDescriptorWrites array describes an operation updating the descriptor set using descriptors for resources specified in the structure. +Each element in the pname:pDescriptorCopies array is a +slink:VkCopyDescriptorSet structure describing an operation copying +descriptors between sets. + +include::../validity/protos/vkUpdateDescriptorSets.txt[] + +// refBegin VkWriteDescriptorSet Structure specifying the parameters of a descriptor set write operation. + The sname:VkWriteDescriptorSet structure is defined as: include::../structs/VkWriteDescriptorSet.txt[] @@ -1271,35 +1333,72 @@ include::../structs/VkWriteDescriptorSet.txt[] * pname:descriptorCount is the number of descriptors to update (the number of elements in pname:pImageInfo, pname:pBufferInfo, or pname:pTexelBufferView). - * pname:descriptorType is the type of each descriptor in pname:pImageInfo, - pname:pBufferInfo, or pname:pTexelBufferView, and must: be the same type - as what was specified in sname:VkDescriptorSetLayoutBinding for + * pname:descriptorType is a elink:VkDescriptorType + specifying the type of each descriptor in pname:pImageInfo, + pname:pBufferInfo, or pname:pTexelBufferView, as described below. + It must: be the same type + as that specified in sname:VkDescriptorSetLayoutBinding for pname:dstSet at pname:dstBinding. The type of the descriptor also controls which array the descriptors are taken from. - pname:descriptorType can: take on values including: - -include::../enums/VkDescriptorType.txt[] - - * pname:pImageInfo points to an array of sname:VkDescriptorImageInfo + * pname:pImageInfo points to an array of slink:VkDescriptorImageInfo structures or is ignored, as described below. - * pname:pBufferInfo points to an array of sname:VkDescriptorBufferInfo + * pname:pBufferInfo points to an array of slink:VkDescriptorBufferInfo structures or is ignored, as described below. - * pname:pTexelBufferView points to an array of sname:VkBufferView - handles or is ignored, as described below. - -include::../validity/structs/VkWriteDescriptorSet.txt[] + * pname:pTexelBufferView points to an array of slink:VkBufferView handles + as described in the <> section or + is ignored, as described below. Only one of pname:pImageInfo, pname:pBufferInfo, or pname:pTexelBufferView members is used according to the descriptor type specified in the pname:descriptorType member of the containing sname:VkWriteDescriptorSet structure, as specified below. +[[descriptorsets-updates-consecutive, consecutive binding updates]] +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. 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. + +include::../validity/structs/VkWriteDescriptorSet.txt[] + +// refBegin VkDescriptorType Specifies the type of a descriptor in a descriptor set. + +The type of descriptors in a descriptor set is specified by +slink:VkWriteDescriptorSet::pname:descriptorType, which must: be one of the +values: + +include::../enums/VkDescriptorType.txt[] + If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the elements of the -pname:pBufferInfo array of sname:VkDescriptorBufferInfo structures will be -used to update the descriptors, and other arrays will be ignored. +slink:VkWriteDescriptorSet::pname:pBufferInfo array of +slink:VkDescriptorBufferInfo structures will be used to update the +descriptors, and other arrays will be ignored. + +If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or +ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the +slink:VkWriteDescriptorSet::pname:pTexelBufferView array will be used to +update the descriptors, and other arrays will be ignored. + +If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER, +ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, +ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, +ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or +ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the +slink:VkWriteDescriptorSet::pname:pImageInfo array of +slink:VkDescriptorImageInfo structures will be used to update the +descriptors, and other arrays will be ignored. + +// refEnd VkDescriptorType + +// refBegin VkDescriptorBufferInfo - Structure specifying descriptor buffer info The sname:VkDescriptorBufferInfo structure is defined as: @@ -1313,25 +1412,14 @@ include::../structs/VkDescriptorBufferInfo.txt[] update, or ename:VK_WHOLE_SIZE to use the range from pname:offset to the end of the buffer. -include::../validity/structs/VkDescriptorBufferInfo.txt[] - For ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types, pname:offset is the base offset from which the dynamic offset is applied and pname:range is the static size used for all dynamic offsets. -If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or -ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the pname:pTexelBufferView -array will be used to update the descriptors, and other arrays will be -ignored. +include::../validity/structs/VkDescriptorBufferInfo.txt[] -If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER, -ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, -ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, -ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or -ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the -pname:pImageInfo array of sname:VkDescriptorImageInfo structures will be -used to update the descriptors, and other arrays will be ignored. +// refBegin VkDescriptorImageInfo - Structure specifying descriptor image info The sname:VkDescriptorImageInfo structure is defined as: @@ -1353,25 +1441,12 @@ include::../structs/VkDescriptorImageInfo.txt[] ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. -include::../validity/structs/VkDescriptorImageInfo.txt[] - Members of sname:VkDescriptorImageInfo that are not used in an update (as described above) are ignored. -[[descriptorsets-updates-consecutive, consecutive binding updates]] -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. 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. +include::../validity/structs/VkDescriptorImageInfo.txt[] -Each element in the pname:pDescriptorCopies array is a -slink:VkCopyDescriptorSet structure describing an operation copying -descriptors between sets. +// refBegin VkCopyDescriptorSet - Structure specifying a copy descriptor set operation The sname:VkCopyDescriptorSet structure is defined as: @@ -1395,8 +1470,9 @@ include::../validity/structs/VkCopyDescriptorSet.txt[] [[descriptorsets-binding]] === Descriptor Set Binding -Once descriptor sets have been allocated, one or more descriptor sets can: -be bound to the command buffer by calling: +// refBegin vkCmdBindDescriptorSets Binds descriptor sets to a command buffer. + +To bind one or more descriptor sets to a command buffer, call: include::../protos/vkCmdBindDescriptorSets.txt[] @@ -1488,8 +1564,11 @@ Push constants represent a high speed path to modify constant data in pipelines that is expected to outperform memory-backed resource updates. ==== -The contents of the push constants are undefined at the start of a command -buffer. Push constants are updated by calling: +The values of push constants are undefined at the start of a command buffer. + +// refBegin vkCmdPushConstants Update the values of push constants. + +To update push constants, call: include::../protos/vkCmdPushConstants.txt[] diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 7ef5e7c133..a07628a2b6 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -7,15 +7,26 @@ Once Vulkan is initialized, devices and queues are the primary objects used to interact with a Vulkan implementation. +// refBegin VkPhysicalDevice - Opaque handle to a physical device object + Vulkan separates the concept of _physical_ and _logical_ devices. A physical device usually represents a single device in a system (perhaps made up of several individual hardware devices working together), of which there are a finite number. A logical device represents an application's view of the device. +Physical devices are represented by sname:VkPhysicalDevice handles: + +include::../handles/VkPhysicalDevice.txt[] + +// refEnd VkPhysicalDevice + + [[devsandqueues-physical-device-enumeration]] == Physical Devices +// refBegin vkEnumeratePhysicalDevices Enumerates the physical devices accessible to a Vulkan instance. + To retrieve a list of physical device objects representing the physical devices installed in the system, call: @@ -43,8 +54,9 @@ were returned. include::../validity/protos/vkEnumeratePhysicalDevices.txt[] -Once enumerated, general properties of the physical devices are queried by -calling: +// refBegin vkGetPhysicalDeviceProperties Returns properties of a physical device. + +To query general properties of physical devices once enumerated, call: include::../protos/vkGetPhysicalDeviceProperties.txt[] @@ -56,6 +68,8 @@ include::../protos/vkGetPhysicalDeviceProperties.txt[] include::../validity/protos/vkGetPhysicalDeviceProperties.txt[] +// refBegin VkPhysicalDeviceProperties - Structure specifying physical device properties + The sname:VkPhysicalDeviceProperties structure is defined as: include::../structs/VkPhysicalDeviceProperties.txt[] @@ -83,8 +97,6 @@ include::../structs/VkPhysicalDeviceProperties.txt[] physical device. See <> for details. -include::../validity/structs/VkPhysicalDeviceProperties.txt[] - The pname:vendorID and pname:deviceID fields are provided to allow applications to adapt to device characteristics that are not adequately exposed by other Vulkan queries. These may: include @@ -121,6 +133,10 @@ constraints and guidelines: specific silicon IP GPU version and configuration should use the same device ID, even if those uses occur in different SoCs. +include::../validity/structs/VkPhysicalDeviceProperties.txt[] + +// refBegin VkPhysicalDeviceType supported physical device types + The physical devices types are: include::../enums/VkPhysicalDeviceType.txt[] @@ -141,7 +157,11 @@ does not directly affect the operation of the system. However, the device type may: correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are. -Properties of queues available on a physical device are queried by calling: +// refEnd VkPhysicalDeviceType + +// refBegin vkGetPhysicalDeviceQueueFamilyProperties Reports properties of the queues of the specified physical device. + +To query properties of queues available on a physical device, call: include::../protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[] @@ -164,6 +184,8 @@ written. include::../validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[] +// refBegin VkQueueFamilyProperties Structure providing information about a queue family. + The sname:VkQueueFamilyProperties structure is defined as: include::../structs/VkQueueFamilyProperties.txt[] @@ -182,6 +204,8 @@ include::../structs/VkQueueFamilyProperties.txt[] family. The bits specified in pname:queueFlags are: + +// refBegin VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family include::../enums/VkQueueFlagBits.txt[] * if ename:VK_QUEUE_GRAPHICS_BIT is set, then the queues in this queue @@ -212,8 +236,6 @@ reporting the ename:VK_QUEUE_TRANSFER_BIT capability separately for that queue family is optional:. ==== -include::../validity/structs/VkQueueFamilyProperties.txt[] - For further details see <>. The value returned in pname:minImageTransferGranularity has a unit of @@ -266,11 +288,14 @@ transfer operations are only required: to support whole mip level transfers, thus pname:minImageTransferGranularity for queues belonging to such queue families may: be latexmath:[$(0,0,0)$]. +include::../validity/structs/VkQueueFamilyProperties.txt[] + The <> section describes memory properties queried from the physical device. For physical device feature queries see the <> chapter. + [[devsandqueues-devices]] == Devices @@ -296,6 +321,16 @@ section above. [[devsandqueues-device-creation]] === Device Creation +// refBegin VkDevice - Opaque handle to a device object + +Logical devices are represented by sname:VkDevice handles: + +include::../handles/VkDevice.txt[] + +// refEnd VkDevice + +// refBegin vkCreateDevice Create a new device instance. + A logical device is created as a _connection_ to a physical device. To create a logical device, call: @@ -312,8 +347,15 @@ include::../protos/vkCreateDevice.txt[] * pname:pDevice points to a handle in which the created sname:VkDevice is returned. +Multiple logical devices can: be created from the same physical device. +Logical device creation may: fail due to lack of device-specific resources +(in addition to the other errors). If that occurs, fname:vkCreateDevice will +return ename:VK_ERROR_TOO_MANY_OBJECTS. + include::../validity/protos/vkCreateDevice.txt[] +// refBegin VkDeviceCreateInfo - Structure specifying parameters of a newly created device + The sname:VkDeviceCreateInfo structure is defined as: include::../structs/VkDeviceCreateInfo.txt[] @@ -347,10 +389,6 @@ include::../structs/VkDeviceCreateInfo.txt[] include::../validity/structs/VkDeviceCreateInfo.txt[] -Multiple logical devices can: be created from the same physical device. -Logical device creation may: fail due to lack of device-specific resources -(in addition to the other errors). If that occurs, fname:vkCreateDevice will -return ename:VK_ERROR_TOO_MANY_OBJECTS. [[devsandqueues-use]] === Device Use @@ -445,7 +483,7 @@ ifdef::editing-notes[] [NOTE] .editing-note ==== -TODO (piman) - I don't think we're very clear about what ``in-use by the +TODO (piman) - I do not think we are very clear about what ``in-use by the device'' means. ==== endif::editing-notes[] @@ -454,6 +492,8 @@ endif::editing-notes[] [[devsandqueues-destruction]] === Device Destruction +// refBegin vkDestroyDevice Destroy a logical device. + To destroy a device, call: include::../protos/vkDestroyDevice.txt[] @@ -462,8 +502,6 @@ include::../protos/vkDestroyDevice.txt[] * pname:pAllocator controls host memory allocation as described in the <> chapter. -include::../validity/protos/vkDestroyDevice.txt[] - To ensure that no work is active on the device, flink:vkDeviceWaitIdle can: be used to gate the destruction of the device. Prior to destroying a device, an application is responsible for destroying/freeing any Vulkan @@ -479,6 +517,8 @@ that an application explicitly free all of these resources prior to calling fname:vkDestroyDevice. ==== +include::../validity/protos/vkDestroyDevice.txt[] + [[devsandqueues-queues]] == Queues @@ -520,11 +560,21 @@ device. This is described in the following section. [[devsandqueues-queue-creation]] === Queue Creation +// refBegin VkQueue - Opaque handle to a queue object + Creating a logical device also creates the queues associated with that device. The queues to create are described by a set of slink:VkDeviceQueueCreateInfo structures that are passed to flink:vkCreateDevice in pname:pQueueCreateInfos. +Queues are represented by sname:VkQueue handles: + +include::../handles/VkQueue.txt[] + +// refEnd VkQueue + +// refBegin VkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue + The sname:VkDeviceQueueCreateInfo structure is defined as: include::../structs/VkDeviceQueueCreateInfo.txt[] @@ -547,6 +597,8 @@ include::../structs/VkDeviceQueueCreateInfo.txt[] include::../validity/structs/VkDeviceQueueCreateInfo.txt[] +// refBegin vkGetDeviceQueue Get a queue handle from a device. + To retrieve a handle to a VkQueue object, call: include::../protos/vkGetDeviceQueue.txt[] @@ -629,12 +681,16 @@ Submission commands take as parameters a target queue, zero or more _batches_ of work, and an optional fence to signal upon completion. Each batch consists of three distinct parts: -. Zero or more semaphores to wait on before execution of the rest of the batch. -** If present, these describe a <>. -. Zero or more work items to execute. -** If present, these describe a _queue operation_ matching the work described. -. Zero or more semaphores to signal upon completion of the work items. -** If present, these describe a <>. + . Zero or more semaphores to wait on before execution of the rest of the + batch. + ** If present, these describe a <>. + . Zero or more work items to execute. + ** If present, these describe a _queue operation_ matching the work + described. + . Zero or more semaphores to signal upon completion of the work items. + ** If present, these describe a <>. If a fence is present in a queue submission, it describes a <>. @@ -642,6 +698,7 @@ If a fence is present in a queue submission, it describes a All work described by a queue submission command must: be submitted to the queue before the command returns. + [[devsandqueues-sparsebinding]] ==== Sparse Memory Binding diff --git a/doc/specs/vulkan/chapters/dispatch.txt b/doc/specs/vulkan/chapters/dispatch.txt index 4066829722..6ef82331cc 100644 --- a/doc/specs/vulkan/chapters/dispatch.txt +++ b/doc/specs/vulkan/chapters/dispatch.txt @@ -4,13 +4,15 @@ [[dispatch]] = Dispatching Commands -_Dispatching commands_ (commands with ``Dispatch'' in the name) provoke work +_Dispatching commands_ (commands with ftext:Dispatch in the name) provoke work in a compute pipeline. Dispatching commands are recorded into a command buffer and when executed by a queue, will produce work which executes according to the currently bound compute pipeline. A compute pipeline must: be bound to a command buffer before any dispatch commands are recorded in that command buffer. +// refBegin vkCmdDispatch Dispatch compute work items. + To record a dispatch, call: include::../protos/vkCmdDispatch.txt[] @@ -26,7 +28,9 @@ latexmath:[$x \times y \times z$] local workgroups is assembled. include::../validity/protos/vkCmdDispatch.txt[] -An indirect dispatch is recorded by calling: +// refBegin vkCmdDispatchIndirect Dispatch compute work items using indirect parameters. + +To record an indirect command dispatch, call: include::../protos/vkCmdDispatchIndirect.txt[] @@ -44,11 +48,19 @@ at pname:offset. include::../validity/protos/vkCmdDispatchIndirect.txt[] +// refBegin VkDispatchIndirectCommand - Structure specifying a dispatch indirect command + The sname:VkDispatchIndirectCommand structure is defined as: include::../structs/VkDispatchIndirectCommand.txt[] + * pname:x is the number of local workgroups to dispatch in the X dimension. + * pname:y is the number of local workgroups to dispatch in the Y dimension. + * pname:z is the number of local workgroups to dispatch in the Z dimension. + The members of sname:VkDispatchIndirectCommand structure have the same meaning as the similarly named parameters of flink:vkCmdDispatch. include::../validity/structs/VkDispatchIndirectCommand.txt[] + +// refEnd VkDispatchIndirectCommand vkCmdDispatchIndirect diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index 67f0df6ca3..bba7690e67 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -11,6 +11,8 @@ currently bound graphics pipeline. A graphics pipeline must: be bound to a command buffer before any drawing commands are recorded in that command buffer. +// refBegin VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state + Each draw is made up of zero or more vertices and zero or more instances, which are processed by the device and result in the assembly of primitives. Primitives are assembled according to the @@ -33,8 +35,6 @@ include::../structs/VkPipelineInputAssemblyStateCreateInfo.txt[] * pname:topology is a elink:VkPrimitiveTopology defining the primitive topology, as described below. -include::../validity/structs/VkPipelineInputAssemblyStateCreateInfo.txt[] - Restarting the assembly of primitives discards the most recent index values if those elements formed an incomplete primitive, and restarts the primitive assembly using the subsequent indices, but only assembling the immediately @@ -42,10 +42,14 @@ following element through the end of the originally specified elements. The primitive restart index value comparison is performed before adding the pname:vertexOffset value to the index value. +include::../validity/structs/VkPipelineInputAssemblyStateCreateInfo.txt[] + [[drawing-primitive-topologies]] == Primitive Topologies +// refBegin VkPrimitiveTopology supported primitive topologies + _Primitive topology_ determines how consecutive vertices are organized into primitives, and determines the type of primitive that is used at the beginning of the graphics pipeline. The effective topology for later stages @@ -55,6 +59,8 @@ topologies are defined by elink:VkPrimitiveTopology and include: include::../enums/VkPrimitiveTopology.txt[] +// refEnd VkPrimitiveTopology + Each primitive topology, and its construction from a list of vertices, is summarized below. @@ -108,9 +114,9 @@ ifdef::editing-notes[] ==== TODO: Add full caption: -* (a) A triangle strip. -* (b) A triangle fan. -* (c) Independent triangles. + * (a) A triangle strip. + * (b) A triangle fan. + * (c) Independent triangles. The numbers give the sequencing of the vertices in order within the vertex arrays. Note that in (a) and (b) triangle edge ordering is determined by the @@ -364,7 +370,9 @@ Drawing commands fall roughly into two categories: fname:vkCmdDrawIndexedIndirect) read index values from an _index buffer_ and use this to compute the code:vertexIndex value for the vertex shader. -An index buffer is bound to a command buffer by calling: +// refBegin vkCmdBindIndexBuffer Bind an index buffer to a command buffer. + +To bind an index buffer to a command buffer, call: include::../protos/vkCmdBindIndexBuffer.txt[] @@ -376,7 +384,10 @@ include::../protos/vkCmdBindIndexBuffer.txt[] * pname:indexType selects whether indices are treated as 16 bits or 32 bits. Possible values include: + +-- +// refBegin VkIndexType - type of index buffer indices include::../enums/VkIndexType.txt[] +-- include::../validity/protos/vkCmdBindIndexBuffer.txt[] @@ -397,6 +408,8 @@ For non-indexed draws, primitives with lower numbered code:vertexIndex values are earlier in API order. For indexed draws, primitives assembled from lower index buffer addresses are earlier in API order. +// refBegin vkCmdDraw Draw primitives. + To record a non-indexed draw, call: include::../protos/vkCmdDraw.txt[] @@ -417,6 +430,8 @@ assembled primitives execute the currently bound graphics pipeline. include::../validity/protos/vkCmdDraw.txt[] +// refBegin vkCmdDrawIndexed Issue an indexed draw into a command buffer. + To record an indexed draw, call: include::../protos/vkCmdDrawIndexed.txt[] @@ -454,7 +469,9 @@ pipeline. include::../validity/protos/vkCmdDrawIndexed.txt[] -A non-indexed indirect draw is recorded by calling: +// refBegin vkCmdDrawIndirect Issue an indirect draw into a command buffer. + +To record a non-indexed indirect draw, call: include::../protos/vkCmdDrawIndirect.txt[] @@ -477,16 +494,27 @@ less than or equal to one, pname:stride is ignored. include::../validity/protos/vkCmdDrawIndirect.txt[] +// refBegin VkDrawIndirectCommand - Structure specifying a draw indirect command + The sname:VkDrawIndirectCommand structure is defined as: include::../structs/VkDrawIndirectCommand.txt[] + * pname:vertexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstVertex is the index of the first vertex to draw. + * pname:firstInstance is the instance ID of the first instance to draw. + The members of sname:VkDrawIndirectCommand have the same meaning as the similarly named parameters of flink:vkCmdDraw. include::../validity/structs/VkDrawIndirectCommand.txt[] -An indexed indirect draw is recorded by calling: +// refEnd VkDrawIndirectCommand vkCmdDrawIndirect + +// refBegin vkCmdDrawIndexedIndirect Perform an indexed indirect draw. + +To record an indexed indirect draw, call: include::../protos/vkCmdDrawIndexedIndirect.txt[] @@ -509,11 +537,22 @@ pname:drawCount is less than or equal to one, pname:stride is ignored. include::../validity/protos/vkCmdDrawIndexedIndirect.txt[] +// refBegin VkDrawIndexedIndirectCommand - Structure specifying a draw indexed indirect command + The sname:VkDrawIndexedIndirectCommand structure is defined as: include::../structs/VkDrawIndexedIndirectCommand.txt[] + * pname:indexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstIndex is the base index within the index buffer. + * pname:vertexOffset is the value added to the vertex index before indexing + into the vertex buffer. + * pname:firstInstance is the instance ID of the first instance to draw. + The members of sname:VkDrawIndexedIndirectCommand have the same meaning as the similarly named parameters of flink:vkCmdDrawIndexed. include::../validity/structs/VkDrawIndexedIndirectCommand.txt[] + +// refEnd VkDrawIndexedIndirectCommand vkCmdDrawIndexedIndirect diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 92298c2f47..fe8fb81cde 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -38,6 +38,8 @@ allowed ranges. Instead, a validation layer would do those checks and flag issues. This avoids a performance penalty during production use of the application because those layers would not be enabled in production. +// refBegin vkEnumerateInstanceLayerProperties Returns up to requested number of global layer properties. + To query the available layers, call: include::../protos/vkEnumerateInstanceLayerProperties.txt[] @@ -47,8 +49,6 @@ include::../protos/vkEnumerateInstanceLayerProperties.txt[] * pname:pProperties is either `NULL` or a pointer to an array of slink:VkLayerProperties structures. -include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] - If pname:pProperties is `NULL`, then the number of layer properties available is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a variable set by the user to the number of elements in the @@ -60,6 +60,10 @@ is smaller than the number of layers available, ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to indicate that not all the available layer properties were returned. +include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] + +// refBegin VkLayerProperties - Structure specifying layer properties + The sname:VkLayerProperties structure is defined as: include::../structs/VkLayerProperties.txt[] @@ -115,7 +119,9 @@ valid usage of the pname:ppEnabledLayerNames member of sname:VkDeviceCreateInfo maximizes compatibility with applications written to work with the previous requirements. -Device layers can: be enumerated by calling: +// refBegin vkEnumerateDeviceLayerProperties Returns properties of available physical device layers. + +To enumerate device layers, call: include::../protos/vkEnumerateDeviceLayerProperties.txt[] @@ -124,8 +130,6 @@ include::../protos/vkEnumerateDeviceLayerProperties.txt[] * pname:pProperties is either `NULL` or a pointer to an array of slink:VkLayerProperties structures. -include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] - If pname:pProperties is `NULL`, then the number of layer properties available is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a variable set by the user to the number of elements in the @@ -143,6 +147,8 @@ sname:VkLayerProperties for each enumerated layer must: be the same as the properties when the layer was enumerated by fname:vkEnumerateInstanceLayerProperties. +include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] + The pname:ppEnabledLayerNames and pname:enabledLayerCount members of sname:VkDeviceCreateInfo are deprecated and their values must: be ignored by implementations. However, for compatibility, only an empty list of layers or a @@ -167,6 +173,8 @@ commands should: be queried at runtime as described in <>. Extensions may: be provided by layers as well as by a Vulkan implementation. +// refBegin vkEnumerateInstanceExtensionProperties Returns up to requested number of global extension properties. + To query the available instance extensions, call: include::../protos/vkEnumerateInstanceExtensionProperties.txt[] @@ -178,13 +186,25 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[] * pname:pProperties is either `NULL` or a pointer to an array of slink:VkExtensionProperties structures. -include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] - -When pLayerName parameter is NULL, only extensions provided by the Vulkan +When pname:pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the instance extensions provided by that layer are returned. +If pname:pProperties is `NULL`, +then the number of extensions properties available is returned in +pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a +variable set by the user to the number of elements in the pname:pProperties +array, and on return the variable is overwritten with the number of +structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of extension properties +available, at most pname:pPropertyCount structures will be written. If +pname:pPropertyCount is smaller than the number of extensions available, +ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to +indicate that not all the available properties were returned. + +include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] + To enable an instance extension, the name of the extension should be added to the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when creating a sname:VkInstance. @@ -193,6 +213,8 @@ Enabling an extension does not change behavior of functionality exposed by the core Vulkan API or any other extension, other than making valid the use of the commands, enums and structures defined by that extension. +// refBegin vkEnumerateDeviceExtensionProperties Returns properties of available physical device extensions. + To query the extensions available to a given physical device, call: include::../protos/vkEnumerateDeviceExtensionProperties.txt[] @@ -201,29 +223,21 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] * pname:pLayerName is either `NULL` or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from. * pname:pPropertyCount is a pointer to an integer related to the number of - extension properties available or queried, as described below. + extension properties available or queried, and is treated in the same + fashion as the + flink:vkEnumerateInstanceExtensionProperties::pname:pPropertyCount + parameter. * pname:pProperties is either `NULL` or a pointer to an array of slink:VkExtensionProperties structures. -include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] - -When pLayerName parameter is NULL, only extensions provided by the Vulkan +When pname:pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the device extensions provided by that layer are returned. -For both flink:vkEnumerateInstanceExtensionProperties and -flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`, -then the number of extensions properties available is returned in -pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a -variable set by the user to the number of elements in the pname:pProperties -array, and on return the variable is overwritten with the number of -structures actually written to pname:pProperties. If -pname:pPropertyCount is less than the number of extension properties -available, at most pname:pPropertyCount structures will be written. If -pname:pPropertyCount is smaller than the number of extensions available, -ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to -indicate that not all the available properties were returned. +include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] + +// refBegin VkExtensionProperties - Structure specifying a extension properties The sname:VkExtensionProperties structure is defined as: @@ -236,6 +250,7 @@ include::../structs/VkExtensionProperties.txt[] include::../validity/structs/VkExtensionProperties.txt[] + [[extended-functionality-instance-extensions-and-devices]] === Instance Extensions and Device Extensions @@ -252,38 +267,38 @@ and commands, or both. In some cases, the decision is clear: -* Functionality that is restricted to the instance-level must: be -implemented as an instance extension. -* Functionality that is restricted to the device-level must: be -implemented as an device extension. + * Functionality that is restricted to the instance-level must: be + implemented as an instance extension. + * Functionality that is restricted to the device-level must: be + implemented as an device extension. In other cases, the decision is not so clear: -* Global functionality that affects the entire Vulkan API, including -instance and device-level objects and commands, should: be an instance -extension. -* Device-level functionality that contains physical-device queries, can: be -implemented as an instance extension. -If some part of an instance extension's functionality might not be available -on all physical devices, the extension should: provide a query to determine -which physical devices provide the functionality. -* For a set of global functionality that provides new instance-level and -device-level commands, and can: be enabled for a subset of devices, it is -recommended that the functionality be partitioned across two extensions--one -for the instance-level functionality, and one for the device-specific -functionality. -In this latter case, it is generally recommended that the two extensions have -unique names. + * Global functionality that affects the entire Vulkan API, including + instance and device-level objects and commands, should: be an instance + extension. + * Device-level functionality that contains physical-device queries, can: be + implemented as an instance extension. + If some part of an instance extension's functionality might not be available + on all physical devices, the extension should: provide a query to determine + which physical devices provide the functionality. + * For a set of global functionality that provides new instance-level and + device-level commands, and can: be enabled for a subset of devices, it is + recommended that the functionality be partitioned across two extensions--one + for the instance-level functionality, and one for the device-specific + functionality. + In this latter case, it is generally recommended that the two extensions have + unique names. Examples of instance extensions include: -* Logging of debug messages by any enabled layers for all Vulkan commands. -* Functionality creating new objects which are direct children of an instance. -* Functionality creating new objects which are direct children of a -physical device and intended to work with any logical device created -from the physical device. -* Functionality adding new instance-level Vulkan commands that do not affect -any device-level commands. + * Logging of debug messages by any enabled layers for all Vulkan commands. + * Functionality creating new objects which are direct children of an instance. + * Functionality creating new objects which are direct children of a + physical device and intended to work with any logical device created + from the physical device. + * Functionality adding new instance-level Vulkan commands that do not affect + any device-level commands. [NOTE] .Note @@ -293,9 +308,9 @@ This is especially true for commands that are dispatched from instances and physical devices. Additional information about supporting instance-level commands may be found in the "Vulkan Loader Specification and Architecture Overview" document, -which may be found at the following web page: +located at URL -* https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/sdk-1.0.13/loader/LoaderAndLayerInterface.md +https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/sdk-1.0.13/loader/LoaderAndLayerInterface.md Please see the "Architectural overview of layers and loader" section for information about how both instance-level and device-level commands are diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index b4152cf028..c4bd4981b2 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -34,6 +34,8 @@ required:, but may: be supported by a Vulkan implementation. Support for features is reported and enabled on a per-feature basis. Features are properties of the physical device. +// refBegin vkGetPhysicalDeviceFeatures Reports capabilities of a physical device. + To query supported features, call: include::../protos/vkGetPhysicalDeviceFeatures.txt[] @@ -77,6 +79,8 @@ performance cost. Application writers should: carefully consider the implications of enabling all supported features. ==== +// refBegin VkPhysicalDeviceFeatures Structure describing the fine-grained features that can be supported by an implementation. + The sname:VkPhysicalDeviceFeatures structure is defined as: include::../structs/VkPhysicalDeviceFeatures.txt[] @@ -250,10 +254,11 @@ following features: * ename:VK_FORMAT_EAC_R11_SNORM_BLOCK * ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK * ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK - +-- ++ flink:vkGetPhysicalDeviceFormatProperties is used to check for the supported properties of individual formats. --- ++ * [[features-features-textureCompressionASTC_LDR]] pname:textureCompressionASTC_LDR indicates whether the ASTC LDR compressed texture formats are supported. If this feature is not @@ -288,10 +293,11 @@ check for the supported properties of individual formats. * ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK * ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK * ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK - +-- ++ flink:vkGetPhysicalDeviceFormatProperties is used to check for the supported properties of individual formats. --- ++ * [[features-features-textureCompressionBC]] pname:textureCompressionBC indicates whether the BC compressed texture formats are supported. If this feature is not enabled, the following formats mustnot: be used to @@ -314,10 +320,11 @@ check for the supported properties of individual formats. * ename:VK_FORMAT_BC6H_SFLOAT_BLOCK * ename:VK_FORMAT_BC7_UNORM_BLOCK * ename:VK_FORMAT_BC7_SRGB_BLOCK - +-- ++ flink:vkGetPhysicalDeviceFormatProperties is used to check for the supported properties of individual formats. --- ++ * [[features-features-occlusionQueryPrecise]] pname:occlusionQueryPrecise indicates whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in a sname:VkQueryPool by @@ -582,13 +589,12 @@ device. These are available in the pname:limits member of the slink:VkPhysicalDeviceProperties structure which is returned from flink:vkGetPhysicalDeviceProperties. +// refBegin VkPhysicalDeviceLimits Structure + The sname:VkPhysicalDeviceLimits structure is defined as: include::../structs/VkPhysicalDeviceLimits.txt[] -The members of the sname:VkPhysicalDeviceLimits describe the following -properties of the physical device: - * [[features-limits-maxImageDimension1D]] pname:maxImageDimension1D is the maximum dimension (pname:width) of an image created with an pname:imageType of ename:VK_IMAGE_TYPE_1D. @@ -1010,7 +1016,6 @@ range using the smalled possible number of bits, ends up with the specified range. ==== -- - * [[features-limits-viewportSubPixelBits]] pname:viewportSubPixelBits is the number of bits of subpixel precision for viewport bounds. The subpixel precision that floating-point viewport bounds are interpreted @@ -1212,12 +1217,14 @@ range. // End of list 1:: - For all bitmasks of type ename:VkSampleCountFlags above, possible + For all bitmasks of type elink:VkSampleCountFlags above, possible values include: + -- +// refBegin VkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operations 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 @@ -1225,7 +1232,6 @@ 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[] @@ -1469,7 +1475,7 @@ the same whether or not the feature is enabled. 1:: The *Limit Type* column indicates the limit is either the minimum limit all implementations must: support or the maximum limit all implementations - must: support. For bitfields a minimum limit is the least + must: support. For bitmasks a minimum limit is the least bits all implementations must: set, but they may: have additional bits set beyond this minimum. @@ -1528,8 +1534,9 @@ flink:vkGetPhysicalDeviceFormatProperties command. [[features-formats-definition]] === Format Definition -The available formats available are defined by the elink:VkFormat -enumeration: +// refBegin VkFormat available image formats + +The available formats are defined by the elink:VkFormat enumeration: include::../enums/VkFormat.txt[] @@ -2568,6 +2575,8 @@ ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK:: texel block encodes a 12x12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. +// refEnd VkFormat + [[features-formats-packed]] ==== Packed Formats @@ -2759,7 +2768,7 @@ endianness. ^| latexmath:[$B_4$] ^| latexmath:[$B_3$] ^| latexmath:[$B_2$] ^| latexmath:[$B_1$] ^| latexmath:[$B_0$] |=============== -// N.B. This table is slightly too wide to fit - we cheat by not drawing the grid lines so we can't see... +// N.B. This table is slightly too wide to fit - we cheat by not drawing the grid lines so we cannot see... [[features-formats-packed-32-bit]] .Bit mappings for packed 32-bit formats [cols="32*1",frame="none",grid="rows",options="header"] @@ -3034,6 +3043,8 @@ all the formats in the same row are compatible. [[features-formats-properties]] === Format Properties +// refBegin vkGetPhysicalDeviceFormatProperties Lists physical device's format capabilities. + To query supported format features which are properties of the physical device, call: @@ -3048,12 +3059,21 @@ include::../protos/vkGetPhysicalDeviceFormatProperties.txt[] include::../validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] -fname:vkGetPhysicalDeviceFormatProperties returns sname:VkFormatProperties: +// refBegin VkFormatProperties - Structure specifying image format properties + +The sname:VkPhysicalDeviceLimits structure is defined as: include::../structs/VkFormatProperties.txt[] -The features are described as a set of elink:VkFormatFeatureFlagBits: + * pname:linearTilingFeatures describes the features supported by + ename:VK_IMAGE_TILING_LINEAR. + * pname:optimalTilingFeatures describes the features supported by + ename:VK_IMAGE_TILING_OPTIMAL. + * pname:bufferFeatures describes the features supported by buffers. +Supported features are described as a set of elink:VkFormatFeatureFlagBits: + +// refBegin VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer include::../enums/VkFormatFeatureFlagBits.txt[] The pname:linearTilingFeatures and pname:optimalTilingFeatures members of @@ -3061,8 +3081,10 @@ the sname:VkFormatProperties structure describe what features are supported by ename:VK_IMAGE_TILING_LINEAR and ename:VK_IMAGE_TILING_OPTIMAL images, respectively. -The following features may: be supported by images or image views created -with pname:format: +The following bits may: be set in pname:linearTilingFeatures and +pname:optimalTilingFeatures, indicating they are supported by images or +image views created with the queried +flink:vkGetPhysicalDeviceFormatProperties::pname:format: ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT:: sname:VkImageView can: be sampled from. See @@ -3120,11 +3142,9 @@ If the format being queried is a depth/stencil format, this bit only indicates range latexmath:[$[0,1\]$] and should: be proportional to, or a weighted average of, the number of comparison passes or failures. -The pname:bufferFeatures member of the sname:VkFormatProperties structure -describes what features are supported by buffers. - -The following features may: be supported by buffers or buffer views created -with pname:format: +The following features may: appear in pname:bufferFeatures, indicating they +are supported by buffers or buffer views created with the queried +flink:vkGetPhysicalDeviceFormatProperties::pname:format: ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT:: Format can: be used to create a sname:VkBufferView that can: be bound to @@ -3631,6 +3651,8 @@ images. For example, larger dimensions or additional sample counts for certain image types, or additional capabilities for _linear_ tiling format images. +// refBegin vkGetPhysicalDeviceImageFormatProperties Lists physical device's image format capabilities. + To query additional capabilities specific to image types, call: include::../protos/vkGetPhysicalDeviceImageFormatProperties.txt[] @@ -3645,7 +3667,7 @@ include::../protos/vkGetPhysicalDeviceImageFormatProperties.txt[] slink:VkImageCreateInfo.tiling. * pname:usage is the intended usage of the image, corresponding to slink:VkImageCreateInfo.usage. - * pname:flags is a bitfield describing additional parameters of the image, + * pname:flags is a bitmask describing additional parameters of the image, corresponding to slink:VkImageCreateInfo.flags. * pname:pImageFormatProperties points to an instance of the slink:VkImageFormatProperties structure in which capabilities are @@ -3655,8 +3677,25 @@ The pname:format, pname:type, pname:tiling, pname:usage, and pname:flags parameters correspond to parameters that would be consumed by flink:vkCreateImage. +If pname:format is not a supported image format, or if the combination of +pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not +supported for images, then fname:vkGetPhysicalDeviceImageFormatProperties +returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED. + +The limitations on an image format that are reported by +fname:vkGetPhysicalDeviceImageFormatProperties have the following property: +if code:usage1 and code:usage2 of type elink:VkImageUsageFlags are such that +the bits set in code:usage1 are a subset of the bits set in code:usage2, and +code:flags1 and code:flags2 of type elink:VkImageCreateFlags are such that +the bits set in code:flags1 are a subset of the bits set in code:flags2, +then the limitations for code:usage1 and code:flags1 must: be no more strict +than the limitations for code:usage2 and code:flags2, for all values of +pname:format, pname:type, and pname:tiling. + include::../validity/protos/vkGetPhysicalDeviceImageFormatProperties.txt[] +// refBegin VkImageFormatProperties - Structure specifying a image format properties + The sname:VkImageFormatProperties structure is defined as: include::../structs/VkImageFormatProperties.txt[] @@ -3718,20 +3757,6 @@ sname:VkImageFormatProperties will be filled with zero. include::../validity/structs/VkImageFormatProperties.txt[] -If pname:format is not a supported image format, or if the combination of -pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not -supported for images, then fname:vkGetPhysicalDeviceImageFormatProperties -returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED. - -The limitations on an image format that are reported by -fname:vkGetPhysicalDeviceImageFormatProperties have the following property: -if code:usage1 and code:usage2 of type ename:VkImageUsageFlags are such that -the bits set in code:usage1 are a subset of the bits set in code:usage2, and -code:flags1 and code:flags2 of type ename:VkImageCreateFlags are such that -the bits set in code:flags1 are a subset of the bits set in code:flags2, -then the limitations for code:usage1 and code:flags1 must: be no more strict -than the limitations for code:usage2 and code:flags2, for all values of -pname:format, pname:type, and pname:tiling. [[features-extentperimagetype]] === Allowed Extent Values Based On Image Type diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index 710be615fa..c432007d06 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -32,6 +32,8 @@ order: [[fragops-scissor]] == Scissor Test +// refBegin vkCmdSetScissor Set the dynamic scissor rectangles on a command buffer. + The scissor test determines if a fragment's framebuffer coordinates latexmath:[$(x_f,y_f)$] lie within the scissor rectangle corresponding to the viewport index (see <>. -pname:pSampleMask contains a bitmask of static coverage information that is +pname:pSampleMask contains a array of static coverage information that is code:ANDed with the coverage information generated during rasterization. Bits that are zero disable coverage for the corresponding sample. Bit B of mask word M corresponds to sample latexmath:[$32 \times M + B$]. The array @@ -101,6 +103,15 @@ is sized to a length of latexmath:[$\lceil{rasterizationSamples / 32}\rceil$] words. If pname:pSampleMask is `NULL`, it is treated as if the mask has all bits enabled, i.e. no coverage is removed from fragments. +// refBegin VkSampleMask - Mask of sample coverage information + +The elements of the sample mask array are of type basetype:VkSampleMask, +each representing 32 bits of coverage information: + +include::../basetypes/VkSampleMask.txt[] + +// refEnd VkSampleMask VkPipelineMultisampleStateCreateInfo + [[fragops-early-mode]] == Early Fragment Test Mode @@ -151,7 +162,7 @@ ifdef::editing-notes[] There used to be a sentence of form "These operations are diagrammed in figure ((fig-fragops,Fragment Operations)), in the order in which they are performed" following "described in this chapter." above, but the referred -figure doesn't yet exist. +figure does not yet exist. ================== endif::editing-notes[] @@ -232,6 +243,8 @@ Pipeline state controlling the <>, specified through the members of the sname:VkPipelineDepthStencilStateCreateInfo structure. +// refBegin VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state + The sname:VkPipelineDepthStencilStateCreateInfo structure is defined as: include::../structs/VkPipelineDepthStencilStateCreateInfo.txt[] @@ -259,6 +272,8 @@ include::../validity/structs/VkPipelineDepthStencilStateCreateInfo.txt[] [[fragops-dbt]] == Depth Bounds Test +// refBegin vkCmdSetDepthBounds Set the depth bounds test values for a command buffer. + The depth bounds test conditionally disables coverage of a sample based on the outcome of a comparison between the value latexmath:[$z_a$] in the depth attachment at location latexmath:[$(x_f,y_f)$] (for the appropriate sample) @@ -307,6 +322,8 @@ The stencil test is controlled with the pname:front and pname:back members of sname:VkPipelineDepthStencilStateCreateInfo which are of type sname:VkStencilOpState. +// refBegin VkStencilOpState - Structure specifying stencil operation state + The sname:VkStencilOpState structure is defined as: include::../structs/VkStencilOpState.txt[] @@ -348,6 +365,8 @@ ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, and ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic states enabled, respectively. +// refBegin vkCmdSetStencilCompareMask Set the stencil compare mask dynamic state. + If the pipeline state object is created with the ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, then to dynamically set the stencil compare mask call: @@ -360,8 +379,9 @@ include::../protos/vkCmdSetStencilCompareMask.txt[] which to update the compare mask. Bits which can: be set include: + -- +// refBegin VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare mask include::../enums/VkStencilFaceFlagBits.txt[] - +-- ** ename:VK_STENCIL_FACE_FRONT_BIT indicates that only the front set of stencil state is updated. ** ename:VK_STENCIL_FACE_BACK_BIT indicates that only the back set of @@ -369,12 +389,12 @@ include::../enums/VkStencilFaceFlagBits.txt[] ** ename:VK_STENCIL_FRONT_AND_BACK is the combination of ename:VK_STENCIL_FACE_FRONT_BIT and ename:VK_STENCIL_FACE_BACK_BIT and indicates that both sets of stencil state are updated. --- - * pname:compareMask is the new value to use as the stencil compare mask. include::../validity/protos/vkCmdSetStencilCompareMask.txt[] +// refBegin vkCmdSetStencilWriteMask Set the stencil write mask dynamic state. + If the pipeline state object is created with the ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, then to dynamically set the stencil write mask call: @@ -390,6 +410,8 @@ include::../protos/vkCmdSetStencilWriteMask.txt[] include::../validity/protos/vkCmdSetStencilWriteMask.txt[] +// refBegin vkCmdSetStencilReference Set the stencil reference dynamic state. + If the pipeline state object is created with the ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, then to dynamically set the stencil reference value call: @@ -414,6 +436,9 @@ both the reference and the stored stencil value, and the resulting masked values are those that participate in the comparison controlled by pname:compareOp. Let latexmath:[$R$] be the masked reference value and latexmath:[$S$] be the masked stored stencil value. + +// refBegin VkCompareOp stencil comparison function + pname:compareOp is a symbolic constant that determines the stencil comparison function: @@ -431,6 +456,10 @@ include::../enums/VkCompareOp.txt[] \geq S$]. * ename:VK_COMPARE_OP_ALWAYS: the test always passes. +// refEnd VkCompareOp + +// refBegin VkStencilOp stencil comparison function + As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp members of slink:VkStencilOpState indicate what happens to the stored stencil value if this or certain subsequent tests fail or pass. Each enum is @@ -474,6 +503,8 @@ based on the facing-ness of the fragment. Fragments generated by front-facing primitives use the front mask and fragments generated by back-facing primitives use the back mask. +// refEnd VkStencilOp + [[fragops-depth]] == Depth Test diff --git a/doc/specs/vulkan/chapters/framebuffer.txt b/doc/specs/vulkan/chapters/framebuffer.txt index eaeabdba0b..ae9e272df3 100644 --- a/doc/specs/vulkan/chapters/framebuffer.txt +++ b/doc/specs/vulkan/chapters/framebuffer.txt @@ -37,6 +37,8 @@ The pipeline blend state is included in the sname:VkPipelineColorBlendStateCreateInfo structure during graphics pipeline creation: +// refBegin VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state + The sname:VkPipelineColorBlendStateCreateInfo structure is defined as: include::../structs/VkPipelineColorBlendStateCreateInfo.txt[] @@ -52,13 +54,11 @@ include::../structs/VkPipelineColorBlendStateCreateInfo.txt[] pname:pAttachments. This value must: equal the pname:colorAttachmentCount for the subpass in which this pipeline is used. - * pname:pAttachments: pointer to array of per target attachment states. + * pname:pAttachments: is a pointer to array of per target attachment states. * pname:blendConstants is an array of four values used as the R, G, B, and A components of the blend constant that are used in blending, depending on the <>. -include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[] - Each element of the pname:pAttachments array is a slink:VkPipelineColorBlendAttachmentState structure specifying per-target blending state for each individual color attachment. If the @@ -66,6 +66,10 @@ blending state for each individual color attachment. If the enabled on the device, all slink:VkPipelineColorBlendAttachmentState elements in the pname:pAttachments array must: be identical. +include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[] + +// refBegin VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state + The sname:VkPipelineColorBlendAttachmentState structure is defined as: include::../structs/VkPipelineColorBlendAttachmentState.txt[] @@ -95,6 +99,8 @@ include::../validity/structs/VkPipelineColorBlendAttachmentState.txt[] [[framebuffer-blendfactors]] === Blend Factors +// refBegin VkBlendFactor framebuffer blending factors + The source and destination color and alpha blending factors are selected from the enum: @@ -143,13 +149,17 @@ In this table, the following conventions are used: - latexmath:[$R_c,G_c,B_c$] and latexmath:[$A_c$] represent the blend constant R, G, B, and A components, respectively. +// refEnd VkBlendFactor + [[framebuffer-blendconstants]] If the pipeline state object is created without the ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then the ``blend constant'' latexmath:[$(R_c,G_c,B_c,A_c)$] is specified via the pname:blendConstants member of slink:VkPipelineColorBlendStateCreateInfo. -Otherwise the blend constant is dynamically set and changed by calling the -command: + +// refBegin vkCmdSetBlendConstants Set the values of blend constants. + +Otherwise, to dynamically set and change the blend constant, call: include::../protos/vkCmdSetBlendConstants.txt[] @@ -194,6 +204,8 @@ blender, the result of the blending operation is not defined. [[framebuffer-blendoperations]] === Blend Operations +// refBegin VkBlendOp framebuffer blending operations + Once the source and destination blend factors have been selected, they along with the source and destination components are passed to the blending operation. The blending operations are selected from the following enum, @@ -266,6 +278,10 @@ normalized or signed normalized color attachment prior to evaluating the blend operations. If the color attachment is floating-point, no clamping occurs. +// refEnd VkBlendOp + +// refBegin VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer + The pname:colorWriteMask member of slink:VkPipelineColorBlendAttachmentState determines whether the final color values latexmath:[$R, G, B$] and latexmath:[$A$] are written to the framebuffer attachment. @@ -281,6 +297,8 @@ similarly control writing of the latexmath:[$G, B,$] and latexmath:[$A$] values. The pname:colorWriteMask is applied regardless of whether blending is enabled. +// refEnd VkColorComponentFlagBits + If the numeric format of a framebuffer attachment uses sRGB encoding, the R, G, and B destination color values (after conversion from fixed-point to floating-point) are considered to be encoded for the sRGB color space and @@ -305,6 +323,7 @@ are performed through that attachment. Framebuffer color attachments greater than or equal to sname:VkSubpassDescription::pname:colorAttachmentCount perform no writes. + [[framebuffer-logicop]] == Logical Operations @@ -315,6 +334,8 @@ Logical operations are applied only for signed and unsigned integer and normalized integer framebuffers. Logical operations are not applied to floating-point or sRGB format color attachments. +// refBegin VkLogicOp framebuffer logical operations + Logical operations are controlled by the pname:logicOpEnable and pname:logicOp members of slink:VkPipelineColorBlendStateCreateInfo. If pname:logicOpEnable is ename:VK_TRUE, then a logical operation selected by @@ -369,3 +390,4 @@ The result of the logical operation is then written to the color attachment as controlled by the component write mask, described in <>. +// refEnd VkLogicOp diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index fb0001e21f..9362c7c1ed 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -18,15 +18,14 @@ remainder of the Specification. Vulkan is designed for, and the API is written for, CPU, GPU, and other hardware accelerator architectures with the following properties: -* Runtime support for 8, 16, 32 and 64-bit signed and unsigned - twos-complement integers, all addressable at the granularity of their size - in bytes. -* Runtime support for 32- and 64-bit floating-point types satisfying the - range and precision constraints in the - <> section. -* The representation and endianness of these types must: be identical for - the host and the physical devices. - + * Runtime support for 8, 16, 32 and 64-bit signed and unsigned + twos-complement integers, all addressable at the granularity of their + size in bytes. + * Runtime support for 32- and 64-bit floating-point types satisfying the + range and precision constraints in the + <> section. + * The representation and endianness of these types must: be identical for + the host and the physical devices. [NOTE] .Note @@ -146,7 +145,7 @@ Additional explicit ordering constraints between queue submissions and individual batches can be expressed with <> and <>. - + Before a fence or semaphore is signaled, it is guaranteed that any previously submitted queue operations have completed execution, and that memory writes from those queue operations are @@ -168,7 +167,7 @@ into a single primary command buffer, except that the current state is constraints can be expressed with <> and <>. -There are a few +There are a few <> between commands within a command buffer, but only covering a subset of execution. Additional explicit ordering constraints can be expressed with @@ -411,12 +410,26 @@ using C99 syntax. Language bindings for other languages such as C++ and Javascript may: allow for stricter parameter passing, or object-oriented interfaces. -With few exceptions, Vulkan uses the standard C types for parameters (int -types from stdint.h, etc). Exceptions to this are using basetype:VkResult -for return values, using basetype:VkBool32 for boolean values, -basetype:VkDeviceSize for sizes and offsets pertaining to device address -space, and basetype:VkFlags for passing bits or sets of bits of predefined -values. +Vulkan uses the standard C types for the base type of scalar parameters +(e.g. types from +stdint.h+), with exceptions described below, or elsewhere +in the text when appropriate: + +// refBegin VkBool32 - Vulkan boolean type + +basetype:VkBool32 represents boolean code:True and code:False values, since +C does not have a sufficiently portable built-in boolean type: + +include::../basetypes/VkBool32.txt[] + +// refEnd VkBool32 + +// refBegin VkDeviceSize - Vulkan device memory size and offsets + +basetype:VkDeviceSize represents device memory size and offset values: + +include::../basetypes/VkDeviceSize.txt[] + +// refEnd VkDeviceSize Commands that create Vulkan objects are of the form ftext:vkCreate* and take stext:Vk*CreateInfo structures with the parameters needed to create the @@ -587,6 +600,10 @@ valid - at the draw command. Certain usage rules apply to all commands in the API unless explicitly denoted differently for a command. These rules are as follows. + +[[fundamentals-validusage-handles]] +==== Valid Usage for Object Handles + Any input parameter to a command that is an object handle must: be a valid object handle, unless otherwise specified. An object handle is valid if: @@ -597,19 +614,27 @@ object handle, unless otherwise specified. An object handle is valid if: * Any objects used by that object, either as part of creation or execution, must: also be valid. -The reserved handle code:VK_NULL_HANDLE can: be passed in place of valid +The reserved handle dlink:VK_NULL_HANDLE can: be passed in place of valid object handles when _explicitly called out in the specification_. Any command that creates an object successfully mustnot: return -code:VK_NULL_HANDLE. It is valid to pass code:VK_NULL_HANDLE to any +dlink:VK_NULL_HANDLE. It is valid to pass dlink:VK_NULL_HANDLE to any ftext:vkDestroy* or ftext:vkFree* command, which will silently ignore these values. + +[[fundamentals-validusage-pointers]] +==== Valid Usage for Pointers + Any parameter that is a pointer must: be a valid pointer. A pointer is valid if it points at memory containing values of the number and type(s) expected by the command, and all fundamental types accessed through the pointer (e.g. as elements of an array or as members of a structure) satisfy the alignment requirements of the host processor. + +[[fundamentals-validusage-enums]] +==== Valid Usage for Enumerated Types + Any parameter of an enumerated type must: be a valid enumerant for that type. A enumerant is valid if: @@ -618,34 +643,65 @@ type. A enumerant is valid if: enumerated type, which are suffixed with etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE or etext:_MAX_ENUM. -Any parameter that is a flag value must: be a valid combination of bit + +[[fundamentals-validusage-flags]] +==== Valid Usage for Flags + +// refBegin VkFlags - Vulkan bitmasks + +A collection of flags is represented by a bitmask using the type +basetype:VkFlags: + +include::../basetypes/VkFlags.txt[] + +Bitmasks are passed to many commands and structures to compactly represent +options, but basetype:VkFlags is not used directly in the API. Instead, a +etext:Vk*Flags type which is an alias of basetype:VkFlags, and whose name +matches the corresponding etext:Vk*FlagBits that are valid for that type, is +used. These aliases are described in the <> +appendix of the Specification. + +// refEnd VkFlags VkColorComponentFlags + +Any etext:Vk*Flags member or parameter used in the API must: be a valid combination of bit flags. A valid combination is either zero or the bitwise OR of valid bit flags. A bit flag is valid if: - * The flag is defined as part of the bits type, where the bits type is + * The bit flag is defined as part of the etext:Vk*FlagBits type, where the bits type is obtained by taking the flag type and replacing the trailing etext:Flags with etext:FlagBits. For example, a flag value of type - ename:VkColorComponentFlags must: contain only values selected from the - bit flags in elink:VkColorComponentFlagBits. + elink:VkColorComponentFlags must: contain only bit flags defined by + elink:VkColorComponentFlagBits. * The flag is allowed in the context in which it is being used. For example, in some cases, certain bit flags or combinations of bit flags are mutually exclusive. -Any parameter that is a structure containing a etext:VkStructureType -ptext:sType member must: have a value of ptext:sType matching the type of -the structure. The correct value is described for each structure type, but -as a general rule, the name of this value is obtained by taking the + +[[fundamentals-validusage-sType]] +==== Valid Usage for Structure Types + +Any parameter that is a structure containing a +elink:VkStructureType::pname:sType member must: have a value of ptext:sType +matching the type of the structure. +As a general rule, the name of this value is obtained by taking the structure name, stripping the leading etext:Vk, prefixing each capital letter with etext:_, converting the entire resulting string to upper case, -and prefixing it with etext:VK_STRUCTURE_TYPE. For example, structures of +and prefixing it with etext:VK_STRUCTURE_TYPE_. For example, structures of type sname:VkImageCreateInfo must: have a ptext:sType value of ename:VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO. The values ename:VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO and ename:VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO are reserved for internal -use by the loader, and don't have corresponding Vulkan structures in this +use by the loader, and do not have corresponding Vulkan structures in this specification. +The list of supported <> is defined in +an appendix. + + +[[fundamentals-validusage-pNext]] +==== Valid Usage for Structure Pointer Chains + Any parameter that is a structure containing a basetype:void* ptext:pNext member must: have a value of ptext:pNext that is either `NULL`, or points to a valid structure defined by an extension, containing ptext:sType and @@ -661,6 +717,10 @@ Extension structures are not described in the base Vulkan specification, but either in layered specifications incorporating those extensions, or in separate vendor-provided documents. + +[[fundamentals-validusage-nested-structs]] +==== Valid Usage for Nested Structures + The above rules also apply recursively to members of structures provided as input to a command, either as a direct argument to the command, or themselves a member of another structure. @@ -672,6 +732,8 @@ sections. [[fundamentals-returncodes]] === Return Codes +// refBegin VkResult Vulkan command return codes + While the core Vulkan API is not designed to capture incorrect usage, some circumstances still require return codes. Commands in Vulkan return their status via return codes that are in one of two categories: @@ -744,6 +806,9 @@ the error until a specified point. For commands that record into command buffers (ftext:vkCmd*) run time errors are reported by fname:vkEndCommandBuffer. +// refEnd VkResult TBD + + [[fundamentals-numerics]] == Numeric Representation and Computation @@ -1037,6 +1102,10 @@ replacement of any feature, and is thus very likely to break any and all compatibility. Differences in this version will typically require significant modification to an application in order for it to function. +C language macros for manipulating version numbers are defined in the +<> appendix. + + [[fundamentals-common-objects]] == Common Object Types @@ -1049,13 +1118,20 @@ _extents_, and _rectangles_. Offsets are used to describe a pixel location within an image or framebuffer, as an (x,y) location for two-dimensional images, or an (x,y,z) -location for three-dimensional images. Two- and three-dimensional offsets -are respectively defined by the structures +location for three-dimensional images. + +// refBegin VkOffset2D - Structure specifying a two-dimensional offset + +A two-dimensional offsets is defined by the structure: include::../structs/VkOffset2D.txt[] include::../validity/structs/VkOffset2D.txt[] +// refBegin VkOffset3D - Structure specifying a three-dimensional offset + +A three-dimensional offset is defined by the structure: + include::../structs/VkOffset3D.txt[] include::../validity/structs/VkOffset3D.txt[] @@ -1065,13 +1141,20 @@ include::../validity/structs/VkOffset3D.txt[] Extents are used to describe the size of a rectangular region of pixels within an image or framebuffer, as (width,height) for two-dimensional images, or as -(width,height,depth) for three-dimensional images. Two- and -three-dimensional extents are respectively defined by the structures +(width,height,depth) for three-dimensional images. + +// refBegin VkExtent2D - Structure specifying a two-dimensional extent + +A two-dimensional extent is defined by the structure: include::../structs/VkExtent2D.txt[] include::../validity/structs/VkExtent2D.txt[] +// refBegin VkExtent3D - Structure specifying a three-dimensional extent + +A three-dimensional extent is defined by the structure: + include::../structs/VkExtent3D.txt[] include::../validity/structs/VkExtent3D.txt[] @@ -1079,19 +1162,13 @@ include::../validity/structs/VkExtent3D.txt[] === Rectangles +// refBegin VkRect2D - Structure specifying a two-dimensional subregion + Rectangles are used to describe a specified rectangular region of pixels within an image or framebuffer. Rectangles include both an offset and an extent of the same dimensionality, as described above. Two-dimensional rectangles are defined by the structure -// Comment out until SubresourceRectangle-style structure proposed -// Two- and three-dimensional rectangles are respectively defined by the -// structures - include::../structs/VkRect2D.txt[] include::../validity/structs/VkRect2D.txt[] - -// include::../structs/VkRect3D.txt[] - -// include::../validity/structs/VkRect3D.txt[] diff --git a/doc/specs/vulkan/chapters/fxvertex.txt b/doc/specs/vulkan/chapters/fxvertex.txt index 19f668381a..e011c24c85 100644 --- a/doc/specs/vulkan/chapters/fxvertex.txt +++ b/doc/specs/vulkan/chapters/fxvertex.txt @@ -262,6 +262,8 @@ descriptions as part of graphics pipeline creation. The slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState points to a structure of type sname:VkPipelineVertexInputStateCreateInfo. +// refBegin VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state + The sname:VkPipelineVertexInputStateCreateInfo structure is defined as: include::../structs/VkPipelineVertexInputStateCreateInfo.txt[] @@ -283,6 +285,8 @@ include::../validity/structs/VkPipelineVertexInputStateCreateInfo.txt[] Each vertex input binding is specified by an instance of the sname:VkVertexInputBindingDescription structure. +// refBegin VkVertexInputBindingDescription - Structure specifying vertex input binding description + The sname:VkVertexInputBindingDescription structure is defined as: include::../structs/VkVertexInputBindingDescription.txt[] @@ -291,26 +295,26 @@ include::../structs/VkVertexInputBindingDescription.txt[] describes. * pname:stride is the distance in bytes between two consecutive elements within the buffer. - * pname:inputRate is a elink:VkVertexInputRate value that specifies + * pname:inputRate specifies whether vertex attribute addressing is a function of the vertex index or - of the instance index. - -include::../validity/structs/VkVertexInputBindingDescription.txt[] - -elink:VkVertexInputRate is defined as: - + of the instance index. Possible values include: ++ +-- +// refBegin VkVertexInputRate - specify rate at which vertex attributes are pulled from buffers include::../enums/VkVertexInputRate.txt[] +-- + ** ename:VK_VERTEX_INPUT_RATE_VERTEX indicates that vertex attribute + addressing is a function of the vertex index. + ** ename:VK_VERTEX_INPUT_RATE_INSTANCE indicates that vertex attribute + addressing is a function of the instance index. -The values of elink:VkVertexInputRate have the following meanings: - - * ename:VK_VERTEX_INPUT_RATE_VERTEX indicates that vertex attribute - addressing is a function of the vertex index. - * ename:VK_VERTEX_INPUT_RATE_INSTANCE indicates that vertex attribute - addressing is a function of the instance index. +include::../validity/structs/VkVertexInputBindingDescription.txt[] Each vertex input attribute is specified by an instance of the sname:VkVertexInputAttributeDescription structure. +// refBegin VkVertexInputAttributeDescription - Structure specifying vertex input attribute description + The sname:VkVertexInputAttributeDescription structure is defined as: include::../structs/VkVertexInputAttributeDescription.txt[] @@ -325,8 +329,10 @@ include::../structs/VkVertexInputAttributeDescription.txt[] include::../validity/structs/VkVertexInputAttributeDescription.txt[] -Vertex buffers are bound to a command buffer for use in subsequent draw -commands by calling: +// refBegin vkCmdBindVertexBuffers Bind vertex buffers to a command buffer + +To bind vertex buffers to a command buffer for use in subsequent draw +commands, call: include::../protos/vkCmdBindVertexBuffers.txt[] diff --git a/doc/specs/vulkan/chapters/initialization.txt b/doc/specs/vulkan/chapters/initialization.txt index 43f081f4b8..186e48701c 100644 --- a/doc/specs/vulkan/chapters/initialization.txt +++ b/doc/specs/vulkan/chapters/initialization.txt @@ -10,6 +10,8 @@ Vulkan commands, and creating a sname:VkInstance object. [[initialization-functionpointers]] == Command Function Pointers +// refBegin vkGetInstanceProcAddr Return a function pointer for a command + Vulkan commands are not necessarily exposed statically on a platform. Function pointers for all Vulkan commands can: be obtained with the command: @@ -20,8 +22,6 @@ include::../protos/vkGetInstanceProcAddr.txt[] compatible with. * pname:pName is the name of the command to obtain. -include::../validity/protos/vkGetInstanceProcAddr.txt[] - fname:vkGetInstanceProcAddr itself is obtained in a platform- and loader- specific manner. Typically, the loader library will export this command as a function symbol, so applications can: link against the loader library, or @@ -30,7 +30,7 @@ Loaders are encouraged to export function symbols for all other core Vulkan commands as well; if this is done, then applications that use only the core Vulkan commands have no need to use fname:vkGetInstanceProcAddr. -Function pointers to commands that don't operate on a specific instance can: +Function pointers to commands that do not operate on a specific instance can: be obtained by using this command with pname:instance equal to `NULL`. The following commands can: be accessed this way: @@ -38,6 +38,9 @@ following commands can: be accessed this way: * flink:vkEnumerateInstanceLayerProperties * flink:vkCreateInstance +The returned function pointer is of type tlink:PFN_vkVoidFunction, and must +be cast to the type of the command being queried. + If pname:instance is a valid sname:VkInstance, function pointers to any commands that operate on pname:instance or a child of pname:instance can: be obtained. The returned function pointer must: only be called with a @@ -58,14 +61,20 @@ to be dynamically loaded. If this decision is upheld by the group as a whole, it would probably be encoded in the previous paragraph, in the WSI extensions branch of the Specification. -However, this decision hasn't been fully signed off on by the entire Vulkan -WG yet AFAIK. Note that implementations typically won't support many of the -WSI extensions, so ``static entry points'' doesn't relieve apps of the +However, this decision has not been fully signed off on by the entire Vulkan +WG yet AFAIK. Note that implementations typically will not support many of the +WSI extensions, so ``static entry points'' do not relieve apps of the neccessity of runtime enabling and testing of each extension before using it. ==== endif::editing-notes[] +include::../validity/protos/vkGetInstanceProcAddr.txt[] + +// refEnd vkGetInstanceProcAddr PFN_vkVoidFunction + +// refBegin vkGetDeviceProcAddr Return a function pointer for a command + In order to support systems with multiple Vulkan implementations comprising heterogeneous collections of hardware and software, the function pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch @@ -85,20 +94,46 @@ include::../protos/vkGetDeviceProcAddr.txt[] ** sname:VkQueue ** sname:VkCommandBuffer +The returned function pointer is of type tlink:PFN_vkVoidFunction, and must +be cast to the type of the command being queried. + If pname:pName is not the name of one of these Vulkan commands, and is not the name of an extension command belonging to an extension enabled for pname:device, then fname:vkGetDeviceProcAddr will return `NULL`. include::../validity/protos/vkGetDeviceProcAddr.txt[] +// refEnd vkGetInstanceProcAddr PFN_vkVoidFunction + +// refBegin PFN_vkVoidFunction Dummy function pointer type returned by queries + +The function pointer type returned from the flink:vkGetInstanceProcAddr and +flink:vkGetDeviceProcAddr is a dummy type not corresponding to any actual +Vulkan function: + +include::../funcpointers/PFN_vkVoidFunction.txt[] + +// refEnd PFN_vkVoidFunction vkGetDeviceProcAddr vkGetInstanceProcAddr + + [[initialization-instances]] == Instances +// refBegin VkInstance - Opaque handle to a instance object + There is no global state in Vulkan and all per-application state is stored in a sname:VkInstance object. Creating a sname:VkInstance object initializes the Vulkan library and allows the application to pass information about itself to the implementation. +Instances are represented by sname:VkInstance handles: + +include::../handles/VkInstance.txt[] + +// refEnd VkInstance + +// refBegin vkCreateInstance Create a new Vulkan instance + To create an instance object, call: include::../protos/vkCreateInstance.txt[] @@ -110,8 +145,18 @@ include::../protos/vkCreateInstance.txt[] * pname:pInstance points a sname:VkInstance handle in which the resulting instance is returned. +fname:vkCreateInstance creates the instance, then enables and initializes +global layers and extensions requested by the application. If an extension +is provided by a layer, both the layer and extension must: be specified at +fname:vkCreateInstance time. If a specified layer cannot be found, no +sname:VkInstance will be created and the function will return +ename:VK_ERROR_LAYER_NOT_PRESENT. Likewise, if a specified extension cannot +be found the call will return ename:VK_ERROR_EXTENSION_NOT_PRESENT. + include::../validity/protos/vkCreateInstance.txt[] +// refBegin VkInstanceCreateInfo - Structure specifying parameters of a newly created instance + The sname:VkInstanceCreateInfo structure is defined as: include::../structs/VkInstanceCreateInfo.txt[] @@ -136,17 +181,11 @@ include::../structs/VkInstanceCreateInfo.txt[] include::../validity/structs/VkInstanceCreateInfo.txt[] -fname:vkCreateInstance creates the instance, then enables and initializes -global layers and extensions requested by the application. If an extension -is provided by a layer, both the layer and extension must: be specified at -fname:vkCreateInstance time. If a specified layer cannot be found, no -sname:VkInstance will be created and the function will return -ename:VK_ERROR_LAYER_NOT_PRESENT. Likewise, if a specified extension cannot be found -the call will return ename:VK_ERROR_EXTENSION_NOT_PRESENT. - The pname:pApplicationInfo member of slink:VkInstanceCreateInfo can: point to an instance of sname:VkApplicationInfo. +// refBegin VkApplicationInfo - Structure specifying application info + The sname:VkApplicationInfo structure is defined as: include::../structs/VkApplicationInfo.txt[] @@ -175,6 +214,8 @@ include::../structs/VkApplicationInfo.txt[] include::../validity/structs/VkApplicationInfo.txt[] +// refBegin vkDestroyInstance Destroy an instance of Vulkan. + To destroy an instance, call: include::../protos/vkDestroyInstance.txt[] diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index caf979c2e0..de9623bb3c 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -626,26 +626,23 @@ out according to the following rules. * The code:Offset Decoration must: be a multiple of its base alignment, computed recursively as follows: -+ - ** a scalar of size latexmath:[$N$] has a base alignment of - latexmath:[$N$] - ** a two-component vector, with components of size latexmath:[$N$], has - a base alignment of latexmath:[$2N$] - ** a three- or four-component vector, with components of size - latexmath:[$N$], has a base alignment of latexmath:[$4N$] - ** an array has a base alignment equal to the base alignment of its - element type, rounded up to a multiple of latexmath:[$16$] - ** a structure has a base alignment equal to the largest base alignment - of any of its members, rounded up to a multiple of latexmath:[$16$] - ** a row-major matrix of latexmath:[$C$] columns has a base alignment - equal to the base alignment of vector of latexmath:[$C$] matrix - components - ** a column-major matrix has a base alignment equal to the base - alignment of the matrix column type -+ + ** a scalar of size latexmath:[$N$] has a base alignment of + latexmath:[$N$] + ** a two-component vector, with components of size latexmath:[$N$], has + a base alignment of latexmath:[$2N$] + ** a three- or four-component vector, with components of size + latexmath:[$N$], has a base alignment of latexmath:[$4N$] + ** an array has a base alignment equal to the base alignment of its + element type, rounded up to a multiple of latexmath:[$16$] + ** a structure has a base alignment equal to the largest base alignment + of any of its members, rounded up to a multiple of latexmath:[$16$] + ** a row-major matrix of latexmath:[$C$] columns has a base alignment + equal to the base alignment of vector of latexmath:[$C$] matrix + components + ** a column-major matrix has a base alignment equal to the base + alignment of the matrix column type * Any code:ArrayStride or code:MatrixStride decoration must: be an integer multiple of the base alignment of the array or matrix from above. -+ * The code:Offset Decoration of a member immediately following a structure or an array must: be greater than or equal to the next multiple of the base alignment of that structure or array. @@ -922,7 +919,7 @@ code:LocalInvocationId.y and code:LocalInvocationId.z will be zero. code:NumWorkgroups:: The code:NumWorkgroups built-in decoration can: be applied to a variable that -represents the number of local workgroups that are part of the dispatch that the +represents the number of local workgroups that are part of the dispatch that the invocation belongs to. Each component is equal to the values of the parameters passed into flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand structure read through a call to flink:vkCmdDispatchIndirect. diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index af3f0072ee..26643e63a7 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -24,6 +24,8 @@ performance feature. Rather, this can: be useful for certain embedded systems, for debugging purposes (e.g. putting a guard page after all host allocations), or for memory allocation logging. +// refBegin VkAllocationCallbacks Structure containing callback function pointers for memory allocation. + Allocators are provided by the application as a pointer to a sname:VkAllocationCallbacks structure: @@ -52,6 +54,8 @@ include::../structs/VkAllocationCallbacks.txt[] include::../validity/structs/VkAllocationCallbacks.txt[] +// refBegin PFN_vkAllocationFunction application-defined memory allocation function + The type of pname:pfnAllocation is: include::../funcpointers/PFN_vkAllocationFunction.txt[] @@ -75,7 +79,7 @@ with the pointer value being a multiple of pname:alignment. [NOTE] .Note ==== -Correct Vulkan operation cannot: be assumed if the application doesn't +Correct Vulkan operation cannot: be assumed if the application does not follow these rules. For example, pname:pfnAllocation (or pname:pfnReallocation) could cause @@ -99,6 +103,10 @@ command without the requested allocation, then it may: do so, and must: not generate ename:VK_ERROR_OUT_OF_HOST_MEMORY as a result of this failed allocation. +// refEnd PFN_vkAllocationFunction VkAllocationCallbacks + +// refBegin PFN_vkReallocationFunction application-defined memory reallocation function + The type of pname:pfnReallocation is: include::../funcpointers/PFN_vkReallocationFunction.txt[] @@ -141,6 +149,10 @@ must: not free the old allocation. pname:pfnReallocation must: follow the same <>. +// refEnd PFN_vkReallocationFunction VkAllocationCallbacks + +// refBegin PFN_vkFreeFunction application-defined memory free function + The type of pname:pfnFree is: include::../funcpointers/PFN_vkFreeFunction.txt[] @@ -155,6 +167,10 @@ pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by pname:pfnAllocation or pname:pfnReallocation. The application should: free this memory. +// refEnd PFN_vkFreeFunction VkAllocationCallbacks + +// refBegin PFN_vkInternalAllocationNotification application-defined memory allocation notification function + The type of pname:pfnInternalAllocation is: include::../funcpointers/PFN_vkInternalAllocationNotification.txt[] @@ -170,6 +186,10 @@ include::../funcpointers/PFN_vkInternalAllocationNotification.txt[] This is a purely informational callback. +// refEnd PFN_vkInternalAllocationNotification VkAllocationCallbacks + +// refBegin PFN_vkInternalFreeNotification application-defined memory free notification function + The type of pname:pfnInternalFree is: include::../funcpointers/PFN_vkInternalFreeNotification.txt[] @@ -183,10 +203,16 @@ include::../funcpointers/PFN_vkInternalFreeNotification.txt[] specifying the scope of the lifetime of the allocation, as described <>. +// refEnd PFN_vkInternalFreeNotification VkAllocationCallbacks + +// refBegin VkSystemAllocationScope allocation scope + [[memory-host-allocation-scope]] Each allocation has a _scope_ which defines its lifetime and which object it is associated with. The scope is provided in the pname:allocationScope -parameter and takes a value of type elink:VkSystemAllocationScope: +parameter passed to callbacks defined in slink:VkAllocationCallbacks. +Possible values for this parameter are defined by +elink:VkSystemAllocationScope: include::../enums/VkSystemAllocationScope.txt[] @@ -235,6 +261,8 @@ application using the most specific allocator and scope available: * Otherwise an implementation will allocate memory through an alternative mechanism that is unspecified. +// refEnd VkSystemAllocationScope VkAllocationCallbacks + Objects that are allocated from pools do not specify their own allocator. When an implementation requires host memory for such an object, that memory is sourced from the object's parent pool's allocator. @@ -249,6 +277,8 @@ Upon freeing executable memory, pname:pfnInternalFree will be called. An implementation will only call an informational callback for executable memory allocations and frees. +// refBegin VkInternalAllocationType allocation type + The pname:allocationType parameter to the pname:pfnInternalAllocation and pname:pfnInternalFree functions may: be one of the following values: @@ -257,6 +287,8 @@ include::../enums/VkInternalAllocationType.txt[] * ename:VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - The allocation is intended for execution by the host. +// refEnd VkInternalAllocationType PFN_vkInternalAllocationNotification PFN_vkInternalFreeNotification + An implementation must: only make calls into an application-provided allocator from within the scope of an API command. An implementation must: only make calls into an application-provided allocator from the same thread @@ -357,9 +389,12 @@ Device memory is memory that is visible to the device, for example the contents of opaque images that can: be natively used by the device, or uniform buffer objects that reside in on-device memory. -The memory properties of the physical device describe the memory heaps and -memory types available to a physical device. These can: be queried by -calling: +Memory properties of a physical device describe the memory heaps and memory +types available. + +// refBegin vkGetPhysicalDeviceMemoryProperties Reports memory information for the specified physical device. + +To query memory properties, call: include::../protos/vkGetPhysicalDeviceMemoryProperties.txt[] @@ -370,19 +405,21 @@ include::../protos/vkGetPhysicalDeviceMemoryProperties.txt[] include::../validity/protos/vkGetPhysicalDeviceMemoryProperties.txt[] +// refBegin VkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties + The sname:VkPhysicalDeviceMemoryProperties structure is defined as: include::../structs/VkPhysicalDeviceMemoryProperties.txt[] -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -TODO (Jon) - Need to restructure description like other structures. -==== -endif::editing-notes[] - -include::../validity/structs/VkPhysicalDeviceMemoryProperties.txt[] + * pname:memoryTypeCount is the number of valid elements in the + pname:pMemoryRanges array. + * pname:memoryTypes is an array of slink:VkMemoryType structures + describing the _memory types_ that can: be used to access memory + allocated from the heaps specified by pname:memoryHeaps. + * pname:memoryHeapCount is the number of valid elements in the + pname:pMemoryRanges array. + * pname:memoryHeaps is an array of slink:VkMemoryHeap structures + describing the _memory heaps_ from which memory can: be allocated. The sname:VkPhysicalDeviceMemoryProperties structure describes a number of _memory heaps_ as well as a number of _memory types_ that can: be used to @@ -404,72 +441,13 @@ pname:memoryTypeCount and is less than or equal to ename:VK_MAX_MEMORY_TYPES. Each memory type is described by an element of the pname:memoryTypes array, as a sname:VkMemoryType structure. -The sname:VkMemoryHeap structure is defined as: - -include::../structs/VkMemoryHeap.txt[] - - * pname:size is the total memory size in bytes in the heap. - * pname:flags is a bitmask of attribute flags for the heap. The bits - specified in pname:flags are: -+ -include::../enums/VkMemoryHeapFlagBits.txt[] - - ** if pname:flags contains ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, it means - the heap corresponds to device local memory. Device local memory may: - have different performance characteristics than host local memory, and - may: support different memory property flags. - -include::../validity/structs/VkMemoryHeap.txt[] - At least one heap must: include ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT in -pname:flags. If there are multiple heaps that all have similar performance +slink:VkMemoryHeap::pname:flags. If there are multiple heaps that all have similar performance characteristics, they may: all include ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT. In a unified memory architecture (UMA) system, there is often only a single memory heap which is considered to be equally ``local'' to the host and to the device, and such an implementation must: advertise the heap as device-local. -The sname:VkMemoryType structure is defined as: - -include::../structs/VkMemoryType.txt[] - - * pname:heapIndex describes which memory heap this memory type - corresponds to, and must: be less than pname:memoryHeapCount from the - sname:VkPhysicalDeviceMemoryProperties structure. - * pname:propertyFlags is a bitmask of properties for this memory type. The - bits specified in pname:propertyFlags are: -+ -include::../enums/VkMemoryPropertyFlagBits.txt[] - - ** if pname:propertyFlags has the - ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set, memory allocated - with this type is the most efficient for device access. This property - will only be set for memory types belonging to heaps with the - ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT set. - ** if pname:propertyFlags has the - ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT bit set, memory allocated - with this type can: be mapped using flink:vkMapMemory so that it can: - be accessed on the host. - ** if pname:propertyFlags has the - ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bit set, host cache - management commands fname:vkFlushMappedMemoryRanges and - fname:vkInvalidateMappedMemoryRanges are not needed to make host writes - visible to the device or device writes visible to the host, - respectively. - ** if pname:propertyFlags has the - ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT bit set, memory allocated - with this type is cached on the host. Host memory accesses to - uncached memory are slower than to cached memory, however uncached - memory is always host coherent. - ** if pname:propertyFlags has the - ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type - only allows device access to the memory. Memory types must: not have - both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and - ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally, - the object's backing memory may: be provided by the implementation - lazily as specified in <>. - -include::../validity/structs/VkMemoryType.txt[] Each memory type returned by flink:vkGetPhysicalDeviceMemoryProperties must: have its pname:propertyFlags set to one of the following values: @@ -540,9 +518,90 @@ accesses, as appropriate for the intended usage, and if such a memory type is not present can: fallback to searching for a less optimal but guaranteed set of properties such as "0" or "host-visible and coherent". +include::../validity/structs/VkPhysicalDeviceMemoryProperties.txt[] + +// refBegin VkMemoryHeap - Structure specifying a memory heap + +The sname:VkMemoryHeap structure is defined as: + +include::../structs/VkMemoryHeap.txt[] + + * pname:size is the total memory size in bytes in the heap. + * pname:flags is a bitmask of attribute flags for the heap. The bits + specified in pname:flags are: ++ +-- +// refBegin VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap +include::../enums/VkMemoryHeapFlagBits.txt[] +-- + ** if pname:flags contains ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, it means + the heap corresponds to device local memory. Device local memory may: + have different performance characteristics than host local memory, and + may: support different memory property flags. + +include::../validity/structs/VkMemoryHeap.txt[] + +// refBegin VkMemoryType - Structure specifying memory type + +The sname:VkMemoryType structure is defined as: + +include::../structs/VkMemoryType.txt[] + + * pname:heapIndex describes which memory heap this memory type + corresponds to, and must: be less than pname:memoryHeapCount from the + sname:VkPhysicalDeviceMemoryProperties structure. + * pname:propertyFlags is a bitmask of properties for this memory type. The + bits specified in pname:propertyFlags are: ++ +-- +// refBegin VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type +include::../enums/VkMemoryPropertyFlagBits.txt[] +-- + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set, memory allocated + with this type is the most efficient for device access. This property + will only be set for memory types belonging to heaps with the + ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT set. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT bit set, memory allocated + with this type can: be mapped using flink:vkMapMemory so that it can: + be accessed on the host. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bit set, host cache + management commands fname:vkFlushMappedMemoryRanges and + fname:vkInvalidateMappedMemoryRanges are not needed to make host writes + visible to the device or device writes visible to the host, + respectively. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT bit set, memory allocated + with this type is cached on the host. Host memory accesses to + uncached memory are slower than to cached memory, however uncached + memory is always host coherent. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type + only allows device access to the memory. Memory types must: not have + both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and + ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally, + the object's backing memory may: be provided by the implementation + lazily as specified in <>. + +include::../validity/structs/VkMemoryType.txt[] + +// refBegin VkDeviceMemory - Opaque handle to a device memory object + A Vulkan device operates on data in device memory via memory objects that -are represented in the API by a sname:VkDeviceMemory handle. Memory objects -are allocated by calling fname:vkAllocateMemory: +are represented in the API by a sname:VkDeviceMemory handle. + +Memory objects are represented by sname:VkDeviceMemory handles: + +include::../handles/VkDeviceMemory.txt[] + +// refEnd VkDeviceMemory + +// refBegin vkAllocateMemory Allocate GPU memory. + +To allocate memory objects, call: include::../protos/vkAllocateMemory.txt[] @@ -556,21 +615,6 @@ include::../protos/vkAllocateMemory.txt[] * pname:pMemory is a pointer to a sname:VkDeviceMemory handle in which information about the allocated memory is returned. -include::../validity/protos/vkAllocateMemory.txt[] - -The sname:VkMemoryAllocateInfo structure is defined as: - -include::../structs/VkMemoryAllocateInfo.txt[] - - * pname:sType is the type of this structure. - * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:allocationSize is the size of the allocation in bytes - * pname:memoryTypeIndex is the memory type index, which selects the - properties of the memory to be allocated, as well as the heap the memory - will come from. - -include::../validity/structs/VkMemoryAllocateInfo.txt[] - Allocations returned by fname:vkAllocateMemory are guaranteed to meet any alignment requirement by the implementation. For example, if an implementation requires 128 byte alignment for images and 64 byte alignment @@ -598,7 +642,26 @@ if such a failure occurs then the error ename:VK_ERROR_OUT_OF_DEVICE_MEMORY should: be returned. ==== -A memory object is freed by calling: +include::../validity/protos/vkAllocateMemory.txt[] + +// refBegin VkMemoryAllocateInfo Structure containing parameters of a memory allocation. + +The sname:VkMemoryAllocateInfo structure is defined as: + +include::../structs/VkMemoryAllocateInfo.txt[] + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:allocationSize is the size of the allocation in bytes + * pname:memoryTypeIndex is the memory type index, which selects the + properties of the memory to be allocated, as well as the heap the memory + will come from. + +include::../validity/structs/VkMemoryAllocateInfo.txt[] + +// refBegin vkFreeMemory Free GPU memory + +To free a memory object, call: include::../protos/vkFreeMemory.txt[] @@ -607,8 +670,6 @@ include::../protos/vkFreeMemory.txt[] * pname:pAllocator controls host memory allocation as described in the <> chapter. -include::../validity/protos/vkFreeMemory.txt[] - Before freeing a memory object, an application must: ensure the memory object is no longer in use by the device--for example by command buffers queued for execution. The memory can: remain bound to images or @@ -626,6 +687,9 @@ the <> section. If a memory object is mapped at the time it is freed, it is implicitly unmapped. +include::../validity/protos/vkFreeMemory.txt[] + + [[memory-device-hostaccess]] === Host Access to Device Memory Objects @@ -634,9 +698,12 @@ accessible. Memory objects created with the memory property ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT are considered _mappable_. Memory -objects must: be mappable in order to be successfully mapped on the host. An -application retrieves a host virtual address pointer to a region of a -mappable memory object by calling: +objects must: be mappable in order to be successfully mapped on the host. + +// refBegin vkMapMemory Map a memory object into application address space. + +To retrieve a host virtual address pointer to a region of a mappable memory +object, call: include::../protos/vkMapMemory.txt[] @@ -647,14 +714,12 @@ include::../protos/vkMapMemory.txt[] * pname:size is the size of the memory range to map, or ename:VK_WHOLE_SIZE to map from pname:offset to the end of the allocation. - * pname:flags is reserved for future use, and must: be zero. + * pname:flags is reserved for future use. * pname:ppData points to a pointer in which is returned a host-accessible pointer to the beginning of the mapped range. This pointer minus pname:offset must: be aligned to at least sname:VkPhysicalDeviceLimits::pname:minMemoryMapAlignment. -include::../validity/protos/vkMapMemory.txt[] - It is an application error to call fname:vkMapMemory on a memory object that is already mapped. @@ -687,10 +752,23 @@ familiar with all of the mechanisms described in the chapter on to maintaining memory access ordering. ==== +include::../validity/protos/vkMapMemory.txt[] + Two commands are provided to enable applications to work with non-coherent memory allocations: fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges. +[NOTE] +.Note +==== +If the memory object was created with the +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set, +fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges are +unnecessary and may: have performance cost. +==== + +// refBegin vkFlushMappedMemoryRanges Flush mapped memory ranges. + To flush ranges of non-coherent memory from the host caches, call: include::../protos/vkFlushMappedMemoryRanges.txt[] @@ -701,13 +779,15 @@ include::../protos/vkFlushMappedMemoryRanges.txt[] slink:VkMappedMemoryRange structures describing the memory ranges to flush. -include::../validity/protos/vkFlushMappedMemoryRanges.txt[] - fname:vkFlushMappedMemoryRanges must: be used to guarantee that host writes to non-coherent memory are visible to the device. It must: be called after the host writes to non-coherent memory have completed and before command buffers that will read or write any of those memory locations are submitted to a queue. +include::../validity/protos/vkFlushMappedMemoryRanges.txt[] + +// refBegin vkInvalidateMappedMemoryRanges Invalidate ranges of mapped memory objects. + To invalidate ranges of non-coherent memory from the host caches, call: include::../protos/vkInvalidateMappedMemoryRanges.txt[] @@ -718,8 +798,17 @@ include::../protos/vkInvalidateMappedMemoryRanges.txt[] slink:VkMappedMemoryRange structures describing the memory ranges to invalidate. +fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to +non-coherent memory are visible to the host. It must: be called after command buffers +that execute and flush (via memory barriers) the device writes have completed, and +before the host will read or write any of those locations. If a range of non-coherent +memory is written by the host and then invalidated without first being flushed, its +contents are undefined. + include::../validity/protos/vkInvalidateMappedMemoryRanges.txt[] +// refBegin VkMappedMemoryRange - Structure specifying a mapped memory range + The sname:VkMappedMemoryRange structure is defined as: include::../structs/VkMappedMemoryRange.txt[] @@ -735,22 +824,6 @@ include::../structs/VkMappedMemoryRange.txt[] include::../validity/structs/VkMappedMemoryRange.txt[] -[NOTE] -.Note -==== -If the memory object was created with the -ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set, -fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges are -unnecessary and may: have performance cost. -==== - -fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to -non-coherent memory are visible to the host. It must: be called after command buffers -that execute and flush (via memory barriers) the device writes have completed, and -before the host will read or write any of those locations. If a range of non-coherent -memory is written by the host and then invalidated without first being flushed, its -contents are undefined. - ifdef::editing-notes[] [NOTE] .editing-note @@ -778,8 +851,10 @@ the host wrote some data after submission). For device writes to be seen by subsequent host reads, a pipeline barrier is required: to <>. -Once host access to a memory object is no longer needed by the application, -it can: be unmapped by calling: +// refBegin vkUnmapMemory Unmap a previously mapped memory object. + +To unmap a memory object once host access to it is no longer needed by the +application, call: include::../protos/vkUnmapMemory.txt[] @@ -811,8 +886,10 @@ are not needed once a render pass instance has completed may: allow some implementations to never allocate memory for such attachments. ==== -Determining the amount of lazily-allocated memory that is currently -committed for a memory object is achieved by calling: +// refBegin vkGetDeviceMemoryCommitment Query the current commitment for a VkDeviceMemory + +To determine the amount of lazily-allocated memory that is currently +committed for a memory object, call: include::../protos/vkGetDeviceMemoryCommitment.txt[] @@ -822,8 +899,6 @@ include::../protos/vkGetDeviceMemoryCommitment.txt[] value in which the number of bytes currently committed is returned, on success. -include::../validity/protos/vkGetDeviceMemoryCommitment.txt[] - The implementation may: update the commitment at any time, and the value returned by this query may: be out of date. @@ -831,3 +906,5 @@ The implementation guarantees to allocate any committed memory from the heapIndex indicated by the memory type that the memory object was created with. +include::../validity/protos/vkGetDeviceMemoryCommitment.txt[] + diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index f2b4a0ba7a..ed06ef2db5 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -75,6 +75,15 @@ object with that same state as dynamic, the new pipeline object state will override the dynamic state. Modifying dynamic state that is not set as dynamic by the pipeline state object will lead to undefined results. +// refBegin VkPipeline - Opaque handle to a pipeline object + +Compute and graphics pipelines are each represented by sname:VkPipeline +handles: + +include::../handles/VkPipeline.txt[] + +// refEnd VkPipeline + [[pipelines-compute]] == Compute Pipelines @@ -82,18 +91,20 @@ dynamic by the pipeline state object will lead to undefined results. Compute pipelines consist of a single static compute shader stage and the pipeline layout. -The compute pipeline encapsulates a compute shader and is created by calling +The compute pipeline represents a compute shader and is created by calling fname:vkCreateComputePipelines with pname:module and pname:pName selecting an entry point from a shader module, where that entry point defines a valid compute shader, in the sname:VkPipelineShaderStageCreateInfo structure contained within the sname:VkComputePipelineCreateInfo structure. -Compute pipelines are created by calling: +// refBegin vkCreateComputePipelines Creates a new compute pipeline object. + +To create compute pipelines, call: include::../protos/vkCreateComputePipelines.txt[] * pname:device is the logical device that creates the compute pipelines. - * pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that + * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid <> object, in which case use of that cache is enabled for the duration of the command. @@ -120,6 +131,8 @@ endif::editing-notes[] include::../validity/protos/vkCreateComputePipelines.txt[] +// refBegin VkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline + The sname:VkComputePipelineCreateInfo structure is defined as: include::../structs/VkComputePipelineCreateInfo.txt[] @@ -136,8 +149,6 @@ include::../structs/VkComputePipelineCreateInfo.txt[] * pname:basePipelineIndex is an index into the pname:pCreateInfos parameter to use as a pipeline to derive from -include::../validity/structs/VkComputePipelineCreateInfo.txt[] - The parameters pname:basePipelineHandle and pname:basePipelineIndex are described in more detail in <>. @@ -145,6 +156,10 @@ described in more detail in pname:stage points to a structure of type sname:VkPipelineShaderStageCreateInfo. +include::../validity/structs/VkComputePipelineCreateInfo.txt[] + +// refBegin VkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage + The sname:VkPipelineShaderStageCreateInfo structure is defined as: include::../structs/VkPipelineShaderStageCreateInfo.txt[] @@ -152,7 +167,13 @@ include::../structs/VkPipelineShaderStageCreateInfo.txt[] * 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:stage is a elink:VkShaderStageFlagBits naming the pipeline stage. + * pname:stage names a single pipeline stage. Bits which can: + be set include: ++ +-- +// refBegin VkShaderStageFlagBits - Bitmask specifying a pipeline stage +include::../enums/VkShaderStageFlagBits.txt[] +-- * pname:module is a sname:VkShaderModule object that contains the shader for this stage. * pname:pName is a pointer to a null-terminated UTF-8 string specifying @@ -163,22 +184,21 @@ include::../structs/VkPipelineShaderStageCreateInfo.txt[] include::../validity/structs/VkPipelineShaderStageCreateInfo.txt[] -The elink:VkShaderStageFlagBits flags are defined as: - -include::../enums/VkShaderStageFlagBits.txt[] - [[pipelines-graphics]] == Graphics Pipelines Graphics pipelines consist of multiple shader stages, multiple -fixed-function pipeline stages, and a pipeline layout, and are created by -calling fname:vkCreateGraphicsPipelines: +fixed-function pipeline stages, and a pipeline layout. + +// refBegin vkCreateGraphicsPipelines Create graphics pipelines. + +To create graphics pipelines, call: include::../protos/vkCreateGraphicsPipelines.txt[] * pname:device is the logical device that creates the graphics pipelines. - * pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that + * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid <> object, in which case use of that cache is enabled for the duration of the command. @@ -191,20 +211,22 @@ include::../protos/vkCreateGraphicsPipelines.txt[] * pname:pPipelines is a pointer to an array in which the resulting graphics pipeline objects are returned. -include::../validity/protos/vkCreateGraphicsPipelines.txt[] - -The sname:VkGraphicsPipelineCreateInfo structure includes an array of shader +The slink:VkGraphicsPipelineCreateInfo structure includes an array of shader create info structures containing all the desired active shader stages, as well as creation info to define all relevant fixed-function stages, and a pipeline layout. +include::../validity/protos/vkCreateGraphicsPipelines.txt[] + +// refBegin VkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline + The sname:VkGraphicsPipelineCreateInfo structure is defined as: include::../structs/VkGraphicsPipelineCreateInfo.txt[] * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags is a bitfield of elink:VkPipelineCreateFlagBits controlling + * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits controlling how the pipeline will be generated, as described below. * pname:stageCount is the number of entries in the pname:pStages array. * pname:pStages is an array of size pname:stageCount structures of type @@ -253,8 +275,6 @@ include::../structs/VkGraphicsPipelineCreateInfo.txt[] * pname:basePipelineIndex is an index into the pname:pCreateInfos parameter to use as a pipeline to derive from. -include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[] - The parameters pname:basePipelineHandle and pname:basePipelineIndex are described in more detail in <>. @@ -265,6 +285,7 @@ structures, which were previously described in Bits which can: be set in pname:flags are: +// refBegin VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is generated include::../enums/VkPipelineCreateFlagBits.txt[] * ename:VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT specifies that the @@ -285,6 +306,10 @@ information. pname:pDynamicState points to a structure of type sname:VkPipelineDynamicStateCreateInfo. +include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[] + +// refBegin VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state + The sname:VkPipelineDynamicStateCreateInfo structure is defined as: include::../structs/VkPipelineDynamicStateCreateInfo.txt[] @@ -300,7 +325,11 @@ include::../structs/VkPipelineDynamicStateCreateInfo.txt[] include::../validity/structs/VkPipelineDynamicStateCreateInfo.txt[] -The elink:VkDynamicState enumerants are defined as: +// refBegin VkDynamicState - indicate which dynamic state is taken from dynamic state commands + +The source of difference pieces of dynamic state is determined by the +slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates property of the +currently active pipeline, which takes the following values: include::../enums/VkDynamicState.txt[] @@ -364,6 +393,11 @@ include::../enums/VkDynamicState.txt[] sname:VkPipelineDepthStencilStateCreateInfo member pname:stencilTestEnable set to ename:VK_TRUE +// refEnd VkDynamicState + + +=== Valid Combinations of Stages for Graphics Pipelines + If tessellation shader stages are omitted, the tessellation shading and fixed-function stages of the pipeline are skipped. @@ -427,6 +461,8 @@ Tessellation Control and Tessellation Evaluation shaders. [[pipelines-destruction]] == Pipeline destruction +// refBegin vkDestroyPipeline Destroy a pipeline object + To destroy a graphics or compute pipeline, call: include::../protos/vkDestroyPipeline.txt[] @@ -453,10 +489,10 @@ group-create. When an application attempts to create many pipelines in a single command, it is possible that some subset may: fail creation. In that case, the corresponding entries in the pname:pPipelines output array will be filled -with code:VK_NULL_HANDLE values. If any pipeline fails creation (for +with dlink:VK_NULL_HANDLE values. If any pipeline fails creation (for example, due to out of memory errors), the ftext:vkCreate*Pipelines commands will return an error code. The implementation will attempt to create all -pipelines, and only return code:VK_NULL_HANDLE values for those that +pipelines, and only return dlink:VK_NULL_HANDLE values for those that actually failed. @@ -476,7 +512,7 @@ pname:basePipelineHandle or pname:basePipelineIndex members of the structure must: have a valid handle/index, and indicates the parent pipeline. If pname:basePipelineHandle is used, the parent pipeline must: have already been created. If pname:basePipelineIndex is used, then the parent is being -created in the same command. code:VK_NULL_HANDLE acts as the invalid handle +created in the same command. dlink:VK_NULL_HANDLE acts as the invalid handle for pname:basePipelineHandle, and -1 is the invalid index for pname:basePipelineIndex. If pname:basePipelineIndex is used, the base pipeline must: appear earlier in the array. The base pipeline must: have @@ -487,6 +523,8 @@ set. [[pipelines-cache]] == Pipeline Cache +// refBegin VkPipelineCache - Opaque handle to a pipeline cache object + Pipeline cache objects allow the result of pipeline construction to be reused between pipelines and between runs of an application. Reuse between pipelines is achieved by passing the same pipeline cache object when @@ -498,7 +536,15 @@ managed by the implementation. Applications can: manage the host memory consumed by a pipeline cache object and control the amount of data retrieved from a pipeline cache object. -Pipeline cache objects are created by calling: +Pipeline cache objects are represented by sname:VkPipelineCache handles: + +include::../handles/VkPipelineCache.txt[] + +// refEnd VkPipelineCache + +// refBegin vkCreatePipelineCache Creates a new pipeline cache + +To create pipeline cache objects, call: include::../protos/vkCreatePipelineCache.txt[] @@ -517,13 +563,32 @@ include::../protos/vkCreatePipelineCache.txt[] ==== Applications can: track and manage the total host memory size of a pipeline cache object using the pname:pAllocator. Applications can: limit the amount -of data retrieved from a pipeline cache object in fname:vkGetPipeineCacheData. +of data retrieved from a pipeline cache object in fname:vkGetPipelineCacheData. Implementations shouldnot: internally limit the total number of entries added to a pipeline cache object or the total host memory consumed. ==== +Once created, a pipeline cache can: be passed to the +fname:vkCreateGraphicsPipelines and fname:vkCreateComputePipelines commands. +If the pipeline cache passed into these commands is not +dlink:VK_NULL_HANDLE, the implementation will query it for possible reuse +opportunities and update it with new content. The use of the pipeline cache +object in these commands is internally synchronized, and the same pipeline +cache object can: be used in multiple threads simultaneously. + +[NOTE] +.Note +==== +Implementations should: make every effort to limit any critical sections +to the actual accesses to the cache, which is expected to be significantly +shorter than the duration of the fname:vkCreateGraphicsPipelines and +fname:vkCreateComputePipelines commands. +==== + include::../validity/protos/vkCreatePipelineCache.txt[] +// refBegin VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache + The sname:VkPipelineCacheCreateInfo structure is defined as: include::../structs/VkPipelineCacheCreateInfo.txt[] @@ -541,22 +606,7 @@ include::../structs/VkPipelineCacheCreateInfo.txt[] include::../validity/structs/VkPipelineCacheCreateInfo.txt[] -Once created, a pipeline cache can: be passed to the -fname:vkCreateGraphicsPipelines and fname:vkCreateComputePipelines commands. -If the pipeline cache passed into these commands is not -code:VK_NULL_HANDLE, the implementation will query it for possible reuse -opportunities and update it with new content. The use of the pipeline cache -object in these commands is internally synchronized, and the same pipeline -cache object can: be used in multiple threads simultaneously. - -[NOTE] -.Note -==== -Implementations should: make every effort to limit any critical sections -to the actual accesses to the cache, which is expected to be significantly -shorter than the duration of the fname:vkCreateGraphicsPipelines and -fname:vkCreateComputePipelines commands. -==== +// refBegin vkMergePipelineCaches Combine the data stores of pipeline caches. Pipeline cache objects can: be merged using the command: @@ -570,8 +620,6 @@ include::../protos/vkMergePipelineCaches.txt[] merged into pname:dstCache. The previous contents of pname:dstCache are included after the merge. -include::../validity/protos/vkMergePipelineCaches.txt[] - [NOTE] .Note ==== @@ -580,6 +628,10 @@ implementations should: merge the contents of the specified pipelines and prune duplicate entries. ==== +include::../validity/protos/vkMergePipelineCaches.txt[] + +// refBegin vkGetPipelineCacheData Get the data store from a pipeline cache + Data can: be retrieved from a pipeline cache object using the command: include::../protos/vkGetPipelineCacheData.txt[] @@ -597,7 +649,7 @@ size of the buffer, in bytes, pointed to by pname:pData, and on return the variable is overwritten with the amount of data actually written to pname:pData. -If pname:dataSize is less than the maximum size that can: be +If pname:pDataSize is less than the maximum size that can: be retrieved by the pipeline cache, at most pname:pDataSize bytes will be written to pname:pData, and fname:vkGetPipelineCacheData will return ename:VK_INCOMPLETE. Any data written to pname:pData is valid and can: be @@ -605,8 +657,6 @@ provided as the pname:pInitialData member of the sname:VkPipelineCacheCreateInfo structure passed to fname:vkCreatePipelineCache. -include::../validity/protos/vkGetPipelineCacheData.txt[] - [[pipelines-cache-header]] Applications can: store the data retrieved from the pipeline cache, and use these data, possibly in a future run of the application, to populate new @@ -642,6 +692,8 @@ The first four bytes encode the length of the entire pipeline header, in bytes. This value includes all fields in the header including the pipeline cache version field and the size of the length field. +// refBegin VkPipelineCacheHeaderVersion Encode pipeline cache version + The next four bytes encode the pipeline cache version. This field is interpreted as a elink:VkPipelineCacheHeaderVersion value, and must: have one of the following values: @@ -651,9 +703,15 @@ include::../enums/VkPipelineCacheHeaderVersion.txt[] A consumer of the pipeline cache should use the cache version to interpret the remainder of the cache header. -If pname:dataSize is less than what is necessary to store this +// refEnd VkPipelineCacheHeaderVersion vkCreatePipelineCache vkGetPipelineCacheData + +If pname:pDataSize is less than what is necessary to store this header, nothing will be written to pname:pData and zero will be written to -pname:dataSize. +pname:pDataSize. + +include::../validity/protos/vkGetPipelineCacheData.txt[] + +// refBegin vkDestroyPipelineCache Destroy a pipeline cache object To destroy a pipeline cache, call: @@ -689,6 +747,8 @@ contains a parameter pname:pSpecializationInfo, which can: be `NULL` to indicate no specialization constants, or point to a sname:VkSpecializationInfo structure. +// refBegin VkSpecializationInfo - Structure specifying specialization info + The sname:VkSpecializationInfo structure is defined as: include::../structs/VkSpecializationInfo.txt[] @@ -701,26 +761,28 @@ include::../structs/VkSpecializationInfo.txt[] * pname:dataSize is the byte size of the pname:pData buffer. * pname:pData contains the actual constant values to specialize with. +pname:pMapEntries points to a structure of type +slink:VkSpecializationMapEntry. + include::../validity/structs/VkSpecializationInfo.txt[] -pname:pMapEntries points to a structure of type -sname:VkSpecializationMapEntry. +// refBegin VkSpecializationMapEntry - Structure specifying a specialization map entry The sname:VkSpecializationMapEntry structure is defined as: include::../structs/VkSpecializationMapEntry.txt[] - * pname:constantID ID of the specialization constant in SPIR-V. - * pname:offset byte offset of the specialization constant value within the + * pname:constantID is the ID of the specialization constant in SPIR-V. + * pname:offset is the byte offset of the specialization constant value within the supplied data buffer. - * pname:size byte size of the specialization constant value within the + * pname:size is the byte size of the specialization constant value within the supplied data buffer. -include::../validity/structs/VkSpecializationMapEntry.txt[] - If a pname:constantID value is not a specialization constant ID used in the shader, that map entry does not affect the behavior of the pipeline. +include::../validity/structs/VkSpecializationMapEntry.txt[] + In human readable SPIR-V: [source,glsl] @@ -774,9 +836,9 @@ const VkSpecializationInfo info = }; --------------------------------------------------- -Then when calling fname:vkCreateComputePipelines, and passing the +Then when calling flink:vkCreateComputePipelines, and passing the sname:VkSpecializationInfo we defined as the pname:pSpecializationInfo -parameter of sname:VkPipelineShaderStageCreateInfo, we will create a compute +parameter of slink:VkPipelineShaderStageCreateInfo, we will create a compute pipeline with the runtime specified local workgroup size. Another example would be that an application has a SPIR-V module that has @@ -846,6 +908,8 @@ default values encoded within the OpSpecConstant declarations. [[pipelines-binding]] == Pipeline Binding +// refBegin vkCmdBindPipeline Bind a pipeline object to a command buffer. + Once a pipeline has been created, it can: be bound to the command buffer using the command: @@ -857,18 +921,18 @@ include::../protos/vkCmdBindPipeline.txt[] the values + -- +// refBegin VkPipelineBindPoint - specify the bind point of a pipeline object to a command buffer include::../enums/VkPipelineBindPoint.txt[] - +-- ++ specifying whether pname:pipeline will be bound as a compute (ename:VK_PIPELINE_BIND_POINT_COMPUTE) or graphics (ename:VK_PIPELINE_BIND_POINT_GRAPHICS) pipeline. There are separate bind points for each of graphics and compute, so binding one does not disturb the other. --- ++ * pname:pipeline is the pipeline to be bound. -include::../validity/protos/vkCmdBindPipeline.txt[] - Once bound, a pipeline binding affects subsequent graphics or compute commands in the command buffer until a different pipeline is bound to the bind point. The pipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE @@ -878,3 +942,6 @@ ename:VK_PIPELINE_BIND_POINT_GRAPHICS controls the behavior of flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndirect, and flink:vkCmdDrawIndexedIndirect. No other commands are affected by the pipeline state. + +include::../validity/protos/vkCmdBindPipeline.txt[] + diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt index 25550f8db6..f5cf99eeee 100644 --- a/doc/specs/vulkan/chapters/primsrast.txt +++ b/doc/specs/vulkan/chapters/primsrast.txt @@ -34,6 +34,8 @@ Several factors affect rasterization, including the members of sname:VkPipelineRasterizationStateCreateInfo and sname:VkPipelineMultisampleStateCreateInfo. +// refBegin VkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state + The sname:VkPipelineRasterizationStateCreateInfo structure is defined as: include::../structs/VkPipelineRasterizationStateCreateInfo.txt[] @@ -63,6 +65,8 @@ include::../structs/VkPipelineRasterizationStateCreateInfo.txt[] include::../validity/structs/VkPipelineRasterizationStateCreateInfo.txt[] +// refBegin VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state + The sname:VkPipelineMultisampleStateCreateInfo structure is defined as: include::../structs/VkPipelineMultisampleStateCreateInfo.txt[] @@ -311,6 +315,8 @@ A line is drawn by generating a set of fragments overlapping a rectangle centered on the line segment. Each line segment has an associated width that controls the width of that rectangle. +// refBegin vkCmdSetLineWidth Set the dynamic line width state. + The line width is set by the pname:lineWidth property of slink:VkPipelineRasterizationStateCreateInfo in the currently active pipeline if the pipeline was not created with @@ -449,6 +455,8 @@ slink:VkPipelineRasterizationStateCreateInfo structure. [[primsrast-polygons-basic]] === Basic Polygon Rasterization +// refBegin VkFrontFace interpret polygon front-facing orientation + The first step of polygon rasterization is to determine whether the triangle is _back-facing_ or _front-facing_. This determination is made based on the sign of the (clipped or unclipped) polygon's area computed in framebuffer @@ -467,23 +475,29 @@ where latexmath:[$x_f^i$] and latexmath:[$y_f^i$] are the latexmath:[$x$] and latexmath:[$y$] framebuffer coordinates of the latexmath:[$i$]th vertex of the latexmath:[$n$]-vertex polygon (vertices are numbered starting at zero for the purposes of this computation) and latexmath:[$i \oplus 1$] is -latexmath:[$(i + 1)~ \textrm{mod}~ n$]. The interpretation of the sign of -this value is determined by the pname:frontFace property of the -slink:VkPipelineRasterizationStateCreateInfo in the currently active -pipeline, which takes the following values: +latexmath:[$(i + 1)~ \textrm{mod}~ n$]. + +The interpretation of the sign of latexmath:[$a$] +is determined by the +slink:VkPipelineRasterizationStateCreateInfo::pname:frontFace property of +the currently active pipeline, which takes the following values: include::../enums/VkFrontFace.txt[] -When this is set to ename:VK_FRONT_FACE_COUNTER_CLOCKWISE, a triangle with -positive area is considered front-facing. When it is set to +If pname:frontFace is set to ename:VK_FRONT_FACE_COUNTER_CLOCKWISE, a triangle with +positive area is considered front-facing. If it is set to ename:VK_FRONT_FACE_CLOCKWISE, a triangle with negative area is considered front-facing. Any triangle which is not front-facing is back-facing, including zero-area triangles. +// refEnd VkFrontFace + +// refBegin VkCullModeFlagBits - Bitmask controlling triangle culling + Once the orientation of triangles is determined, they are culled according -to the setting of pname:cullMode property in the -slink:VkPipelineRasterizationStateCreateInfo of the currently active -pipeline, which takes the following values: +to the setting of the +slink:VkPipelineRasterizationStateCreateInfo::pname:cullMode property of the +currently active pipeline, which takes the following values: include::../enums/VkCullModeFlagBits.txt[] @@ -495,6 +509,8 @@ ename:VK_CULL_MODE_FRONT_AND_BACK then all triangles are discarded. Following culling, fragments are produced for any triangles which have not been discarded. +// refEnd VkCullModeFlagBits + The rule for determining which fragments are produced by polygon rasterization is called _point sampling_. The two-dimensional projection obtained by taking the x and y framebuffer coordinates of the polygon's @@ -618,9 +634,11 @@ a division performed for each fragment). [[primsrast-polygonmode]] === Polygon Mode -The interpretation of polygons for rasterization is controlled using the -pname:polygonMode member of slink:VkPipelineRasterizationStateCreateInfo, -which takes the following values: +// refBegin VkPolygonMode control polygon rasterization mode + +The method of rasterization for polygons is determined by the +slink:VkPipelineRasterizationStateCreateInfo::pname:polygonMode property of +the currently active pipeline, which takes the following values: include::../enums/VkPolygonMode.txt[] @@ -635,10 +653,14 @@ Note that these modes affect only the final rasterization of polygons: in particular, a polygon's vertices are shaded and the polygon is clipped and possibly culled before these modes are applied. +// refEnd VkPolygonMode + [[primsrast-depthbias]] === Depth Bias +// refBegin vkCmdSetDepthBias Set the depth bias dynamic state. + The depth values of all fragments generated by the rasterization of a polygon can: be offset by a single value that is computed for that polygon. This behavior is controlled by the pname:depthBiasEnable, @@ -659,8 +681,6 @@ include::../protos/vkCmdSetDepthBias.txt[] * pname:depthBiasSlopeFactor is a scalar factor applied to a fragment's slope in depth bias calculations. -include::../validity/protos/vkCmdSetDepthBias.txt[] - If pname:depthBiasEnable is ename:VK_FALSE, no depth bias is applied and the fragment's depth values are unchanged. @@ -748,3 +768,6 @@ For fixed-point depth buffers, fragment depth values are always limited to the range latexmath:[$[0,1\]$] by clamping after depth bias addition is performed. Fragment depth values are clamped even when the depth buffer uses a floating-point representation. + +include::../validity/protos/vkCmdSetDepthBias.txt[] + diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt index 219c8c18f2..84f0aa81d9 100644 --- a/doc/specs/vulkan/chapters/queries.txt +++ b/doc/specs/vulkan/chapters/queries.txt @@ -19,9 +19,19 @@ The supported query types are <>, [[queries-pools]] == Query Pools +// refBegin VkQueryPool - Opaque handle to a query pool object + Queries are managed using _query pool_ objects. Each query pool is a collection of a specific number of queries of a particular type. +Query pools are represented by sname:VkQueryPool handles: + +include::../handles/VkQueryPool.txt[] + +// refEnd VkQueryPool + +// refBegin vkCreateQueryPool Create a new query pool object. + To create a query pool, call: include::../protos/vkCreateQueryPool.txt[] @@ -37,6 +47,8 @@ include::../protos/vkCreateQueryPool.txt[] include::../validity/protos/vkCreateQueryPool.txt[] +// refBegin VkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool + The sname:VkQueryPoolCreateInfo structure is defined as: include::../structs/VkQueryPoolCreateInfo.txt[] @@ -47,7 +59,10 @@ include::../structs/VkQueryPoolCreateInfo.txt[] * pname:queryType is the type of queries managed by the pool, and must: be one of the values + +-- +// refBegin VkQueryType - specify the type of queries managed by a query pool include::../enums/VkQueryType.txt[] +-- * pname:queryCount is the number of queries managed by the pool. * pname:pipelineStatistics is a bitmask indicating which counters will be returned in queries on the new pool, as described below in @@ -56,6 +71,8 @@ include::../enums/VkQueryType.txt[] include::../validity/structs/VkQueryPoolCreateInfo.txt[] +// refBegin vkDestroyQueryPool Destroy a query pool object + To destroy a query pool, call: include::../protos/vkDestroyQueryPool.txt[] @@ -105,6 +122,8 @@ After query pool creation, each query is in an undefined state and must: be reset prior to use. Queries must: also be reset between uses. Using a query that has not been reset will result in undefined behavior. +// refBegin vkCmdResetQueryPool Reset queries in a query pool. + To reset a range of queries in a query pool, call: include::../protos/vkCmdResetQueryPool.txt[] @@ -142,7 +161,9 @@ must: either begin and end inside the same subpass of a render pass instance, or must: both begin and end outside of a render pass instance (i.e. contain entire render pass instances). -Begin a query by calling: +// refBegin vkCmdBeginQuery Begin a query. + +To begin a query, call: include::../protos/vkCmdBeginQuery.txt[] @@ -153,8 +174,9 @@ include::../protos/vkCmdBeginQuery.txt[] * pname:query is the query index within the query pool that will contain the results. * pname:flags is a bitmask indicating constraints on the types of queries - that can: be performed. Valid bits in pname:flags include: + that can: be performed. Bits which can: be set include: + +// refBegin VkQueryControlFlagBits - Bitmask specifying constraints on a query include::../enums/VkQueryControlFlagBits.txt[] If the pname:queryType of the pool is ename:VK_QUERY_TYPE_OCCLUSION and @@ -162,15 +184,18 @@ pname:flags contains ename:VK_QUERY_CONTROL_PRECISE_BIT, an implementation must: return a result that matches the actual number of samples passed. This is described in more detail in <>. -include::../validity/protos/vkCmdBeginQuery.txt[] - [[queries-operation-active]] -After beginning a query, that query is considered active within the command +After beginning a query, that query is considered _active_ within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers. -After the set of desired draw or dispatch commands, end a query by calling: +include::../validity/protos/vkCmdBeginQuery.txt[] + +// refBegin vkCmdEndQuery Ends a query. + +To end a query after the set of desired draw or dispatch commands is +executed, call: include::../protos/vkCmdEndQuery.txt[] @@ -181,8 +206,6 @@ include::../protos/vkCmdEndQuery.txt[] * pname:query is the query index within the query pool where the result is stored. -include::../validity/protos/vkCmdEndQuery.txt[] - [[queries-operation-finished]] As queries operate asynchronously, ending a query does not immediately set the query's status to available. A query is considered _finished_ @@ -194,6 +217,8 @@ Once a query is ended the query must: finish in finite time, unless the state of the query is changed using other commands, e.g. by issuing a reset of the query. +include::../validity/protos/vkCmdEndQuery.txt[] + [[queries-operation-memorylayout]] An application can: retrieve results either by requesting they be written into application-provided memory, or by requesting they be copied into a @@ -218,6 +243,8 @@ sname:VkBuffer. In either case, the layout in memory is defined as follows: large as the size of the array of integers corresponding to a single query, the values written to memory are undefined. +// refBegin vkGetQueryPoolResults Copy results of queries in a query pool to a host memory region. + To retrieve status and results for a set of queries, call: include::../protos/vkGetQueryPoolResults.txt[] @@ -235,23 +262,22 @@ include::../protos/vkGetQueryPoolResults.txt[] * pname:stride is the stride in bytes between results for individual queries within pname:pData. * pname:flags is a bitmask of elink:VkQueryResultFlagBits specifying how - and when results are returned. - -Valid bits in pname:flags include: - + and when results are returned. Bits which can: be set include: ++ +-- +// refBegin VkQueryResultFlagBits - Bitmask specifying how and when query results are returned include::../enums/VkQueryResultFlagBits.txt[] - -These bits have the following meanings: - - * ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an - array of 64-bit unsigned integer values. If this bit is not set, the - results will be written as an array of 32-bit unsigned integer values. - * ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for - each query's status to become available before retrieving its results. - * ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the - availability status accompanies the results. - * ename:VK_QUERY_RESULT_PARTIAL_BIT indicates that returning partial - results is acceptable. +-- ++ + ** ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an + array of 64-bit unsigned integer values. If this bit is not set, the + results will be written as an array of 32-bit unsigned integer values. + ** ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for + each query's status to become available before retrieving its results. + ** ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the + availability status accompanies the results. + ** ename:VK_QUERY_RESULT_PARTIAL_BIT indicates that returning partial + results is acceptable. If no bits are set in pname:flags, and all requested queries are in the available state, results are written as an array of @@ -334,6 +360,8 @@ e.g. to read the availability status before reading the results. include::../validity/protos/vkGetQueryPoolResults.txt[] +// refBegin vkCmdCopyQueryPoolResults Copy the results of queries in a query pool to a buffer object. + To copy query statuses and numerical results directly to buffer memory, call: @@ -482,8 +510,9 @@ The pipeline statistic counters are individually enabled for query pools with sname:VkQueryPoolCreateInfo::pname:pipelineStatistics, and for secondary command buffers with sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics. -Valid bits in pname:pipelineStatistics include: +// refBegin VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline statistics +Bits which can: be set in pname:pipelineStatistics include: include::../enums/VkQueryPipelineStatisticFlagBits.txt[] @@ -555,7 +584,6 @@ These bits have the following meanings: invocations for implementation-dependent reasons as long as the results of rendering otherwise remain unchanged. - These values are intended to measure relative statistics on one implementation. Various device architectures will count these values differently. Any or all counters may: be affected by the issues described in @@ -578,6 +606,8 @@ marked as available. The application can: copy the result to a buffer (via fname:vkCmdCopyQueryPoolResults), or request it be put into host memory (via fname:vkGetQueryPoolResults). +// refEnd VkQueryPipelineStatisticFlagBits + [[queries-timestamps]] == Timestamp Queries @@ -608,7 +638,9 @@ incremented by 1 can: be obtained from sname:VkPhysicalDeviceLimits::pname:timestampPeriod after a call to fname:vkGetPhysicalDeviceProperties. -A timestamp is requested by calling: +// refBegin vkCmdWriteTimestamp Write a device timestamp into a query object. + +To request a timestamp, call: include::../protos/vkCmdWriteTimestamp.txt[] diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 9177c1590f..c471a86c98 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -4,11 +4,19 @@ [[renderpass]] = Render Pass +// refBegin VkRenderPass - Opaque handle to a render pass object + A _render pass_ represents a collection of attachments, subpasses, and dependencies between the subpasses, and describes how the attachments are used over the course of the subpasses. The use of a render pass in a command buffer is a _render pass instance_. +Render passes are represented by sname:VkRenderPass handles: + +include::../handles/VkRenderPass.txt[] + +// refEnd VkRenderPass + An _attachment description_ describes the properties of an attachment including its format, sample count, and how its contents are treated at the beginning and end of each render pass instance. @@ -85,7 +93,9 @@ per-sample operations are performed in [[renderpass-creation]] == Render Pass Creation -A render pass is created by calling: +// refBegin vkCreateRenderPass Create a new render pass object. + +To create a render pass, call: include::../protos/vkCreateRenderPass.txt[] @@ -100,6 +110,8 @@ include::../protos/vkCreateRenderPass.txt[] include::../validity/protos/vkCreateRenderPass.txt[] +// refBegin VkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass + The sname:VkRenderPassCreateInfo structure is defined as: include::../structs/VkRenderPassCreateInfo.txt[] @@ -127,6 +139,8 @@ include::../structs/VkRenderPassCreateInfo.txt[] include::../validity/structs/VkRenderPassCreateInfo.txt[] +// refBegin VkAttachmentDescription - Structure specifying an attachment description + The sname:VkAttachmentDescription structure is defined as: include::../structs/VkAttachmentDescription.txt[] @@ -140,34 +154,34 @@ include::../structs/VkAttachmentDescription.txt[] first used: + -- +// refBegin VkAttachmentLoadOp - specify how contents of an attachment are treated at the beginning of a subpass include::../enums/VkAttachmentLoadOp.txt[] - -** ename:VK_ATTACHMENT_LOAD_OP_LOAD means the contents within the render - area will be preserved. -** ename:VK_ATTACHMENT_LOAD_OP_CLEAR means the contents within the render - area will be cleared to a uniform value, which is specified when a render - pass instance is begun. -** ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE means the contents within the area - need not be preserved; the contents of the attachment will be undefined - inside the render area. -- + ** ename:VK_ATTACHMENT_LOAD_OP_LOAD means the contents within the render + area will be preserved. + ** ename:VK_ATTACHMENT_LOAD_OP_CLEAR means the contents within the render + area will be cleared to a uniform value, which is specified when a render + pass instance is begun. + ** ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE means the contents within the area + need not be preserved; the contents of the attachment will be undefined + inside the render area. * pname:storeOp specifies how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used: + -- +// refBegin VkAttachmentStoreOp - specify how contents of an attachment are treated at the end of a subpass include::../enums/VkAttachmentStoreOp.txt[] - -** ename:VK_ATTACHMENT_STORE_OP_STORE means the contents within the render - area are written to memory and will be available for reading after the - render pass instance completes once the writes have been synchronized - with ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT (for color attachments) - or ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT (for depth/stencil - attachments). -** ename:VK_ATTACHMENT_STORE_OP_DONT_CARE means the contents within the - render area are not needed after rendering, and may: be discarded; the - contents of the attachment will be undefined inside the render area. -- + ** ename:VK_ATTACHMENT_STORE_OP_STORE means the contents within the render + area are written to memory and will be available for reading after the + render pass instance completes once the writes have been synchronized + with ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT (for color attachments) + or ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT (for depth/stencil + attachments). + ** ename:VK_ATTACHMENT_STORE_OP_DONT_CARE means the contents within the + render area are not needed after rendering, and may: be discarded; the + contents of the attachment will be undefined inside the render area. * pname:stencilLoadOp specifies how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used, and must: be one of the same values allowed for @@ -182,12 +196,13 @@ include::../enums/VkAttachmentStoreOp.txt[] transitioned to when a render pass instance ends. During a render pass instance, an attachment can: use a different layout in each subpass, if desired. - * pname:flags is a bitfield of elink:VkAttachmentDescriptionFlagBits - describing additional properties of the attachment: - + * pname:flags is a bitmask describing additional properties of the + attachment. Bits which can: be set include: ++ +-- +// refBegin VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachment include::../enums/VkAttachmentDescriptionFlagBits.txt[] - -include::../validity/structs/VkAttachmentDescription.txt[] +-- If the attachment uses a color format, then pname:loadOp and pname:storeOp are used, and pname:stencilLoadOp and pname:stencilStoreOp are ignored. If @@ -219,6 +234,17 @@ and the pname:loadOp) such that it is not improperly reordered against other uses of the same physical memory via a different attachment. This is described in more detail below. +include::../validity/structs/VkAttachmentDescription.txt[] + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +TODO (Jon) - the following text may need to be moved back to combine with +flink:vkCreateRenderPass above for automatic ref page generation. +==== +endif::editing-notes[] + If a render pass uses multiple attachments that alias the same device memory, those attachments must: each include the ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT bit in their attachment @@ -271,6 +297,8 @@ until a framebuffer is created using the render pass, so the above conditions cannot: be validated at render pass creation time. ==== +// refBegin VkSubpassDescription - Structure specifying a subpass description + The sname:VkSubpassDescription structure is defined as: include::../structs/VkSubpassDescription.txt[] @@ -337,6 +365,8 @@ those subpasses use or preserve the attachment. include::../validity/structs/VkSubpassDescription.txt[] +// refBegin VkAttachmentReference - Structure specifying an attachment reference + The sname:VkAttachmentReference structure is defined as: include::../structs/VkAttachmentReference.txt[] @@ -353,6 +383,8 @@ include::../structs/VkAttachmentReference.txt[] include::../validity/structs/VkAttachmentReference.txt[] +// refBegin VkSubpassDependency - Structure specifying a subpass dependency + The sname:VkSubpassDependency structure is defined as: include::../structs/VkSubpassDependency.txt[] @@ -372,12 +404,14 @@ include::../structs/VkSubpassDependency.txt[] dependency>> between subpasses. The bits that can: be included in pname:dependencyFlags are: + +-- +// refBegin VkDependencyFlagBits - Bitmask specifying dependencies between subpasses include::../enums/VkDependencyFlagBits.txt[] - - ** If pname:dependencyFlags contains ename:VK_DEPENDENCY_BY_REGION_BIT, - then the dependency is by-region as defined in - <>. +-- + ** If pname:dependencyFlags contains ename:VK_DEPENDENCY_BY_REGION_BIT, + then the dependency is by-region as defined in + <>. Each subpass dependency defines an execution and memory dependency between two sets of commands, with the second set depending on the first @@ -588,6 +622,8 @@ ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL layout. Since an attachment in the ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL layout is read-only, this situation is not a feedback loop. +// refBegin vkDestroyRenderPass Destroy a render pass object + To destroy a render pass, call: include::../protos/vkDestroyRenderPass.txt[] @@ -633,10 +669,20 @@ same render pass or a compatible render pass. == Framebuffers -Render passes operate in conjunction with framebuffers, which represent a +// refBegin VkFramebuffer - Opaque handle to a framebuffer object + +Render passes operate in conjunction with _framebuffers_. Framebuffers represent a collection of specific memory attachments that a render pass instance uses. -An application creates a framebuffer by calling: +Framebuffers are represented by sname:VkFramebuffer handles: + +include::../handles/VkFramebuffer.txt[] + +// refEnd VkFramebuffer + +// refBegin vkCreateFramebuffer Create a new framebuffer object. + +To create a framebuffer, call: include::../protos/vkCreateFramebuffer.txt[] @@ -650,6 +696,8 @@ include::../protos/vkCreateFramebuffer.txt[] include::../validity/protos/vkCreateFramebuffer.txt[] +// refBegin VkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer + The sname:VkFramebufferCreateInfo structure is defined as: include::../structs/VkFramebufferCreateInfo.txt[] @@ -667,8 +715,6 @@ include::../structs/VkFramebufferCreateInfo.txt[] * pname:width, pname:height and pname:layers define the dimensions of the framebuffer. -include::../validity/structs/VkFramebufferCreateInfo.txt[] - Image subresources used as attachments mustnot: be used via any non-attachment usage for the duration of a render pass instance. @@ -694,6 +740,10 @@ code:VK_FALSE, then all pipelines to be bound with a given zero-attachment subpass must: have the same value for slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples. +include::../validity/structs/VkFramebufferCreateInfo.txt[] + +// refBegin vkDestroyFramebuffer Destroy a framebuffer object + To destroy a framebuffer, call: include::../protos/vkDestroyFramebuffer.txt[] @@ -714,6 +764,8 @@ at a time, by beginning a render pass instance, iterating over the subpasses to record commands for that subpass, and then ending the render pass instance. +// refBegin vkCmdBeginRenderPass Begin a new render pass. + To begin a render pass instance, call: include::../protos/vkCmdBeginRenderPass.txt[] @@ -727,8 +779,10 @@ include::../protos/vkCmdBeginRenderPass.txt[] provided, and is one of the values: + -- +// refBegin VkSubpassContents - specify how commands in the first subpass of a render pass are provided include::../enums/VkSubpassContents.txt[] - +-- ++ If pname:contents is ename:VK_SUBPASS_CONTENTS_INLINE, the contents of the subpass will be recorded inline in the primary command buffer, and secondary command buffers mustnot: be executed within the subpass. If pname:contents @@ -736,13 +790,14 @@ is ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, the contents are recorded in secondary command buffers that will be called from the primary command buffer, and fname:vkCmdExecuteCommands is the only valid command on the command buffer until fname:vkCmdNextSubpass or fname:vkCmdEndRenderPass. --- - -include::../validity/protos/vkCmdBeginRenderPass.txt[] After beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. +include::../validity/protos/vkCmdBeginRenderPass.txt[] + +// refBegin VkRenderPassBeginInfo - Structure specifying render pass begin info + The sname:VkRenderPassBeginInfo structure is defined as: include::../structs/VkRenderPassBeginInfo.txt[] @@ -761,8 +816,6 @@ include::../structs/VkRenderPassBeginInfo.txt[] indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements of pname:pClearValues are ignored. -include::../validity/structs/VkRenderPassBeginInfo.txt[] - pname:renderArea is the render area that is affected by the render pass instance. The effects of attachment load, store and resolve operations are restricted to the pixels whose x and y coordinates fall within the render @@ -781,7 +834,11 @@ framebuffer, unless it matches the render area granularity for the render pass. ==== -The render area granularity is queried by calling: +include::../validity/structs/VkRenderPassBeginInfo.txt[] + +// refBegin vkGetRenderAreaGranularity Returns the granularity for optimal render area. + +To query the render area granularity, call: include::../protos/vkGetRenderAreaGranularity.txt[] @@ -790,8 +847,6 @@ include::../protos/vkGetRenderAreaGranularity.txt[] * pname:pGranularity points to a slink:VkExtent2D structure in which the granularity is returned. -include::../validity/protos/vkGetRenderAreaGranularity.txt[] - The conditions leading to an optimal pname:renderArea are: * the pname:offset.x member in pname:renderArea is a multiple of the @@ -813,8 +868,12 @@ Subpass dependencies are not affected by the render area, and apply to the entire image subresources attached to the framebuffer. Similarly, pipeline barriers are valid even if their effect extends outside the render area. -After recording the commands for a subpass, an application transitions to -the next subpass in the render pass instance by calling: +include::../validity/protos/vkGetRenderAreaGranularity.txt[] + +// refBegin vkCmdNextSubpass Transition to the next subpass of a render pass. + +To transition to the next subpass in the render pass instance after +recording the commands for a subpass, call: include::../protos/vkCmdNextSubpass.txt[] @@ -824,8 +883,6 @@ include::../protos/vkCmdNextSubpass.txt[] provided, in the same fashion as the corresponding parameter of flink:vkCmdBeginRenderPass. -include::../validity/protos/vkCmdNextSubpass.txt[] - The subpass index for a render pass begins at zero when fname:vkCmdBeginRenderPass is recorded, and increments each time fname:vkCmdNextSubpass is recorded. @@ -845,15 +902,20 @@ needed. After transitioning to the next subpass, the application can: record the commands for that subpass. -After recording the commands for the last subpass, an application records a -command to end a render pass instance by calling: +include::../validity/protos/vkCmdNextSubpass.txt[] + +// refBegin vkCmdEndRenderPass End the current render pass. + +To record a command to end a render pass instance after recording the +commands for the last subpass, call: include::../protos/vkCmdEndRenderPass.txt[] * pname:commandBuffer is the command buffer in which to end the current render pass instance. -include::../validity/protos/vkCmdEndRenderPass.txt[] - Ending a render pass instance performs any multisample resolve operations on the final subpass. + +include::../validity/protos/vkCmdEndRenderPass.txt[] + diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index 9e514ab7d6..ae288f9d57 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -14,12 +14,22 @@ metadata. [[resources-buffers]] == Buffers +// refBegin VkBuffer - Opaque handle to a buffer object + Buffers represent linear arrays of data which are used for various purposes by binding them to a graphics or compute pipeline via descriptor sets or via certain commands, or by directly specifying them as parameters to certain commands. -Buffers are created by calling: +Buffers are represented by sname:VkBuffer handles: + +include::../handles/VkBuffer.txt[] + +// refEnd VkBuffer + +// refBegin vkCreateBuffer Create a new buffer object. + +To create buffers, call: include::../protos/vkCreateBuffer.txt[] @@ -34,17 +44,19 @@ include::../protos/vkCreateBuffer.txt[] include::../validity/protos/vkCreateBuffer.txt[] +// refBegin VkBufferCreateInfo Structure specifying the parameters of a newly created buffer object. + The sname:VkBufferCreateInfo structure is defined as: include::../structs/VkBufferCreateInfo.txt[] * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags is a bitfield describing additional parameters of the + * pname:flags is a bitmask describing additional parameters of the buffer. See elink:VkBufferCreateFlagBits below for a description of the supported bits. * pname:size is the size in bytes of the buffer to be created. - * pname:usage is a bitfield describing the allowed usages of the buffer. + * pname:usage is a bitmask describing the allowed usages of the buffer. See elink:VkBufferUsageFlagBits below for a description of the supported bits. * pname:sharingMode is the sharing mode of the buffer when it will be @@ -57,10 +69,9 @@ include::../structs/VkBufferCreateInfo.txt[] access this buffer (ignored if pname:sharingMode is not ename:VK_SHARING_MODE_CONCURRENT). -include::../validity/structs/VkBufferCreateInfo.txt[] - -Bits which may: be set in pname:usage are: +Bits which can: be set in pname:usage are: +// refBegin VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer include::../enums/VkBufferUsageFlagBits.txt[] * ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT indicates that the buffer can: be @@ -100,11 +111,12 @@ include::../enums/VkBufferUsageFlagBits.txt[] Any combination of bits can: be specified for pname:usage, but at least one of the bits must: be set in order to create a valid buffer. -Bits which may: be set in pname:flags are: +Bits which can: be set in pname:flags are: +// refBegin VkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer include::../enums/VkBufferCreateFlagBits.txt[] -These bitfields have the following meanings: +These bits have the following meanings: * ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will be backed using sparse memory binding. @@ -122,6 +134,10 @@ See <> and <> for details of the sparse memory features supported on a device. +include::../validity/structs/VkBufferCreateInfo.txt[] + +// refBegin vkDestroyBuffer Destroy a buffer object + To destroy a buffer, call: include::../protos/vkDestroyBuffer.txt[] @@ -137,6 +153,8 @@ include::../validity/protos/vkDestroyBuffer.txt[] [[resources-buffer-views]] == Buffer Views +// refBegin VkBufferView - Opaque handle to a buffer view object + A _buffer view_ represents a contiguous range of a buffer and a specific format to be used to interpret the data. Buffer views are used to enable shaders to access buffer contents interpreted as formatted data. In order to @@ -146,7 +164,15 @@ one of the following usage flags: * ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT * ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT -A buffer view is created by calling: +Buffer views are represented by sname:VkBufferView handles: + +include::../handles/VkBufferView.txt[] + +// refEnd VkBufferView + +// refBegin vkCreateBufferView Create a new buffer view object. + +To create a buffer view, call: include::../protos/vkCreateBufferView.txt[] @@ -161,6 +187,8 @@ include::../protos/vkCreateBufferView.txt[] include::../validity/protos/vkCreateBufferView.txt[] +// refBegin VkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view + The sname:VkBufferViewCreateInfo structure is defined as: include::../structs/VkBufferViewCreateInfo.txt[] @@ -182,6 +210,8 @@ include::../structs/VkBufferViewCreateInfo.txt[] include::../validity/structs/VkBufferViewCreateInfo.txt[] +// refBegin vkDestroyBufferView Destroy a buffer view object + To destroy a buffer view, call: include::../protos/vkDestroyBufferView.txt[] @@ -197,12 +227,22 @@ include::../validity/protos/vkDestroyBufferView.txt[] [[resources-images]] == Images +// refBegin VkImage - Opaque handle to a image object + Images represent multidimensional - up to 3 - arrays of data which can: be used for various purposes (e.g. attachments, textures), by binding them to a graphics or compute pipeline via descriptor sets, or by directly specifying them as parameters to certain commands. -Images are created by calling: +Images are represented by sname:VkImage handles: + +include::../handles/VkImage.txt[] + +// refEnd VkImage + +// refBegin vkCreateImage Create a new image object. + +To create images, call: include::../protos/vkCreateImage.txt[] @@ -217,25 +257,20 @@ include::../protos/vkCreateImage.txt[] include::../validity/protos/vkCreateImage.txt[] +// refBegin VkImageCreateInfo Structure specifying the parameters of a newly created image object. + The sname:VkImageCreateInfo structure is defined as: include::../structs/VkImageCreateInfo.txt[] * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags is a bitfield describing additional parameters of the image. + * pname:flags is a bitmask describing additional parameters of the image. See elink:VkImageCreateFlagBits below for a description of the supported bits. - * pname:imageType is the basic dimensionality of the image, and must: be - one of the values -+ --- -include::../enums/VkImageType.txt[] - -specifying one-, two-, or three-dimensionality, respectively. Layers in -array textures do not count as a dimension for the purposes of the image -type. --- + * pname:imageType is a elink:VkImageType specifying the basic + dimensionality of the image, as described below. Layers in array + textures do not count as a dimension for the purposes of the image type. * pname:format is a elink:VkFormat describing the format and type of the data elements that will be contained in the image. * pname:extent is a slink:VkExtent3D describing the number of data @@ -246,18 +281,9 @@ type. * pname:samples is the number of sub-data element samples in the image as defined in elink:VkSampleCountFlagBits. See <>. - * pname:tiling is the tiling arrangement of the data elements in - memory, and must: have one of the values: -+ --- -include::../enums/VkImageTiling.txt[] - -ename:VK_IMAGE_TILING_OPTIMAL specifies optimal tiling (texels are laid out -in an implementation-dependent arrangement, for more optimal memory access), -and ename:VK_IMAGE_TILING_LINEAR specifies linear tiling (texels are laid -out in memory in row-major order, possibly with some padding on each row). --- - * pname:usage is a bitfield describing the intended usage of the image. + * pname:tiling is a elink:VkImageTiling specifying the tiling arrangement + of the data elements in memory, as described below. + * pname:usage is a bitmask describing the intended usage of the image. See elink:VkImageUsageFlagBits below for a description of the supported bits. * pname:sharingMode is the sharing mode of the image when it will be @@ -274,8 +300,6 @@ out in memory in row-major order, possibly with some padding on each row). Layouts>>. pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED. -include::../validity/structs/VkImageCreateInfo.txt[] - Valid limits for the image pname:extent, pname:mipLevels, pname:arrayLayers and pname:samples members are queried with the flink:vkGetPhysicalDeviceImageFormatProperties command. @@ -301,11 +325,16 @@ flink:vkGetPhysicalDeviceFormatProperties and the valid limits for pname:mipLevels and pname:arrayLayers by calling flink:vkGetPhysicalDeviceImageFormatProperties. -Bits which may: be set in pname:usage are: +include::../validity/structs/VkImageCreateInfo.txt[] + +// refBegin VkImageUsageFlagBits - Bitmask specifying intended usage of an image + +The intended usage of an image is specified by the bitmask +slink:VkImageCreateInfo::pname:usage. Bits which can: be set include: include::../enums/VkImageUsageFlagBits.txt[] -These bitfields have the following meanings: +These bits have the following meanings: * ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT indicates that the image can: be used as the source of a transfer command. @@ -340,11 +369,16 @@ These bitfields have the following meanings: ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; be read from a shader as an input attachment; and be used as an input attachment in a framebuffer. -Bits which may: be set in pname:flags are: +// refEnd VkImageUsageFlagBits + +// refBegin VkImageCreateFlagBits - Bitmask specifying additional parameters of an image + +Additional parameters of an image are specified by +slink:VkImageCreateInfo::pname:flags. Bits which can: be set include: include::../enums/VkImageCreateFlagBits.txt[] -These bitfields have the following meanings: +These bits have the following meanings: * ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT indicates that the image will be backed using sparse memory binding. @@ -357,20 +391,50 @@ These bitfields have the following meanings: simultaneously be backing another image (or another portion of the same image). Images created with this flag must: also be created with the ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag + * ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can: + be used to create a sname:VkImageView with a different format from the + image. + * ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT indicates that the image can: + be used to create a sname:VkImageView of type + ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY. -If any of these three bits are set, +If any of the bits ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, +ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or +ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT are set, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set. See <> and <> for more details. - * ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can: - be used to create a sname:VkImageView with a different format from the - image. - * ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT indicates that the image can: - be used to create a sname:VkImageView of type - ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY. +// refEnd VkImageCreateFlagBits + +// refBegin VkImageType Specifies the type of an image object. + +The basic dimensionality of an image is specified by +slink:VkImageCreateInfo::pname:imageType, which must: be one of the values + +include::../enums/VkImageType.txt[] + +These values specify one-, two-, or three-dimensional images, respectively. + +// refEnd VkImageType + +// refBegin VkImageTiling specifies the tiling arrangement of data in an image + +The tiling arrangement of data elements in an image is specified by +slink:VkImageCreateInfo::pname:tiling, which must: be one of the values + +include::../enums/VkImageTiling.txt[] + +ename:VK_IMAGE_TILING_OPTIMAL specifies optimal tiling (texels are laid out +in an implementation-dependent arrangement, for more optimal memory access), +and ename:VK_IMAGE_TILING_LINEAR specifies linear tiling (texels are laid +out in memory in row-major order, possibly with some padding on each row). + +// refEnd VkImageTiling + +// refBegin vkGetImageSubresourceLayout Retrieve information about an image subresource. To query the host access layout of an image subresource, for an image created with linear tiling, call: @@ -384,22 +448,26 @@ include::../protos/vkGetImageSubresourceLayout.txt[] * pname:pLayout points to a slink:VkSubresourceLayout structure in which the layout is returned. -include::../validity/protos/vkGetImageSubresourceLayout.txt[] - flink:vkGetImageSubresourceLayout is invariant for the lifetime of a single image. +include::../validity/protos/vkGetImageSubresourceLayout.txt[] + +// refBegin VkImageSubresource - Structure specifying a image subresource + The sname:VkImageSubresource structure is defined as: include::../structs/VkImageSubresource.txt[] - * pname:aspectMask is a ename:VkImageAspectFlags selecting the image + * pname:aspectMask is a elink:VkImageAspectFlags selecting the image _aspect_. * pname:mipLevel selects the mipmap level. * pname:arrayLayer selects the array layer. include::../validity/structs/VkImageSubresource.txt[] +// refBegin VkSubresourceLayout - Structure specifying subresource layout + Information about the layout of the image subresource is returned in a sname:VkSubresourceLayout structure: @@ -416,8 +484,6 @@ include::../structs/VkSubresourceLayout.txt[] * pname:depthPitch describes the number of bytes between each slice of 3D image. -include::../validity/structs/VkSubresourceLayout.txt[] - For images created with linear tiling, pname:rowPitch, pname:arrayPitch and pname:depthPitch describe the layout of the image subresource in linear memory. For uncompressed formats, pname:rowPitch is the number of bytes @@ -460,6 +526,10 @@ of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the same pname:offset and pname:size are returned and represent the interleaved memory allocation. +include::../validity/structs/VkSubresourceLayout.txt[] + +// refBegin vkDestroyImage Destroy an image object + To destroy an image, call: include::../protos/vkDestroyImage.txt[] @@ -527,6 +597,8 @@ layout. Calling flink:vkGetImageSubresourceLayout for a linear image returns a subresource layout mapping that is valid for either of those image layouts. +// refBegin VkImageLayout - Layout of image and image subresources + The set of image layouts consists of: include::../enums/VkImageLayout.txt[] @@ -599,16 +671,28 @@ that the contents of the image subresource need not be preserved). The new layout used in a transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED. +// refEnd VkImageLayout + [[resources-image-views]] == Image Views +// refBegin VkImageView - Opaque handle to a image view object + Image objects are not directly accessed by pipeline shaders for reading or writing image data. Instead, _image views_ representing contiguous ranges of the image subresources and containing additional metadata are used for that purpose. Views must: be created on images of compatible types, and must: represent a valid subset of image subresources. +Image views are represented by sname:VkImageView handles: + +include::../handles/VkImageView.txt[] + +// refEnd VkImageView + +// refBegin VkImageViewType - Image view types + The types of image views that can: be created are: include::../enums/VkImageViewType.txt[] @@ -619,6 +703,10 @@ the <>. This table also shows which SPIR-V OpTypeImage Dim and Arrayed parameters correspond to each image view type. +// refEnd VkImageViewType + +// refBegin vkCreateImageView Create an image view from an existing image. + To create an image view, call: include::../protos/vkCreateImageView.txt[] @@ -637,6 +725,8 @@ remaining parameters are contained in the pname:pCreateInfo. include::../validity/protos/vkCreateImageView.txt[] +// refBegin VkImageViewCreateInfo - Structure specifying parameters of a newly created image view + The sname:VkImageViewCreateInfo structure is defined as: include::../structs/VkImageViewCreateInfo.txt[] @@ -654,8 +744,6 @@ include::../structs/VkImageViewCreateInfo.txt[] * pname:subresourceRange selects the set of mipmap levels and array layers to be accessible to the view. -include::../validity/structs/VkImageViewCreateInfo.txt[] - If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format can: be different from the image's format, but if they are not equal they must: be _compatible_. Image format compatibility is @@ -761,7 +849,11 @@ baseArrayLayer = 0 + arrayLayers = 1 |======================================== -The pname:subresourceRange member is of type sname:VkImageSubresourceRange. +The pname:subresourceRange member is of type slink:VkImageSubresourceRange. + +include::../validity/structs/VkImageViewCreateInfo.txt[] + +// refBegin VkImageSubresourceRange - Structure specifying a image subresource range The sname:VkImageSubresourceRange structure is defined as: @@ -776,8 +868,6 @@ include::../structs/VkImageSubresourceRange.txt[] * pname:layerCount is the number of array layers (starting from pname:baseArrayLayer) accessible to the view. -include::../validity/structs/VkImageSubresourceRange.txt[] - The number of mip-map levels and array layers must: be a subset of the image subresources in the image. If an application wants to use all mip-levels or layers in an image after the pname:baseMipLevel or @@ -798,6 +888,7 @@ multiple of 6, behavior when indexing the last cube is undefined. pname:aspectMask is a bitmask indicating the format being used. Bits which may: be set include: +// refBegin VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a view include::../enums/VkImageAspectFlagBits.txt[] The mask must: be only ename:VK_IMAGE_ASPECT_COLOR_BIT, @@ -818,19 +909,32 @@ depth/stencil image is used as a depth/stencil framebuffer attachment, the pname:aspectMask is ignored and both depth and stencil image subresources are used. -The pname:components member is of type sname:VkComponentMapping. +The pname:components member is of type slink:VkComponentMapping, and +describes a remapping from components of the image to components of the +vector returned by shader image instructions. This remapping must: be +identity for storage image descriptors, input attachment descriptors, and +framebuffer attachments. + +include::../validity/structs/VkImageSubresourceRange.txt[] + +// refBegin VkComponentMapping - Structure specifying a color component mapping The sname:VkComponentMapping structure is defined as: include::../structs/VkComponentMapping.txt[] -and describes a remapping from components of the image to components of the -vector returned by shader image instructions. This remapping must: be -identity for storage image descriptors, input attachment descriptors, and -framebuffer attachments. The pname:r, pname:g, pname:b, and pname:a members -of pname:components are the values placed in the corresponding components of -the output vector: + * pname:r determines the component value placed in the R component of the + output vector. + * pname:g determines the component value placed in the G component of the + output vector. + * pname:b determines the component value placed in the B component of the + output vector. + * pname:a determines the component value placed in the A component of the + output vector. + +Each of pname:r, pname:g, pname:b, and pname:a is one of the values: +// refBegin VkComponentSwizzle - specify how a component is swizzled include::../enums/VkComponentSwizzle.txt[] * ename:VK_COMPONENT_SWIZZLE_IDENTITY: the component is set to the @@ -850,12 +954,9 @@ include::../enums/VkComponentSwizzle.txt[] * ename:VK_COMPONENT_SWIZZLE_A: the component is set to the value of the A component of the image. -include::../validity/structs/VkComponentMapping.txt[] - Setting the identity swizzle on a component is equivalent to setting the identity mapping on that component. That is: - [[resources-image-views-identity-mappings]] .Component Mappings Equivalent To ename:VK_COMPONENT_SWIZZLE_IDENTITY [options="header"] @@ -867,6 +968,10 @@ identity mapping on that component. That is: | pname:components.a | ename:VK_COMPONENT_SWIZZLE_A |==== +include::../validity/structs/VkComponentMapping.txt[] + +// refBegin vkDestroyImageView Destroy an image view object + To destroy an image view, call: include::../protos/vkDestroyImageView.txt[] @@ -903,6 +1008,8 @@ any of the following operations: Once bound, the memory binding is immutable for the lifetime of the resource. +// refBegin vkGetBufferMemoryRequirements Returns the memory requirements for specified Vulkan object. + To determine the memory requirements for a buffer resource, call: include::../protos/vkGetBufferMemoryRequirements.txt[] @@ -915,6 +1022,8 @@ include::../protos/vkGetBufferMemoryRequirements.txt[] include::../validity/protos/vkGetBufferMemoryRequirements.txt[] +// refBegin vkGetImageMemoryRequirements Returns the memory requirements for specified Vulkan object. + To determine the memory requirements for an image resource, call: include::../protos/vkGetImageMemoryRequirements.txt[] @@ -927,6 +1036,8 @@ include::../protos/vkGetImageMemoryRequirements.txt[] include::../validity/protos/vkGetImageMemoryRequirements.txt[] +// refBegin VkMemoryRequirements - Structure specifying memory requirements + The sname:VkMemoryRequirements structure is defined as: include::../structs/VkMemoryRequirements.txt[] @@ -935,7 +1046,7 @@ include::../structs/VkMemoryRequirements.txt[] the resource. * pname:alignment is the alignment, in bytes, of the offset within the allocation required: for the resource. - * pname:memoryTypeBits is a bitfield and contains one bit set for every + * pname:memoryTypeBits is a bitmask and contains one bit set for every supported memory type for the resource. Bit `i` is set if and only if the memory type `i` in the sname:VkPhysicalDeviceMemoryProperties structure for the physical device is supported for the resource. @@ -963,7 +1074,7 @@ flink:vkGetImageMemoryRequirements: objects created with the same value for the pname:flags and pname:usage members in the sname:VkBufferCreateInfo structure passed to fname:vkCreateBuffer. Further, if code:usage1 and code:usage2 of type - ename:VkBufferUsageFlags are such that the bits set in code:usage2 are a + elink:VkBufferUsageFlags are such that the bits set in code:usage2 are a subset of the bits set in code:usage1, and they have the same pname:flags, then the bits set in pname:memoryTypeBits returned for code:usage1 must: be a subset of the bits set in pname:memoryTypeBits @@ -1000,6 +1111,8 @@ disallowed for buffers in all cases. ==== -- +// refBegin vkBindBufferMemory Bind device memory to a buffer object + To attach memory to a buffer object, call: include::../protos/vkBindBufferMemory.txt[] @@ -1015,6 +1128,8 @@ include::../protos/vkBindBufferMemory.txt[] include::../validity/protos/vkBindBufferMemory.txt[] +// refBegin vkBindImageMemory Bind device memory to an image object + To attach memory to an image object, call: include::../protos/vkBindImageMemory.txt[] @@ -1090,6 +1205,8 @@ pname:bufferImageGranularity. [[resources-sharing]] == Resource Sharing Mode +// refBegin VkSharingMode - Buffer and image sharing modes + Buffer and image objects are created with a _sharing mode_ controlling how they can: be accessed from queues. The supported sharing modes are: @@ -1154,6 +1271,8 @@ way as for a resource that was just created, however doing so means any contents written by other queue families or via incompatible aliases are undefined. +// refEnd VkSharingMode + [[resources-memory-aliasing]] == Memory Aliasing diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt index 7dcc205a1d..5b2ac486fb 100644 --- a/doc/specs/vulkan/chapters/samplers.txt +++ b/doc/specs/vulkan/chapters/samplers.txt @@ -4,10 +4,20 @@ [[samplers]] = Samplers -sname:VkSampler objects encapsulate the state of an image sampler which is +// refBegin VkSampler - Opaque handle to a sampler object + +sname:VkSampler objects represent the state of an image sampler which is used by the implementation to read image data and apply filtering and other transformations for the shader. +Samplers are represented by sname:VkSampler handles: + +include::../handles/VkSampler.txt[] + +// refEnd VkSampler + +// refBegin vkCreateSampler Create a new sampler object + To create a sampler object, call: include::../protos/vkCreateSampler.txt[] @@ -23,6 +33,8 @@ include::../protos/vkCreateSampler.txt[] include::../validity/protos/vkCreateSampler.txt[] +// refBegin VkSamplerCreateInfo - Structure specifying parameters of a newly created sampler + The sname:VkSamplerCreateInfo structure is defined as: include::../structs/VkSamplerCreateInfo.txt[] @@ -34,6 +46,7 @@ include::../structs/VkSamplerCreateInfo.txt[] is of type: + -- +// refBegin VkFilter - specify filters used for texture lookups include::../enums/VkFilter.txt[] -- + @@ -44,6 +57,7 @@ include::../enums/VkFilter.txt[] type: + -- +// refBegin VkSamplerMipmapMode - specify mipmap mode used for texture lookups include::../enums/VkSamplerMipmapMode.txt[] -- + @@ -78,6 +92,7 @@ include::../enums/VkSamplerMipmapMode.txt[] section, and is of type: + -- +// refBegin VkBorderColor - specify border color used for texture lookups include::../enums/VkBorderColor.txt[] -- + @@ -135,15 +150,14 @@ while still always rounding down to the base level. If the pname:minFilter and pname:magFilter are equal, then using a pname:maxLod of zero also works. ================== -include::../validity/structs/VkSamplerCreateInfo.txt[] - pname:addressModeU, pname:addressModeV, and pname:addressModeW must: each have one of the following values: +// refBegin VkSamplerAddressMode - specify behavior of sampling with texture coordinates outside an image include::../enums/VkSamplerAddressMode.txt[] These values control the behavior of sampling with coordinates outside the -range [0,1] for the respective u, v, or w coordinate as defined in the +range latexmath:[$[0,1\]$] for the respective u, v, or w coordinate as defined in the <> section. * ename:VK_SAMPLER_ADDRESS_MODE_REPEAT indicates that the repeat wrap mode @@ -170,6 +184,10 @@ may: return the same handle for sampler state vectors that are identical. In such cases, all such objects would only count once against the pname:maxSamplerAllocationCount limit. +include::../validity/structs/VkSamplerCreateInfo.txt[] + +// refBegin vkDestroySampler Destroy a sampler object + To destroy a sampler, call: include::../protos/vkDestroySampler.txt[] diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt index d1f928c83f..b371cb5dee 100644 --- a/doc/specs/vulkan/chapters/shaders.txt +++ b/doc/specs/vulkan/chapters/shaders.txt @@ -36,6 +36,8 @@ decorations for each stage are documented in the following subsections. [[shader-modules]] == Shader Modules +// refBegin VkShaderModule - Opaque handle to a shader module object + _Shader modules_ contain _shader code_ and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of <> creation. The stages of a pipeline can: use shaders @@ -43,7 +45,15 @@ that come from different modules. The shader code defining a shader module must: be in the SPIR-V format, as described by the <> appendix. -A shader module is created by calling: +Shader modules are represented by sname:VkShaderModule handles: + +include::../handles/VkShaderModule.txt[] + +// refEnd VkShaderModule + +// refBegin vkCreateShaderModule Creates a new shader module object. + +To create a shader module, call: include::../protos/vkCreateShaderModule.txt[] @@ -55,8 +65,14 @@ include::../protos/vkCreateShaderModule.txt[] * pname:pShaderModule points to a sname:VkShaderModule handle in which the resulting shader module object is returned. +Once a shader module has been created, any entry points it contains can: be +used in pipeline shader stages as described in <> and <>. + include::../validity/protos/vkCreateShaderModule.txt[] +// refBegin VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module + The sname:VkShaderModuleCreateInfo structure is defined as: include::../structs/VkShaderModuleCreateInfo.txt[] @@ -72,9 +88,7 @@ include::../structs/VkShaderModuleCreateInfo.txt[] include::../validity/structs/VkShaderModuleCreateInfo.txt[] -Once a shader module has been created, any entry points it contains can: be -used in pipeline shader stages as described in <> and <>. +// refBegin vkDestroyShaderModule Destroy a shader module module To destroy a shader module, call: diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index 6aae8bd704..54d83c837c 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -621,12 +621,12 @@ endif::implementation-guide[] The APIs related to sparse resources are grouped into the following categories: -* <> -* <> -* <> -* <> -* <> -* <> + * <> + * <> + * <> + * <> + * <> + * <> [[sparsememory-physicalfeatures]] @@ -673,6 +673,8 @@ accordingly. These read-only capabilites are reported in the slink:VkPhysicalDeviceProperties::pname:sparseProperties member, which is a structure of type sname:VkPhysicalDeviceSparseProperties. +// refBegin VkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory properties + The sname:VkPhysicalDeviceSparseProperties structure is defined as: include::../structs/VkPhysicalDeviceSparseProperties.txt[] @@ -737,6 +739,10 @@ supported and what the sparse image block shape will be. ==== Sparse Image Format Properties API +// refBegin VkSparseImageFormatProperties - Structure specifying sparse image format properties + +The sname:VkSparseImageFormatProperties structure is defined as: + include::../structs/VkSparseImageFormatProperties.txt[] * pname:aspectMask is a bitmask of elink:VkImageAspectFlagBits specifying @@ -747,8 +753,9 @@ include::../structs/VkSparseImageFormatProperties.txt[] sparse resource. Bits which can: be set include: + -- +// refBegin VkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resource include::../enums/VkSparseImageFormatFlagBits.txt[] - +-- ** If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set, the image uses a single mip tail region for all array layers. ** If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set, the first @@ -758,12 +765,13 @@ include::../enums/VkSparseImageFormatFlagBits.txt[] image uses non-standard sparse image block dimensions, and the pname:imageGranularity values do not match the standard sparse image block dimensions for the given pixel format. --- include::../validity/structs/VkSparseImageFormatProperties.txt[] +// refBegin vkGetPhysicalDeviceSparseImageFormatProperties Retrieve properties of an image format applied to sparse images. + fname:vkGetPhysicalDeviceSparseImageFormatProperties returns an -array of sname:VkSparseImageFormatProperties. Each element will describe +array of slink:VkSparseImageFormatProperties. Each element will describe properties for one set of image aspects that are bound simultaneously in the image. This is usually one element for each aspect in the image, but for interleaved depth/stencil images there is only one element describing the @@ -777,7 +785,7 @@ include::../protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] * pname:type is the dimensionality of image. * pname:samples is the number of samples per pixel as defined in elink:VkSampleCountFlagBits. - * pname:usage is a bitfield describing the intended usage of the image. + * pname:usage is a bitmask describing the intended usage of the image. * pname:tiling is the tiling arrangement of the data elements in memory. * pname:pPropertyCount is a pointer to an integer related to the number of sparse format properties available or queried, as described below. @@ -793,8 +801,6 @@ pname:pProperties. If pname:pPropertyCount is less than the number of sparse format properties available, at most pname:pPropertyCount structures will be written. -include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] - If ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT is not supported for the given arguments, pname:pPropertyCount will be set to zero upon return, and no data will be written to pname:pProperties. @@ -808,6 +814,8 @@ plane will return a single sname:VkSparseImageFormatProperties structure with the pname:aspectMask set to ename:VK_IMAGE_ASPECT_DEPTH_BIT | ename:VK_IMAGE_ASPECT_STENCIL_BIT. +include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] + [[sparsememory-resource-creation]] === Sparse Resource Creation @@ -870,6 +878,10 @@ image memory requirements. ==== Sparse Image Memory Requirements +// refBegin VkSparseImageMemoryRequirements - Structure specifying sparse image memory requirements + +The sname:VkSparseImageMemoryRequirements structure is defined as: + include::../structs/VkSparseImageMemoryRequirements.txt[] * pname:formatProperties.aspectMask is the set of aspects of the image @@ -912,7 +924,9 @@ include::../structs/VkSparseImageMemoryRequirements.txt[] include::../validity/structs/VkSparseImageMemoryRequirements.txt[] -Query sparse memory requirements for an image by calling: +// refBegin vkGetImageSparseMemoryRequirements Query the memory requirements for a sparse image. + +To query sparse memory requirements for an image, call: include::../protos/vkGetImageSparseMemoryRequirements.txt[] @@ -940,8 +954,6 @@ If the image was not created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT then pname:pSparseMemoryRequirementCount will be set to zero and pname:pSparseMemoryRequirements will not be written to. -include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[] - [NOTE] .Note ==== @@ -953,6 +965,8 @@ hardware requires unused padding in the address range describing the resource. ==== +include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[] + [[sparsememory-resource-binding]] === Binding Resource Memory @@ -1039,25 +1053,30 @@ structures. [[sparsemem-memory-binding]] ==== Sparse Memory Binding Functions -include::../enums/VkSparseMemoryBindFlagBits.txt[] -include::../flags/VkSparseMemoryBindFlags.txt[] +// refBegin VkSparseMemoryBind - Structure specifying a sparse memory bind operation - * ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT is used to indicate - that the memory being bound is only for the metadata aspect. +The sname:VkSparseMemoryBind structure is defined as: include::../structs/VkSparseMemoryBind.txt[] * pname:resourceOffset is the offset into the resource. * pname:size is the size of the memory region to be bound. * pname:memory is the sname:VkDeviceMemory object that the range of the - resource is bound to. If pname:memory is code:VK_NULL_HANDLE, the range + resource is bound to. If pname:memory is dlink:VK_NULL_HANDLE, the range is unbound. * pname:memoryOffset is the offset into the sname:VkDeviceMemory object to - bind the resource range to. If pname:memory is code:VK_NULL_HANDLE, + bind the resource range to. If pname:memory is dlink:VK_NULL_HANDLE, this value is ignored. - * pname:flags are sparse memory binding flags. - -include::../validity/structs/VkSparseMemoryBind.txt[] + * pname:flags is a bitmask specifying usage of the binding operation. Bits + which can: be set include: ++ +-- +// refBegin VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operation +include::../enums/VkSparseMemoryBindFlagBits.txt[] +-- ++ + ** ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT indicates that the memory + being bound is only for the metadata aspect. The _binding range_ latexmath:[$[\mathit{resourceOffset}, \mathit{resourceOffset} + \mathit{size})$] has different constraints based @@ -1090,6 +1109,10 @@ If pname:flags does not contain ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range must: be within the range latexmath:[$[0, {\mathit{VkMemoryRequirements}::\mathit{size}})$]. +include::../validity/structs/VkSparseMemoryBind.txt[] + +// refBegin VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operation + Memory is bound to sname:VkBuffer objects created with the ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag using the following structure: @@ -1104,6 +1127,8 @@ include::../structs/VkSparseBufferMemoryBindInfo.txt[] include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[] +// refBegin VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info + Memory is bound to opaque regions of sname:VkImage objects created with the ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag using the following structure: @@ -1146,6 +1171,18 @@ the metadata aspect. See slink:VkSparseMemoryBind for the full constraints on binding region with this flag present. ================== +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +(Jon) The preceding NOTE refers to pname:flags, which is presumably a +reference to slink:VkSparseMemoryBind above, even though that is not +contextually clear. +==== +endif::editing-notes[] + +// refBegin VkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info + Memory can: be bound to sparse image blocks of sname:VkImage objects created with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag using the following structure: @@ -1160,6 +1197,8 @@ include::../structs/VkSparseImageMemoryBindInfo.txt[] include::../validity/structs/VkSparseImageMemoryBindInfo.txt[] +// refBegin VkSparseImageMemoryBind - Structure specifying sparse image memory bind + The sname:VkSparseImageMemoryBind structure is defined as: include::../structs/VkSparseImageMemoryBind.txt[] @@ -1174,15 +1213,17 @@ include::../structs/VkSparseImageMemoryBind.txt[] latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding dimensions of the image subresource. * pname:memory is the sname:VkDeviceMemory object that the sparse image - blocks of the image are bound to. If pname:memory is code:VK_NULL_HANDLE, + blocks of the image are bound to. If pname:memory is dlink:VK_NULL_HANDLE, the sparse image blocks are unbound. * pname:memoryOffset is an offset into sname:VkDeviceMemory object. If - pname:memory is code:VK_NULL_HANDLE, this value is ignored. + pname:memory is dlink:VK_NULL_HANDLE, this value is ignored. * pname:flags are sparse memory binding flags. include::../validity/structs/VkSparseImageMemoryBind.txt[] -Sparse binding operations are submitted to a queue by calling: +// refBegin vkQueueBindSparse Bind device memory to a sparse resource object. + +To submit sparse binding operations to a queue, call: include::../protos/vkQueueBindSparse.txt[] @@ -1191,11 +1232,9 @@ include::../protos/vkQueueBindSparse.txt[] * pname:pBindInfo is an array of slink:VkBindSparseInfo structures, each specifying a sparse binding submission batch. * pname:fence is an optional handle to a fence to be signaled. If - pname:fence is not code:VK_NULL_HANDLE, it defines a + pname:fence is not dlink:VK_NULL_HANDLE, it defines a <>. -include::../validity/protos/vkQueueBindSparse.txt[] - fname:vkQueueBindSparse is a <>, with each batch defined by an element of pname:pBindInfo as an instance of the @@ -1208,6 +1247,17 @@ guarantee (usually using semaphores) that the binding operations are executed in the correct order, as well as to order binding operations against the execution of command buffer submissions. +As no operation to flink:vkQueueBindSparse causes any pipeline stage to +access memory, synchronization primitives used in this command effectively +only define execution dependencies. + +Additional information about fence and semaphore operation is described in +<>. + +include::../validity/protos/vkQueueBindSparse.txt[] + +// refBegin VkBindSparseInfo - Structure specifying a sparse binding operation + The sname:VkBindSparseInfo structure is defined as: include::../structs/VkBindSparseInfo.txt[] @@ -1244,13 +1294,6 @@ include::../structs/VkBindSparseInfo.txt[] include::../validity/structs/VkBindSparseInfo.txt[] -As no operation to flink:vkQueueBindSparse causes any pipeline stage to -access memory, synchronization primitives used in this command effectively -only define execution dependencies. - -Additional information about fence and semaphore operation is described in -<>. - [[sparsememory-examples]] == Examples diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 3e52e4f840..7b08618913 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -37,6 +37,8 @@ sets of commands. [[synchronization-fences]] == Fences +// refBegin VkFence - Opaque handle to a fence object + Fences can: be used by the host to determine completion of execution of _queue operations_. @@ -44,6 +46,14 @@ A fence's status is always either _signaled_ or _unsignaled_. The host can: poll the status of a single fence, or wait for any or all of a group of fences to become signaled. +Fences are represented by sname:VkFence handles: + +include::../handles/VkFence.txt[] + +// refEnd VkFence + +// refBegin vkCreateFence Create a new fence object. + To create a new fence object, use the command include::../protos/vkCreateFence.txt[] @@ -58,22 +68,28 @@ include::../protos/vkCreateFence.txt[] include::../validity/protos/vkCreateFence.txt[] +// refBegin VkFenceCreateInfo - Structure specifying parameters of a newly created fence + The sname:VkFenceCreateInfo structure is defined as: include::../structs/VkFenceCreateInfo.txt[] -The pname:flags member of the sname:VkFenceCreateInfo structure pointed to -by pname:pCreateInfo contains flags defining the initial state and behavior -of the fence. The flags are: - + * pname:flags defines the initial state and behavior of the fence. Bits + which can: be set include: ++ +-- +// refBegin VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence include::../enums/VkFenceCreateFlagBits.txt[] - +-- ++ If pname:flags contains ename:VK_FENCE_CREATE_SIGNALED_BIT then the fence object is created in the signaled state. Otherwise it is created in the unsignaled state. include::../validity/structs/VkFenceCreateInfo.txt[] +// refBegin vkDestroyFence Destroy a fence object + To destroy a fence, call: include::../protos/vkDestroyFence.txt[] @@ -85,6 +101,8 @@ include::../protos/vkDestroyFence.txt[] include::../validity/protos/vkDestroyFence.txt[] +// refBegin vkGetFenceStatus Return the status of a fence. + To query the status of a fence from the host, use the command include::../protos/vkGetFenceStatus.txt[] @@ -92,14 +110,16 @@ include::../protos/vkGetFenceStatus.txt[] * pname:device is the logical device that owns the fence. * pname:fence is the handle of the fence to query. -include::../validity/protos/vkGetFenceStatus.txt[] - Upon success, fname:vkGetFenceStatus returns the status of the fence, which is one of: * ename:VK_SUCCESS indicates that the fence is signaled. * ename:VK_NOT_READY indicates that the fence is unsignaled. +include::../validity/protos/vkGetFenceStatus.txt[] + +// refBegin vkResetFences Resets one or more fence objects. + To reset the status of one or more fences to the unsignaled state, use the command: @@ -110,11 +130,11 @@ include::../protos/vkResetFences.txt[] * pname:pFences is a pointer to an array of pname:fenceCount fence handles to reset. -include::../validity/protos/vkResetFences.txt[] - If a fence is already in the unsignaled state, then resetting it has no effect. +include::../validity/protos/vkResetFences.txt[] + [[synchronization-fences-signaling]] Fences can: be signaled by including them in a <> command, defining a @@ -131,6 +151,8 @@ Fence signal operations for flink:vkQueueSubmit additionally include all queue operations previously submitted via flink:vkQueueSubmit in their half of a memory dependency. +// refBegin vkWaitForFences Wait for one or more fences to become signaled. + To cause the host to wait until any one or all of a group of fences is signaled, use the command: @@ -150,8 +172,6 @@ include::../protos/vkWaitForFences.txt[] longer than one nanosecond, and may: be longer than the requested period. -include::../validity/protos/vkWaitForFences.txt[] - If the condition is satisfied when fname:vkWaitForFences is called, then fname:vkWaitForFences returns immediately. If the condition is not satisfied at the time fname:vkWaitForFences is called, then fname:vkWaitForFences will @@ -185,14 +205,26 @@ fname:vkInvalidateMappedMemoryRanges must: be called after the fence is signaled in order to ensure the writes are visible to the host, as described in <>. +include::../validity/protos/vkWaitForFences.txt[] + [[synchronization-semaphores]] == Semaphores +// refBegin VkSemaphore - Opaque handle to a semaphore object + Semaphores are used to coordinate queue operations both within a queue and between different queues. A semaphore's status is always either _signaled_ or _unsignaled_. +Semaphores are represented by sname:VkSemaphore handles: + +include::../handles/VkSemaphore.txt[] + +// refEnd VkSemaphore + +// refBegin vkCreateSemaphore Create a new queue semaphore object. + To create a new semaphore object, use the command include::../protos/vkCreateSemaphore.txt[] @@ -208,6 +240,8 @@ include::../protos/vkCreateSemaphore.txt[] include::../validity/protos/vkCreateSemaphore.txt[] +// refBegin VkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphore + The sname:VkSemaphoreCreateInfo structure is defined as: include::../structs/VkSemaphoreCreateInfo.txt[] @@ -216,10 +250,10 @@ include::../structs/VkSemaphoreCreateInfo.txt[] * pname:pNext is `NULL` or a pointer to an extension-specific structure. * pname:flags is reserved for future use. -// @include::../enums/VkSemaphoreCreateFlagBits.txt[] - include::../validity/structs/VkSemaphoreCreateInfo.txt[] +// refBegin vkDestroySemaphore Destroy a semaphore object + To destroy a semaphore, call: include::../protos/vkDestroySemaphore.txt[] @@ -322,6 +356,8 @@ is not defined in the core Vulkan specification.) [[synchronization-events]] == Events +// refBegin VkEvent - Opaque handle to a event object + Events represent a fine-grained synchronization primitive that can: be used to gauge progress through a sequence of commands executed on a queue by Vulkan. An event is initially in the unsignaled state. It can: be @@ -330,6 +366,14 @@ the host. It can: also be reset to the unsignaled state by a device or the host. The host can: query the state of an event. A device can: wait for one or more events to become signaled. +Events are represented by sname:VkEvent handles: + +include::../handles/VkEvent.txt[] + +// refEnd VkEvent + +// refBegin vkCreateEvent Create a new event object. + To create an event, call: include::../protos/vkCreateEvent.txt[] @@ -343,19 +387,22 @@ include::../protos/vkCreateEvent.txt[] * pname:pEvent points to a handle in which the resulting event object is returned. +When created, the event object is in the unsignaled state. + include::../validity/protos/vkCreateEvent.txt[] +// refBegin VkEventCreateInfo - Structure specifying parameters of a newly created event + The sname:VkEventCreateInfo structure is defined as: include::../structs/VkEventCreateInfo.txt[] -The pname:flags member of the sname:VkEventCreateInfo structure pointed to -by pname:pCreateInfo contains flags defining the behavior of the event. -Currently, no flags are defined. -When created, the event object is in the unsignaled state. + * pname:flags is reserved for future use. include::../validity/structs/VkEventCreateInfo.txt[] +// refBegin vkDestroyEvent Destroy an event object + To destroy an event, call: include::../protos/vkDestroyEvent.txt[] @@ -367,6 +414,8 @@ include::../protos/vkDestroyEvent.txt[] include::../validity/protos/vkDestroyEvent.txt[] +// refBegin vkGetEventStatus Retrieve the status of an event object. + To query the state of an event from the host, call: include::../protos/vkGetEventStatus.txt[] @@ -374,8 +423,6 @@ include::../protos/vkGetEventStatus.txt[] * pname:device is the logical device that owns the event. * pname:event is the handle of the event to query. -include::../validity/protos/vkGetEventStatus.txt[] - Upon success, fname:vkGetEventStatus returns the state of the event object with the following return codes: @@ -391,6 +438,10 @@ immediately changed, and subsequent calls to fname:vkGetEventStatus will return the new state. If an event is already in the requested state, then updating it to the same state has no effect. +include::../validity/protos/vkGetEventStatus.txt[] + +// refBegin vkSetEvent Set an event to signaled state. + To set the state of an event to signaled from the host, call: include::../protos/vkSetEvent.txt[] @@ -400,6 +451,8 @@ include::../protos/vkSetEvent.txt[] include::../validity/protos/vkSetEvent.txt[] +// refBegin vkResetEvent Reset an event to non-signaled state. + To set the state of an event to unsignaled from the host, call: include::../protos/vkResetEvent.txt[] @@ -409,6 +462,8 @@ include::../protos/vkResetEvent.txt[] include::../validity/protos/vkResetEvent.txt[] +// refBegin vkCmdSetEvent Set an event object to signaled state. + The state of an event can: also be updated on the device by commands inserted in command buffers. To set the state of an event to signaled from a device, call: @@ -423,6 +478,8 @@ include::../protos/vkCmdSetEvent.txt[] include::../validity/protos/vkCmdSetEvent.txt[] +// refBegin vkCmdResetEvent Reset an event object to non-signaled state. + To set the state of an event to unsignaled from a device, call: include::../protos/vkCmdResetEvent.txt[] @@ -441,6 +498,8 @@ pname:event is updated once the pipeline stages specified by pname:stageMask prior commands. The command modifying the event is passed through the pipeline bound to the command buffer at time of execution. +// refBegin vkCmdWaitEvents Wait for one or more events and insert a set of memory + To wait for one or more events to enter the signaled state on a device, call: @@ -463,8 +522,6 @@ include::../protos/vkCmdWaitEvents.txt[] <> for more details about memory barriers. -include::../validity/protos/vkCmdWaitEvents.txt[] - fname:vkCmdWaitEvents waits for events set by either fname:vkSetEvent or fname:vkCmdSetEvent to become signaled. Logically, it has three phases: @@ -497,6 +554,8 @@ events. For example, an event should: only be reset if no fname:vkCmdWaitEvents command is executing that waits upon that event. ==== +include::../validity/protos/vkCmdWaitEvents.txt[] + An act of setting or resetting an event in one queue may: not affect or be visible to other queues. For cross-queue synchronization, semaphores can: be used. @@ -716,8 +775,11 @@ read-after-read hazards only require execution dependencies to synchronize. A _pipeline barrier_ inserts an execution dependency and a set of memory dependencies between a set of commands earlier in the command buffer and a -set of commands later in the command buffer. A pipeline barrier is recorded -by calling: +set of commands later in the command buffer. + +// refBegin vkCmdPipelineBarrier Insert a set of execution and memory barriers. + +To record a pipeline barrier, call: include::../protos/vkCmdPipelineBarrier.txt[] @@ -734,7 +796,7 @@ work performed by the set of pipeline stages included in pname:srcStageMask of the first set of commands completes before any work performed by the set of pipeline stages included in pname:dstStageMask of the second set of commands begins. - ++ * pname:dependencyFlags is a bitmask of elink:VkDependencyFlagBits. The execution dependency is by-region if the mask includes ename:VK_DEPENDENCY_BY_REGION_BIT. @@ -805,10 +867,12 @@ pname:dstQueueFamilyIndex must: be ename:VK_QUEUE_FAMILY_IGNORED. [[synchronization-pipeline-stage-flags]] === Pipeline Stage Flags +// refBegin VkPipelineStageFlagBits - Bitmask specifying pipeline stages + Several of the event commands, fname:vkCmdPipelineBarrier, and sname:VkSubpassDependency depend on being able to specify where in the -logical pipeline events can: be signaled or the source and destination of an -execution dependency. These pipeline stages are specified with the bitfield: +logical pipeline events can: be signaled, or the source and destination of an +execution dependency. These pipeline stages are specified using a bitmask: include::../enums/VkPipelineStageFlagBits.txt[] @@ -877,7 +941,7 @@ will. Similarly, when defining a memory dependency, if the stage mask(s) refer to all stages, then the indicated access types from all stages will be made available and/or visible, but using only ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT would not make any accesses -available and/or visible because this stage doesn't access memory. The +available and/or visible because this stage does not access memory. The ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT is useful for accomplishing memory barriers and layout transitions when the next accesses will be done in a different queue or by a presentation engine; in these cases subsequent @@ -886,6 +950,8 @@ transition must: complete before semaphores associated with the batch signal. ==== +// refEnd VkPipelineStageFlagBits + [NOTE] .Note ==== @@ -959,6 +1025,8 @@ sname:VkMemoryBarrier structure. This type of barrier applies to memory accesses involving all memory objects that exist at the time of its execution. +// refBegin VkMemoryBarrier - Structure specifying a memory barrier + The sname:VkMemoryBarrier structure is defined as: include::../structs/VkMemoryBarrier.txt[] @@ -972,8 +1040,6 @@ include::../structs/VkMemoryBarrier.txt[] performed by the second set of commands that will participate in the dependency. -include::../validity/structs/VkMemoryBarrier.txt[] - pname:srcAccessMask and pname:dstAccessMask, along with pname:srcStageMask and pname:dstStageMask from flink:vkCmdPipelineBarrier, define the two halves of a memory dependency and an execution dependency. Memory accesses @@ -997,14 +1063,14 @@ also express write-after-read dependencies and write-after-write dependencies, and are even useful to express read-after-read dependencies across an image layout change. -pname:srcAccessMask and pname:dstAccessMask are each masks of the following -bitfield: +// refBegin VkAccessFlagBits - Bitmask specifying classes of memory access the will participate in a memory barrier dependency + +Bits which can: be set in slink:VkMemoryBarrier::pname:srcAccessMask and +slink:VkMemoryBarrier::pname:dstAccessMask include: [[synchronization-access-flags]] include::../enums/VkAccessFlagBits.txt[] -elink:VkAccessFlagBits has the following meanings: - * ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT indicates that the access is an indirect command structure read as part of an indirect drawing command. @@ -1104,6 +1170,8 @@ and <>. |ename:VK_ACCESS_MEMORY_WRITE_BIT | None |======================================== +include::../validity/structs/VkMemoryBarrier.txt[] + [[synchronization-buffer-memory-barrier]] === Buffer Memory Barriers @@ -1117,6 +1185,8 @@ specified range of the buffer. It is also used to transfer ownership of a buffer range from one queue family to another, as described in the <> section. +// refBegin VkBufferMemoryBarrier Structure specifying the parameters of a buffer memory barrier. + The sname:VkBufferMemoryBarrier structure is defined as: include::../structs/VkBufferMemoryBarrier.txt[] @@ -1161,6 +1231,8 @@ layout transition for an image subresource range, or to transfer ownership of an image subresource range from one queue family to another as described in the <> section. +// refBegin VkImageMemoryBarrier Structure specifying the parameters of an image memory barrier. + The sname:VkImageMemoryBarrier structure is defined as: include::../structs/VkImageMemoryBarrier.txt[] @@ -1189,8 +1261,6 @@ include::../structs/VkImageMemoryBarrier.txt[] sname:VkImageSubresourceRange), as well as the set of image subresources whose image layouts are modified. -include::../validity/structs/VkImageMemoryBarrier.txt[] - If pname:oldLayout differs from pname:newLayout, a layout transition occurs as part of the image memory barrier, affecting the data contained in the region of the image defined by the pname:subresourceRange. If @@ -1215,32 +1285,39 @@ See <> for details on available image layouts and their usages. ==== +include::../validity/structs/VkImageMemoryBarrier.txt[] + [[synchronization-waitidle]] === Wait Idle Operations +// refBegin vkQueueWaitIdle Wait for a queue to become idle. + To wait on the host for the completion of outstanding queue operations for a given queue, call: include::../protos/vkQueueWaitIdle.txt[] * pname:queue is the queue on which to wait. -include::../validity/protos/vkQueueWaitIdle.txt[] - fname:vkQueueWaitIdle is equivalent to submitting a fence to a queue and waiting with an infinite timeout for that fence to signal. +include::../validity/protos/vkQueueWaitIdle.txt[] + +// refBegin vkDeviceWaitIdle Wait for a device to become idle. + To wait on the host for the completion of outstanding queue operations for all queues on a given logical device, call: include::../protos/vkDeviceWaitIdle.txt[] * pname:device is the logical device to idle. -include::../validity/protos/vkDeviceWaitIdle.txt[] - fname:vkDeviceWaitIdle is equivalent to calling fname:vkQueueWaitIdle for all queues owned by pname:device. +include::../validity/protos/vkDeviceWaitIdle.txt[] + + [[synchronization-implicit-ordering-hostwrites]] == Host Write Ordering Guarantees diff --git a/doc/specs/vulkan/chapters/tessellation.txt b/doc/specs/vulkan/chapters/tessellation.txt index 6248dc26d9..1cfe2475d8 100644 --- a/doc/specs/vulkan/chapters/tessellation.txt +++ b/doc/specs/vulkan/chapters/tessellation.txt @@ -426,6 +426,8 @@ segment are both implementation-dependent. The pname:pTessellationState member of slink:VkGraphicsPipelineCreateInfo points to a structure of type sname:VkPipelineTessellationStateCreateInfo. +// refBegin VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state + The sname:VkPipelineTessellationStateCreateInfo structure is defined as: include::../structs/VkPipelineTessellationStateCreateInfo.txt[] diff --git a/doc/specs/vulkan/chapters/textures.txt b/doc/specs/vulkan/chapters/textures.txt index 69754f2c88..c2fdab2eb4 100644 --- a/doc/specs/vulkan/chapters/textures.txt +++ b/doc/specs/vulkan/chapters/textures.txt @@ -569,10 +569,10 @@ pname:borderColor of the sampler. The border color is: [NOTE] .Note ==== -The names etext:TRANSPARENT_BLACK, etext:OPAQUE_BLACK, and etext:OPAQUE_WHITE +The names etext:VK_BORDER_COLOR_*_TRANSPARENT_BLACK, etext:VK_BORDER_COLOR_*_OPAQUE_BLACK, and etext:VK_BORDER_COLOR_*_OPAQUE_WHITE are meant to describe which components are zeros and ones in the vocabulary of compositing, and are not meant to imply that the numerical value of -etext:WHITE is a saturating value for integers. +etext:VK_BORDER_COLOR_INT_OPAQUE_WHITE is a saturating value for integers. ==== This is substituted for the texel value by replacing the number of components @@ -1197,9 +1197,9 @@ coordinates) rather than u,v,w (unnormalized texel coordinates) as in OpenGL and OpenGL ES specifications. (I know, u,v,w is the way it has been documented since OpenGL V1.0.) -Also there's no reason to have conditional application of +Also there is no reason to have conditional application of latexmath:[$w_{base} , h_{base} , d_{base}$] for rectangle textures either, -since they don't support implicit derivatives. +since they do not support implicit derivatives. ================== endif::editing-notes[] @@ -1530,7 +1530,7 @@ pname:addressModeW parameters of the sampler, respectively. SPIR-V instructions with code:Gather in the name return a vector derived from a 2x2 rectangular region of texels in the base level of the image view. -The rules for the etext:LINEAR minification filter are applied to identify the +The rules for the ename:VK_FILTER_LINEAR minification filter are applied to identify the four selected texels. Each texel is then converted to an RGBA value according to <> and then <>. A four-component vector is then @@ -1573,7 +1573,7 @@ pname:magFilter in the sampler. If latexmath:[$\lambda$] is greater than zero, the texture is said to be _minified_, and the filter mode within a mip level is selected by the pname:minFilter in the sampler. -Within a miplevel, etext:NEAREST filtering selects a single value using the +Within a miplevel, ename:VK_FILTER_NEAREST filtering selects a single value using the latexmath:[$(i,j,k)$] texel coordinates, with all texels taken from layer l. [latexmath] @@ -1588,7 +1588,7 @@ latexmath:[$(i,j,k)$] texel coordinates, with all texels taken from layer l. \end{align*} ++++++++++++++++++++++++ -Within a miplevel, etext:LINEAR filtering computes a weighted average of 8 +Within a miplevel, ename:VK_FILTER_LINEAR filtering computes a weighted average of 8 (for 3D), 4 (for 2D or Cube), or 2 (for 1D) texel values, using the weights computed earlier: @@ -1653,6 +1653,7 @@ computes a weighted average between neighboring miplevels: [[textures-texel-anisotropic-filtering]] === Texel Anisotropic Filtering + Anisotropic filtering is enabled by the pname:anisotropyEnable in the sampler. When enabled, the image filtering scheme accounts for a degree of anisotropy. @@ -1666,13 +1667,13 @@ should: consider pname:minLod and pname:maxLod of the sampler. The following describes one particular approach to implementing anisotropic filtering for the 2D Image case, implementations may: choose other methods: -Given a pname:magFilter, pname:minFilter of etext:LINEAR and a -pname:mipmapMode of etext:NEAREST, +Given a pname:magFilter, pname:minFilter of ename:VK_FILTER_LINEAR and a +pname:mipmapMode of ename:VK_SAMPLER_MIPMAP_MODE_NEAREST: Instead of a single isotropic sample, N isotropic samples are be sampled -within the image footprint of the image level d to approximate an +within the image footprint of the image level latexmath:[$d$] to approximate an anisotropic filter. The sum latexmath:[$\tau_{2Daniso}$] is defined using -the single isotropic latexmath:[$\tau_{2D}$](u,v) at level d. +the single isotropic latexmath:[$\tau_{2D}$](u,v) at level latexmath:[$d$]. [latexmath] ++++++++++++++++++++++++ @@ -1704,7 +1705,7 @@ ifdef::editing-notes[] except for ES extension number (2007) and a minor speeling (sic) correction (2014), neither of which are functional changes. It is showing its age. -In particular, there's an open issue about 3D textures. +In particular, there is an open issue about 3D textures. There are no interactions with ARB_texture_cube_map (approved 1999, promoted to core OpenGL 1.3 in 2001), let alone interactions with diff --git a/doc/specs/vulkan/chapters/vertexpostproc.txt b/doc/specs/vulkan/chapters/vertexpostproc.txt index b8a4267b29..c66d913f28 100644 --- a/doc/specs/vulkan/chapters/vertexpostproc.txt +++ b/doc/specs/vulkan/chapters/vertexpostproc.txt @@ -290,6 +290,8 @@ viewports used by a pipeline is controlled by the pname:viewportCount member of the sname:VkPipelineViewportStateCreateInfo structure used in pipeline creation. +// refBegin VkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state + The sname:VkPipelineViewportStateCreateInfo structure is defined as: include::../structs/VkPipelineViewportStateCreateInfo.txt[] @@ -325,6 +327,8 @@ A single vertex can: be used in more than one individual primitive, in primitives such as ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP. In this case, the viewport transformation is applied separately for each primitive. +// refBegin vkCmdSetViewport Set the viewport on a command buffer. + If the bound pipeline state object was not created with the ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled, viewport transformation parameters are specified using the pname:pViewports @@ -351,8 +355,12 @@ latexmath:[$[0, viewportCount)$]. include::../validity/protos/vkCmdSetViewport.txt[] -Either of these methods of setting the viewport transformation parameters -use the sname:VkViewport struct: +Both slink:VkPipelineViewportStateCreateInfo and flink:vkCmdSetViewport use +sname:VkViewport to set the viewport transformation parameters. + +// refBegin VkViewport - Structure specifying a viewport + +The sname:VkViewport structure is defined as: include::../structs/VkViewport.txt[] @@ -364,8 +372,6 @@ include::../structs/VkViewport.txt[] It is valid for pname:minDepth to be greater than or equal to pname:maxDepth. -include::../validity/structs/VkViewport.txt[] - The framebuffer depth coordinate latexmath:[$z_f$] may: be represented using either a fixed-point or floating-point representation. However, a floating-point representation must: be used if the depth/stencil attachment @@ -398,4 +404,6 @@ created and attached to a framebuffer. The floating-point viewport bounds are represented with an <>. +include::../validity/structs/VkViewport.txt[] + diff --git a/doc/specs/vulkan/checkLinks.py b/doc/specs/vulkan/checkLinks.py index b624c9a0a6..ffe1d0468c 100755 --- a/doc/specs/vulkan/checkLinks.py +++ b/doc/specs/vulkan/checkLinks.py @@ -90,6 +90,8 @@ def foundError(errType, tag, value): checkTag(tag, value, flags, 'flags', 'elink') checkTag(tag, value, enums, 'enums', 'elink') checkTag(tag, value, structs, 'structs', 'slink/sname') + checkTag(tag, value, handles, 'handles', 'slink/sname') + checkTag(tag, value, defines, 'defines', 'slink/sname') checkTag(tag, value, consts, 'consts', 'ename') checkTag(tag, value, protos, 'protos', 'flink/fname') checkTag(tag, value, funcpointers, 'funcpointers', 'tlink/tname') @@ -246,10 +248,11 @@ def checkLinks(infile, follow = False, included = False): if (value not in protos.keys()): foundError('function', tag, value) elif (tag == 'sname' or tag == 'slink'): - if (value not in structs.keys()): - foundError('aggregate/scalar type', tag, value) + if (value not in structs.keys() and + value not in handles.keys()): + foundError('aggregate/scalar/handle/define type', tag, value) elif (tag == 'ename'): - if (value not in consts.keys()): + if (value not in consts.keys() and value not in defines.keys()): foundError('enumerant/constant', tag, value) elif (tag == 'elink'): if (value not in enums.keys() and value not in flags.keys()): diff --git a/doc/specs/vulkan/config/manpages.conf b/doc/specs/vulkan/config/manpages.conf index 3dc2f2daef..d0a7c2d49d 100644 --- a/doc/specs/vulkan/config/manpages.conf +++ b/doc/specs/vulkan/config/manpages.conf @@ -1,5 +1,27 @@ # Copyright (c) 2015-2016 The Khronos Group Inc. # Copyright notice at https://www.khronos.org/registry/speccopyright.html +# +# The 'normative' macros below (can: through shouldnot:) serve mostly +# to tag that those terms have been validated against their normative +# definitions. They ignore any arguments, and don't yet do anything +# but expand to their names. +# +# The remaining macros tag API terms: +# d*: C macro #defines +# elink: enumerated type names +# ename:/etext: enumerant names +# f*: functions/prototypes +# h*: handles +# p*: function parameters and structure members +# s*: structs +# t*: other types (function pointers) +# These macros expand in ways determined by the name following = in the +# macro definition: +# +# 'link' macros format as code and create an xref/link to the target +# 'code' macros format as code, but do not link +# 'strong' macros format as , and do not link +# 'param' macros format as , and do not link [attributes] author="Khronos Group" @@ -9,7 +31,6 @@ max-width="1024px" (?su)(?Pcan):(?P\w*)=normative (?su)(?Pcannot):(?P\w*)=normative (?su)(?Pmay):(?P\w*)=normative -(?su)(?Pmaynot):(?P\w*)=maynot (?su)(?Pmust):(?P\w*)=normative (?su)(?Pmustnot):(?P\w*)=mustnot (?su)(?Poptional):(?P\w*)=normative @@ -18,18 +39,23 @@ max-width="1024px" (?su)(?Prequired):(?P\w*)=normative (?su)(?Pshould):(?P\w*)=normative (?su)(?Pshouldnot):(?P\w*)=shouldnot -(?su)(?Pflink):(?P\w+)= -(?su)(?Pfname):(?P\w+)= -(?su)(?Psname):(?P\w+)= -(?su)(?Pslink):(?P\w+)= -(?su)(?Pename):(?P\w+)= -(?su)(?Ppname):(?P\w+)= -(?su)(?Pelink):(?P\w+)= -(?su)(?Petext):(?P\w+)= -(?su)(?Ppname):(?P(\w[\w.]*)*\w+)= -(?su)(?Pptext):(?P(\w[\w.]*)*\w+)= -(?su)(?Pbasetype):(?P\w+)= -(?su)(?Pcode):(?P\w+)= +(?su)(?Pflink):(?P\w+)=link +(?su)(?Pfname):(?P\w+)=strong +(?su)(?Pftext):(?P[\w*]+(\.[\w*]+)*)=strong +(?su)(?Psname):(?P\w+)=code +(?su)(?Pslink):(?P\w+)=link +(?su)(?Pstext):(?P[\w*]+(\.[\w*]+)*)=code +(?su)(?Pdname):(?P\w+)=code +(?su)(?Pdlink):(?P\w+)=link +(?su)(?Pename):(?P\w+)=code +(?su)(?Pelink):(?P\w+)=link +(?su)(?Petext):(?P[\w*]+(\.[\w*]+)*)=code +(?su)(?Ppname):(?P(\w[\w.]*)*\w+)=param +(?su)(?Pptext):(?P[\w*]+(\.[\w*]+)*)=param +(?su)(?Ptlink):(?P\w+)=link +(?su)(?Ptname):(?P\w+)=strong +(?su)(?Pbasetype):(?P\w+)=code +(?su)(?Pcode):(?P\w+)=strong [normative-inlinemacro] ifdef::basebackend-docbook[] @@ -39,14 +65,6 @@ ifdef::basebackend-html[] {name} endif::basebackend-html[] -[maynot-inlinemacro] -ifdef::basebackend-docbook[] -may not -endif::basebackend-docbook[] -ifdef::basebackend-html[] -may not -endif::basebackend-html[] - [mustnot-inlinemacro] ifdef::basebackend-docbook[] must not @@ -63,78 +81,34 @@ ifdef::basebackend-html[] should not endif::basebackend-html[] -[flink-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[fname-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[sname-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[slink-inlinemacro] +[link-inlinemacro] ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[pname-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[ename-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[elink-inlinemacro] -ifdef::basebackend-docbook[] -{target} -endif::basebackend-docbook[] - -[ftext-inlinemacro] -ifdef::basebackend-docbook[] -{target} +{target} endif::basebackend-docbook[] ifdef::basebackend-html[] -{target} +{target} endif::basebackend-html[] -[stext-inlinemacro] +[code-inlinemacro] ifdef::basebackend-docbook[] -{target} +{target} endif::basebackend-docbook[] ifdef::basebackend-html[] {target} endif::basebackend-html[] -[etext-inlinemacro] +[strong-inlinemacro] ifdef::basebackend-docbook[] -{target} +{target} endif::basebackend-docbook[] ifdef::basebackend-html[] {target} endif::basebackend-html[] -[ptext-inlinemacro] +[param-inlinemacro] ifdef::basebackend-docbook[] {target} endif::basebackend-docbook[] ifdef::basebackend-html[] {target} endif::basebackend-html[] - -[basetype-inlinemacro] -{target} - -[code-inlinemacro] -{target} - -[must-inlinemacro] -must {target} diff --git a/doc/specs/vulkan/config/vkspec.conf b/doc/specs/vulkan/config/vkspec.conf index c7d3c17d38..0421f11f7a 100644 --- a/doc/specs/vulkan/config/vkspec.conf +++ b/doc/specs/vulkan/config/vkspec.conf @@ -6,20 +6,31 @@ # definitions. They ignore any arguments, and don't yet do anything # but expand to their names. # -# The remaining macros tag API terms (f = function, s = struct, e = enum, -# p = parameter, t = other type) and expand in various ways determined by -# the name following the = in the macro definition: +# The remaining macros tag API terms: +# d*: C macro #defines +# elink: enumerated type names +# ename:/etext: enumerant names +# f*: functions/prototypes +# h*: handles +# p*: function parameters and structure members +# s*: structs +# t*: other types (function pointers) +# These macros expand in ways determined by the name following = in the +# macro definition: # # 'link' macros format as code and create an xref/link to the target # 'code' macros format as code, but do not link # 'strong' macros format as , and do not link # 'param' macros format as , and do not link + + + + [macros] (?su)(?Pcan):(?P\w*)=normative (?su)(?Pcannot):(?P\w*)=normative (?su)(?Pmay):(?P\w*)=normative -(?su)(?Pmaynot):(?P\w*)=maynot (?su)(?Pmust):(?P\w*)=normative (?su)(?Pmustnot):(?P\w*)=mustnot (?su)(?Poptional):(?P\w*)=normative @@ -34,6 +45,8 @@ (?su)(?Psname):(?P\w+)=code (?su)(?Pslink):(?P\w+)=link (?su)(?Pstext):(?P[\w*]+(\.[\w*]+)*)=code +(?su)(?Pdname):(?P\w+)=code +(?su)(?Pdlink):(?P\w+)=link (?su)(?Pename):(?P\w+)=code (?su)(?Pelink):(?P\w+)=link (?su)(?Petext):(?P[\w*]+(\.[\w*]+)*)=code @@ -52,14 +65,6 @@ ifdef::basebackend-html[] {name} endif::basebackend-html[] -[maynot-inlinemacro] -ifdef::basebackend-docbook[] -may not -endif::basebackend-docbook[] -ifdef::basebackend-html[] -may not -endif::basebackend-html[] - [mustnot-inlinemacro] ifdef::basebackend-docbook[] must not diff --git a/doc/specs/vulkan/defines/VK_API_VERSION.txt b/doc/specs/vulkan/defines/VK_API_VERSION.txt new file mode 100644 index 0000000000..c90fb899c6 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_API_VERSION.txt @@ -0,0 +1,13 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_API_VERSION,VK_API_VERSION]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. +//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_API_VERSION_1_0.txt b/doc/specs/vulkan/defines/VK_API_VERSION_1_0.txt new file mode 100644 index 0000000000..14ea6a9e83 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_API_VERSION_1_0.txt @@ -0,0 +1,13 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_API_VERSION_1_0,VK_API_VERSION_1_0]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +// Vulkan 1.0 version number +#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_DEFINE_HANDLE.txt b/doc/specs/vulkan/defines/VK_DEFINE_HANDLE.txt new file mode 100644 index 0000000000..93ee5da371 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_DEFINE_HANDLE.txt @@ -0,0 +1,13 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_DEFINE_HANDLE,VK_DEFINE_HANDLE]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ + +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt b/doc/specs/vulkan/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt new file mode 100644 index 0000000000..0ee5ce771e --- /dev/null +++ b/doc/specs/vulkan/defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt @@ -0,0 +1,18 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_DEFINE_NON_DISPATCHABLE_HANDLE,VK_DEFINE_NON_DISPATCHABLE_HANDLE]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_HEADER_VERSION.txt b/doc/specs/vulkan/defines/VK_HEADER_VERSION.txt new file mode 100644 index 0000000000..13d826b253 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_HEADER_VERSION.txt @@ -0,0 +1,13 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_HEADER_VERSION,VK_HEADER_VERSION]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +// Version of this file +#define VK_HEADER_VERSION 20 + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_MAKE_VERSION.txt b/doc/specs/vulkan/defines/VK_MAKE_VERSION.txt new file mode 100644 index 0000000000..f4a0ad5c7d --- /dev/null +++ b/doc/specs/vulkan/defines/VK_MAKE_VERSION.txt @@ -0,0 +1,13 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_MAKE_VERSION,VK_MAKE_VERSION]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +#define VK_MAKE_VERSION(major, minor, patch) \ + (((major) << 22) | ((minor) << 12) | (patch)) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_NULL_HANDLE.txt b/doc/specs/vulkan/defines/VK_NULL_HANDLE.txt new file mode 100644 index 0000000000..fa9efca65f --- /dev/null +++ b/doc/specs/vulkan/defines/VK_NULL_HANDLE.txt @@ -0,0 +1,14 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_NULL_HANDLE,VK_NULL_HANDLE]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ + +#define VK_NULL_HANDLE 0 + + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_VERSION_MAJOR.txt b/doc/specs/vulkan/defines/VK_VERSION_MAJOR.txt new file mode 100644 index 0000000000..2074d48f41 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_VERSION_MAJOR.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_VERSION_MAJOR,VK_VERSION_MAJOR]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_VERSION_MINOR.txt b/doc/specs/vulkan/defines/VK_VERSION_MINOR.txt new file mode 100644 index 0000000000..cffa6cfa05 --- /dev/null +++ b/doc/specs/vulkan/defines/VK_VERSION_MINOR.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_VERSION_MINOR,VK_VERSION_MINOR]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/defines/VK_VERSION_PATCH.txt b/doc/specs/vulkan/defines/VK_VERSION_PATCH.txt new file mode 100644 index 0000000000..278474541d --- /dev/null +++ b/doc/specs/vulkan/defines/VK_VERSION_PATCH.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VK_VERSION_PATCH,VK_VERSION_PATCH]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/funcpointers/PFN_vkDebugReportCallbackEXT.txt b/doc/specs/vulkan/funcpointers/PFN_vkDebugReportCallbackEXT.txt deleted file mode 100644 index e9d615303d..0000000000 --- a/doc/specs/vulkan/funcpointers/PFN_vkDebugReportCallbackEXT.txt +++ /dev/null @@ -1,20 +0,0 @@ -// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry -ifndef::doctype-manpage[] -[[PFN_vkDebugReportCallbackEXT,PFN_vkDebugReportCallbackEXT]] -["source","{basebackend@docbook:c++:cpp}",title=""] -endif::doctype-manpage[] -ifdef::doctype-manpage[] -["source","{basebackend@docbook:c++:cpp}"] -endif::doctype-manpage[] ------------------------------------------------------------------------------- -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage, - void* pUserData); - ------------------------------------------------------------------------------- diff --git a/doc/specs/vulkan/genRef.py b/doc/specs/vulkan/genRef.py new file mode 100755 index 0000000000..3318093694 --- /dev/null +++ b/doc/specs/vulkan/genRef.py @@ -0,0 +1,501 @@ +#!/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. + +# genRef.py - create Vulkan ref pages from spec source files +# +# +# Usage: genRef.py files + +from reflib import * +from vkapi import * +import argparse, copy, 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. +def isextension(name): + return name[-2:].isalpha() and name[-2:].isupper() + +# Print Khronos CC-BY copyright notice on open file fp. If comment is +# True, print as an asciidoc comment block, which copyrights the source +# file. Otherwise print as an asciidoc include of the copyright in markup, +# which copyrights the outputs. +def printCopyrightBlock(fp, comment=True): + if (comment): + print('// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a', file=fp) + print('// Creative Commons Attribution 4.0 International License; see', file=fp) + print('// http://creativecommons.org/licenses/by/4.0/', file=fp) + print('', file=fp) + else: + print('include::footer.txt[]', file=fp) + print('', file=fp) + +# Add a spec asciidoc macro prefix to a Vulkan name, depending on its type +# (protos, structs, enums, etc.) +def macroPrefix(name): + if (name in basetypes.keys()): + return 'basetypes:' + name + elif (name in defines.keys()): + return 'slink:' + name + elif (name in enums.keys()): + return 'elink:' + name + elif (name in flags.keys()): + return 'elink:' + name + elif (name in funcpointers.keys()): + return 'tlink:' + name + elif (name in handles.keys()): + return 'slink:' + name + elif (name in protos.keys()): + return 'flink:' + name + elif (name in structs.keys()): + return 'slink:' + name + elif (name == 'TBD'): + return 'No cross-references are available' + else: + return 'UNKNOWN:' + name + +# Return an asciidoc string with a list of 'See Also' references for the +# Vulkan entity 'name', based on the relationship mapping in vkapi.py and +# the additional references in explicitRefs. If no relationships are +# available, return None. +def seeAlsoList(apiName, explicitRefs = None): + refs = {} + + # Add all the implicit references to refs + if (apiName in mapDict.keys()): + for name in sorted(mapDict[apiName].keys()): + refs[name] = None + + # Add all the explicit references + if (explicitRefs != None): + for name in explicitRefs.split(): + refs[name] = None + + names = [macroPrefix(name) for name in sorted(refs.keys())] + if (len(names) > 0): + return ', '.join(names) + '\n' + else: + return None + +# Generate header of a reference page +# pageName - string name of the page +# pageDesc - string short description of the page +# specText - string that goes in the "C Specification" section +# fieldName - string heading an additional section following specText, if not None +# fieldText - string that goes in the additional section +# descText - string that goes in the "Description" section +# fp - file to write to +def refPageHead(pageName, pageDesc, specText, fieldName, fieldText, descText, fp): + printCopyrightBlock(fp, comment=True) + + s = pageName + '(3)' + print(s, + ''.ljust(len(s), '='), + '', + sep='\n', file=fp) + + print('Name', + '----', + pageName + ' - ' + pageDesc, + '', + sep='\n', file=fp) + + print('C Specification', + '---------------', + '', + specText, + '', + sep='\n', file=fp) + + if (fieldName != None): + print(fieldName, + ''.ljust(len(fieldName), '-'), + '', + fieldText, + sep='\n', file=fp) + + print('Description', + '-----------', + '', + descText, + '', + sep='\n', file=fp) + +def refPageTail(pageName, seeAlso, fp, auto = False): + specURL = 'https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html' + + if (seeAlso == None): + seeAlso = 'No cross-references are available\n' + + if (auto): + notes = [ + 'For more information, see the Vulkan Specification at URL', + '', + specURL + '#' + pageName, + '', + 'This page is a generated document.', + 'Fixes and changes should be made to the generator scripts,' + 'not directly.', + ] + else: + notes = [ + 'For more information, see the Vulkan Specification at URL', + '', + specURL + '#' + pageName, + '', + 'This page is extracted from the Vulkan Specification.', + 'Fixes and changes should be made to the Specification,' + 'not directly.', + ] + + print('See Also', + '--------', + '', + seeAlso, + '', + sep='\n', file=fp) + + print('Document Notes', + '--------------', + '', + '\n'.join(notes), + '', + sep='\n', file=fp) + + printCopyrightBlock(fp, comment=False) + +# Emit a single reference page in baseDir +# baseDir - base directory to emit page into +# pi - pageInfo for this page relative to file +# file - list of strings making up the file, indexed by pi +def emitPage(baseDir, pi, file): + pageName = baseDir + '/' + pi.name + '.txt' + fp = open(pageName, 'w') + + # Add a dictionary entry for this page + global genDict + genDict[pi.name] = None + logDiag('emitPage:', pageName) + + # Short description + if (pi.desc == None): + pi.desc = '(no short description available)' + + # Specification text + specText = ''.join(file[pi.begin:pi.include+1]) + + # Member/parameter list, if there is one + field = None + fieldText = None + if (pi.param != None): + if (pi.type == 'structs'): + field = 'Members' + elif (pi.type in ['protos', 'funcpointers']): + field = 'Parameters' + else: + logWarn('PyOutputGenerator::emitPage: unknown field type:', pi.type, + 'for', pi.name) + fieldText = ''.join(file[pi.param:pi.body]) + + # Description text + descText = ''.join(file[pi.body:pi.end+1]) + + refPageHead(pi.name, + pi.desc, + specText, + field, fieldText, + descText, + fp) + refPageTail(pi.name, seeAlsoList(pi.name, pi.refs), fp, auto = False) + fp.close() + +# Autogenerate a single reference page in baseDir +# Script only knows how to do this for /enums/ pages, at present +# baseDir - base directory to emit page into +# pi - pageInfo for this page relative to file +# file - list of strings making up the file, indexed by pi +def autoGenEnumsPage(baseDir, pi, file): + pageName = baseDir + '/' + pi.name + '.txt' + fp = open(pageName, 'w') + + # Add a dictionary entry for this page + global genDict + genDict[pi.name] = None + logDiag('autoGenEnumsPage:', pageName) + + # Short description + if (pi.desc == None): + pi.desc = '(no short description available)' + + # Description text + txt = ''.join([ + 'For more information, see:\n\n', + ' * The reference page for ' + macroPrefix(pi.embed) + + ', where this interface is defined.\n', + ' * The See Also section for other reference pages using this type.\n', + ' * The Vulkan Specification.\n' ]) + + refPageHead(pi.name, + pi.desc, + ''.join(file[pi.begin:pi.include+1]), + None, None, + txt, + fp) + refPageTail(pi.name, seeAlsoList(pi.name, pi.refs), fp, auto = True) + fp.close() + +# Pattern to break apart a Vk*Flags{authorID} name, used in autoGenFlagsPage. +flagNamePat = re.compile('(?P\w+)Flags(?P[A-Z]*)') + +# Autogenerate a single reference page in baseDir for a Vk*Flags type +# baseDir - base directory to emit page into +# flagName - Vk*Flags name +def autoGenFlagsPage(baseDir, flagName): + pageName = baseDir + '/' + flagName + '.txt' + fp = open(pageName, 'w') + + # Add a dictionary entry for this page + global genDict + genDict[flagName] = None + logDiag('autoGenFlagsPage:', pageName) + + # Short description + matches = flagNamePat.search(flagName) + if (matches != None): + name = matches.group('name') + author = matches.group('author') + logDiag('autoGenFlagsPage: split name into', name, 'Flags', author) + flagBits = name + 'FlagBits' + author + desc = 'Bitmask of ' + flagBits + else: + logWarn('autoGenFlagsPage:', pageName, 'does not not end in "Flags{author ID}". Cannot infer FlagBits type.') + flagBits = None + desc = 'Unknown Vulkan flags type' + + # Description text + if (flagBits != None): + txt = ''.join([ + 'etext:' + flagName, + ' is a mask of zero or more elink:' + flagBits + '.\n', + 'It is used as a member and/or parameter of the structures and commands\n', + 'in the See Also section below.\n' ]) + else: + txt = ''.join([ + 'etext:' + flagName, + ' is an unknown Vulkan type, assumed to be a bitmask.\n' ]) + + refPageHead(flagName, + desc, + 'include::../flags/' + flagName + '.txt[]\n', + None, None, + txt, + fp) + refPageTail(flagName, seeAlsoList(flagName), fp, auto = True) + fp.close() + +# Autogenerate a single handle page in baseDir for a Vk* handle type +# baseDir - base directory to emit page into +# handleName - Vk* handle name +# @@ Need to determine creation function & add handles/ include for the +# @@ interface in generator.py. +def autoGenHandlePage(baseDir, handleName): + pageName = baseDir + '/' + handleName + '.txt' + fp = open(pageName, 'w') + + # Add a dictionary entry for this page + global genDict + genDict[handleName] = None + logDiag('autoGenHandlePage:', pageName) + + # Short description + desc = 'Vulkan object handle' + + descText = ''.join([ + 'sname:' + handleName, + ' is an object handle type, referring to an object used\n', + 'by the Vulkan implementation. These handles are created or allocated\n', + 'by the vk @@ TBD @@ function, and used by other Vulkan structures\n', + 'and commands in the See Also section below.\n' ]) + + refPageHead(handleName, + desc, + 'include::../handles/' + handleName + '.txt[]\n', + None, None, + descText, + fp) + refPageTail(handleName, seeAlsoList(handleName), fp, auto = True) + fp.close() + +# Extract reference pages from a spec asciidoc source file +# specFile - filename to extract from +# baseDir - output directory to generate page in +# +def genRef(specFile, baseDir): + file = loadFile(specFile) + if (file == None): + return + pageMap = findRefs(file) + logDiag(specFile + ': found', len(pageMap.keys()), 'potential pages') + + sys.stderr.flush() + + # Fix up references in pageMap + fixupRefs(pageMap, specFile, file) + + # Create each page, if possible + + for name in sorted(pageMap.keys()): + pi = pageMap[name] + + printPageInfo(pi, file) + + if (pi.Warning): + logWarn('genRef:', pi.name + ':', pi.Warning) + + if (pi.extractPage): + emitPage(baseDir, pi, file) + elif (pi.type == 'enums'): + autoGenEnumsPage(baseDir, pi, file) + elif (pi.type == 'flags'): + autoGenFlagsPage(baseDir, pi.name) + else: + # Don't extract this page + logWarn('genRef: Cannot extract or autogenerate:', pi.name) + +# Generate baseDir/apispec.txt, the single-page version of the ref pages. +# 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') + + printCopyrightBlock(fp, comment=True) + + print('Vulkan API Reference Pages', + '==========================', + 'include::../specversion.txt[]', + '', + ':doctype: book', + ':numbered!:', + ':toc2:', + ':max-width: 200', + ':numbered:', + ':doctype: book', + ':data-uri:', + ':asciimath:', + ':toclevels: 4', + '', + sep='\n', file=fp) + + print('include::khronoscopyright.txt[]', file=fp) + print('', file=fp) + + # Inject the table of contents. Asciidoc really ought to be generating + # this for us. + + sections = [ + [ protos, 'protos', 'Vulkan Commands' ], + [ handles, 'handles', 'Object Handles' ], + [ structs, 'structs', 'Structures' ], + [ enums, 'enums', 'Enumerations' ], + [ flags, 'flags', 'Flags' ], + [ funcpointers, 'funcpointers', 'Function Pointer Types' ], + [ 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) + + for (apiDict,label,title) in sections: + print(title, + ''.ljust(len(title), '-'), + '', + ':leveloffset: 2', + '', + sep='\n', file=fp) + for refPage in sorted(apiDict.keys()): + if (apiDict == defines or not isextension(refPage)): + print('include::' + refPage + '.txt[]', file=fp) + else: + print('// not including ' + refPage, file=fp) + print('\n' + ':leveloffset: 0' + '\n', file=fp) + + # An index of pages could be generated here + +if __name__ == '__main__': + global genDict + genDict = {} + + parser = argparse.ArgumentParser() + + parser.add_argument('-diag', action='store', dest='diagFile', + help='Set the diagnostic file') + parser.add_argument('-warn', action='store', dest='warnFile', + help='Set the warning file') + parser.add_argument('-log', action='store', dest='logFile', + help='Set the log file for both diagnostics and warnings') + parser.add_argument('-basedir', action='store', dest='baseDir', + default='man', + help='Set the base directory in which pages are generated') + parser.add_argument('files', metavar='filename', nargs='*', + help='a filename to extract ref pages from') + parser.add_argument('--version', action='version', version='%(prog)s 1.0') + + results = parser.parse_args() + + setLogFile(True, True, results.logFile) + setLogFile(True, False, results.diagFile) + setLogFile(False, True, results.warnFile) + + baseDir = results.baseDir + + for file in results.files: + genRef(file, baseDir) + + # Now figure out which pages *weren't* generated from the spec. + # This relies on the dictionaries of API constructs in vkapi.py. + + # For Flags (e.g. Vk*Flags types), it's easy to autogenerate pages. + for page in flags.keys(): + if not (page in genDict.keys()): + logWarn('Autogenerating flags page:', page, 'which should be included in the spec') + autoGenFlagsPage(baseDir, page) + + # autoGenHandlePage is no longer needed because they are added to + # the spec sources now. + # for page in structs.keys(): + # if (typeCategory[page] == 'handle'): + # autoGenHandlePage(baseDir, page) + + sections = [ + [ enums, 'Enumerated Types' ], + [ structs, 'Structures' ], + [ protos, 'Prototypes' ], + [ funcpointers, 'Function Pointers' ], + [ basetypes, 'Vulkan Scalar Types' ] ] + + for (apiDict,title) in sections: + flagged = False + for page in apiDict.keys(): + if not (page in genDict.keys()): + if (not flagged): + logWarn(title, 'with no ref page generated:') + flagged = True + logWarn(' ', page) + + genSinglePageRef(baseDir) diff --git a/doc/specs/vulkan/genRelease b/doc/specs/vulkan/genRelease index 21818bf80b..f915385108 100755 --- a/doc/specs/vulkan/genRelease +++ b/doc/specs/vulkan/genRelease @@ -3,13 +3,15 @@ from genspec import * buildBranch('1.0', - coreTargets = True, - repoDir = '/home/tree/git/Vulkan-Docs', - outDir = '/home/tree/git/Vulkan-Web-Registry/specs') + xmlTargets = 'clobber full_install pdf_install', + specTargets = 'xhtml styleguide manhtml manhtmlpages pdf manpdf', + repoDir = '/home/tree/git/vulkan', + outDir = '/home/tree/git/vulkan/out') buildBranch('1.0-wsi_extensions', - coreTargets = False, - repoDir = '/home/tree/git/Vulkan-Docs', - outDir = '/home/tree/git/Vulkan-Web-Registry/specs') + xmlTargets = 'clobber full_install', + specTargets = 'xhtml manhtml', + repoDir = '/home/tree/git/vulkan', + outDir = '/home/tree/git/vulkan/out') print('echo Info: post-generation cleanup') print('git checkout ' + coreBranch) diff --git a/doc/specs/vulkan/genspec.py b/doc/specs/vulkan/genspec.py index a2115bd898..96ddf3c1ed 100755 --- a/doc/specs/vulkan/genspec.py +++ b/doc/specs/vulkan/genspec.py @@ -53,7 +53,9 @@ def buildRelease(branch, label, outdir, outdir + '/chunked', outdir + '/style', outdir + '/vkspec.html', - 'styleguide.html', + outdir + '/styleguide.html', + outdir + '/apispec.*', + outdir + '/readme.pdf', 'specversion.txt') print('echo Info: Generating headers and spec include files') @@ -66,6 +68,8 @@ def buildRelease(branch, label, outdir, print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', specTargets) print('rm', outdir + '/pdf/vkspec.xml') + print('echo Reverting vkapi.py to prevent churn') + print('git checkout -- vkapi.py') if (miscSrc != None and miscDst != None): print('cp', miscSrc + '/*.txt', miscDst + '/') @@ -74,7 +78,7 @@ def buildRelease(branch, label, outdir, # 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): +def buildBranch(branch, xmlTargets, specTargets, repoDir, outDir): # Directory with vk.xml and generation tools xmlDir = repoDir + '/src/spec' # Directory with spec sources @@ -83,14 +87,6 @@ def buildBranch(branch, coreTargets, repoDir, outDir): 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) diff --git a/doc/specs/vulkan/handles/VkBuffer.txt b/doc/specs/vulkan/handles/VkBuffer.txt new file mode 100644 index 0000000000..e20c907653 --- /dev/null +++ b/doc/specs/vulkan/handles/VkBuffer.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkBuffer,VkBuffer]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkBufferView.txt b/doc/specs/vulkan/handles/VkBufferView.txt new file mode 100644 index 0000000000..9b27c823ba --- /dev/null +++ b/doc/specs/vulkan/handles/VkBufferView.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkBufferView,VkBufferView]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkCommandBuffer.txt b/doc/specs/vulkan/handles/VkCommandBuffer.txt new file mode 100644 index 0000000000..c4ae50f303 --- /dev/null +++ b/doc/specs/vulkan/handles/VkCommandBuffer.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkCommandBuffer,VkCommandBuffer]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_HANDLE(VkCommandBuffer) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkCommandPool.txt b/doc/specs/vulkan/handles/VkCommandPool.txt new file mode 100644 index 0000000000..a1d5b951bb --- /dev/null +++ b/doc/specs/vulkan/handles/VkCommandPool.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkCommandPool,VkCommandPool]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkDescriptorPool.txt b/doc/specs/vulkan/handles/VkDescriptorPool.txt new file mode 100644 index 0000000000..c9ab669efa --- /dev/null +++ b/doc/specs/vulkan/handles/VkDescriptorPool.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDescriptorPool,VkDescriptorPool]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkDescriptorSet.txt b/doc/specs/vulkan/handles/VkDescriptorSet.txt new file mode 100644 index 0000000000..6cd2602b42 --- /dev/null +++ b/doc/specs/vulkan/handles/VkDescriptorSet.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDescriptorSet,VkDescriptorSet]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkDescriptorSetLayout.txt b/doc/specs/vulkan/handles/VkDescriptorSetLayout.txt new file mode 100644 index 0000000000..a8a398fc8c --- /dev/null +++ b/doc/specs/vulkan/handles/VkDescriptorSetLayout.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDescriptorSetLayout,VkDescriptorSetLayout]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkDevice.txt b/doc/specs/vulkan/handles/VkDevice.txt new file mode 100644 index 0000000000..47d80c384a --- /dev/null +++ b/doc/specs/vulkan/handles/VkDevice.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDevice,VkDevice]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_HANDLE(VkDevice) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkDeviceMemory.txt b/doc/specs/vulkan/handles/VkDeviceMemory.txt new file mode 100644 index 0000000000..97ea0d0b49 --- /dev/null +++ b/doc/specs/vulkan/handles/VkDeviceMemory.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkDeviceMemory,VkDeviceMemory]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkEvent.txt b/doc/specs/vulkan/handles/VkEvent.txt new file mode 100644 index 0000000000..ce258f049b --- /dev/null +++ b/doc/specs/vulkan/handles/VkEvent.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkEvent,VkEvent]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkFence.txt b/doc/specs/vulkan/handles/VkFence.txt new file mode 100644 index 0000000000..a699ccd00d --- /dev/null +++ b/doc/specs/vulkan/handles/VkFence.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkFence,VkFence]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkFramebuffer.txt b/doc/specs/vulkan/handles/VkFramebuffer.txt new file mode 100644 index 0000000000..2d274146d7 --- /dev/null +++ b/doc/specs/vulkan/handles/VkFramebuffer.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkFramebuffer,VkFramebuffer]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkImage.txt b/doc/specs/vulkan/handles/VkImage.txt new file mode 100644 index 0000000000..c6648bba3b --- /dev/null +++ b/doc/specs/vulkan/handles/VkImage.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkImage,VkImage]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkImageView.txt b/doc/specs/vulkan/handles/VkImageView.txt new file mode 100644 index 0000000000..058962a588 --- /dev/null +++ b/doc/specs/vulkan/handles/VkImageView.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkImageView,VkImageView]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkInstance.txt b/doc/specs/vulkan/handles/VkInstance.txt new file mode 100644 index 0000000000..97fb80d152 --- /dev/null +++ b/doc/specs/vulkan/handles/VkInstance.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkInstance,VkInstance]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_HANDLE(VkInstance) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkPhysicalDevice.txt b/doc/specs/vulkan/handles/VkPhysicalDevice.txt new file mode 100644 index 0000000000..4d43e39358 --- /dev/null +++ b/doc/specs/vulkan/handles/VkPhysicalDevice.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkPhysicalDevice,VkPhysicalDevice]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_HANDLE(VkPhysicalDevice) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkPipeline.txt b/doc/specs/vulkan/handles/VkPipeline.txt new file mode 100644 index 0000000000..51643c8473 --- /dev/null +++ b/doc/specs/vulkan/handles/VkPipeline.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkPipeline,VkPipeline]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkPipelineCache.txt b/doc/specs/vulkan/handles/VkPipelineCache.txt new file mode 100644 index 0000000000..856f3b6718 --- /dev/null +++ b/doc/specs/vulkan/handles/VkPipelineCache.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkPipelineCache,VkPipelineCache]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkPipelineLayout.txt b/doc/specs/vulkan/handles/VkPipelineLayout.txt new file mode 100644 index 0000000000..3ab7d07296 --- /dev/null +++ b/doc/specs/vulkan/handles/VkPipelineLayout.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkPipelineLayout,VkPipelineLayout]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkQueryPool.txt b/doc/specs/vulkan/handles/VkQueryPool.txt new file mode 100644 index 0000000000..140d36c0e0 --- /dev/null +++ b/doc/specs/vulkan/handles/VkQueryPool.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkQueryPool,VkQueryPool]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkQueue.txt b/doc/specs/vulkan/handles/VkQueue.txt new file mode 100644 index 0000000000..9d5265d2bc --- /dev/null +++ b/doc/specs/vulkan/handles/VkQueue.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkQueue,VkQueue]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_HANDLE(VkQueue) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkRenderPass.txt b/doc/specs/vulkan/handles/VkRenderPass.txt new file mode 100644 index 0000000000..b2049a96f4 --- /dev/null +++ b/doc/specs/vulkan/handles/VkRenderPass.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkRenderPass,VkRenderPass]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkSampler.txt b/doc/specs/vulkan/handles/VkSampler.txt new file mode 100644 index 0000000000..7d212f8fca --- /dev/null +++ b/doc/specs/vulkan/handles/VkSampler.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkSampler,VkSampler]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkSemaphore.txt b/doc/specs/vulkan/handles/VkSemaphore.txt new file mode 100644 index 0000000000..73c3056d0a --- /dev/null +++ b/doc/specs/vulkan/handles/VkSemaphore.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkSemaphore,VkSemaphore]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/handles/VkShaderModule.txt b/doc/specs/vulkan/handles/VkShaderModule.txt new file mode 100644 index 0000000000..e849ad9adb --- /dev/null +++ b/doc/specs/vulkan/handles/VkShaderModule.txt @@ -0,0 +1,12 @@ +// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry +ifndef::doctype-manpage[] +[[VkShaderModule,VkShaderModule]] +["source","{basebackend@docbook:c++:cpp}",title=""] +endif::doctype-manpage[] +ifdef::doctype-manpage[] +["source","{basebackend@docbook:c++:cpp}"] +endif::doctype-manpage[] +------------------------------------------------------------------------------ +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) + +------------------------------------------------------------------------------ diff --git a/doc/specs/vulkan/insertTags.py b/doc/specs/vulkan/insertTags.py new file mode 100755 index 0000000000..e7a6cdc77c --- /dev/null +++ b/doc/specs/vulkan/insertTags.py @@ -0,0 +1,112 @@ +#!/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. + +# insertTags.py - insert // refBegin and // refEnd tags in Vulkan +# spec source files. +# +# Usage: insertTags.py output-dir files + +# Short descriptions of ref pages, if not found +from refDesc import * + +# Utility functions +from reflib import * +import copy, os, pdb, re, string, sys + +# Insert informative tags in a spec asciidoc source file +# specFile - filename to add tags to +# baseDir - output directory to generate page in +def insertTags(specFile, baseDir): + file = loadFile(specFile) + if (file == None): + return + pageMap = findRefs(file) + logDiag(specFile + ': found', len(pageMap.keys()), 'potential pages') + + # Fix up references in pageMap + fixupRefs(pageMap, specFile, file) + + # Proceed backwards through the file, inserting + # // refBegin name desc + # lines where they're meaningful + + logDiag('Table of pages found:') + logDiag('---------------------') + for name in pageMap.keys(): + printPageInfo(pageMap[name], file) + + line = len(file) - 1 + while (line >= 0): + # If this is a valid begin line without a description, and a + # description exists in refDesc, add it. + for name in pageMap.keys(): + pi = pageMap[name] + if (pi.begin == line): + if (not name in refDesc.keys()): + if (pi.desc != None): + logDiag('Description already exists, but no refDesc found for', name, 'at', specFile + ':' + str(line)) + else: + if (pi.embed): + logDiag('No refDesc found (this is OK) for embedded', name, 'at', specFile + ':' + str(line)) + else: + logWarn('No refDesc found for', name, 'at', specFile + ':' + str(line)) + continue + + # New or replacement refBegin line, with short description + newLine = '// refBegin ' + name + ' - ' + refDesc[name] + '\n' + + if (pi.desc == None): + logDiag('Adding description for', name, 'at', specFile + ':' + str(line)) + + # If there's already a refBegin on this line, replace it. + # Otherwise, insert one. + if (file[line].find('// refBegin') == 0): + logDiag('Replacing existing refBegin without description for', name, 'at', specFile + ':' + str(line)) + file[line] = newLine + else: + logDiag('Inserting new refBegin at', specFile + ':' + str(line)) + # Add a blank line after the comment if it's new + file.insert(line, newLine) + file.insert(line, '\n') + else: + if (pi.desc[-1] == '.'): + pi.desc = pi.desc[0:-1] + if (pi.desc == refDesc[name]): + logDiag('Not replacing description for', name, 'at', specFile + ':' + str(line), '- MATCHES existing one') + else: + logWarn('Replacing existing refBegin WITH description for', name, 'at', specFile + ':' + str(line)) + file[line] = newLine + # logWarn('\t refDesc: ', refDesc[name]) + # logWarn('\tfile desc: ', pi.desc) + + line = line - 1 + + pageName = baseDir + '/' + os.path.basename(specFile) + logDiag('Creating output file', pageName) + fp = open(pageName, 'w') + fp.writelines(file) + fp.close() + + +if __name__ == '__main__': + logDiag('In main!') + + baseDir = 'man' + follow = False + if (len(sys.argv) > 2): + baseDir = sys.argv[1] + for file in sys.argv[2:]: + insertTags(file, baseDir) diff --git a/doc/specs/vulkan/man/PFN_vkAllocationFunction.txt b/doc/specs/vulkan/man/PFN_vkAllocationFunction.txt new file mode 100644 index 0000000000..fcaa7f3424 --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkAllocationFunction.txt @@ -0,0 +1,92 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkAllocationFunction(3) +=========================== + +Name +---- +PFN_vkAllocationFunction - application-defined memory allocation function + +C Specification +--------------- + +// refBegin PFN_vkAllocationFunction application-defined memory allocation function + +The type of pname:pfnAllocation is: + +include::../funcpointers/PFN_vkAllocationFunction.txt[] + + +Parameters +---------- + + * pname:pUserData is the value specified for + slink:VkAllocationCallbacks.pUserData in the allocator specified by the + application. + * pname:size is the size in bytes of the requested allocation. + * pname:alignment is the requested alignment of the allocation in bytes + and must: be a power of two. + * pname:allocationScope is a elink:VkSystemAllocationScope value + specifying the scope of the lifetime of the allocation, as described + <>. + + +Description +----------- + +[[vkAllocationFunction_return_rules]] +If pname:pfnAllocation is unable to allocate the requested memory, +it must: return `NULL`. If the allocation was successful, it must: return a +valid pointer to memory allocation containing at least pname:size bytes, and +with the pointer value being a multiple of pname:alignment. + +[NOTE] +.Note +==== +Correct Vulkan operation cannot: be assumed if the application does not +follow these rules. + +For example, pname:pfnAllocation (or pname:pfnReallocation) could cause +termination of running Vulkan instance(s) on a failed allocation for +debugging purposes, either directly or indirectly. In these circumstances, +it cannot: be assumed that any part of any affected VkInstance objects are +going to operate correctly (even flink:vkDestroyInstance), and the +application must: ensure it cleans up properly via other means (e.g. +process termination). +==== + +If pname:pfnAllocation returns `NULL`, and if the implementation is unable +to continue correct processing of the current command without the requested +allocation, it must: treat this as a run-time error, and generate +ename:VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the command +in which the condition was detected, as described in +<>. + +If the implementation is able to continue correct processing of the current +command without the requested allocation, then it may: do so, and must: +not generate ename:VK_ERROR_OUT_OF_HOST_MEMORY as a result of this failed +allocation. + +// refEnd PFN_vkAllocationFunction VkAllocationCallbacks + + +See Also +-------- + +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkAllocationFunction + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/PFN_vkFreeFunction.txt b/doc/specs/vulkan/man/PFN_vkFreeFunction.txt new file mode 100644 index 0000000000..836e6a4636 --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkFreeFunction.txt @@ -0,0 +1,59 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkFreeFunction(3) +===================== + +Name +---- +PFN_vkFreeFunction - application-defined memory free function + +C Specification +--------------- + +// refBegin PFN_vkFreeFunction application-defined memory free function + +The type of pname:pfnFree is: + +include::../funcpointers/PFN_vkFreeFunction.txt[] + + +Parameters +---------- + + * pname:pUserData is the value specified for + slink:VkAllocationCallbacks.pUserData in the allocator specified by the + application. + * pname:pMemory is the allocation to be freed. + + +Description +----------- + +pname:pMemory may: be `NULL`, which the callback must: handle safely. If +pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by +pname:pfnAllocation or pname:pfnReallocation. The application should: free +this memory. + +// refEnd PFN_vkFreeFunction VkAllocationCallbacks + + +See Also +-------- + +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkFreeFunction + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/PFN_vkInternalAllocationNotification.txt b/doc/specs/vulkan/man/PFN_vkInternalAllocationNotification.txt new file mode 100644 index 0000000000..0ae6f34047 --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkInternalAllocationNotification.txt @@ -0,0 +1,60 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkInternalAllocationNotification(3) +======================================= + +Name +---- +PFN_vkInternalAllocationNotification - application-defined memory allocation notification function + +C Specification +--------------- + +// refBegin PFN_vkInternalAllocationNotification application-defined memory allocation notification function + +The type of pname:pfnInternalAllocation is: + +include::../funcpointers/PFN_vkInternalAllocationNotification.txt[] + + +Parameters +---------- + + * pname:pUserData is the value specified for + slink:VkAllocationCallbacks.pUserData in the allocator specified by the + application. + * pname:size is the requested size of an allocation. + * pname:allocationType is the requested type of an allocation. + * pname:allocationScope is a elink:VkSystemAllocationScope value + specifying the scope of the lifetime of the allocation, as described + <>. + + +Description +----------- + +This is a purely informational callback. + +// refEnd PFN_vkInternalAllocationNotification VkAllocationCallbacks + + +See Also +-------- + +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkInternalAllocationNotification + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/PFN_vkInternalFreeNotification.txt b/doc/specs/vulkan/man/PFN_vkInternalFreeNotification.txt new file mode 100644 index 0000000000..3219a5513b --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkInternalFreeNotification.txt @@ -0,0 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkInternalFreeNotification(3) +================================= + +Name +---- +PFN_vkInternalFreeNotification - application-defined memory free notification function + +C Specification +--------------- + +// refBegin PFN_vkInternalFreeNotification application-defined memory free notification function + +The type of pname:pfnInternalFree is: + +include::../funcpointers/PFN_vkInternalFreeNotification.txt[] + + +Parameters +---------- + + * pname:pUserData is the value specified for + slink:VkAllocationCallbacks.pUserData in the allocator specified by the + application. + * pname:size is the requested size of an allocation. + * pname:allocationType is the requested type of an allocation. + * pname:allocationScope is a elink:VkSystemAllocationScope value + specifying the scope of the lifetime of the allocation, as described + <>. + + +Description +----------- + +// refEnd PFN_vkInternalFreeNotification VkAllocationCallbacks + + +See Also +-------- + +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkInternalFreeNotification + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/PFN_vkReallocationFunction.txt b/doc/specs/vulkan/man/PFN_vkReallocationFunction.txt new file mode 100644 index 0000000000..208169306e --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkReallocationFunction.txt @@ -0,0 +1,87 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkReallocationFunction(3) +============================= + +Name +---- +PFN_vkReallocationFunction - application-defined memory reallocation function + +C Specification +--------------- + +// refBegin PFN_vkReallocationFunction application-defined memory reallocation function + +The type of pname:pfnReallocation is: + +include::../funcpointers/PFN_vkReallocationFunction.txt[] + + +Parameters +---------- + + * pname:pUserData is the value specified for + slink:VkAllocationCallbacks.pUserData in the allocator specified by the + application. + * pname:pOriginal must: be either `NULL` or a pointer previously returned + by pname:pfnReallocation or pname:pfnAllocation of the same allocator. + * pname:size is the size in bytes of the requested allocation. + * pname:alignment is the requested alignment of the allocation in bytes + and must: be a power of two. + * pname:allocationScope is a elink:VkSystemAllocationScope value + specifying the scope of the lifetime of the allocation, as described + <>. + + +Description +----------- + +pname:pfnReallocation must: return an allocation with enough space for +pname:size bytes, and the contents of the original allocation from bytes +zero to latexmath:[$\min(\textrm{original size, new size})-1$] must: be +preserved in the returned allocation. If pname:size is larger than the old +size, the contents of the additional space are undefined. If satisfying +these requirements involves creating a new allocation, then the old +allocation should: be freed. + +If pname:pOriginal is `NULL`, then pname:pfnReallocation must: behave +equivalently to a call to tlink:PFN_vkAllocationFunction with the same +parameter values (without pname:pOriginal). + +If pname:size is zero, then pname:pfnReallocation must: behave +equivalently to a call to tlink:PFN_vkFreeFunction with the same +pname:pUserData parameter value, and pname:pMemory equal to pname:pOriginal. + +If pname:pOriginal is non-`NULL`, the implementation must: ensure that +pname:alignment is equal to the pname:alignment used to originally allocate +pname:pOriginal. + +If this function fails and pname:pOriginal is non-`NULL` the application +must: not free the old allocation. + +pname:pfnReallocation must: follow the same <>. + +// refEnd PFN_vkReallocationFunction VkAllocationCallbacks + + +See Also +-------- + +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkReallocationFunction + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/PFN_vkVoidFunction.txt b/doc/specs/vulkan/man/PFN_vkVoidFunction.txt new file mode 100644 index 0000000000..4e8ae8b27b --- /dev/null +++ b/doc/specs/vulkan/man/PFN_vkVoidFunction.txt @@ -0,0 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +PFN_vkVoidFunction(3) +===================== + +Name +---- +PFN_vkVoidFunction - Dummy function pointer type returned by queries + +C Specification +--------------- + +// refBegin PFN_vkVoidFunction Dummy function pointer type returned by queries + +The function pointer type returned from the flink:vkGetInstanceProcAddr and +flink:vkGetDeviceProcAddr is a dummy type not corresponding to any actual +Vulkan function: + +include::../funcpointers/PFN_vkVoidFunction.txt[] + + +Parameters +---------- + +// refEnd PFN_vkVoidFunction vkGetDeviceProcAddr vkGetInstanceProcAddr + + + +Description +----------- + + + +See Also +-------- + +flink:vkGetDeviceProcAddr, flink:vkGetInstanceProcAddr + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#PFN_vkVoidFunction + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_API_VERSION.txt b/doc/specs/vulkan/man/VK_API_VERSION.txt new file mode 100644 index 0000000000..7e9fbaf6e4 --- /dev/null +++ b/doc/specs/vulkan/man/VK_API_VERSION.txt @@ -0,0 +1,45 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_API_VERSION(3) +================= + +Name +---- +VK_API_VERSION - Deprecated version number macro + +C Specification +--------------- + +// refBegin VK_API_VERSION - Deprecated version number macro + +dname:VK_API_VERSION is deprecated and should: no longer be used. + +include::../defines/VK_API_VERSION.txt[] + + +Description +----------- + +// refEnd VK_API_VERSION + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_API_VERSION + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_API_VERSION_1_0.txt b/doc/specs/vulkan/man/VK_API_VERSION_1_0.txt new file mode 100644 index 0000000000..e8edddf263 --- /dev/null +++ b/doc/specs/vulkan/man/VK_API_VERSION_1_0.txt @@ -0,0 +1,49 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_API_VERSION_1_0(3) +===================== + +Name +---- +VK_API_VERSION_1_0 - Return API version number for Vulkan 1.0 + +C Specification +--------------- + +// refBegin VK_API_VERSION_1_0 - Return API version number for Vulkan 1.0 + +dname:VK_API_VERSION_1_0 returns the API version number for Vulkan 1.0. The +patch version number in this macro will always be zero. The required patch +version is specified by the application when creating an instance with +flink:vkCreateInstance, and the supported patch version for a physical +device can: be queried with flink:vkGetPhysicalDeviceProperties. + +include::../defines/VK_API_VERSION_1_0.txt[] + + +Description +----------- + +// refEnd VK_API_VERSION_1_0 vkCreateInstance vkGetPhysicalDeviceProperties + + +See Also +-------- + +flink:vkCreateInstance, flink:vkGetPhysicalDeviceProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_API_VERSION_1_0 + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_DEFINE_HANDLE.txt b/doc/specs/vulkan/man/VK_DEFINE_HANDLE.txt new file mode 100644 index 0000000000..03d51f7be2 --- /dev/null +++ b/doc/specs/vulkan/man/VK_DEFINE_HANDLE.txt @@ -0,0 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_DEFINE_HANDLE(3) +=================== + +Name +---- +VK_DEFINE_HANDLE - Declare a dispatchable object handle + +C Specification +--------------- + +// refBegin VK_DEFINE_HANDLE - Declare a dispatchable object handle + +dname:VK_DEFINE_HANDLE defines a <> type. + +include::../defines/VK_DEFINE_HANDLE.txt[] + + +Description +----------- + + * pname:object is the name of the resulting C type. + +The only dispatchable handle types are those related to device and instance +management, such as slink:VkDevice. + +// refEnd VK_DEFINE_HANDLE VkCommandBuffer VkDevice VkInstance VkPhysicalDevice VkQueue + + +See Also +-------- + +slink:VkCommandBuffer, slink:VkDevice, slink:VkInstance, slink:VkPhysicalDevice, slink:VkQueue + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_DEFINE_HANDLE + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt b/doc/specs/vulkan/man/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt new file mode 100644 index 0000000000..4a1a9825ea --- /dev/null +++ b/doc/specs/vulkan/man/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt @@ -0,0 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_DEFINE_NON_DISPATCHABLE_HANDLE(3) +==================================== + +Name +---- +VK_DEFINE_NON_DISPATCHABLE_HANDLE - Declare a non-dispatchable object handle + +C Specification +--------------- + +// refBegin VK_DEFINE_NON_DISPATCHABLE_HANDLE - Declare a non-dispatchable object handle + +dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE defines a +<> type. + +include::../defines/VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt[] + + +Description +----------- + + * pname:object is the name of the resulting C type. + +Most Vulkan handle types, such as slink:VkBuffer, are non-dispatchable. +Only one such type is listed in the See Also section below. + +// refEnd VK_DEFINE_NON_DISPATCHABLE_HANDLE VkBuffer + + +See Also +-------- + +slink:VkBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_HEADER_VERSION.txt b/doc/specs/vulkan/man/VK_HEADER_VERSION.txt new file mode 100644 index 0000000000..898bff370d --- /dev/null +++ b/doc/specs/vulkan/man/VK_HEADER_VERSION.txt @@ -0,0 +1,48 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_HEADER_VERSION(3) +==================== + +Name +---- +VK_HEADER_VERSION - Vulkan header file version number + +C Specification +--------------- + +// refBegin VK_HEADER_VERSION - Vulkan header file version number + +dname:VK_HEADER_VERSION is the version number of the +vulkan.h+ header. This +value is currently kept synchronized with the release number of the +Specification. However, it is not guaranteed to remain synchronized, since +most Specification updates have no effect on +vulkan.h+. + +include::../defines/VK_HEADER_VERSION.txt[] + + +Description +----------- + +// refEnd VK_HEADER_VERSION + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_HEADER_VERSION + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_MAKE_VERSION.txt b/doc/specs/vulkan/man/VK_MAKE_VERSION.txt new file mode 100644 index 0000000000..1800324dad --- /dev/null +++ b/doc/specs/vulkan/man/VK_MAKE_VERSION.txt @@ -0,0 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_MAKE_VERSION(3) +================== + +Name +---- +VK_MAKE_VERSION - Construct an API version number + +C Specification +--------------- + +// refBegin VK_MAKE_VERSION - Construct an API version number + +dname:VK_MAKE_VERSION constructs an API version number. + +include::../defines/VK_MAKE_VERSION.txt[] + + +Description +----------- + + * pname:major is the major version number. + * pname:minor is the minor version number. + * pname:patch is the patch version number. + +This macro can: be used when constructing the +slink:VkApplicationInfo::pname:apiVersion parameter passed to +flink:vkCreateInstance. + +// refEnd VK_MAKE_VERSION VkApplicationInfo vkCreateInstance + + +See Also +-------- + +slink:VkApplicationInfo, flink:vkCreateInstance + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_MAKE_VERSION + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_NULL_HANDLE.txt b/doc/specs/vulkan/man/VK_NULL_HANDLE.txt new file mode 100644 index 0000000000..0a7f511ca7 --- /dev/null +++ b/doc/specs/vulkan/man/VK_NULL_HANDLE.txt @@ -0,0 +1,47 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_NULL_HANDLE(3) +================= + +Name +---- +VK_NULL_HANDLE - Reserved non-valid object handle + +C Specification +--------------- + +// refBegin VK_NULL_HANDLE - Reserved non-valid object handle + +dname:VK_NULL_HANDLE is a reserved value representing a non-valid object +handle. It may be passed to and returned from Vulkan commands only when +<>. + +include::../defines/VK_NULL_HANDLE.txt[] + + +Description +----------- + +// refEnd VK_NULL_HANDLE + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_NULL_HANDLE + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_VERSION_MAJOR.txt b/doc/specs/vulkan/man/VK_VERSION_MAJOR.txt new file mode 100644 index 0000000000..8408830c74 --- /dev/null +++ b/doc/specs/vulkan/man/VK_VERSION_MAJOR.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_VERSION_MAJOR(3) +=================== + +Name +---- +VK_VERSION_MAJOR - Extract API major version number + +C Specification +--------------- + +// refBegin VK_VERSION_MAJOR - Extract API major version number + +dname:VK_VERSION_MAJOR extracts the API major version number +from a packed version number: + +include::../defines/VK_VERSION_MAJOR.txt[] + + +Description +----------- + +// refEnd VK_VERSION_MAJOR + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_VERSION_MAJOR + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_VERSION_MINOR.txt b/doc/specs/vulkan/man/VK_VERSION_MINOR.txt new file mode 100644 index 0000000000..e400f5455e --- /dev/null +++ b/doc/specs/vulkan/man/VK_VERSION_MINOR.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_VERSION_MINOR(3) +=================== + +Name +---- +VK_VERSION_MINOR - Extract API minor version number + +C Specification +--------------- + +// refBegin VK_VERSION_MINOR - Extract API minor version number + +dname:VK_VERSION_MINOR extracts the API minor version number +from a packed version number: + +include::../defines/VK_VERSION_MINOR.txt[] + + +Description +----------- + +// refEnd VK_VERSION_MINOR + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_VERSION_MINOR + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VK_VERSION_PATCH.txt b/doc/specs/vulkan/man/VK_VERSION_PATCH.txt new file mode 100644 index 0000000000..dc39f5d7ec --- /dev/null +++ b/doc/specs/vulkan/man/VK_VERSION_PATCH.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VK_VERSION_PATCH(3) +=================== + +Name +---- +VK_VERSION_PATCH - Extract API patch version number + +C Specification +--------------- + +// refBegin VK_VERSION_PATCH - Extract API patch version number + +dname:VK_VERSION_PATCH extracts the API patch version number +from a packed version number: + +include::../defines/VK_VERSION_PATCH.txt[] + + +Description +----------- + +// refEnd VK_VERSION_PATCH + + +See Also +-------- + +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VK_VERSION_PATCH + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAccessFlagBits.txt b/doc/specs/vulkan/man/VkAccessFlagBits.txt index 1bcda04bda..a475584a1a 100644 --- a/doc/specs/vulkan/man/VkAccessFlagBits.txt +++ b/doc/specs/vulkan/man/VkAccessFlagBits.txt @@ -1,26 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAccessFlagBits(3) =================== Name ---- -VkAccessFlagBits - Stub page (not yet written) +VkAccessFlagBits - Bitmask specifying classes of memory access the will participate in a memory barrier dependency C Specification --------------- -include::../enums/VkAccessFlagBits.txt[] +// refBegin VkAccessFlagBits - Bitmask specifying classes of memory access the will participate in a memory barrier dependency -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Bits which can: be set in slink:VkMemoryBarrier::pname:srcAccessMask and +slink:VkMemoryBarrier::pname:dstAccessMask include: + +[[synchronization-access-flags]] +include::../enums/VkAccessFlagBits.txt[] -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkMemoryBarrier, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkAccessFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAccessFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAccessFlags.txt b/doc/specs/vulkan/man/VkAccessFlags.txt index 07bad9f656..9a5005d31c 100644 --- a/doc/specs/vulkan/man/VkAccessFlags.txt +++ b/doc/specs/vulkan/man/VkAccessFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAccessFlags(3) ================ Name ---- -VkAccessFlags - Stub page (not yet written) +VkAccessFlags - Bitmask of VkAccessFlagBits C Specification --------------- include::../flags/VkAccessFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkAccessFlags is a mask of zero or more elink:VkAccessFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkAccessFlagBits, slink:VkBufferMemoryBarrier, slink:VkImageMemoryBarrier, slink:VkMemoryBarrier, slink:VkSubpassDependency + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAccessFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAllocationCallbacks.txt b/doc/specs/vulkan/man/VkAllocationCallbacks.txt index f2de27a83e..3f1ce7b392 100644 --- a/doc/specs/vulkan/man/VkAllocationCallbacks.txt +++ b/doc/specs/vulkan/man/VkAllocationCallbacks.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAllocationCallbacks(3) ======================== @@ -8,38 +12,60 @@ VkAllocationCallbacks - Structure containing callback function pointers for memo C Specification --------------- -include::../structs/VkAllocationCallbacks.txt[] - -Fields ------- +// refBegin VkAllocationCallbacks Structure containing callback function pointers for memory allocation. -pname:pUserData:: - A pointer-sized variable that the sole use of the application. +Allocators are provided by the application as a pointer to a +sname:VkAllocationCallbacks structure: -pname:pfnAllocation:: - A pointer to a function that is called to allocate host memory. +include::../structs/VkAllocationCallbacks.txt[] -pname:pfnReallocation:: - A pointer to a function that is called to resize an existing host memory allocation. -pname:pfnFree:: - A pointer to a function that is called to free an existing host memory allocation. +Members +------- -pname:pfnInternalAllocation:: - A pointer to a function that is called to make short-lived internal allocations. + * pname:pUserData is a value to be interpreted by the implementation of + the callbacks. When any of the callbacks in sname:VkAllocationCallbacks + are called, the Vulkan implementation will pass this value as the + first parameter to the callback. This value can: vary each time an + allocator is passed into a command, even when the same object takes an + allocator in multiple commands. + * pname:pfnAllocation is a pointer to an application-defined memory + allocation function of type tlink:PFN_vkAllocationFunction. + * pname:pfnReallocation is a pointer to an application-defined memory + reallocation function of type tlink:PFN_vkReallocationFunction. + * pname:pfnFree is a pointer to an application-defined memory free + function of type tlink:PFN_vkFreeFunction. + * pname:pfnInternalAllocation is a pointer to an application-defined + function that is called by the implementation when the implementation + makes internal allocations, and it is of type + tlink:PFN_vkInternalAllocationNotification. + * pname:pfnInternalFree is a pointer to an application-defined function + that is called by the implementation when the implementation frees + internal allocations, and it is of type + tlink:PFN_vkInternalFreeNotification. -pname:pfnInternalFree:: - A pointer to a function that is called to free internal allocations. Description ----------- -This structure is contains pointers to callback functions that are used to create, reallocate -and free host memory allocations on behalf of a Vulkan implementation. The pname:pUserData -member of the structure is passed to each of the callback functions when they are called. -It is otherwise not accessed by the Vulkan implementation and its intended use is that the -host application use it to store state information related to memory allocation. - include::../validity/structs/VkAllocationCallbacks.txt[] + +See Also +-------- + +tlink:PFN_vkAllocationFunction, tlink:PFN_vkFreeFunction, tlink:PFN_vkInternalAllocationNotification, tlink:PFN_vkInternalFreeNotification, tlink:PFN_vkReallocationFunction, flink:vkAllocateMemory, flink:vkCreateBuffer, flink:vkCreateBufferView, flink:vkCreateCommandPool, flink:vkCreateComputePipelines, flink:vkCreateDescriptorPool, flink:vkCreateDescriptorSetLayout, flink:vkCreateDevice, flink:vkCreateEvent, flink:vkCreateFence, flink:vkCreateFramebuffer, flink:vkCreateGraphicsPipelines, flink:vkCreateImage, flink:vkCreateImageView, flink:vkCreateInstance, flink:vkCreatePipelineCache, flink:vkCreatePipelineLayout, flink:vkCreateQueryPool, flink:vkCreateRenderPass, flink:vkCreateSampler, flink:vkCreateSemaphore, flink:vkCreateShaderModule, flink:vkDestroyBuffer, flink:vkDestroyBufferView, flink:vkDestroyCommandPool, flink:vkDestroyDescriptorPool, flink:vkDestroyDescriptorSetLayout, flink:vkDestroyDevice, flink:vkDestroyEvent, flink:vkDestroyFence, flink:vkDestroyFramebuffer, flink:vkDestroyImage, flink:vkDestroyImageView, flink:vkDestroyInstance, flink:vkDestroyPipeline, flink:vkDestroyPipelineCache, flink:vkDestroyPipelineLayout, flink:vkDestroyQueryPool, flink:vkDestroyRenderPass, flink:vkDestroySampler, flink:vkDestroySemaphore, flink:vkDestroyShaderModule, flink:vkFreeMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAllocationCallbacks + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAndroidSurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkAndroidSurfaceCreateFlagsKHR.txt deleted file mode 100644 index 586ca78da3..0000000000 --- a/doc/specs/vulkan/man/VkAndroidSurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkAndroidSurfaceCreateFlagsKHR(3) -================================= - -Name ----- -VkAndroidSurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkAndroidSurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkAndroidSurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkAndroidSurfaceCreateInfoKHR.txt deleted file mode 100644 index 567ec8f99e..0000000000 --- a/doc/specs/vulkan/man/VkAndroidSurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkAndroidSurfaceCreateInfoKHR(3) -================================ - -Name ----- -VkAndroidSurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkAndroidSurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkApplicationInfo.txt b/doc/specs/vulkan/man/VkApplicationInfo.txt index 467297bea0..b3bc1a10e9 100644 --- a/doc/specs/vulkan/man/VkApplicationInfo.txt +++ b/doc/specs/vulkan/man/VkApplicationInfo.txt @@ -1,27 +1,71 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkApplicationInfo(3) ==================== Name ---- -VkApplicationInfo - Stub page (not yet written) +VkApplicationInfo - Structure specifying application info C Specification --------------- +// refBegin VkApplicationInfo - Structure specifying application info + +The sname:VkApplicationInfo structure is defined as: + include::../structs/VkApplicationInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:pApplicationName is a pointer to a null-terminated UTF-8 string + containing the name of the application. + * pname:applicationVersion is an unsigned integer variable containing the + developer-supplied version number of the application. + * pname:pEngineName is a pointer to a null-terminated UTF-8 string + containing the name of the engine (if any) used to create the + application. + * pname:engineVersion is an unsigned integer variable containing the + developer-supplied version number of the engine used to create the + application. + * pname:apiVersion is the version of the Vulkan API against which the + application expects to run, encoded as described in the + <> section. + If pname:apiVersion is 0 the implementation must: ignore it, otherwise + if the implementation does not support the requested pname:apiVersion it + must: return ename:VK_ERROR_INCOMPATIBLE_DRIVER. The patch version number + specified in pname:apiVersion is ignored when creating an instance + object. Only the major and minor versions of the instance must: match + those requested in pname:apiVersion. + Description ----------- include::../validity/structs/VkApplicationInfo.txt[] + + See Also -------- +slink:VkInstanceCreateInfo, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkApplicationInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentDescription.txt b/doc/specs/vulkan/man/VkAttachmentDescription.txt index b216cd9344..5dd73098b5 100644 --- a/doc/specs/vulkan/man/VkAttachmentDescription.txt +++ b/doc/specs/vulkan/man/VkAttachmentDescription.txt @@ -1,27 +1,138 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentDescription(3) ========================== Name ---- -VkAttachmentDescription - Stub page (not yet written) +VkAttachmentDescription - Structure specifying an attachment description C Specification --------------- +// refBegin VkAttachmentDescription - Structure specifying an attachment description + +The sname:VkAttachmentDescription structure is defined as: + include::../structs/VkAttachmentDescription.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:format is a elink:VkFormat value specifying the format of the + image that will be used for the attachment. + * pname:samples is the number of samples of the image as defined + in elink:VkSampleCountFlagBits. + * pname:loadOp specifies how the contents of color and depth components of + the attachment are treated at the beginning of the subpass where it is + first used: ++ +-- +// refBegin VkAttachmentLoadOp - specify how contents of an attachment are treated at the beginning of a subpass +include::../enums/VkAttachmentLoadOp.txt[] +-- + ** ename:VK_ATTACHMENT_LOAD_OP_LOAD means the contents within the render + area will be preserved. + ** ename:VK_ATTACHMENT_LOAD_OP_CLEAR means the contents within the render + area will be cleared to a uniform value, which is specified when a render + pass instance is begun. + ** ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE means the contents within the area + need not be preserved; the contents of the attachment will be undefined + inside the render area. + * pname:storeOp specifies how the contents of color and depth components + of the attachment are treated at the end of the subpass where it is last + used: ++ +-- +// refBegin VkAttachmentStoreOp - specify how contents of an attachment are treated at the end of a subpass +include::../enums/VkAttachmentStoreOp.txt[] +-- + ** ename:VK_ATTACHMENT_STORE_OP_STORE means the contents within the render + area are written to memory and will be available for reading after the + render pass instance completes once the writes have been synchronized + with ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT (for color attachments) + or ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT (for depth/stencil + attachments). + ** ename:VK_ATTACHMENT_STORE_OP_DONT_CARE means the contents within the + render area are not needed after rendering, and may: be discarded; the + contents of the attachment will be undefined inside the render area. + * pname:stencilLoadOp specifies how the contents of stencil components of + the attachment are treated at the beginning of the subpass where it + is first used, and must: be one of the same values allowed for + pname:loadOp above. + * pname:stencilStoreOp specifies how the contents of stencil components of + the attachment are treated at the end of the last subpass where it + is used, and must: be one of the same values allowed for pname:storeOp + above. + * pname:initialLayout is the layout the attachment image subresource will + be in when a render pass instance begins. + * pname:finalLayout is the layout the attachment image subresource will be + transitioned to when a render pass instance ends. During a render pass + instance, an attachment can: use a different layout in each subpass, if + desired. + * pname:flags is a bitmask describing additional properties of the + attachment. Bits which can: be set include: ++ +-- +// refBegin VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachment +include::../enums/VkAttachmentDescriptionFlagBits.txt[] +-- + Description ----------- +If the attachment uses a color format, then pname:loadOp and pname:storeOp +are used, and pname:stencilLoadOp and pname:stencilStoreOp are ignored. If +the format has depth and/or stencil components, pname:loadOp and +pname:storeOp apply only to the depth data, while pname:stencilLoadOp and +pname:stencilStoreOp define how the stencil data is handled. + +[[renderpass-precision]] +During a render pass instance, input/color attachments with color formats +that have a component size of 8, 16, or 32 bits must: be represented in the +attachment's format throughout the instance. Attachments with other +floating- or fixed-point color formats, or with depth components may: be +represented in a format with a precision higher than the attachment format, +but must: be represented with the same range. When such a component is +loaded via the pname:loadOp, it will be converted into an +implementation-dependent format used by the render pass. Such components +must: be converted from the render pass format, to the format of the +attachment, before they are stored or resolved at the end of a render pass +instance via pname:storeOp. Conversions occur as described in +<> and +<>. + +[[renderpass-aliasing]] +If pname:flags includes ename:VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, then +the attachment is treated as if it shares physical memory with another +attachment in the same render pass. This information limits the ability of +the implementation to reorder certain operations (like layout transitions +and the pname:loadOp) such that it is not improperly reordered against +other uses of the same physical memory via a different attachment. This is +described in more detail below. + include::../validity/structs/VkAttachmentDescription.txt[] + + See Also -------- +elink:VkAttachmentDescriptionFlags, elink:VkAttachmentLoadOp, elink:VkAttachmentStoreOp, elink:VkFormat, elink:VkImageLayout, slink:VkRenderPassCreateInfo, elink:VkSampleCountFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentDescription + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentDescriptionFlagBits.txt b/doc/specs/vulkan/man/VkAttachmentDescriptionFlagBits.txt index f9f92a16d3..737ec4589f 100644 --- a/doc/specs/vulkan/man/VkAttachmentDescriptionFlagBits.txt +++ b/doc/specs/vulkan/man/VkAttachmentDescriptionFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentDescriptionFlagBits(3) ================================== Name ---- -VkAttachmentDescriptionFlagBits - Stub page (not yet written) +VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachment C Specification --------------- +// refBegin VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachment include::../enums/VkAttachmentDescriptionFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkAttachmentDescription, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkAttachmentDescriptionFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentDescriptionFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentDescriptionFlags.txt b/doc/specs/vulkan/man/VkAttachmentDescriptionFlags.txt index c7686ae07f..bc6d8fcfaf 100644 --- a/doc/specs/vulkan/man/VkAttachmentDescriptionFlags.txt +++ b/doc/specs/vulkan/man/VkAttachmentDescriptionFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentDescriptionFlags(3) =============================== Name ---- -VkAttachmentDescriptionFlags - Stub page (not yet written) +VkAttachmentDescriptionFlags - Bitmask of VkAttachmentDescriptionFlagBits C Specification --------------- include::../flags/VkAttachmentDescriptionFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkAttachmentDescriptionFlags is a mask of zero or more elink:VkAttachmentDescriptionFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkAttachmentDescription, elink:VkAttachmentDescriptionFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentDescriptionFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentLoadOp.txt b/doc/specs/vulkan/man/VkAttachmentLoadOp.txt index 5d83250fff..e91e1f8090 100644 --- a/doc/specs/vulkan/man/VkAttachmentLoadOp.txt +++ b/doc/specs/vulkan/man/VkAttachmentLoadOp.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentLoadOp(3) ===================== Name ---- -VkAttachmentLoadOp - Stub page (not yet written) +VkAttachmentLoadOp - specify how contents of an attachment are treated at the beginning of a subpass C Specification --------------- +// refBegin VkAttachmentLoadOp - specify how contents of an attachment are treated at the beginning of a subpass include::../enums/VkAttachmentLoadOp.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkAttachmentDescription, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkAttachmentDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentLoadOp + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentReference.txt b/doc/specs/vulkan/man/VkAttachmentReference.txt index bb48172239..4e7cb33c07 100644 --- a/doc/specs/vulkan/man/VkAttachmentReference.txt +++ b/doc/specs/vulkan/man/VkAttachmentReference.txt @@ -1,27 +1,59 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentReference(3) ======================== Name ---- -VkAttachmentReference - Stub page (not yet written) +VkAttachmentReference - Structure specifying an attachment reference C Specification --------------- +// refBegin VkAttachmentReference - Structure specifying an attachment reference + +The sname:VkAttachmentReference structure is defined as: + include::../structs/VkAttachmentReference.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:attachment is the index of the attachment of the render pass, and + corresponds to the index of the corresponding element in the + pname:pAttachments array of the sname:VkRenderPassCreateInfo structure. + If any color or depth/stencil attachments are + ename:VK_ATTACHMENT_UNUSED, then no writes occur for those attachments. + * pname:layout is a elink:VkImageLayout value specifying the layout the + attachment uses during the subpass. The implementation will + automatically perform layout transitions as needed between subpasses to + make each subpass use the requested layouts. + Description ----------- include::../validity/structs/VkAttachmentReference.txt[] + + See Also -------- +elink:VkImageLayout, slink:VkSubpassDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentReference + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkAttachmentStoreOp.txt b/doc/specs/vulkan/man/VkAttachmentStoreOp.txt index 81e225bd39..23ee75c15a 100644 --- a/doc/specs/vulkan/man/VkAttachmentStoreOp.txt +++ b/doc/specs/vulkan/man/VkAttachmentStoreOp.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkAttachmentStoreOp(3) ====================== Name ---- -VkAttachmentStoreOp - Stub page (not yet written) +VkAttachmentStoreOp - specify how contents of an attachment are treated at the end of a subpass C Specification --------------- +// refBegin VkAttachmentStoreOp - specify how contents of an attachment are treated at the end of a subpass include::../enums/VkAttachmentStoreOp.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkAttachmentDescription, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkAttachmentDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkAttachmentStoreOp + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBindSparseInfo.txt b/doc/specs/vulkan/man/VkBindSparseInfo.txt index 3d156a90de..efffb80c61 100644 --- a/doc/specs/vulkan/man/VkBindSparseInfo.txt +++ b/doc/specs/vulkan/man/VkBindSparseInfo.txt @@ -1,27 +1,79 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBindSparseInfo(3) =================== Name ---- -VkBindSparseInfo - Stub page (not yet written) +VkBindSparseInfo - Structure specifying a sparse binding operation C Specification --------------- +// refBegin VkBindSparseInfo - Structure specifying a sparse binding operation + +The sname:VkBindSparseInfo structure is defined as: + include::../structs/VkBindSparseInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:waitSemaphoreCount is the number of semaphores upon which to + wait before executing the sparse binding operations for the batch. + * pname:pWaitSemaphores is a pointer to an array of semaphores upon which + to wait on before the sparse binding operations for this batch begin + execution. If semaphores to wait on are provided, they define a + <>. + * pname:bufferBindCount is the number of sparse buffer bindings to + perform in the batch. + * pname:pBufferBinds is a pointer to an array of + slink:VkSparseBufferMemoryBindInfo structures. + * pname:imageOpaqueBindCount is the number of opaque sparse image bindings + to perform. + * pname:pImageOpaqueBinds is a pointer to an array of + slink:VkSparseImageOpaqueMemoryBindInfo structures, indicating opaque + sparse image bindings to perform. + * pname:imageBindCount is the number of sparse image bindings to perform. + * pname:pImageBinds is a pointer to an array of + slink:VkSparseImageMemoryBindInfo structures, indicating sparse image + bindings to perform. + * pname:signalSemaphoreCount is the number of semaphores to be + signaled once the sparse binding operations specified by the structure + have completed execution. + * pname:pSignalSemaphores is a pointer to an array of semaphores which + will be signaled when the sparse binding operations for this batch have + completed execution. + If semaphores to be signaled are provided, they define a + <>. + Description ----------- include::../validity/structs/VkBindSparseInfo.txt[] + + See Also -------- +slink:VkSemaphore, slink:VkSparseBufferMemoryBindInfo, slink:VkSparseImageMemoryBindInfo, slink:VkSparseImageOpaqueMemoryBindInfo, elink:VkStructureType, flink:vkQueueBindSparse + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBindSparseInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBlendFactor.txt b/doc/specs/vulkan/man/VkBlendFactor.txt index cb48654d0c..c0054fd8dc 100644 --- a/doc/specs/vulkan/man/VkBlendFactor.txt +++ b/doc/specs/vulkan/man/VkBlendFactor.txt @@ -1,26 +1,89 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBlendFactor(3) ================ Name ---- -VkBlendFactor - Stub page (not yet written) +VkBlendFactor - framebuffer blending factors C Specification --------------- -include::../enums/VkBlendFactor.txt[] +// refBegin VkBlendFactor framebuffer blending factors -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The source and destination color and alpha blending factors are selected +from the enum: + +include::../enums/VkBlendFactor.txt[] -Constants ---------- Description ----------- +The semantics of each enum value is described in the table below: + +.Blend Factors +[width="100%",options="header",align="center",cols="59%,28%,13%"] +|======================================== +|VkBlendFactor | RGB Blend Factors (latexmath:[$S_r,S_g,S_b$]) or (latexmath:[$D_r,D_g,D_b$]) | Alpha Blend Factor (latexmath:[$S_a$] or latexmath:[$D_a$]) +|ename:VK_BLEND_FACTOR_ZERO | latexmath:[$(0,0,0)$] | latexmath:[$0$] +|ename:VK_BLEND_FACTOR_ONE | latexmath:[$(1,1,1)$] | latexmath:[$1$] +|ename:VK_BLEND_FACTOR_SRC_COLOR | latexmath:[$(R_{s0},G_{s0},B_{s0})$] | latexmath:[$A_{s0}$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR | latexmath:[$(1-R_{s0},1-G_{s0},1-B_{s0})$] | latexmath:[$1-A_{s0}$] +|ename:VK_BLEND_FACTOR_DST_COLOR | latexmath:[$(R_d,G_d,B_d)$] | latexmath:[$A_d$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR | latexmath:[$(1-R_d,1-G_d,1-B_d)$] | latexmath:[$1-A_d$] +|ename:VK_BLEND_FACTOR_SRC_ALPHA | latexmath:[$(A_{s0},A_{s0},A_{s0})$] | latexmath:[$A_{s0}$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA | latexmath:[$(1-A_{s0},1-A_{s0},1-A_{s0})$] | latexmath:[$1-A_{s0}$] +|ename:VK_BLEND_FACTOR_DST_ALPHA | latexmath:[$(A_d,A_d,A_d)$] | latexmath:[$A_d$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA | latexmath:[$(1-A_d,1-A_d,1-A_d)$] | latexmath:[$1-A_d$] +|ename:VK_BLEND_FACTOR_CONSTANT_COLOR | latexmath:[$(R_c,G_c,B_c)$] | latexmath:[$A_c$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR | latexmath:[$(1-R_c,1-G_c,1-B_c)$] | latexmath:[$1-A_c$] +|ename:VK_BLEND_FACTOR_CONSTANT_ALPHA | latexmath:[$(A_c,A_c,A_c)$] | latexmath:[$A_c$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA | latexmath:[$(1-A_c,1-A_c,1-A_c)$] | latexmath:[$1-A_c$] +|ename:VK_BLEND_FACTOR_SRC_ALPHA_SATURATE | latexmath:[$(f,f,f); f=\min(A_{s0},1-A_d)$] | latexmath:[$1$] +|ename:VK_BLEND_FACTOR_SRC1_COLOR | latexmath:[$(R_{s1},G_{s1},B_{s1})$] | latexmath:[$A_{s1}$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR | latexmath:[$(1-R_{s1},1-G_{s1},1-B_{s1})$] | latexmath:[$1-A_{s1}$] +|ename:VK_BLEND_FACTOR_SRC1_ALPHA | latexmath:[$(A_{s1},A_{s1},A_{s1})$] | latexmath:[$A_{s1}$] +|ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA | latexmath:[$(1-A_{s1},1-A_{s1},1-A_{s1})$] | latexmath:[$1-A_{s1}$] +|======================================== + +In this table, the following conventions are used: + + - latexmath:[$R_{s0},G_{s0},B_{s0}$] and latexmath:[$A_{s0}$] represent + the first source color R, G, B, and A components, respectively, for the + fragment output location corresponding to the color attachment being + blended. + - latexmath:[$R_{s1},G_{s1},B_{s1}$] and latexmath:[$A_{s1}$] represent + the second source color R, G, B, and A components, respectively, used in + dual source blending modes, for the fragment output location + corresponding to the color attachment being blended. + - latexmath:[$R_d,G_d,B_d$] and latexmath:[$A_d$] represent the R, G, B, + and A components of the destination color. That is, the color currently + in the corresponding color attachment for this fragment/sample. + - latexmath:[$R_c,G_c,B_c$] and latexmath:[$A_c$] represent the blend + constant R, G, B, and A components, respectively. + +// refEnd VkBlendFactor + + See Also -------- +slink:VkPipelineColorBlendAttachmentState + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBlendFactor + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBlendOp.txt b/doc/specs/vulkan/man/VkBlendOp.txt index 3995447a87..d9d2c62aa5 100644 --- a/doc/specs/vulkan/man/VkBlendOp.txt +++ b/doc/specs/vulkan/man/VkBlendOp.txt @@ -1,26 +1,113 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBlendOp(3) ============ Name ---- -VkBlendOp - Stub page (not yet written) +VkBlendOp - framebuffer blending operations C Specification --------------- -include::../enums/VkBlendOp.txt[] +// refBegin VkBlendOp framebuffer blending operations -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Once the source and destination blend factors have been selected, they along +with the source and destination components are passed to the blending +operation. The blending operations are selected from the following enum, +with RGB and alpha components potentially using different blend operations: + +include::../enums/VkBlendOp.txt[] -Constants ---------- Description ----------- +<<< + +The semantics of each enum value is described in the table below: + +.Blend Operations +[width="100%",cols="45%,30%,25%",options="header",align="center"] +|========================================== +|VkBlendOp | RGB Components | Alpha Component + +|ename:VK_BLEND_OP_ADD +| latexmath:[$R=R_{s0}\times S_r+R_d\times D_r$] + + latexmath:[$G=G_{s0}\times S_g+G_d\times D_g$] + + latexmath:[$B=B_{s0}\times S_b+B_d\times D_b$] +| latexmath:[$A=A_{s0}\times S_a+A_d\times D_a$] + +|ename:VK_BLEND_OP_SUBTRACT +| latexmath:[$R=R_{s0}\times S_r-R_d\times D_r$] + + latexmath:[$G=G_{s0}\times S_g-G_d\times D_g$] + + latexmath:[$B=B_{s0}\times S_b-B_d\times D_b$] +| latexmath:[$A=A_{s0}\times S_a-A_d\times D_a$] + +|ename:VK_BLEND_OP_REVERSE_SUBTRACT +| latexmath:[$R=R_d\times D_r-R_{s0}\times S_r$] + + latexmath:[$G=G_d\times D_g-G_{s0}\times S_g$] + + latexmath:[$B=B_d\times D_b-B_{s0}\times S_b$] +| latexmath:[$A=A_d\times D_a-A_{s0}\times S_a$] + +|ename:VK_BLEND_OP_MIN +| latexmath:[$R=\min(R_{s0},R_d)$] + + latexmath:[$G=\min(G_{s0},G_d)$] + + latexmath:[$B=\min(B_{s0},B_d)$] +| latexmath:[$A=\min(A_{s0},A_d)$] + +|ename:VK_BLEND_OP_MAX +| latexmath:[$R=\max(R_{s0},R_d)$] + + latexmath:[$G=\max(G_{s0},G_d)$] + + latexmath:[$B=\max(B_{s0},B_d)$] +| latexmath:[$A=\max(A_{s0},A_d)$] +|========================================== + +In this table, the following conventions are used: + + - latexmath:[$R_{s0},G_{s0},B_{s0}$] and latexmath:[$A_{s0}$] represent + the first source color R, G, B, and A components, respectively. + - latexmath:[$R_d,G_d,B_d$] and latexmath:[$A_d$] represent the R, G, B, + and A components of the destination color. That is, the color currently + in the corresponding color attachment for this fragment/sample. + - latexmath:[$S_r,S_g,S_b$] and latexmath:[$S_a$] represent the source + blend factor R, G, B, and A components, respectively. + - latexmath:[$D_r,D_g,D_b$] and latexmath:[$D_a$] represent the + destination blend factor R, G, B, and A components, respectively. + +The blending operation produces a new set of values latexmath:[$R, G, +B$] and latexmath:[$A$], which are written to the framebuffer attachment. If +blending is not enabled for this attachment, then latexmath:[$R, G, B$] and +latexmath:[$A$] are assigned +latexmath:[$R_{s0},G_{s0},B_{s0}$] and latexmath:[$A_{s0}$], respectively. + +If the color attachment is fixed-point, the components of the source and +destination values and blend factors are each clamped to +latexmath:[$[0,1\]$] or latexmath:[$[-1,1\]$] respectively for an unsigned +normalized or signed normalized color attachment prior to evaluating the +blend operations. If the color attachment is floating-point, no clamping +occurs. + +// refEnd VkBlendOp + + See Also -------- +slink:VkPipelineColorBlendAttachmentState + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBlendOp + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBool32.txt b/doc/specs/vulkan/man/VkBool32.txt new file mode 100644 index 0000000000..a0c19d40f0 --- /dev/null +++ b/doc/specs/vulkan/man/VkBool32.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkBool32(3) +=========== + +Name +---- +VkBool32 - Vulkan boolean type + +C Specification +--------------- + +// refBegin VkBool32 - Vulkan boolean type + +basetype:VkBool32 represents boolean code:True and code:False values, since +C does not have a sufficiently portable built-in boolean type: + +include::../basetypes/VkBool32.txt[] + + +Description +----------- + +// refEnd VkBool32 + + +See Also +-------- + +slink:VkCommandBufferInheritanceInfo, slink:VkPhysicalDeviceFeatures, slink:VkPhysicalDeviceLimits, slink:VkPhysicalDeviceSparseProperties, slink:VkPipelineColorBlendAttachmentState, slink:VkPipelineColorBlendStateCreateInfo, slink:VkPipelineDepthStencilStateCreateInfo, slink:VkPipelineInputAssemblyStateCreateInfo, slink:VkPipelineMultisampleStateCreateInfo, slink:VkPipelineRasterizationStateCreateInfo, slink:VkSamplerCreateInfo, flink:vkWaitForFences + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBool32 + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBorderColor.txt b/doc/specs/vulkan/man/VkBorderColor.txt index fbc88daa41..50116f42af 100644 --- a/doc/specs/vulkan/man/VkBorderColor.txt +++ b/doc/specs/vulkan/man/VkBorderColor.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBorderColor(3) ================ Name ---- -VkBorderColor - Stub page (not yet written) +VkBorderColor - specify border color used for texture lookups C Specification --------------- +// refBegin VkBorderColor - specify border color used for texture lookups include::../enums/VkBorderColor.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSamplerCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkSamplerCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBorderColor + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBuffer.txt b/doc/specs/vulkan/man/VkBuffer.txt new file mode 100644 index 0000000000..3c3fb1e205 --- /dev/null +++ b/doc/specs/vulkan/man/VkBuffer.txt @@ -0,0 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkBuffer(3) +=========== + +Name +---- +VkBuffer - Opaque handle to a buffer object + +C Specification +--------------- + +// refBegin VkBuffer - Opaque handle to a buffer object + +Buffers represent linear arrays of data which are used for various +purposes by binding them to a graphics or compute pipeline via descriptor +sets or via certain commands, or by directly specifying them as parameters +to certain commands. + +Buffers are represented by sname:VkBuffer handles: + +include::../handles/VkBuffer.txt[] + + +Description +----------- + +// refEnd VkBuffer + + +See Also +-------- + +slink:VkBufferMemoryBarrier, slink:VkBufferViewCreateInfo, slink:VkDescriptorBufferInfo, slink:VkSparseBufferMemoryBindInfo, flink:vkBindBufferMemory, flink:vkCmdBindIndexBuffer, flink:vkCmdBindVertexBuffers, flink:vkCmdCopyBuffer, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImageToBuffer, flink:vkCmdCopyQueryPoolResults, flink:vkCmdDispatchIndirect, flink:vkCmdDrawIndexedIndirect, flink:vkCmdDrawIndirect, flink:vkCmdFillBuffer, flink:vkCmdUpdateBuffer, flink:vkCreateBuffer, flink:vkDestroyBuffer, flink:vkGetBufferMemoryRequirements + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferCopy.txt b/doc/specs/vulkan/man/VkBufferCopy.txt index 88024bc7fd..f0dae887e3 100644 --- a/doc/specs/vulkan/man/VkBufferCopy.txt +++ b/doc/specs/vulkan/man/VkBufferCopy.txt @@ -1,27 +1,55 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferCopy(3) =============== Name ---- -VkBufferCopy - Stub page (not yet written) +VkBufferCopy - Structure specifying a buffer copy operation C Specification --------------- +// refBegin VkBufferCopy - Structure specifying a buffer copy operation + +The sname:VkBufferCopy structure is defined as: + include::../structs/VkBufferCopy.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:srcOffset is the starting offset in bytes from the start of + pname:srcBuffer. + * pname:dstOffset is the starting offset in bytes from the start of + pname:dstBuffer. + * pname:size is the number of bytes to copy. + Description ----------- include::../validity/structs/VkBufferCopy.txt[] + + See Also -------- +basetypes:VkDeviceSize, flink:vkCmdCopyBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferCopy + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferCreateFlagBits.txt b/doc/specs/vulkan/man/VkBufferCreateFlagBits.txt index b16afd0ed6..0dcdce53c5 100644 --- a/doc/specs/vulkan/man/VkBufferCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkBufferCreateFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferCreateFlagBits(3) ========================= Name ---- -VkBufferCreateFlagBits - Stub page (not yet written) +VkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer C Specification --------------- +// refBegin VkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer include::../enums/VkBufferCreateFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkBufferCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkBufferCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferCreateFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferCreateFlags.txt b/doc/specs/vulkan/man/VkBufferCreateFlags.txt index d3c7d8de32..51ee3815c9 100644 --- a/doc/specs/vulkan/man/VkBufferCreateFlags.txt +++ b/doc/specs/vulkan/man/VkBufferCreateFlags.txt @@ -1,41 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferCreateFlags(3) ====================== Name ---- -VkBufferCreateFlags - Buffer object creation flags. +VkBufferCreateFlags - Bitmask of VkBufferCreateFlagBits C Specification --------------- -include::../enums/VkBufferCreateFlagBits.txt[] include::../flags/VkBufferCreateFlags.txt[] -Constants ---------- - -VK_BUFFER_CREATE_SPARSE_BINDING_BIT:: - Buffer objects created with this flag allow their contents to backed by sparse - memory allocations using flink:vkQueueBindSparse. - -VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT:: - Buffer objects created with this flag allow their contents to be backed by a - partially resident sparse memory allocation. - -VK_BUFFER_CREATE_SPARSE_ALIASED_BIT:: - Buffer objects created with this flag allow their contents to be backed by a - sparse memory allocation that might also simultaneously be backing another - buffer (or another portion of the buffer). Description ----------- -These flags are used in the slink:VkBufferCreateInfo structure passed as parameter to flink:vkCreateBuffer -to define the properties of the created buffer object. +etext:VkBufferCreateFlags is a mask of zero or more elink:VkBufferCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + See Also -------- -slink:VkBufferCreateInfo, flink:vkCreateBuffer +elink:VkBufferCreateFlagBits, slink:VkBufferCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferCreateInfo.txt b/doc/specs/vulkan/man/VkBufferCreateInfo.txt index 2229e35fec..00eaeb5cd1 100644 --- a/doc/specs/vulkan/man/VkBufferCreateInfo.txt +++ b/doc/specs/vulkan/man/VkBufferCreateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferCreateInfo(3) ===================== @@ -8,49 +12,122 @@ VkBufferCreateInfo - Structure specifying the parameters of a newly created buff C Specification --------------- -include::../structs/VkBufferCreateInfo.txt[] - -Fields ------- - -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO. +// refBegin VkBufferCreateInfo Structure specifying the parameters of a newly created buffer object. -pname:pNext:: - Pointer to next structure in the structure chain when applicable. +The sname:VkBufferCreateInfo structure is defined as: -pname:size:: - Size of the buffer in bytes. - -pname:usage:: - Allowed usages of the buffer (see elink:VkBufferUsageFlags for more detail). - -pname:flags:: - Other properties of the buffer (see elink:VkBufferCreateFlags for more detail). +include::../structs/VkBufferCreateInfo.txt[] -pname:sharingMode:: - Sharing mode used for the buffer (see elink:VkSharingMode for more detail). -pname:queueFamilyIndexCount:: - Number of queue families that can access the buffer in case - pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT. +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask describing additional parameters of the + buffer. See elink:VkBufferCreateFlagBits below for a description of the + supported bits. + * pname:size is the size in bytes of the buffer to be created. + * pname:usage is a bitmask describing the allowed usages of the buffer. + See elink:VkBufferUsageFlagBits below for a description of the supported + bits. + * pname:sharingMode is the sharing mode of the buffer when it will be + accessed by multiple queue families, see elink:VkSharingMode in the + <> section below for supported + values. + * pname:queueFamilyIndexCount is the number of entries in the + pname:pQueueFamilyIndices array. + * pname:pQueueFamilyIndices is a list of queue families that will + access this buffer (ignored if pname:sharingMode is not + ename:VK_SHARING_MODE_CONCURRENT). -pname:pQueueFamilyIndices:: - Array of pname:queueFamilyIndexCount queue family indices specifying the - set of queue families that can access the buffer in case - pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT. Description ----------- -This structure is used to specify the parameters of buffer objects created using -flink:vkCreateBuffer. +Bits which can: be set in pname:usage are: + +// refBegin VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer +include::../enums/VkBufferUsageFlagBits.txt[] + + * ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT indicates that the buffer can: be + used as the source of a _transfer command_ (see the definition of + <>). + * ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT indicates that the buffer + can: be used as the destination of a transfer command. + * ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT indicates that the buffer + can: be used to create a sname:VkBufferView suitable for occupying a + sname:VkDescriptorSet slot of type + ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER. + * ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT indicates that the buffer + can: be used to create a sname:VkBufferView suitable for occupying a + sname:VkDescriptorSet slot of type + ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER. + * ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT indicates that the buffer can: + be used in a sname:VkDescriptorBufferInfo suitable for occupying a + sname:VkDescriptorSet slot either of type + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC. + * ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT indicates that the buffer can: + be used in a sname:VkDescriptorBufferInfo suitable for occupying a + sname:VkDescriptorSet slot either of type + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. + * ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT indicates that the buffer is + suitable for passing as the pname:buffer parameter to + fname:vkCmdBindIndexBuffer. + * ename:VK_BUFFER_USAGE_VERTEX_BUFFER_BIT indicates that the buffer is + suitable for passing as an element of the pname:pBuffers array to + fname:vkCmdBindVertexBuffers. + * ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT indicates that the buffer is + suitable for passing as the pname:buffer parameter to + fname:vkCmdDrawIndirect, fname:vkCmdDrawIndexedIndirect, or + fname:vkCmdDispatchIndirect. + +Any combination of bits can: be specified for pname:usage, but at least one +of the bits must: be set in order to create a valid buffer. + +Bits which can: be set in pname:flags are: + +// refBegin VkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer +include::../enums/VkBufferCreateFlagBits.txt[] + +These bits have the following meanings: + + * ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will + be backed using sparse memory binding. + * ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT indicates that the buffer + can: be partially backed using sparse memory binding. Buffers + created with this flag must: also be created with the + ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag. + * ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT indicates that the buffer will + be backed using sparse memory binding with memory ranges that might also + simultaneously be backing another buffer (or another portion of the same + buffer). Buffers created with this flag must: also be created + with the ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag. + +See <> and +<> for details of the sparse +memory features supported on a device. include::../validity/structs/VkBufferCreateInfo.txt[] + See Also -------- -flink:vkCreateBuffer +elink:VkBufferCreateFlags, elink:VkBufferUsageFlags, basetypes:VkDeviceSize, elink:VkSharingMode, elink:VkStructureType, flink:vkCreateBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferImageCopy.txt b/doc/specs/vulkan/man/VkBufferImageCopy.txt index 78829f0cd7..d4cd3a8fe8 100644 --- a/doc/specs/vulkan/man/VkBufferImageCopy.txt +++ b/doc/specs/vulkan/man/VkBufferImageCopy.txt @@ -1,27 +1,104 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferImageCopy(3) ==================== Name ---- -VkBufferImageCopy - Stub page (not yet written) +VkBufferImageCopy - Structure specifying a buffer image copy operation C Specification --------------- +// refBegin VkBufferImageCopy - Structure specifying a buffer image copy operation + +For both flink:vkCmdCopyBufferToImage and flink:vkCmdCopyImageToBuffer, each +element of pname:pRegions is a structure defined as: + include::../structs/VkBufferImageCopy.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:bufferOffset is the offset in bytes from the start of the + buffer object where the image data is copied from or to. + * pname:bufferRowLength and pname:bufferImageHeight specify the + data in buffer memory as a subregion of a larger two- or + three-dimensional image, and control the addressing calculations of data + in buffer memory. If either of these values is zero, that aspect of the + buffer memory is considered to be tightly packed according to the + pname:imageExtent. + * pname:imageSubresource is an slink:VkImageSubresourceLayers used to + specify the specific image subresources of the image used for the source + or destination image data. + * pname:imageOffset selects the initial x, y, z offsets in texels of the + sub-region of the source or destination image data. + * pname:imageExtent is the size in texels of the image to copy in + pname:width, pname:height and pname:depth. 1D images use only pname:x + and pname:width. 2D images use pname:x, pname:y, pname:width and + pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, + pname:height and pname:depth. + Description ----------- +When copying to or from a depth or stencil aspect, the data in buffer +memory uses a layout that is a (mostly) tightly packed representation of +the depth or stencil data. Specifically: + + * data copied to or from the stencil aspect of any depth/stencil format + is tightly packed with one ename:VK_FORMAT_S8_UINT value per texel. + * data copied to or from the depth aspect of a ename:VK_FORMAT_D16_UNORM + or ename:VK_FORMAT_D16_UNORM_S8_UINT format is tightly packed with one + ename:VK_FORMAT_D16_UNORM value per texel. + * data copied to or from the depth aspect of a ename:VK_FORMAT_D32_SFLOAT + or ename:VK_FORMAT_D32_SFLOAT_S8_UINT format is tightly packed with + one ename:VK_FORMAT_D32_SFLOAT value per texel. + * data copied to or from the depth aspect of a + ename:VK_FORMAT_X8_D24_UNORM_PACK32 or + ename:VK_FORMAT_D24_UNORM_S8_UINT format is packed with one 32-bit word + per texel with the D24 value in the LSBs of the word, and undefined + values in the eight MSBs. + +[NOTE] +.Note +==== +To copy both the depth and stencil aspects of a depth/stencil format, two +entries in pname:pRegions can: be used, where one specifies the depth +aspect in pname:imageSubresource, and the other specifies the stencil +aspect. +==== + +Because depth or stencil aspect buffer to image copies may: require format +conversions on some implementations, they are not supported on queues +that do not support graphics. + +Copies are done layer by layer starting with image layer +pname:baseArrayLayer member of pname:imageSubresource. pname:layerCount +layers are copied from the source image or to the destination image. + include::../validity/structs/VkBufferImageCopy.txt[] + + See Also -------- +basetypes:VkDeviceSize, slink:VkExtent3D, slink:VkImageSubresourceLayers, slink:VkOffset3D, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImageToBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferImageCopy + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferMemoryBarrier.txt b/doc/specs/vulkan/man/VkBufferMemoryBarrier.txt index c745d963d2..a395be16a2 100644 --- a/doc/specs/vulkan/man/VkBufferMemoryBarrier.txt +++ b/doc/specs/vulkan/man/VkBufferMemoryBarrier.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferMemoryBarrier(3) ======================== @@ -8,51 +12,61 @@ VkBufferMemoryBarrier - Structure specifying the parameters of a buffer memory b C Specification --------------- -include::../structs/VkBufferMemoryBarrier.txt[] +// refBegin VkBufferMemoryBarrier Structure specifying the parameters of a buffer memory barrier. -Fields ------- +The sname:VkBufferMemoryBarrier structure is defined as: -sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER. +include::../structs/VkBufferMemoryBarrier.txt[] -pNext:: - Pointer to next structure in the structure chain when applicable. -outputMask:: - Types of writes to the buffer to flush (see elink:VkMemoryOutputFlags for more detail). +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:srcAccessMask is a bitmask of the classes of memory accesses + performed by the first set of commands that will participate in + the dependency. + * pname:dstAccessMask is a bitmask of the classes of memory accesses + performed by the second set of commands that will participate in + the dependency. + * pname:srcQueueFamilyIndex is the queue family that is relinquishing + ownership of the range of pname:buffer to another queue, or + ename:VK_QUEUE_FAMILY_IGNORED if there is no transfer of ownership. + * pname:dstQueueFamilyIndex is the queue family that is acquiring + ownership of the range of pname:buffer from another queue, or + ename:VK_QUEUE_FAMILY_IGNORED if there is no transfer of ownership. + * pname:buffer is a handle to the buffer whose backing memory is affected + by the barrier. + * pname:offset is an offset in bytes into the backing memory for + pname:buffer; this is relative to the base offset as bound to the buffer + (see flink:vkBindBufferMemory). + * pname:size is a size in bytes of the affected area of backing memory for + pname:buffer, or ename:VK_WHOLE_SIZE to use the range from pname:offset + to the end of the buffer. -inputMask:: - Types of reads from the buffer to invalidate (see elink:VkMemoryInputFlags for more detail). -srcQueueFamilyIndex:: - Identifies the source queue family to transfer ownership of the buffer from. - A value of ename:VK_QUEUE_FAMILY_IGNORED indicates that this member should be ignored. +Description +----------- -destQueueFamilyIndex:: - Identifies the destination queue family to transfer ownership of the buffer to. - A value of ename:VK_QUEUE_FAMILY_IGNORED indicates that this member should be ignored. +include::../validity/structs/VkBufferMemoryBarrier.txt[] -buffer:: - Buffer object the memory barrier applies to. -offset:: - Byte offset of the sub-range of the buffer the memory barrier applies to. +See Also +-------- -size:: - Size in bytes of the sub-range of the buffer the memory barrier applies to. +elink:VkAccessFlags, slink:VkBuffer, basetypes:VkDeviceSize, elink:VkStructureType, flink:vkCmdPipelineBarrier, flink:vkCmdWaitEvents -include::../validity/structs/VkBufferMemoryBarrier.txt[] -Description ------------ +Document Notes +-------------- -This structure specifies the parameters of a buffer memory barrier that can be passed in the ptext:ppMemoryBarriers -parameter of flink:vkCmdPipelineBarrier and flink:vkCmdWaitEvents. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferMemoryBarrier -flink:vkCmdPipelineBarrier, flink:vkCmdWaitEvents, slink:VkMemoryBarrier, slink:VkImageMemoryBarrier +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferUsageFlagBits.txt b/doc/specs/vulkan/man/VkBufferUsageFlagBits.txt index 89375d9d40..01b7c8435a 100644 --- a/doc/specs/vulkan/man/VkBufferUsageFlagBits.txt +++ b/doc/specs/vulkan/man/VkBufferUsageFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferUsageFlagBits(3) ======================== Name ---- -VkBufferUsageFlagBits - Stub page (not yet written) +VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer C Specification --------------- +// refBegin VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer include::../enums/VkBufferUsageFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkBufferCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkBufferUsageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferUsageFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferUsageFlags.txt b/doc/specs/vulkan/man/VkBufferUsageFlags.txt index 6ab97760b9..4cdda94e9d 100644 --- a/doc/specs/vulkan/man/VkBufferUsageFlags.txt +++ b/doc/specs/vulkan/man/VkBufferUsageFlags.txt @@ -1,60 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferUsageFlags(3) ===================== Name ---- -VkBufferUsageFlags - Buffer object usage flags. +VkBufferUsageFlags - Bitmask of VkBufferUsageFlagBits C Specification --------------- include::../flags/VkBufferUsageFlags.txt[] -Constants ---------- - -ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT:: - The buffer can be used as the source operand of transfer operations (flink:vkCmdCopyBuffer, - flink:vkCmdCopyBufferToImage). - -ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT:: - The buffer can be used as the destination operand of transfer operations (flink:vkCmdCopyBuffer, - flink:vkCmdCopyImageToBuffer, flink:vkCmdUpdateBuffer, flink:vkCmdFillBuffer, flink:vkCmdWriteTimestamp, - flink:vkCmdCopyQueryPoolResults). - -ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT:: - The buffer supports reads via uniform texel buffer descriptors. -ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT:: - The buffer supports loads, stores, and atomic operations via storage texel buffer descriptors. +Description +----------- -ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT:: - The buffer supports reads via uniform buffer descriptors. +etext:VkBufferUsageFlags is a mask of zero or more elink:VkBufferUsageFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT:: - The buffer supports loads, stores, and atomic operations via storage buffer descriptors. -ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT:: - The buffer can be bound as an index buffer using the flink:vkCmdBindIndexBuffer command. +See Also +-------- -ename:VK_BUFFER_USAGE_VERTEX_BUFFER_BIT:: - The buffer can be bound as a vertex buffer using the flink:vkCmdBindVertexBuffers command. +slink:VkBufferCreateInfo, elink:VkBufferUsageFlagBits -ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT:: - The buffer can be used as the source of indirect commands (flink:vkCmdDrawIndirect, - flink:vkCmdDrawIndexedIndirect, flink:vkCmdDispatchIndirect). -Description ------------ +Document Notes +-------------- -These flags are used in the slink:VkBufferCreateInfo structure passed as -parameter to flink:vkCreateBuffer to define the intended use of the created -buffer. Trying to use the buffer for any other purpose than those requested -at creation time may result in undefined behavior. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferUsageFlags -slink:VkBufferCreateInfo, flink:vkCreateBuffer +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferView.txt b/doc/specs/vulkan/man/VkBufferView.txt new file mode 100644 index 0000000000..f5626f5346 --- /dev/null +++ b/doc/specs/vulkan/man/VkBufferView.txt @@ -0,0 +1,54 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkBufferView(3) +=============== + +Name +---- +VkBufferView - Opaque handle to a buffer view object + +C Specification +--------------- + +// refBegin VkBufferView - Opaque handle to a buffer view object + +A _buffer view_ represents a contiguous range of a buffer and a specific +format to be used to interpret the data. Buffer views are used to enable +shaders to access buffer contents interpreted as formatted data. In order to +create a valid buffer view, the buffer must: have been created with at least +one of the following usage flags: + + * ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT + * ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT + +Buffer views are represented by sname:VkBufferView handles: + +include::../handles/VkBufferView.txt[] + + +Description +----------- + +// refEnd VkBufferView + + +See Also +-------- + +slink:VkWriteDescriptorSet, flink:vkCreateBufferView, flink:vkDestroyBufferView + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferView + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferViewCreateFlags.txt b/doc/specs/vulkan/man/VkBufferViewCreateFlags.txt index 7b1349aa25..c04577a08b 100644 --- a/doc/specs/vulkan/man/VkBufferViewCreateFlags.txt +++ b/doc/specs/vulkan/man/VkBufferViewCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferViewCreateFlags(3) ========================== Name ---- -VkBufferViewCreateFlags - Stub page (not yet written) +VkBufferViewCreateFlags - Bitmask of VkBufferViewCreateFlagBits C Specification --------------- include::../flags/VkBufferViewCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkBufferViewCreateFlags is a mask of zero or more elink:VkBufferViewCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkBufferViewCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferViewCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkBufferViewCreateInfo.txt b/doc/specs/vulkan/man/VkBufferViewCreateInfo.txt index fa080aad50..277d7b9836 100644 --- a/doc/specs/vulkan/man/VkBufferViewCreateInfo.txt +++ b/doc/specs/vulkan/man/VkBufferViewCreateInfo.txt @@ -1,27 +1,64 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkBufferViewCreateInfo(3) ========================= Name ---- -VkBufferViewCreateInfo - Stub page (not yet written) +VkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view C Specification --------------- +// refBegin VkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view + +The sname:VkBufferViewCreateInfo structure is defined as: + include::../structs/VkBufferViewCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:buffer is a sname:VkBuffer on which the view will be created. + * pname:format is a elink:VkFormat describing the format of the data + elements in the buffer. + * pname:offset is an offset in bytes from the base address of the buffer. + Accesses to the buffer view from shaders use addressing that is relative + to this starting offset. + * pname:range is a size in bytes of the buffer view. If pname:range is + equal to ename:VK_WHOLE_SIZE, the range from pname:offset to the end of + the buffer is used. If ename:VK_WHOLE_SIZE is used and the remaining + size of the buffer is not a multiple of the element size of + pname:format, then the nearest smaller multiple is used. + Description ----------- include::../validity/structs/VkBufferViewCreateInfo.txt[] + + See Also -------- +slink:VkBuffer, elink:VkBufferViewCreateFlags, basetypes:VkDeviceSize, elink:VkFormat, elink:VkStructureType, flink:vkCreateBufferView + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkBufferViewCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkClearAttachment.txt b/doc/specs/vulkan/man/VkClearAttachment.txt index 559eac6d1f..e8a4985eae 100644 --- a/doc/specs/vulkan/man/VkClearAttachment.txt +++ b/doc/specs/vulkan/man/VkClearAttachment.txt @@ -1,27 +1,79 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkClearAttachment(3) ==================== Name ---- -VkClearAttachment - Stub page (not yet written) +VkClearAttachment - Structure specifying a clear attachment C Specification --------------- +// refBegin VkClearAttachment - Structure specifying a clear attachment + +The sname:VkClearAttachment structure is defined as: + include::../structs/VkClearAttachment.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:aspectMask is a mask selecting the color, depth and/or stencil + aspects of the attachment to be cleared. pname:aspectMask can: include + ename:VK_IMAGE_ASPECT_COLOR_BIT for color attachments, + ename:VK_IMAGE_ASPECT_DEPTH_BIT for depth/stencil attachments with a + depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT for depth/stencil + attachments with a stencil component. If the subpass's depth/stencil + attachment is ename:VK_ATTACHMENT_UNUSED, then the clear has no effect. + * pname:colorAttachment is only meaningful if + ename:VK_IMAGE_ASPECT_COLOR_BIT is set in pname:aspectMask, in which + case it is an index to the pname:pColorAttachments array in the + slink:VkSubpassDescription structure of the current subpass which + selects the color attachment to clear. If pname:colorAttachment is + ename:VK_ATTACHMENT_UNUSED or is greater than or equal to + sname:VkSubpassDescription::pname:colorAttachmentCount, then the clear has + no effect. + * pname:clearValue is the color or depth/stencil value to clear the + attachment to, as described in <> below. + Description ----------- +No memory barriers are needed between fname:vkCmdClearAttachments and +preceding or subsequent draw or attachment clear commands in the same +subpass. + +The fname:vkCmdClearAttachments command is not affected by the bound +pipeline state. + +Attachments can: also be cleared at the beginning of a render pass instance +by setting pname:loadOp (or pname:stencilLoadOp) of +slink:VkAttachmentDescription to ename:VK_ATTACHMENT_LOAD_OP_CLEAR, as +described for flink:vkCreateRenderPass. + include::../validity/structs/VkClearAttachment.txt[] + + See Also -------- +slink:VkClearValue, elink:VkImageAspectFlags, flink:vkCmdClearAttachments + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkClearAttachment + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkClearColorValue.txt b/doc/specs/vulkan/man/VkClearColorValue.txt index 78d4244785..a4d4b84b9c 100644 --- a/doc/specs/vulkan/man/VkClearColorValue.txt +++ b/doc/specs/vulkan/man/VkClearColorValue.txt @@ -1,27 +1,70 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkClearColorValue(3) ==================== Name ---- -VkClearColorValue - Stub page (not yet written) +VkClearColorValue - Structure specifying a clear color value C Specification --------------- +// refBegin VkClearColorValue - Structure specifying a clear color value + +The sname:VkClearColorValue structure is defined as: + include::../structs/VkClearColorValue.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:float32 are the color clear values when the format of the image or + attachment is floating point, unorm, snorm, uscaled, packed float, or + sRGB. Floating point values are automatically converted to the format of + the image, with the clear value being treated as linear if the image is + sRGB. + * pname:int32 are the color clear values when the format of the image or + attachment is signed integer. Signed integer values are converted to the + format of the image by casting to the smaller type (with negative 32-bit + values mapping to negative values in the smaller type). If the integer + clear value is not representable in the target type (e.g. would overflow + in conversion to that type), the clear value is undefined. + * pname:uint32 are the color clear values when the format of the image or + attachment is unsigned integer. Unsigned integer values are converted to + the format of the image by casting to the integer type with fewer bits. + Description ----------- +The four array elements of the clear color map to R, G, B, and A components +of image formats, in order. + +If the image has more than one sample, the same value is written to all +samples for any pixels being cleared. + include::../validity/structs/VkClearColorValue.txt[] + + See Also -------- +slink:VkClearValue, flink:vkCmdClearColorImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkClearColorValue + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkClearDepthStencilValue.txt b/doc/specs/vulkan/man/VkClearDepthStencilValue.txt index 6f9399c7d5..d099fcea7e 100644 --- a/doc/specs/vulkan/man/VkClearDepthStencilValue.txt +++ b/doc/specs/vulkan/man/VkClearDepthStencilValue.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkClearDepthStencilValue(3) =========================== Name ---- -VkClearDepthStencilValue - Stub page (not yet written) +VkClearDepthStencilValue - Structure specifying a clear depth stencil value C Specification --------------- +// refBegin VkClearDepthStencilValue - Structure specifying a clear depth stencil value + +The sname:VkClearDepthStencilValue structure is defined as: + include::../structs/VkClearDepthStencilValue.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:depth is the clear value for the depth aspect of the depth/stencil + attachment. It is a floating-point value which is automatically + converted to the attachment's format. + * pname:stencil is the clear value for the stencil aspect of the + depth/stencil attachment. It is a 32-bit integer value which is + converted to the attachment's format by taking the appropriate number of + LSBs. + Description ----------- include::../validity/structs/VkClearDepthStencilValue.txt[] + + See Also -------- +slink:VkClearValue, flink:vkCmdClearDepthStencilImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkClearDepthStencilValue + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkClearRect.txt b/doc/specs/vulkan/man/VkClearRect.txt index 026377d4dd..0c5e29f335 100644 --- a/doc/specs/vulkan/man/VkClearRect.txt +++ b/doc/specs/vulkan/man/VkClearRect.txt @@ -1,27 +1,56 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkClearRect(3) ============== Name ---- -VkClearRect - Stub page (not yet written) +VkClearRect - Structure specifying a clear rectangle C Specification --------------- +// refBegin VkClearRect - Structure specifying a clear rectangle + +The sname:VkClearRect structure is defined as: + include::../structs/VkClearRect.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:rect is the two-dimensional region to be cleared. + * pname:baseArrayLayer is the first layer to be cleared. + * pname:layerCount is the number of layers to clear. + Description ----------- +The layers latexmath:[$[baseArrayLayer, baseArrayLayer+layerCount)$] +counting from the base layer of the attachment image view are cleared. + include::../validity/structs/VkClearRect.txt[] + + See Also -------- +slink:VkRect2D, flink:vkCmdClearAttachments + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkClearRect + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkClearValue.txt b/doc/specs/vulkan/man/VkClearValue.txt index a7f2a408bd..0f53cca8b9 100644 --- a/doc/specs/vulkan/man/VkClearValue.txt +++ b/doc/specs/vulkan/man/VkClearValue.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkClearValue(3) =============== Name ---- -VkClearValue - Stub page (not yet written) +VkClearValue - Structure specifying a clear value C Specification --------------- +// refBegin VkClearValue - Structure specifying a clear value + +The sname:VkClearValue union is defined as: + include::../structs/VkClearValue.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:color specifies the color image clear values to use when + clearing a color image or attachment. + * pname:depthStencil specifies the depth and stencil clear values to use + when clearing a depth/stencil image or attachment. + Description ----------- +This union is used where part of the API requires either color or +depth/stencil clear values, depending on the attachment, and defines the +initial clear values in the slink:VkRenderPassBeginInfo structure. + include::../validity/structs/VkClearValue.txt[] + + See Also -------- +slink:VkClearAttachment, slink:VkClearColorValue, slink:VkClearDepthStencilValue, slink:VkRenderPassBeginInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkClearValue + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkColorComponentFlagBits.txt b/doc/specs/vulkan/man/VkColorComponentFlagBits.txt index 5b3c09c7be..d9d6947330 100644 --- a/doc/specs/vulkan/man/VkColorComponentFlagBits.txt +++ b/doc/specs/vulkan/man/VkColorComponentFlagBits.txt @@ -1,26 +1,56 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkColorComponentFlagBits(3) =========================== Name ---- -VkColorComponentFlagBits - Stub page (not yet written) +VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer C Specification --------------- -include::../enums/VkColorComponentFlagBits.txt[] +// refBegin VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The pname:colorWriteMask member of slink:VkPipelineColorBlendAttachmentState +determines whether the final color values latexmath:[$R, G, B$] and +latexmath:[$A$] are written to the framebuffer attachment. +pname:colorWriteMask is any combination of the following bits: + +include::../enums/VkColorComponentFlagBits.txt[] -Constants ---------- Description ----------- +If ename:VK_COLOR_COMPONENT_R_BIT is set, then the latexmath:[$R$] value is +written to color attachment for the appropriate sample, otherwise the value +in memory is unmodified. The ename:VK_COLOR_COMPONENT_G_BIT, +ename:VK_COLOR_COMPONENT_B_BIT, and ename:VK_COLOR_COMPONENT_A_BIT bits +similarly control writing of the latexmath:[$G, B,$] and latexmath:[$A$] +values. The pname:colorWriteMask is applied regardless of whether blending +is enabled. + +// refEnd VkColorComponentFlagBits + + See Also -------- +elink:VkColorComponentFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkColorComponentFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkColorComponentFlags.txt b/doc/specs/vulkan/man/VkColorComponentFlags.txt index ea30bdaaba..6fefdfaaad 100644 --- a/doc/specs/vulkan/man/VkColorComponentFlags.txt +++ b/doc/specs/vulkan/man/VkColorComponentFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkColorComponentFlags(3) ======================== Name ---- -VkColorComponentFlags - Stub page (not yet written) +VkColorComponentFlags - Bitmask of VkColorComponentFlagBits C Specification --------------- include::../flags/VkColorComponentFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkColorComponentFlags is a mask of zero or more elink:VkColorComponentFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkColorComponentFlagBits, slink:VkPipelineColorBlendAttachmentState + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkColorComponentFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkColorSpaceKHR.txt b/doc/specs/vulkan/man/VkColorSpaceKHR.txt deleted file mode 100644 index 5db425aef8..0000000000 --- a/doc/specs/vulkan/man/VkColorSpaceKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkColorSpaceKHR(3) -================== - -Name ----- -VkColorSpaceKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkColorSpaceKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkCommandBuffer.txt b/doc/specs/vulkan/man/VkCommandBuffer.txt new file mode 100644 index 0000000000..3507da32cd --- /dev/null +++ b/doc/specs/vulkan/man/VkCommandBuffer.txt @@ -0,0 +1,52 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkCommandBuffer(3) +================== + +Name +---- +VkCommandBuffer - Opaque handle to a command buffer object + +C Specification +--------------- + +// refBegin VkCommandBuffer - Opaque handle to a command buffer object + +Command buffers are objects used to record commands which can: be +subsequently submitted to a device queue for execution. There are two levels +of command buffers - _primary command buffers_, which can: execute secondary +command buffers, and which are submitted to queues, and _secondary command +buffers_, which can: be executed by primary command buffers, and which are +not directly submitted to queues. + +Command buffers are represented by sname:VkCommandBuffer handles: + +include::../handles/VkCommandBuffer.txt[] + + +Description +----------- + +// refEnd VkCommandBuffer + + +See Also +-------- + +slink:VkSubmitInfo, flink:vkAllocateCommandBuffers, flink:vkBeginCommandBuffer, flink:vkCmdBeginQuery, flink:vkCmdBeginRenderPass, flink:vkCmdBindDescriptorSets, flink:vkCmdBindIndexBuffer, flink:vkCmdBindPipeline, flink:vkCmdBindVertexBuffers, flink:vkCmdBlitImage, flink:vkCmdClearAttachments, flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, flink:vkCmdCopyBuffer, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImage, flink:vkCmdCopyImageToBuffer, flink:vkCmdCopyQueryPoolResults, flink:vkCmdDispatch, flink:vkCmdDispatchIndirect, flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndexedIndirect, flink:vkCmdDrawIndirect, flink:vkCmdEndQuery, flink:vkCmdEndRenderPass, flink:vkCmdExecuteCommands, flink:vkCmdFillBuffer, flink:vkCmdNextSubpass, flink:vkCmdPipelineBarrier, flink:vkCmdPushConstants, flink:vkCmdResetEvent, flink:vkCmdResetQueryPool, flink:vkCmdResolveImage, flink:vkCmdSetBlendConstants, flink:vkCmdSetDepthBias, flink:vkCmdSetDepthBounds, flink:vkCmdSetEvent, flink:vkCmdSetLineWidth, flink:vkCmdSetScissor, flink:vkCmdSetStencilCompareMask, flink:vkCmdSetStencilReference, flink:vkCmdSetStencilWriteMask, flink:vkCmdSetViewport, flink:vkCmdUpdateBuffer, flink:vkCmdWaitEvents, flink:vkCmdWriteTimestamp, flink:vkEndCommandBuffer, flink:vkFreeCommandBuffers, flink:vkResetCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferAllocateInfo.txt b/doc/specs/vulkan/man/VkCommandBufferAllocateInfo.txt index 9edd5e3d4e..b100d3076f 100644 --- a/doc/specs/vulkan/man/VkCommandBufferAllocateInfo.txt +++ b/doc/specs/vulkan/man/VkCommandBufferAllocateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferAllocateInfo(3) ============================== @@ -8,37 +12,53 @@ VkCommandBufferAllocateInfo - Structure specifying the allocation parameters for C Specification --------------- -include::../structs/VkCommandBufferAllocateInfo.txt[] +// refBegin VkCommandBufferAllocateInfo Structure specifying the allocation parameters for command buffer object. -Fields ------- +The sname:VkCommandBufferAllocateInfo structure is defined as: -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO. +include::../structs/VkCommandBufferAllocateInfo.txt[] -pname:pNext:: - Pointer to next structure in the structure chain when applicable. -pname:commandPool:: - The pool from which to allocate the command buffers. +Members +------- -pname:level:: - The level of the command buffers to allocate. + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:commandPool is the name of the command pool that the command + buffers allocate their memory from. + * pname:level determines whether the command buffers are primary or + secondary command buffers. Possible values include: ++ +-- +// refBegin VkCommandBufferLevel - Structure specifying a command buffer level +include::../enums/VkCommandBufferLevel.txt[] +-- ++ + * pname:commandBufferCount is the number of command buffers to allocate + from the pool. -pname:commandBufferCount:: - The numbef of command buffers to allocate. Description ----------- -This structure is used to specify the parameters of command buffer objects allocated using -flink:vkAllocateCommandBuffers. - include::../validity/structs/VkCommandBufferAllocateInfo.txt[] + See Also -------- -flink:vkAllocateCommandBuffers +elink:VkCommandBufferLevel, slink:VkCommandPool, elink:VkStructureType, flink:vkAllocateCommandBuffers + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferAllocateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferBeginInfo.txt b/doc/specs/vulkan/man/VkCommandBufferBeginInfo.txt index 04c0a96b55..62883f0b94 100644 --- a/doc/specs/vulkan/man/VkCommandBufferBeginInfo.txt +++ b/doc/specs/vulkan/man/VkCommandBufferBeginInfo.txt @@ -1,27 +1,73 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferBeginInfo(3) =========================== Name ---- -VkCommandBufferBeginInfo - Stub page (not yet written) +VkCommandBufferBeginInfo - Structure specifying a command buffer begin operation C Specification --------------- +// refBegin VkCommandBufferBeginInfo - Structure specifying a command buffer begin operation + +The sname:VkCommandBufferBeginInfo structure is defined as: + include::../structs/VkCommandBufferBeginInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask indicating usage behavior for the command + buffer. Bits which can: be set include: ++ +-- +// refBegin VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command buffer +include::../enums/VkCommandBufferUsageFlagBits.txt[] +-- ++ + ** ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT indicates that each + recording of the command buffer will only be submitted once, and the + command buffer will be reset and recorded again between each submission. + ** ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT indicates that + a secondary command buffer is considered to be entirely inside a render + pass. If this is a primary command buffer, then this bit is ignored. + ** Setting ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT allows the + command buffer to be resubmitted to a queue or recorded into a primary + command buffer while it is pending execution. + * pname:pInheritanceInfo is a pointer to a + sname:VkCommandBufferInheritanceInfo structure, which is used if + pname:commandBuffer is a secondary command buffer. If this is a primary + command buffer, then this value is ignored. + Description ----------- include::../validity/structs/VkCommandBufferBeginInfo.txt[] + + See Also -------- +slink:VkCommandBufferInheritanceInfo, elink:VkCommandBufferUsageFlags, elink:VkStructureType, flink:vkBeginCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferBeginInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferInheritanceInfo.txt b/doc/specs/vulkan/man/VkCommandBufferInheritanceInfo.txt index 1d6fb2e350..e5ce44dd78 100644 --- a/doc/specs/vulkan/man/VkCommandBufferInheritanceInfo.txt +++ b/doc/specs/vulkan/man/VkCommandBufferInheritanceInfo.txt @@ -1,27 +1,94 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferInheritanceInfo(3) ================================= Name ---- -VkCommandBufferInheritanceInfo - Stub page (not yet written) +VkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info C Specification --------------- +// refBegin VkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info + +If the command buffer is a secondary command buffer, then the +sname:VkCommandBufferInheritanceInfo structure defines any state that will +be inherited from the primary command buffer: + include::../structs/VkCommandBufferInheritanceInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:renderPass is a sname:VkRenderPass object that must: be + <> with the one that is bound when + the sname:VkCommandBuffer is executed if the command buffer was + allocated with the + ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. + * pname:subpass is the index of the subpass within pname:renderPass that + the sname:VkCommandBuffer will be rendering against if it was allocated + with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. + * pname:framebuffer refers to the sname:VkFramebuffer object that the + sname:VkCommandBuffer will be rendering to if it was allocated with + the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. It can: + be dlink:VK_NULL_HANDLE if the framebuffer is not known. ++ +[NOTE] +.Note +==== +Specifying the exact framebuffer that the secondary command buffer will be +executed with may: result in better performance at command buffer execution +time. +==== + * pname:occlusionQueryEnable indicates whether the command buffer can: be + executed while an occlusion query is active in the primary command + buffer. If this is ename:VK_TRUE, then this command buffer can: be + executed whether the primary command buffer has an occlusion query + active or not. If this is ename:VK_FALSE, then the primary command + buffer mustnot: have an occlusion query active. + * pname:queryFlags indicates the query flags that can: be used by an + active occlusion query in the primary command buffer when this secondary + command buffer is executed. If this value includes the + ename:VK_QUERY_CONTROL_PRECISE_BIT bit, then the active query can: + return boolean results or actual sample counts. If this bit is not set, + then the active query mustnot: use the + ename:VK_QUERY_CONTROL_PRECISE_BIT bit. If this is a primary command + buffer, then this value is ignored. + * pname:pipelineStatistics indicates the set of pipeline statistics that + can: be counted by an active query in the primary command buffer when + this secondary command buffer is executed. If this value includes a + given bit, then this command buffer can: be executed whether the primary + command buffer has a pipeline statistics query active that includes this + bit or not. If this value excludes a given bit, then the active pipeline + statistics query mustnot: be from a query pool that counts that + statistic. + Description ----------- include::../validity/structs/VkCommandBufferInheritanceInfo.txt[] + + See Also -------- +basetypes:VkBool32, slink:VkCommandBufferBeginInfo, slink:VkFramebuffer, elink:VkQueryControlFlags, elink:VkQueryPipelineStatisticFlags, slink:VkRenderPass, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferInheritanceInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferLevel.txt b/doc/specs/vulkan/man/VkCommandBufferLevel.txt index b72845dcb0..5035c3a167 100644 --- a/doc/specs/vulkan/man/VkCommandBufferLevel.txt +++ b/doc/specs/vulkan/man/VkCommandBufferLevel.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferLevel(3) ======================= Name ---- -VkCommandBufferLevel - Stub page (not yet written) +VkCommandBufferLevel - Structure specifying a command buffer level C Specification --------------- +// refBegin VkCommandBufferLevel - Structure specifying a command buffer level include::../enums/VkCommandBufferLevel.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkCommandBufferAllocateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkCommandBufferAllocateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferLevel + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferResetFlagBits.txt b/doc/specs/vulkan/man/VkCommandBufferResetFlagBits.txt index ac09d3e8ae..33c6655943 100644 --- a/doc/specs/vulkan/man/VkCommandBufferResetFlagBits.txt +++ b/doc/specs/vulkan/man/VkCommandBufferResetFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferResetFlagBits(3) =============================== Name ---- -VkCommandBufferResetFlagBits - Stub page (not yet written) +VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer reset C Specification --------------- +// refBegin VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer reset include::../enums/VkCommandBufferResetFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkResetCommandBuffer, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkCommandBufferResetFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferResetFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferResetFlags.txt b/doc/specs/vulkan/man/VkCommandBufferResetFlags.txt index e513433d2f..2305698a4a 100644 --- a/doc/specs/vulkan/man/VkCommandBufferResetFlags.txt +++ b/doc/specs/vulkan/man/VkCommandBufferResetFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferResetFlags(3) ============================ Name ---- -VkCommandBufferResetFlags - Stub page (not yet written) +VkCommandBufferResetFlags - Bitmask of VkCommandBufferResetFlagBits C Specification --------------- include::../flags/VkCommandBufferResetFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkCommandBufferResetFlags is a mask of zero or more elink:VkCommandBufferResetFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkCommandBufferResetFlagBits, flink:vkResetCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferResetFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferUsageFlagBits.txt b/doc/specs/vulkan/man/VkCommandBufferUsageFlagBits.txt index 30eea6b45a..1a01f79727 100644 --- a/doc/specs/vulkan/man/VkCommandBufferUsageFlagBits.txt +++ b/doc/specs/vulkan/man/VkCommandBufferUsageFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferUsageFlagBits(3) =============================== Name ---- -VkCommandBufferUsageFlagBits - Stub page (not yet written) +VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command buffer C Specification --------------- +// refBegin VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command buffer include::../enums/VkCommandBufferUsageFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkCommandBufferBeginInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkCommandBufferUsageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferUsageFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandBufferUsageFlags.txt b/doc/specs/vulkan/man/VkCommandBufferUsageFlags.txt index a79e552fdf..14e32f62f6 100644 --- a/doc/specs/vulkan/man/VkCommandBufferUsageFlags.txt +++ b/doc/specs/vulkan/man/VkCommandBufferUsageFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandBufferUsageFlags(3) ============================ Name ---- -VkCommandBufferUsageFlags - Stub page (not yet written) +VkCommandBufferUsageFlags - Bitmask of VkCommandBufferUsageFlagBits C Specification --------------- include::../flags/VkCommandBufferUsageFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkCommandBufferUsageFlags is a mask of zero or more elink:VkCommandBufferUsageFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkCommandBufferBeginInfo, elink:VkCommandBufferUsageFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandBufferUsageFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPool.txt b/doc/specs/vulkan/man/VkCommandPool.txt new file mode 100644 index 0000000000..f44c145900 --- /dev/null +++ b/doc/specs/vulkan/man/VkCommandPool.txt @@ -0,0 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkCommandPool(3) +================ + +Name +---- +VkCommandPool - Opaque handle to a command pool object + +C Specification +--------------- + +// refBegin VkCommandPool - Opaque handle to a command pool object + +Command pools are opaque objects that command buffer memory is allocated +from, and which allow the implementation to amortize the cost of resource +creation across multiple command buffers. Command pools are +application-synchronized, meaning that a command pool mustnot: be used +concurrently in multiple threads. That includes use via recording commands +on any command buffers allocated from the pool, as well as operations that +allocate, free, and reset command buffers or the pool itself. + +Command pools are represented by sname:VkCommandPool handles: + +include::../handles/VkCommandPool.txt[] + + +Description +----------- + +// refEnd VkCommandPool + + +See Also +-------- + +slink:VkCommandBufferAllocateInfo, flink:vkCreateCommandPool, flink:vkDestroyCommandPool, flink:vkFreeCommandBuffers, flink:vkResetCommandPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPoolCreateFlagBits.txt b/doc/specs/vulkan/man/VkCommandPoolCreateFlagBits.txt index 39b2741725..92f6800eca 100644 --- a/doc/specs/vulkan/man/VkCommandPoolCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkCommandPoolCreateFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandPoolCreateFlagBits(3) ============================== Name ---- -VkCommandPoolCreateFlagBits - Stub page (not yet written) +VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command pool C Specification --------------- +// refBegin VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command pool include::../enums/VkCommandPoolCreateFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkCommandPoolCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkCommandPoolCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPoolCreateFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPoolCreateFlags.txt b/doc/specs/vulkan/man/VkCommandPoolCreateFlags.txt index 865e86bf16..cbbee08a3b 100644 --- a/doc/specs/vulkan/man/VkCommandPoolCreateFlags.txt +++ b/doc/specs/vulkan/man/VkCommandPoolCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandPoolCreateFlags(3) =========================== Name ---- -VkCommandPoolCreateFlags - Stub page (not yet written) +VkCommandPoolCreateFlags - Bitmask of VkCommandPoolCreateFlagBits C Specification --------------- include::../flags/VkCommandPoolCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkCommandPoolCreateFlags is a mask of zero or more elink:VkCommandPoolCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkCommandPoolCreateFlagBits, slink:VkCommandPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPoolCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPoolCreateInfo.txt b/doc/specs/vulkan/man/VkCommandPoolCreateInfo.txt index fa979ecc27..7a7dec6ce3 100644 --- a/doc/specs/vulkan/man/VkCommandPoolCreateInfo.txt +++ b/doc/specs/vulkan/man/VkCommandPoolCreateInfo.txt @@ -1,27 +1,77 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandPoolCreateInfo(3) ========================== Name ---- -VkCommandPoolCreateInfo - Stub page (not yet written) +VkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool C Specification --------------- +// refBegin VkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool + +The sname:VkCommandPoolCreateInfo structure is defined as: + include::../structs/VkCommandPoolCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask indicating usage behavior for the pool and + command buffers allocated from it. Bits which can: be set include: ++ +-- +// refBegin VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command pool +include::../enums/VkCommandPoolCreateFlagBits.txt[] +-- ++ + ** ename:VK_COMMAND_POOL_CREATE_TRANSIENT_BIT indicates that command buffers + allocated from the pool will be short-lived, meaning that they will be + reset or freed in a relatively short timeframe. This flag may: be used by + the implementation to control memory allocation behavior within the pool. + ** ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT controls whether + command buffers allocated from the pool can: be individually reset. If + this flag is set, individual command buffers allocated from the pool can: + be reset either explicitly, by calling fname:vkResetCommandBuffer, or + implicitly, by calling fname:vkBeginCommandBuffer on an executable + command buffer. If this flag is not set, then fname:vkResetCommandBuffer + and fname:vkBeginCommandBuffer (on an executable command buffer) mustnot: + be called on the command buffers allocated from the pool, and they can: + only be reset in bulk by calling fname:vkResetCommandPool. + * pname:queueFamilyIndex designates a queue family as described in section + <>. All command + buffers created from this command pool must: be submitted on queues + from the same queue family. + Description ----------- include::../validity/structs/VkCommandPoolCreateInfo.txt[] + + See Also -------- +elink:VkCommandPoolCreateFlags, elink:VkStructureType, flink:vkCreateCommandPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPoolCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPoolResetFlagBits.txt b/doc/specs/vulkan/man/VkCommandPoolResetFlagBits.txt index d7a7d8bbd2..2a289992b6 100644 --- a/doc/specs/vulkan/man/VkCommandPoolResetFlagBits.txt +++ b/doc/specs/vulkan/man/VkCommandPoolResetFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandPoolResetFlagBits(3) ============================= Name ---- -VkCommandPoolResetFlagBits - Stub page (not yet written) +VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool reset C Specification --------------- +// refBegin VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool reset include::../enums/VkCommandPoolResetFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkResetCommandPool, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkCommandPoolResetFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPoolResetFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCommandPoolResetFlags.txt b/doc/specs/vulkan/man/VkCommandPoolResetFlags.txt index 6e71992ac4..355773dca1 100644 --- a/doc/specs/vulkan/man/VkCommandPoolResetFlags.txt +++ b/doc/specs/vulkan/man/VkCommandPoolResetFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCommandPoolResetFlags(3) ========================== Name ---- -VkCommandPoolResetFlags - Stub page (not yet written) +VkCommandPoolResetFlags - Bitmask of VkCommandPoolResetFlagBits C Specification --------------- include::../flags/VkCommandPoolResetFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkCommandPoolResetFlags is a mask of zero or more elink:VkCommandPoolResetFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkCommandPoolResetFlagBits, flink:vkResetCommandPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCommandPoolResetFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCompareOp.txt b/doc/specs/vulkan/man/VkCompareOp.txt index 8ce632190e..9206d3814d 100644 --- a/doc/specs/vulkan/man/VkCompareOp.txt +++ b/doc/specs/vulkan/man/VkCompareOp.txt @@ -1,26 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCompareOp(3) ============== Name ---- -VkCompareOp - Stub page (not yet written) +VkCompareOp - stencil comparison function C Specification --------------- -include::../enums/VkCompareOp.txt[] +// refBegin VkCompareOp stencil comparison function -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +pname:compareOp is a symbolic constant that determines the stencil +comparison function: + +include::../enums/VkCompareOp.txt[] -Constants ---------- Description ----------- + * ename:VK_COMPARE_OP_NEVER: the test never passes. + * ename:VK_COMPARE_OP_LESS: the test passes when latexmath:[$R \lt S$]. + * ename:VK_COMPARE_OP_EQUAL: the test passes when latexmath:[$R = S$]. + * ename:VK_COMPARE_OP_LESS_OR_EQUAL: the test passes when latexmath:[$R + \leq S$]. + * ename:VK_COMPARE_OP_GREATER: the test passes when latexmath:[$R \gt S$]. + * ename:VK_COMPARE_OP_NOT_EQUAL: the test passes when latexmath:[$R \neq + S$]. + * ename:VK_COMPARE_OP_GREATER_OR_EQUAL: the test passes when latexmath:[$R + \geq S$]. + * ename:VK_COMPARE_OP_ALWAYS: the test always passes. + +// refEnd VkCompareOp + + See Also -------- +slink:VkPipelineDepthStencilStateCreateInfo, slink:VkSamplerCreateInfo, slink:VkStencilOpState + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCompareOp + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkComponentMapping.txt b/doc/specs/vulkan/man/VkComponentMapping.txt index 637576fda6..e066dafcb9 100644 --- a/doc/specs/vulkan/man/VkComponentMapping.txt +++ b/doc/specs/vulkan/man/VkComponentMapping.txt @@ -1,27 +1,94 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkComponentMapping(3) ===================== Name ---- -VkComponentMapping - Stub page (not yet written) +VkComponentMapping - Structure specifying a color component mapping C Specification --------------- +// refBegin VkComponentMapping - Structure specifying a color component mapping + +The sname:VkComponentMapping structure is defined as: + include::../structs/VkComponentMapping.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:r determines the component value placed in the R component of the + output vector. + * pname:g determines the component value placed in the G component of the + output vector. + * pname:b determines the component value placed in the B component of the + output vector. + * pname:a determines the component value placed in the A component of the + output vector. + Description ----------- +Each of pname:r, pname:g, pname:b, and pname:a is one of the values: + +// refBegin VkComponentSwizzle - specify how a component is swizzled +include::../enums/VkComponentSwizzle.txt[] + + * ename:VK_COMPONENT_SWIZZLE_IDENTITY: the component is set to the + identity swizzle. + * ename:VK_COMPONENT_SWIZZLE_ZERO: the component is set to zero. + * ename:VK_COMPONENT_SWIZZLE_ONE: the component is set to either 1 or 1.0 + depending on whether the type of the image view format is integer or + floating-point respectively, as determined by the + <> section for each + elink:VkFormat. + * ename:VK_COMPONENT_SWIZZLE_R: the component is set to the value + of the R component of the image. + * ename:VK_COMPONENT_SWIZZLE_G: the component is set to the value + of the G component of the image. + * ename:VK_COMPONENT_SWIZZLE_B: the component is set to the value + of the B component of the image. + * ename:VK_COMPONENT_SWIZZLE_A: the component is set to the value + of the A component of the image. + +Setting the identity swizzle on a component is equivalent to setting the +identity mapping on that component. That is: + +[[resources-image-views-identity-mappings]] +.Component Mappings Equivalent To ename:VK_COMPONENT_SWIZZLE_IDENTITY +[options="header"] +|==== +| Component | Identity Mapping +| pname:components.r | ename:VK_COMPONENT_SWIZZLE_R +| pname:components.g | ename:VK_COMPONENT_SWIZZLE_G +| pname:components.b | ename:VK_COMPONENT_SWIZZLE_B +| pname:components.a | ename:VK_COMPONENT_SWIZZLE_A +|==== + include::../validity/structs/VkComponentMapping.txt[] + + See Also -------- +elink:VkComponentSwizzle, slink:VkImageViewCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkComponentMapping + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkComponentSwizzle.txt b/doc/specs/vulkan/man/VkComponentSwizzle.txt index ac2accdd2f..615db68fe2 100644 --- a/doc/specs/vulkan/man/VkComponentSwizzle.txt +++ b/doc/specs/vulkan/man/VkComponentSwizzle.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkComponentSwizzle(3) ===================== Name ---- -VkComponentSwizzle - Stub page (not yet written) +VkComponentSwizzle - specify how a component is swizzled C Specification --------------- +// refBegin VkComponentSwizzle - specify how a component is swizzled include::../enums/VkComponentSwizzle.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkComponentMapping, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkComponentMapping + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkComponentSwizzle + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCompositeAlphaFlagBitsKHR.txt b/doc/specs/vulkan/man/VkCompositeAlphaFlagBitsKHR.txt deleted file mode 100644 index 5a2535d8ee..0000000000 --- a/doc/specs/vulkan/man/VkCompositeAlphaFlagBitsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkCompositeAlphaFlagBitsKHR(3) -============================== - -Name ----- -VkCompositeAlphaFlagBitsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkCompositeAlphaFlagBitsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkCompositeAlphaFlagsKHR.txt b/doc/specs/vulkan/man/VkCompositeAlphaFlagsKHR.txt deleted file mode 100644 index 9ab1b33548..0000000000 --- a/doc/specs/vulkan/man/VkCompositeAlphaFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkCompositeAlphaFlagsKHR(3) -=========================== - -Name ----- -VkCompositeAlphaFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkCompositeAlphaFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkComputePipelineCreateInfo.txt b/doc/specs/vulkan/man/VkComputePipelineCreateInfo.txt index d656fb6c36..5573369a6e 100644 --- a/doc/specs/vulkan/man/VkComputePipelineCreateInfo.txt +++ b/doc/specs/vulkan/man/VkComputePipelineCreateInfo.txt @@ -1,27 +1,68 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkComputePipelineCreateInfo(3) ============================== Name ---- -VkComputePipelineCreateInfo - Stub page (not yet written) +VkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline C Specification --------------- +// refBegin VkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline + +The sname:VkComputePipelineCreateInfo structure is defined as: + include::../structs/VkComputePipelineCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags provides options for pipeline creation, and is of type + elink:VkPipelineCreateFlagBits. + * pname:stage is a slink:VkPipelineShaderStageCreateInfo describing the + compute shader. + * pname:layout is the description of binding locations used by both the + pipeline and descriptor sets used with the pipeline. + * pname:basePipelineHandle is a pipeline to derive from + * pname:basePipelineIndex is an index into the pname:pCreateInfos + parameter to use as a pipeline to derive from + Description ----------- +The parameters pname:basePipelineHandle and pname:basePipelineIndex are +described in more detail in +<>. + +pname:stage points to a structure of type +sname:VkPipelineShaderStageCreateInfo. + include::../validity/structs/VkComputePipelineCreateInfo.txt[] + + See Also -------- +slink:VkPipeline, elink:VkPipelineCreateFlags, slink:VkPipelineLayout, slink:VkPipelineShaderStageCreateInfo, elink:VkStructureType, flink:vkCreateComputePipelines + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkComputePipelineCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCopyDescriptorSet.txt b/doc/specs/vulkan/man/VkCopyDescriptorSet.txt index 8428caf1de..7b17d990fe 100644 --- a/doc/specs/vulkan/man/VkCopyDescriptorSet.txt +++ b/doc/specs/vulkan/man/VkCopyDescriptorSet.txt @@ -1,27 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCopyDescriptorSet(3) ====================== Name ---- -VkCopyDescriptorSet - Stub page (not yet written) +VkCopyDescriptorSet - Structure specifying a copy descriptor set operation C Specification --------------- +// refBegin VkCopyDescriptorSet - Structure specifying a copy descriptor set operation + +The sname:VkCopyDescriptorSet structure is defined as: + include::../structs/VkCopyDescriptorSet.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:srcSet, pname:srcBinding, and pname:srcArrayElement are the + source set, binding, and array element, respectively. + * pname:dstSet, pname:dstBinding, and pname:dstArrayElement are the + destination set, binding, and array element, respectively. + * pname:descriptorCount is the number of descriptors to copy from + the source to destination. If pname:descriptorCount is greater than the + number of remaining array elements in the source or destination binding, + those affect consecutive bindings in a manner similar to + slink:VkWriteDescriptorSet above. + Description ----------- include::../validity/structs/VkCopyDescriptorSet.txt[] + + See Also -------- +slink:VkDescriptorSet, elink:VkStructureType, flink:vkUpdateDescriptorSets + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCopyDescriptorSet + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCullModeFlagBits.txt b/doc/specs/vulkan/man/VkCullModeFlagBits.txt index 00fb5d3d51..5ff9e04557 100644 --- a/doc/specs/vulkan/man/VkCullModeFlagBits.txt +++ b/doc/specs/vulkan/man/VkCullModeFlagBits.txt @@ -1,26 +1,56 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCullModeFlagBits(3) ===================== Name ---- -VkCullModeFlagBits - Stub page (not yet written) +VkCullModeFlagBits - Bitmask controlling triangle culling C Specification --------------- -include::../enums/VkCullModeFlagBits.txt[] +// refBegin VkCullModeFlagBits - Bitmask controlling triangle culling -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Once the orientation of triangles is determined, they are culled according +to the setting of the +slink:VkPipelineRasterizationStateCreateInfo::pname:cullMode property of the +currently active pipeline, which takes the following values: + +include::../enums/VkCullModeFlagBits.txt[] -Constants ---------- Description ----------- +If the pname:cullMode is set to ename:VK_CULL_MODE_NONE no triangles are +discarded, if it is set to ename:VK_CULL_MODE_FRONT_BIT front-facing +triangles are discarded, if it is set to ename:VK_CULL_MODE_BACK_BIT then +back-facing triangles are discarded and if it is set to +ename:VK_CULL_MODE_FRONT_AND_BACK then all triangles are discarded. +Following culling, fragments are produced for any triangles which have not +been discarded. + +// refEnd VkCullModeFlagBits + + See Also -------- +elink:VkCullModeFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCullModeFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkCullModeFlags.txt b/doc/specs/vulkan/man/VkCullModeFlags.txt index 4167410ff1..86adc05431 100644 --- a/doc/specs/vulkan/man/VkCullModeFlags.txt +++ b/doc/specs/vulkan/man/VkCullModeFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkCullModeFlags(3) ================== Name ---- -VkCullModeFlags - Stub page (not yet written) +VkCullModeFlags - Bitmask of VkCullModeFlagBits C Specification --------------- include::../flags/VkCullModeFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkCullModeFlags is a mask of zero or more elink:VkCullModeFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkCullModeFlagBits, slink:VkPipelineRasterizationStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkCullModeFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDebugReportCallbackCreateInfoEXT.txt b/doc/specs/vulkan/man/VkDebugReportCallbackCreateInfoEXT.txt deleted file mode 100644 index 947099e596..0000000000 --- a/doc/specs/vulkan/man/VkDebugReportCallbackCreateInfoEXT.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDebugReportCallbackCreateInfoEXT(3) -===================================== - -Name ----- -VkDebugReportCallbackCreateInfoEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDebugReportCallbackCreateInfoEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDebugReportCallbackCreateInfoEXT.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDebugReportErrorEXT.txt b/doc/specs/vulkan/man/VkDebugReportErrorEXT.txt deleted file mode 100644 index 43fdf9fc6b..0000000000 --- a/doc/specs/vulkan/man/VkDebugReportErrorEXT.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDebugReportErrorEXT(3) -======================== - -Name ----- -VkDebugReportErrorEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkDebugReportErrorEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDebugReportFlagBitsEXT.txt b/doc/specs/vulkan/man/VkDebugReportFlagBitsEXT.txt deleted file mode 100644 index 3df8b3dd4e..0000000000 --- a/doc/specs/vulkan/man/VkDebugReportFlagBitsEXT.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDebugReportFlagBitsEXT(3) -=========================== - -Name ----- -VkDebugReportFlagBitsEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkDebugReportFlagBitsEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDebugReportFlagsEXT.txt b/doc/specs/vulkan/man/VkDebugReportFlagsEXT.txt deleted file mode 100644 index 5e2c52bb64..0000000000 --- a/doc/specs/vulkan/man/VkDebugReportFlagsEXT.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDebugReportFlagsEXT(3) -======================== - -Name ----- -VkDebugReportFlagsEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkDebugReportFlagsEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDebugReportObjectTypeEXT.txt b/doc/specs/vulkan/man/VkDebugReportObjectTypeEXT.txt deleted file mode 100644 index 3d196b9f19..0000000000 --- a/doc/specs/vulkan/man/VkDebugReportObjectTypeEXT.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDebugReportObjectTypeEXT(3) -============================= - -Name ----- -VkDebugReportObjectTypeEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkDebugReportObjectTypeEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDependencyFlagBits.txt b/doc/specs/vulkan/man/VkDependencyFlagBits.txt index cad6ef7168..43db137aa7 100644 --- a/doc/specs/vulkan/man/VkDependencyFlagBits.txt +++ b/doc/specs/vulkan/man/VkDependencyFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDependencyFlagBits(3) ======================= Name ---- -VkDependencyFlagBits - Stub page (not yet written) +VkDependencyFlagBits - Bitmask specifying dependencies between subpasses C Specification --------------- +// refBegin VkDependencyFlagBits - Bitmask specifying dependencies between subpasses include::../enums/VkDependencyFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSubpassDependency, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkDependencyFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDependencyFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDependencyFlags.txt b/doc/specs/vulkan/man/VkDependencyFlags.txt index cb0c296b7e..318c97b0aa 100644 --- a/doc/specs/vulkan/man/VkDependencyFlags.txt +++ b/doc/specs/vulkan/man/VkDependencyFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDependencyFlags(3) ==================== Name ---- -VkDependencyFlags - Stub page (not yet written) +VkDependencyFlags - Bitmask of VkDependencyFlagBits C Specification --------------- include::../flags/VkDependencyFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDependencyFlags is a mask of zero or more elink:VkDependencyFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkDependencyFlagBits, slink:VkSubpassDependency, flink:vkCmdPipelineBarrier + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDependencyFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorBufferInfo.txt b/doc/specs/vulkan/man/VkDescriptorBufferInfo.txt index 03be87c064..ee5883fae2 100644 --- a/doc/specs/vulkan/man/VkDescriptorBufferInfo.txt +++ b/doc/specs/vulkan/man/VkDescriptorBufferInfo.txt @@ -1,27 +1,62 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorBufferInfo(3) ========================= Name ---- -VkDescriptorBufferInfo - Stub page (not yet written) +VkDescriptorBufferInfo - Structure specifying descriptor buffer info C Specification --------------- +// refBegin VkDescriptorBufferInfo - Structure specifying descriptor buffer info + +The sname:VkDescriptorBufferInfo structure is defined as: + include::../structs/VkDescriptorBufferInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:buffer is the buffer resource. + * pname:offset is the offset in bytes from the start of pname:buffer. + Access to buffer memory via this descriptor uses addressing that is + relative to this starting offset. + * pname:range is the size in bytes that is used for this descriptor + update, or ename:VK_WHOLE_SIZE to use the range from pname:offset to the + end of the buffer. + Description ----------- +For ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and +ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types, +pname:offset is the base offset from which the dynamic offset is applied and +pname:range is the static size used for all dynamic offsets. + include::../validity/structs/VkDescriptorBufferInfo.txt[] + + See Also -------- +slink:VkBuffer, basetypes:VkDeviceSize, slink:VkWriteDescriptorSet + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorBufferInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorImageInfo.txt b/doc/specs/vulkan/man/VkDescriptorImageInfo.txt index b5b40cc0e9..1ce3970c0a 100644 --- a/doc/specs/vulkan/man/VkDescriptorImageInfo.txt +++ b/doc/specs/vulkan/man/VkDescriptorImageInfo.txt @@ -1,27 +1,68 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorImageInfo(3) ======================== Name ---- -VkDescriptorImageInfo - Stub page (not yet written) +VkDescriptorImageInfo - Structure specifying descriptor image info C Specification --------------- +// refBegin VkDescriptorImageInfo - Structure specifying descriptor image info + +The sname:VkDescriptorImageInfo structure is defined as: + include::../structs/VkDescriptorImageInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sampler is a sampler handle, and is used in descriptor updates for + types ename:VK_DESCRIPTOR_TYPE_SAMPLER and + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER if the binding being + updated does not use immutable samplers. + * pname:imageView is an image view handle, and is used in descriptor + updates for types ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, + ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. + * pname:imageLayout is the layout that the image will be in at the time + this descriptor is accessed. pname:imageLayout is used in descriptor + updates for types ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, + ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. + Description ----------- +Members of sname:VkDescriptorImageInfo that are not used in an update (as +described above) are ignored. + include::../validity/structs/VkDescriptorImageInfo.txt[] + + See Also -------- +elink:VkImageLayout, slink:VkImageView, slink:VkSampler, slink:VkWriteDescriptorSet + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorImageInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPool.txt b/doc/specs/vulkan/man/VkDescriptorPool.txt new file mode 100644 index 0000000000..0fdc02e2c7 --- /dev/null +++ b/doc/specs/vulkan/man/VkDescriptorPool.txt @@ -0,0 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDescriptorPool(3) +=================== + +Name +---- +VkDescriptorPool - Opaque handle to a descriptor pool object + +C Specification +--------------- + +// refBegin VkDescriptorPool - Opaque handle to a descriptor pool object + +A _descriptor pool_ +maintains a pool of descriptors, from which descriptor sets are allocated. +Descriptor pools are externally synchronized, meaning that the application +mustnot: allocate and/or free descriptor sets from the same pool in multiple +threads simultaneously. + +Descriptor pools are represented by sname:VkDescriptorPool handles: + +include::../handles/VkDescriptorPool.txt[] + + +Description +----------- + +// refEnd VkDescriptorPool + + +See Also +-------- + +slink:VkDescriptorSetAllocateInfo, flink:vkCreateDescriptorPool, flink:vkDestroyDescriptorPool, flink:vkFreeDescriptorSets, flink:vkResetDescriptorPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPoolCreateFlagBits.txt b/doc/specs/vulkan/man/VkDescriptorPoolCreateFlagBits.txt index ea1b9d6edc..e0559721e1 100644 --- a/doc/specs/vulkan/man/VkDescriptorPoolCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkDescriptorPoolCreateFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorPoolCreateFlagBits(3) ================================= Name ---- -VkDescriptorPoolCreateFlagBits - Stub page (not yet written) +VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool C Specification --------------- +// refBegin VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool include::../enums/VkDescriptorPoolCreateFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkDescriptorPoolCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkDescriptorPoolCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolCreateFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPoolCreateFlags.txt b/doc/specs/vulkan/man/VkDescriptorPoolCreateFlags.txt index 1ed6938723..2c3cb7a9a7 100644 --- a/doc/specs/vulkan/man/VkDescriptorPoolCreateFlags.txt +++ b/doc/specs/vulkan/man/VkDescriptorPoolCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorPoolCreateFlags(3) ============================== Name ---- -VkDescriptorPoolCreateFlags - Stub page (not yet written) +VkDescriptorPoolCreateFlags - Bitmask of VkDescriptorPoolCreateFlagBits C Specification --------------- include::../flags/VkDescriptorPoolCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDescriptorPoolCreateFlags is a mask of zero or more elink:VkDescriptorPoolCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkDescriptorPoolCreateFlagBits, slink:VkDescriptorPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPoolCreateInfo.txt b/doc/specs/vulkan/man/VkDescriptorPoolCreateInfo.txt index 22b1fcacef..12ae0f7535 100644 --- a/doc/specs/vulkan/man/VkDescriptorPoolCreateInfo.txt +++ b/doc/specs/vulkan/man/VkDescriptorPoolCreateInfo.txt @@ -1,27 +1,101 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorPoolCreateInfo(3) ============================= Name ---- -VkDescriptorPoolCreateInfo - Stub page (not yet written) +VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool C Specification --------------- +// refBegin VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool + +Additional information about the pool is passed in an instance of the +sname:VkDescriptorPoolCreateInfo structure: + include::../structs/VkDescriptorPoolCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags specifies certain supported operations on the pool. + Bits which can: be set include: ++ +-- +// refBegin VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool +include::../enums/VkDescriptorPoolCreateFlagBits.txt[] +-- ++ +If pname:flags includes +ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, then descriptor +sets can: return their individual allocations to the pool, i.e. all of +fname:vkAllocateDescriptorSets, fname:vkFreeDescriptorSets, and +fname:vkResetDescriptorPool are allowed. Otherwise, descriptor sets +allocated from the pool mustnot: be individually freed back to the pool, +i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are +allowed. ++ + * pname:maxSets is the maximum number of descriptor sets that can: + be allocated from the pool. + * pname:poolSizeCount is the number of elements in pname:pPoolSizes. + * pname:pPoolSizes is a pointer to an array of sname:VkDescriptorPoolSize + structures, each containing a descriptor type and number of descriptors + of that type to be allocated in the pool. + Description ----------- +If multiple sname:VkDescriptorPoolSize structures appear in the +pname:pPoolSizes array then the pool will be created with enough storage +for the total number of descriptors of each type. + +Fragmentation of a descriptor pool is possible and may: lead to descriptor +set allocation failures. A failure due to fragmentation is defined as +failing a descriptor set allocation despite the sum of all outstanding +descriptor set allocations from the pool plus the requested allocation +requiring no more than the total number of descriptors requested at pool +creation. Implementations provide certain guarantees of when fragmentation +mustnot: cause allocation failure, as described below. + +If a descriptor pool has not had any descriptor sets freed since it was +created or most recently reset then fragmentation mustnot: cause an +allocation failure (note that this is always the case for a pool created +without the ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT bit +set). Additionally, if all sets allocated from the pool since it was created +or most recently reset use the same number of descriptors (of each type) and +the requested allocation also uses that same number of descriptors (of each +type), then fragmentation mustnot: cause an allocation failure. + +If an allocation failure occurs due to fragmentation, an application can: +create an additional descriptor pool to perform further descriptor set +allocations. + include::../validity/structs/VkDescriptorPoolCreateInfo.txt[] + + See Also -------- +elink:VkDescriptorPoolCreateFlags, slink:VkDescriptorPoolSize, elink:VkStructureType, flink:vkCreateDescriptorPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPoolResetFlags.txt b/doc/specs/vulkan/man/VkDescriptorPoolResetFlags.txt index 827acdb2b5..897f4a9e43 100644 --- a/doc/specs/vulkan/man/VkDescriptorPoolResetFlags.txt +++ b/doc/specs/vulkan/man/VkDescriptorPoolResetFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorPoolResetFlags(3) ============================= Name ---- -VkDescriptorPoolResetFlags - Stub page (not yet written) +VkDescriptorPoolResetFlags - Bitmask of VkDescriptorPoolResetFlagBits C Specification --------------- include::../flags/VkDescriptorPoolResetFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDescriptorPoolResetFlags is a mask of zero or more elink:VkDescriptorPoolResetFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +flink:vkResetDescriptorPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolResetFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorPoolSize.txt b/doc/specs/vulkan/man/VkDescriptorPoolSize.txt index 29e31b784d..c2c4c9e3c3 100644 --- a/doc/specs/vulkan/man/VkDescriptorPoolSize.txt +++ b/doc/specs/vulkan/man/VkDescriptorPoolSize.txt @@ -1,27 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorPoolSize(3) ======================= Name ---- -VkDescriptorPoolSize - Stub page (not yet written) +VkDescriptorPoolSize - Structure specifying descriptor pool size C Specification --------------- +// refBegin VkDescriptorPoolSize - Structure specifying descriptor pool size + +The sname:VkDescriptorPoolSize structure is defined as: + include::../structs/VkDescriptorPoolSize.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:type is the type of descriptor. + * pname:descriptorCount is the number of descriptors of that type + to allocate. + Description ----------- include::../validity/structs/VkDescriptorPoolSize.txt[] + + See Also -------- +slink:VkDescriptorPoolCreateInfo, elink:VkDescriptorType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolSize + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSet.txt b/doc/specs/vulkan/man/VkDescriptorSet.txt new file mode 100644 index 0000000000..2a190fa2c7 --- /dev/null +++ b/doc/specs/vulkan/man/VkDescriptorSet.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDescriptorSet(3) +================== + +Name +---- +VkDescriptorSet - Opaque handle to a descriptor set object + +C Specification +--------------- + +// refBegin VkDescriptorSet - Opaque handle to a descriptor set object + +Descriptor sets are allocated from descriptor pool objects, and +are represented by sname:VkDescriptorSet handles: + +include::../handles/VkDescriptorSet.txt[] + + +Description +----------- + +// refEnd VkDescriptorSet + + +See Also +-------- + +slink:VkCopyDescriptorSet, slink:VkWriteDescriptorSet, flink:vkAllocateDescriptorSets, flink:vkCmdBindDescriptorSets, flink:vkFreeDescriptorSets + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSet + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSetAllocateInfo.txt b/doc/specs/vulkan/man/VkDescriptorSetAllocateInfo.txt index 4bc5d3ffad..80fbc83558 100644 --- a/doc/specs/vulkan/man/VkDescriptorSetAllocateInfo.txt +++ b/doc/specs/vulkan/man/VkDescriptorSetAllocateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorSetAllocateInfo(3) ============================== @@ -8,37 +12,46 @@ VkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for C Specification --------------- -include::../structs/VkDescriptorSetAllocateInfo.txt[] +// refBegin VkDescriptorSetAllocateInfo Structure specifying the allocation parameters for descriptor sets. -Fields ------- +The sname:VkDescriptorSetAllocateInfo structure is defined as: -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO. +include::../structs/VkDescriptorSetAllocateInfo.txt[] -pname:pNext:: - Pointer to next structure in the structure chain when applicable. -pname:descriptorPool:: - The pool from which to allocate the descriptor sets. +Members +------- -pname:descriptorSetCount:: - The number of descriptor sets to allocate. + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:descriptorPool is the pool which the sets will be allocated from. + * pname:descriptorSetCount determines the number of descriptor sets to be + allocated from the pool. + * pname:pSetLayouts is an array of descriptor set layouts, with each + member specifying how the corresponding descriptor set is allocated. -pname:pSetLayouts:: - An array of pname:descriptorSetCount handles to descriptor set layouts objects describing the descriptor sets. Description ----------- -This structure is used to specify the parameters of descriptor set objects allocated using -flink:vkAllocateDescriptorSets. - include::../validity/structs/VkDescriptorSetAllocateInfo.txt[] + See Also -------- -flink:vkAllocateDescriptorSets +slink:VkDescriptorPool, slink:VkDescriptorSetLayout, elink:VkStructureType, flink:vkAllocateDescriptorSets + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSetAllocateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSetLayout.txt b/doc/specs/vulkan/man/VkDescriptorSetLayout.txt new file mode 100644 index 0000000000..76d6a7c898 --- /dev/null +++ b/doc/specs/vulkan/man/VkDescriptorSetLayout.txt @@ -0,0 +1,52 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDescriptorSetLayout(3) +======================== + +Name +---- +VkDescriptorSetLayout - Opaque handle to a descriptor set layout object + +C Specification +--------------- + +// refBegin VkDescriptorSetLayout - Opaque handle to a descriptor set layout object + +A descriptor set layout object is defined by an array of zero or more +descriptor bindings. Each individual descriptor binding is specified by a +descriptor type, a count (array size) of the number of descriptors in the +binding, a set of shader stages that can: access the binding, and (if using +immutable samplers) an array of sampler descriptors. + +Descriptor set layout objects are represented by sname:VkDescriptorSetLayout +handles: + +include::../handles/VkDescriptorSetLayout.txt[] + + +Description +----------- + +// refEnd VkDescriptorSetLayout + + +See Also +-------- + +slink:VkDescriptorSetAllocateInfo, slink:VkPipelineLayoutCreateInfo, flink:vkCreateDescriptorSetLayout, flink:vkDestroyDescriptorSetLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSetLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSetLayoutBinding.txt b/doc/specs/vulkan/man/VkDescriptorSetLayoutBinding.txt index 27d6322d49..8ffce9ff16 100644 --- a/doc/specs/vulkan/man/VkDescriptorSetLayoutBinding.txt +++ b/doc/specs/vulkan/man/VkDescriptorSetLayoutBinding.txt @@ -1,27 +1,100 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorSetLayoutBinding(3) =============================== Name ---- -VkDescriptorSetLayoutBinding - Stub page (not yet written) +VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding C Specification --------------- +// refBegin VkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding + +The sname:VkDescriptorSetLayoutBinding structure is defined as: + include::../structs/VkDescriptorSetLayoutBinding.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:binding is the binding number of this entry and corresponds + to a resource of the same binding number in the shader stages. + * pname:descriptorType is an elink:VkDescriptorType specifying which type + of resource descriptors are used for this binding. + * pname:descriptorCount is the number of descriptors contained in the + binding, accessed in a shader as an array. If pname:descriptorCount is + zero this binding entry is reserved and the resource mustnot: be + accessed from any stage via this binding within any pipeline using the + set layout. + * pname:stageFlags member is a bitmask of elink:VkShaderStageFlagBits + specifying which pipeline shader stages can: access a resource for this + binding. ename:VK_SHADER_STAGE_ALL is a shorthand specifying that all + defined shader stages, including any additional stages defined by + extensions, can: access the resource. ++ +-- +If a shader stage is not included in pname:stageFlags, then a resource +mustnot: be accessed from that stage via this binding within any pipeline +using the set layout. There are no limitations on what combinations of +stages can: be used by a descriptor binding, and in particular a binding +can: be used by both graphics stages and the compute stage. +-- + * pname:pImmutableSamplers affects initialization of samplers. If + pname:descriptorType specifies a ename:VK_DESCRIPTOR_TYPE_SAMPLER or + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER type descriptor, then + pname:pImmutableSamplers can: be used to initialize a set of _immutable + samplers_. Immutable samplers are permanently bound into the set layout; + later binding a sampler into an immutable sampler slot in a descriptor + set is not allowed. If pname:pImmutableSamplers is not `NULL`, then it + is considered to be a pointer to an array of sampler handles that will + be consumed by the set layout and used for the corresponding binding. If + pname:pImmutableSamplers is `NULL`, then the sampler slots are dynamic + and sampler handles must: be bound into descriptor sets using this + layout. If pname:descriptorType is not one of these descriptor types, + then pname:pImmutableSamplers is ignored. + Description ----------- +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. However, +all binding numbers between 0 and the maximum binding number may: consume +memory in the descriptor set layout even if not all descriptor bindings are +used, though it shouldnot: +consume additional memory from the descriptor pool. + +[NOTE] +.Note +==== +The maximum binding number specified should: be as compact as possible to +avoid wasted memory. +==== + include::../validity/structs/VkDescriptorSetLayoutBinding.txt[] + + See Also -------- +slink:VkDescriptorSetLayoutCreateInfo, elink:VkDescriptorType, slink:VkSampler, elink:VkShaderStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSetLayoutBinding + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateFlags.txt b/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateFlags.txt index 4117bd43f2..009079b7cb 100644 --- a/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateFlags.txt +++ b/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorSetLayoutCreateFlags(3) =================================== Name ---- -VkDescriptorSetLayoutCreateFlags - Stub page (not yet written) +VkDescriptorSetLayoutCreateFlags - Bitmask of VkDescriptorSetLayoutCreateFlagBits C Specification --------------- include::../flags/VkDescriptorSetLayoutCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDescriptorSetLayoutCreateFlags is a mask of zero or more elink:VkDescriptorSetLayoutCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkDescriptorSetLayoutCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSetLayoutCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateInfo.txt b/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateInfo.txt index 40baa1b4a4..ffc4f6ddfa 100644 --- a/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateInfo.txt +++ b/doc/specs/vulkan/man/VkDescriptorSetLayoutCreateInfo.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorSetLayoutCreateInfo(3) ================================== Name ---- -VkDescriptorSetLayoutCreateInfo - Stub page (not yet written) +VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout C Specification --------------- +// refBegin VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout + +Information about the descriptor set layout is passed in an instance of the +sname:VkDescriptorSetLayoutCreateInfo structure: + include::../structs/VkDescriptorSetLayoutCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:bindingCount is the number of elements in pname:pBindings. + * pname:pBindings is a pointer to an array of + slink:VkDescriptorSetLayoutBinding structures. + Description ----------- include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[] + + See Also -------- +slink:VkDescriptorSetLayoutBinding, elink:VkDescriptorSetLayoutCreateFlags, elink:VkStructureType, flink:vkCreateDescriptorSetLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorSetLayoutCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDescriptorType.txt b/doc/specs/vulkan/man/VkDescriptorType.txt index 766c69b33e..9e9ea5845d 100644 --- a/doc/specs/vulkan/man/VkDescriptorType.txt +++ b/doc/specs/vulkan/man/VkDescriptorType.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDescriptorType(3) =================== @@ -8,104 +12,58 @@ VkDescriptorType - Specifies the type of a descriptor in a descriptor set. C Specification --------------- +// refBegin VkDescriptorType Specifies the type of a descriptor in a descriptor set. + +The type of descriptors in a descriptor set is specified by +slink:VkWriteDescriptorSet::pname:descriptorType, which must: be one of the +values: + include::../enums/VkDescriptorType.txt[] -Constants ---------- - -ename:VK_DESCRIPTOR_TYPE_SAMPLER:: - Identifies a sampler descriptor which refers the state of a sampler object. + - A descriptor of this type enables shaders to perform filtered sampling of any compatible image - resource using the referenced sampler in conjunction with a corresponding sampled image descriptor. - -ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:: - Identifies a combined image sampler descriptor which refers the state of a sampler object - and an image view object being in a compatible image layout. + - A descriptor of this type enables shaders to perform filtered or unfiltered sampling of the - referenced image view using the referenced sampler. + - This descriptor type is compatible with image views having one of the following image layouts: - ename:VK_IMAGE_LAYOUT_GENERAL, ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - or ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL. + - This descriptor type is compatible with image views of image objects created with the - ename:VK_IMAGE_USAGE_SAMPLED_BIT usage flag. - -ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:: - Identifies a sampled image descriptor which refers the state of an image view object being in a - compatible image layout. + - A descriptor of this type enables shaders to perform unfiltered sampling of the referenced image - view, or can be used in conjunction with a sampler descriptor to perform filtered sampling of the - referenced image view. + - This descriptor type is compatible with image views in any of the following layouts: - ename:VK_IMAGE_LAYOUT_GENERAL, ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - or ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL. + - This descriptor type is compatible with image views of image objects created with the - ename:VK_IMAGE_USAGE_SAMPLED_BIT usage flag. - -ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:: - Identifies a storage image descriptor which refers the state of an image view object being in a - compatible image layout. + - A descriptor of this type enables shaders to perform loads, stores, and atomic operations on the - referenced image view. + - This descriptor type is compatible with image views in any of the following layouts: - ename:VK_IMAGE_LAYOUT_GENERAL or ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL. - However, stores and atomic operations can only be performed on image views in the - ename:VK_IMAGE_LAYOUT_GENERAL layout. + - This descriptor type is compatible with image views of image objects created with the - ename:VK_IMAGE_USAGE_STORAGE_BIT usage flag. - -ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:: - Identifies a uniform texel buffer descriptor which refers the state of a buffer view object. + - A descriptor of this type enables shaders to perform reads of uniform texel data from the referenced - buffer view. + - -ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:: - Identifies a storage texel buffer descriptor which refers the state of a buffer view object. + - A descriptor of this type enables shaders to perform loads, stores, and atomic operations on the - texel data of the referenced buffer view. + - -ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:: - Identifies a uniform buffer descriptor which refers the state of a buffer view object. + - A descriptor of this type enables shaders to perform reads of uniform block data in the - referenced buffer and offset. + - -ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:: - Identifies a storage buffer descriptor which refers the state of a buffer view object. + - A descriptor of this type enables shaders to perform loads, stores, and atomic operations of - storage block data in the referenced buffer and offset. + - -ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:: - Identifies a uniform buffer descriptor with dynamic offset support. + - The only difference compared to ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER is that descriptors of this - type do not take their offset parameter from the buffer view's corresponding state, but instead - allow the application to specify the offset value dynamically at the time the descriptor set - containing the descriptor is bound using flink:vkCmdBindDescriptorSets. - -ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:: - Identifies a storage buffer descriptor with dynamic offset support. + - The only difference compared to ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER is that descriptors of this - type do not take their offset parameter from the buffer view's corresponding state, but instead - allow the application to specify the offset value dynamically at the time the descriptor set - containing the descriptor is bound using flink:vkCmdBindDescriptorSets. - -ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:: - Identifies an input attachment descriptor which refers to the state of an attachment view - object. + - A descriptor of this type enables shaders to perform loads from images on the referenced - attachment view. + - This descriptor type is compatible with image views in any of the following layouts: - ename:VK_IMAGE_LAYOUT_GENERAL or ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL. This - descriptor type is compatible with image views of image objects created with the - ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage flag. Description ----------- -The constants of this enumeration are used to identify the type of the descriptors in various descriptor -set and descriptor pool handling commands. +If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, +ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, +ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or +ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the elements of the +slink:VkWriteDescriptorSet::pname:pBufferInfo array of +slink:VkDescriptorBufferInfo structures will be used to update the +descriptors, and other arrays will be ignored. + +If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or +ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the +slink:VkWriteDescriptorSet::pname:pTexelBufferView array will be used to +update the descriptors, and other arrays will be ignored. + +If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER, +ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, +ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, +ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or +ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the +slink:VkWriteDescriptorSet::pname:pImageInfo array of +slink:VkDescriptorImageInfo structures will be used to update the +descriptors, and other arrays will be ignored. + +// refEnd VkDescriptorType + See Also -------- -slink:VkDescriptorSetLayoutBinding +slink:VkDescriptorPoolSize, slink:VkDescriptorSetLayoutBinding, slink:VkWriteDescriptorSet + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDevice.txt b/doc/specs/vulkan/man/VkDevice.txt new file mode 100644 index 0000000000..0689a0fa3c --- /dev/null +++ b/doc/specs/vulkan/man/VkDevice.txt @@ -0,0 +1,45 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDevice(3) +=========== + +Name +---- +VkDevice - Opaque handle to a device object + +C Specification +--------------- + +// refBegin VkDevice - Opaque handle to a device object + +Logical devices are represented by sname:VkDevice handles: + +include::../handles/VkDevice.txt[] + + +Description +----------- + +// refEnd VkDevice + + +See Also +-------- + +flink:vkAllocateCommandBuffers, flink:vkAllocateDescriptorSets, flink:vkAllocateMemory, flink:vkBindBufferMemory, flink:vkBindImageMemory, flink:vkCreateBuffer, flink:vkCreateBufferView, flink:vkCreateCommandPool, flink:vkCreateComputePipelines, flink:vkCreateDescriptorPool, flink:vkCreateDescriptorSetLayout, flink:vkCreateDevice, flink:vkCreateEvent, flink:vkCreateFence, flink:vkCreateFramebuffer, flink:vkCreateGraphicsPipelines, flink:vkCreateImage, flink:vkCreateImageView, flink:vkCreatePipelineCache, flink:vkCreatePipelineLayout, flink:vkCreateQueryPool, flink:vkCreateRenderPass, flink:vkCreateSampler, flink:vkCreateSemaphore, flink:vkCreateShaderModule, flink:vkDestroyBuffer, flink:vkDestroyBufferView, flink:vkDestroyCommandPool, flink:vkDestroyDescriptorPool, flink:vkDestroyDescriptorSetLayout, flink:vkDestroyDevice, flink:vkDestroyEvent, flink:vkDestroyFence, flink:vkDestroyFramebuffer, flink:vkDestroyImage, flink:vkDestroyImageView, flink:vkDestroyPipeline, flink:vkDestroyPipelineCache, flink:vkDestroyPipelineLayout, flink:vkDestroyQueryPool, flink:vkDestroyRenderPass, flink:vkDestroySampler, flink:vkDestroySemaphore, flink:vkDestroyShaderModule, flink:vkDeviceWaitIdle, flink:vkFlushMappedMemoryRanges, flink:vkFreeCommandBuffers, flink:vkFreeDescriptorSets, flink:vkFreeMemory, flink:vkGetBufferMemoryRequirements, flink:vkGetDeviceMemoryCommitment, flink:vkGetDeviceProcAddr, flink:vkGetDeviceQueue, flink:vkGetEventStatus, flink:vkGetFenceStatus, flink:vkGetImageMemoryRequirements, flink:vkGetImageSparseMemoryRequirements, flink:vkGetImageSubresourceLayout, flink:vkGetPipelineCacheData, flink:vkGetQueryPoolResults, flink:vkGetRenderAreaGranularity, flink:vkInvalidateMappedMemoryRanges, flink:vkMapMemory, flink:vkMergePipelineCaches, flink:vkResetCommandPool, flink:vkResetDescriptorPool, flink:vkResetEvent, flink:vkResetFences, flink:vkSetEvent, flink:vkUnmapMemory, flink:vkUpdateDescriptorSets, flink:vkWaitForFences + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDevice + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceCreateFlags.txt b/doc/specs/vulkan/man/VkDeviceCreateFlags.txt index dc66a632fc..4a20b84236 100644 --- a/doc/specs/vulkan/man/VkDeviceCreateFlags.txt +++ b/doc/specs/vulkan/man/VkDeviceCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDeviceCreateFlags(3) ====================== Name ---- -VkDeviceCreateFlags - Stub page (not yet written) +VkDeviceCreateFlags - Bitmask of VkDeviceCreateFlagBits C Specification --------------- include::../flags/VkDeviceCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDeviceCreateFlags is a mask of zero or more elink:VkDeviceCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkDeviceCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceCreateInfo.txt b/doc/specs/vulkan/man/VkDeviceCreateInfo.txt index 23963dc488..2e45d63c15 100644 --- a/doc/specs/vulkan/man/VkDeviceCreateInfo.txt +++ b/doc/specs/vulkan/man/VkDeviceCreateInfo.txt @@ -1,27 +1,76 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDeviceCreateInfo(3) ===================== Name ---- -VkDeviceCreateInfo - Stub page (not yet written) +VkDeviceCreateInfo - Structure specifying parameters of a newly created device C Specification --------------- +// refBegin VkDeviceCreateInfo - Structure specifying parameters of a newly created device + +The sname:VkDeviceCreateInfo structure is defined as: + include::../structs/VkDeviceCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:queueCreateInfoCount is the unsigned integer size of the + pname:pQueueCreateInfos array. Refer to the + <> section below for + further details. + * pname:pQueueCreateInfos is a pointer to an array of + slink:VkDeviceQueueCreateInfo structures describing the queues that are + requested to be created along with the logical device. Refer to the + <> section below for + further details. + * pname:enabledLayerCount is deprecated and ignored. + * pname:ppEnabledLayerNames is deprecated and ignored. See + <>. + * pname:enabledExtensionCount is the number of device extensions to + enable. + * pname:ppEnabledExtensionNames is a pointer to an array of + pname:enabledExtensionCount null-terminated UTF-8 strings containing the + names of extensions to enable for the created device. See the + <> section for further + details. + * pname:pEnabledFeatures is `NULL` or a pointer to a + slink:VkPhysicalDeviceFeatures structure that contains boolean + indicators of all the features to be enabled. Refer to the + <> section for further details. + Description ----------- include::../validity/structs/VkDeviceCreateInfo.txt[] + + See Also -------- +elink:VkDeviceCreateFlags, slink:VkDeviceQueueCreateInfo, slink:VkPhysicalDeviceFeatures, elink:VkStructureType, flink:vkCreateDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceMemory.txt b/doc/specs/vulkan/man/VkDeviceMemory.txt new file mode 100644 index 0000000000..bc11d923d5 --- /dev/null +++ b/doc/specs/vulkan/man/VkDeviceMemory.txt @@ -0,0 +1,48 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDeviceMemory(3) +================= + +Name +---- +VkDeviceMemory - Opaque handle to a device memory object + +C Specification +--------------- + +// refBegin VkDeviceMemory - Opaque handle to a device memory object + +A Vulkan device operates on data in device memory via memory objects that +are represented in the API by a sname:VkDeviceMemory handle. + +Memory objects are represented by sname:VkDeviceMemory handles: + +include::../handles/VkDeviceMemory.txt[] + + +Description +----------- + +// refEnd VkDeviceMemory + + +See Also +-------- + +slink:VkMappedMemoryRange, slink:VkSparseImageMemoryBind, slink:VkSparseMemoryBind, flink:vkAllocateMemory, flink:vkBindBufferMemory, flink:vkBindImageMemory, flink:vkFreeMemory, flink:vkGetDeviceMemoryCommitment, flink:vkMapMemory, flink:vkUnmapMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceQueueCreateFlags.txt b/doc/specs/vulkan/man/VkDeviceQueueCreateFlags.txt index b777e338a4..3958ae0fd4 100644 --- a/doc/specs/vulkan/man/VkDeviceQueueCreateFlags.txt +++ b/doc/specs/vulkan/man/VkDeviceQueueCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDeviceQueueCreateFlags(3) =========================== Name ---- -VkDeviceQueueCreateFlags - Stub page (not yet written) +VkDeviceQueueCreateFlags - Bitmask of VkDeviceQueueCreateFlagBits C Specification --------------- include::../flags/VkDeviceQueueCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkDeviceQueueCreateFlags is a mask of zero or more elink:VkDeviceQueueCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkDeviceQueueCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceQueueCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceQueueCreateInfo.txt b/doc/specs/vulkan/man/VkDeviceQueueCreateInfo.txt index 7cee39d4a7..232c469dd8 100644 --- a/doc/specs/vulkan/man/VkDeviceQueueCreateInfo.txt +++ b/doc/specs/vulkan/man/VkDeviceQueueCreateInfo.txt @@ -1,27 +1,65 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDeviceQueueCreateInfo(3) ========================== Name ---- -VkDeviceQueueCreateInfo - Stub page (not yet written) +VkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue C Specification --------------- +// refBegin VkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue + +The sname:VkDeviceQueueCreateInfo structure is defined as: + include::../structs/VkDeviceQueueCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:queueFamilyIndex is an unsigned integer indicating the index of + the queue family to create on this device. This index + corresponds to the index of an element of the + pname:pQueueFamilyProperties array that was returned by + fname:vkGetPhysicalDeviceQueueFamilyProperties. + * pname:queueCount is an unsigned integer specifying the number of + queues to create in the queue family indicated by + pname:queueFamilyIndex. + * pname:pQueuePriorities is an array of pname:queueCount + normalized floating point values, specifying priorities of work that + will be submitted to each created queue. See + <> for more information. + Description ----------- include::../validity/structs/VkDeviceQueueCreateInfo.txt[] + + See Also -------- +slink:VkDeviceCreateInfo, elink:VkDeviceQueueCreateFlags, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceQueueCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDeviceSize.txt b/doc/specs/vulkan/man/VkDeviceSize.txt new file mode 100644 index 0000000000..9d02364e14 --- /dev/null +++ b/doc/specs/vulkan/man/VkDeviceSize.txt @@ -0,0 +1,45 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkDeviceSize(3) +=============== + +Name +---- +VkDeviceSize - Vulkan device memory size and offsets + +C Specification +--------------- + +// refBegin VkDeviceSize - Vulkan device memory size and offsets + +basetype:VkDeviceSize represents device memory size and offset values: + +include::../basetypes/VkDeviceSize.txt[] + + +Description +----------- + +// refEnd VkDeviceSize + + +See Also +-------- + +slink:VkBufferCopy, slink:VkBufferCreateInfo, slink:VkBufferImageCopy, slink:VkBufferMemoryBarrier, slink:VkBufferViewCreateInfo, slink:VkDescriptorBufferInfo, slink:VkImageFormatProperties, slink:VkMappedMemoryRange, slink:VkMemoryAllocateInfo, slink:VkMemoryHeap, slink:VkMemoryRequirements, slink:VkPhysicalDeviceLimits, slink:VkSparseImageMemoryBind, slink:VkSparseImageMemoryRequirements, slink:VkSparseMemoryBind, slink:VkSubresourceLayout, flink:vkBindBufferMemory, flink:vkBindImageMemory, flink:vkCmdBindIndexBuffer, flink:vkCmdBindVertexBuffers, flink:vkCmdCopyQueryPoolResults, flink:vkCmdDispatchIndirect, flink:vkCmdDrawIndexedIndirect, flink:vkCmdDrawIndirect, flink:vkCmdFillBuffer, flink:vkCmdUpdateBuffer, flink:vkGetDeviceMemoryCommitment, flink:vkGetQueryPoolResults, flink:vkMapMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDeviceSize + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDispatchIndirectCommand.txt b/doc/specs/vulkan/man/VkDispatchIndirectCommand.txt index 023608adef..081837a294 100644 --- a/doc/specs/vulkan/man/VkDispatchIndirectCommand.txt +++ b/doc/specs/vulkan/man/VkDispatchIndirectCommand.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDispatchIndirectCommand(3) ============================ Name ---- -VkDispatchIndirectCommand - Stub page (not yet written) +VkDispatchIndirectCommand - Structure specifying a dispatch indirect command C Specification --------------- +// refBegin VkDispatchIndirectCommand - Structure specifying a dispatch indirect command + +The sname:VkDispatchIndirectCommand structure is defined as: + include::../structs/VkDispatchIndirectCommand.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:x is the number of local workgroups to dispatch in the X dimension. + * pname:y is the number of local workgroups to dispatch in the Y dimension. + * pname:z is the number of local workgroups to dispatch in the Z dimension. + Description ----------- +The members of sname:VkDispatchIndirectCommand structure have the same +meaning as the similarly named parameters of flink:vkCmdDispatch. + include::../validity/structs/VkDispatchIndirectCommand.txt[] + +// refEnd VkDispatchIndirectCommand vkCmdDispatchIndirect + + See Also -------- +flink:vkCmdDispatchIndirect + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDispatchIndirectCommand + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDisplayModeCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkDisplayModeCreateFlagsKHR.txt deleted file mode 100644 index c9c8008e81..0000000000 --- a/doc/specs/vulkan/man/VkDisplayModeCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDisplayModeCreateFlagsKHR(3) -============================== - -Name ----- -VkDisplayModeCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkDisplayModeCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayModeCreateInfoKHR.txt b/doc/specs/vulkan/man/VkDisplayModeCreateInfoKHR.txt deleted file mode 100644 index 6eb1c01737..0000000000 --- a/doc/specs/vulkan/man/VkDisplayModeCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayModeCreateInfoKHR(3) -============================= - -Name ----- -VkDisplayModeCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayModeCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayModeCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayModeParametersKHR.txt b/doc/specs/vulkan/man/VkDisplayModeParametersKHR.txt deleted file mode 100644 index f2e9078c0f..0000000000 --- a/doc/specs/vulkan/man/VkDisplayModeParametersKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayModeParametersKHR(3) -============================= - -Name ----- -VkDisplayModeParametersKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayModeParametersKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayModeParametersKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayModePropertiesKHR.txt b/doc/specs/vulkan/man/VkDisplayModePropertiesKHR.txt deleted file mode 100644 index 7b0f8269ed..0000000000 --- a/doc/specs/vulkan/man/VkDisplayModePropertiesKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayModePropertiesKHR(3) -============================= - -Name ----- -VkDisplayModePropertiesKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayModePropertiesKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayModePropertiesKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagBitsKHR.txt b/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagBitsKHR.txt deleted file mode 100644 index 254195113e..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagBitsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDisplayPlaneAlphaFlagBitsKHR(3) -================================= - -Name ----- -VkDisplayPlaneAlphaFlagBitsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkDisplayPlaneAlphaFlagBitsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagsKHR.txt b/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagsKHR.txt deleted file mode 100644 index 5ef7e7f4d7..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPlaneAlphaFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDisplayPlaneAlphaFlagsKHR(3) -============================== - -Name ----- -VkDisplayPlaneAlphaFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkDisplayPlaneAlphaFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPlaneCapabilitiesKHR.txt b/doc/specs/vulkan/man/VkDisplayPlaneCapabilitiesKHR.txt deleted file mode 100644 index 4565922a3a..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPlaneCapabilitiesKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayPlaneCapabilitiesKHR(3) -================================ - -Name ----- -VkDisplayPlaneCapabilitiesKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayPlaneCapabilitiesKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayPlaneCapabilitiesKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPlanePropertiesKHR.txt b/doc/specs/vulkan/man/VkDisplayPlanePropertiesKHR.txt deleted file mode 100644 index 68abb14c45..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPlanePropertiesKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayPlanePropertiesKHR(3) -============================== - -Name ----- -VkDisplayPlanePropertiesKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayPlanePropertiesKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayPlanePropertiesKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPresentInfoKHR.txt b/doc/specs/vulkan/man/VkDisplayPresentInfoKHR.txt deleted file mode 100644 index 3f39bc97a2..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPresentInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayPresentInfoKHR(3) -========================== - -Name ----- -VkDisplayPresentInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayPresentInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayPresentInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplayPropertiesKHR.txt b/doc/specs/vulkan/man/VkDisplayPropertiesKHR.txt deleted file mode 100644 index 412984104b..0000000000 --- a/doc/specs/vulkan/man/VkDisplayPropertiesKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplayPropertiesKHR(3) -========================= - -Name ----- -VkDisplayPropertiesKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplayPropertiesKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplayPropertiesKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplaySurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkDisplaySurfaceCreateFlagsKHR.txt deleted file mode 100644 index cb1cb293f1..0000000000 --- a/doc/specs/vulkan/man/VkDisplaySurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkDisplaySurfaceCreateFlagsKHR(3) -================================= - -Name ----- -VkDisplaySurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkDisplaySurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDisplaySurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkDisplaySurfaceCreateInfoKHR.txt deleted file mode 100644 index 6578d2e483..0000000000 --- a/doc/specs/vulkan/man/VkDisplaySurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkDisplaySurfaceCreateInfoKHR(3) -================================ - -Name ----- -VkDisplaySurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkDisplaySurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkDisplaySurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkDrawIndexedIndirectCommand.txt b/doc/specs/vulkan/man/VkDrawIndexedIndirectCommand.txt index 4a0a7645fe..5ba129bb34 100644 --- a/doc/specs/vulkan/man/VkDrawIndexedIndirectCommand.txt +++ b/doc/specs/vulkan/man/VkDrawIndexedIndirectCommand.txt @@ -1,27 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDrawIndexedIndirectCommand(3) =============================== Name ---- -VkDrawIndexedIndirectCommand - Stub page (not yet written) +VkDrawIndexedIndirectCommand - Structure specifying a draw indexed indirect command C Specification --------------- +// refBegin VkDrawIndexedIndirectCommand - Structure specifying a draw indexed indirect command + +The sname:VkDrawIndexedIndirectCommand structure is defined as: + include::../structs/VkDrawIndexedIndirectCommand.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:indexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstIndex is the base index within the index buffer. + * pname:vertexOffset is the value added to the vertex index before indexing + into the vertex buffer. + * pname:firstInstance is the instance ID of the first instance to draw. + Description ----------- +The members of sname:VkDrawIndexedIndirectCommand have the same meaning as +the similarly named parameters of flink:vkCmdDrawIndexed. + include::../validity/structs/VkDrawIndexedIndirectCommand.txt[] + +// refEnd VkDrawIndexedIndirectCommand vkCmdDrawIndexedIndirect + + See Also -------- +flink:vkCmdDrawIndexedIndirect + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDrawIndexedIndirectCommand + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDrawIndirectCommand.txt b/doc/specs/vulkan/man/VkDrawIndirectCommand.txt index 22eb8f6023..9541e38e0b 100644 --- a/doc/specs/vulkan/man/VkDrawIndirectCommand.txt +++ b/doc/specs/vulkan/man/VkDrawIndirectCommand.txt @@ -1,27 +1,59 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDrawIndirectCommand(3) ======================== Name ---- -VkDrawIndirectCommand - Stub page (not yet written) +VkDrawIndirectCommand - Structure specifying a draw indirect command C Specification --------------- +// refBegin VkDrawIndirectCommand - Structure specifying a draw indirect command + +The sname:VkDrawIndirectCommand structure is defined as: + include::../structs/VkDrawIndirectCommand.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:vertexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstVertex is the index of the first vertex to draw. + * pname:firstInstance is the instance ID of the first instance to draw. + Description ----------- +The members of sname:VkDrawIndirectCommand have the same meaning as the +similarly named parameters of flink:vkCmdDraw. + include::../validity/structs/VkDrawIndirectCommand.txt[] + +// refEnd VkDrawIndirectCommand vkCmdDrawIndirect + + See Also -------- +flink:vkCmdDrawIndirect + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDrawIndirectCommand + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkDynamicState.txt b/doc/specs/vulkan/man/VkDynamicState.txt index 405c70af30..2c7959003b 100644 --- a/doc/specs/vulkan/man/VkDynamicState.txt +++ b/doc/specs/vulkan/man/VkDynamicState.txt @@ -1,26 +1,107 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkDynamicState(3) ================= Name ---- -VkDynamicState - Stub page (not yet written) +VkDynamicState - indicate which dynamic state is taken from dynamic state commands C Specification --------------- -include::../enums/VkDynamicState.txt[] +// refBegin VkDynamicState - indicate which dynamic state is taken from dynamic state commands -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The source of difference pieces of dynamic state is determined by the +slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates property of the +currently active pipeline, which takes the following values: + +include::../enums/VkDynamicState.txt[] -Constants ---------- Description ----------- + * ename:VK_DYNAMIC_STATE_VIEWPORT indicates that the pname:pViewports + state in sname:VkPipelineViewportStateCreateInfo will be ignored and + must: be set dynamically with flink:vkCmdSetViewport before any draw + commands. The number of viewports used by a pipeline is still + specified by the pname:viewportCount member of + sname:VkPipelineViewportStateCreateInfo. + * ename:VK_DYNAMIC_STATE_SCISSOR indicates that the pname:pScissors + state in sname:VkPipelineViewportStateCreateInfo will be ignored and + must: be set dynamically with flink:vkCmdSetScissor before any draw + commands. The number of scissor rectangles used by a pipeline is still + specified by the pname:scissorCount member of + sname:VkPipelineViewportStateCreateInfo. + * ename:VK_DYNAMIC_STATE_LINE_WIDTH indicates that the pname:lineWidth + state in sname:VkPipelineRasterizationStateCreateInfo will be ignored + and must: be set dynamically with flink:vkCmdSetLineWidth before any + draw commands that generate line primitives for the rasterizer. + * ename:VK_DYNAMIC_STATE_DEPTH_BIAS indicates that the + pname:depthBiasConstantFactor, pname:depthBiasClamp and + pname:depthBiasSlopeFactor states in + sname:VkPipelineRasterizationStateCreateInfo will be ignored and must: + be set dynamically with flink:vkCmdSetDepthBias before any draws are + performed with pname:depthBiasEnable in + sname:VkPipelineRasterizationStateCreateInfo set to ename:VK_TRUE. + * ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS indicates that the + pname:blendConstants state in + sname:VkPipelineColorBlendStateCreateInfo will be ignored and must: be + set dynamically with flink:vkCmdSetBlendConstants before any draws are + performed with a pipeline state with + sname:VkPipelineColorBlendAttachmentState member pname:blendEnable set + to ename:VK_TRUE and any of the blend functions using a constant blend + color. + * ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS indicates that the + pname:minDepthBounds and pname:maxDepthBounds states of + slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: + be set dynamically with flink:vkCmdSetDepthBounds before any draws are + performed with a pipeline state with + sname:VkPipelineDepthStencilStateCreateInfo member + pname:depthBoundsTestEnable set to ename:VK_TRUE. + * ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK indicates that the + pname:compareMask state in + sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and + pname:back will be ignored and must: be set dynamically with + flink:vkCmdSetStencilCompareMask before any draws are performed with a + pipeline state with sname:VkPipelineDepthStencilStateCreateInfo member + pname:stencilTestEnable set to ename:VK_TRUE + * ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK indicates that the + pname:writeMask state in sname:VkPipelineDepthStencilStateCreateInfo + for both pname:front and pname:back will be ignored and must: be set + dynamically with flink:vkCmdSetStencilWriteMask before any draws are + performed with a pipeline state with + sname:VkPipelineDepthStencilStateCreateInfo member + pname:stencilTestEnable set to ename:VK_TRUE + * ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE indicates that the + pname:reference state in sname:VkPipelineDepthStencilStateCreateInfo + for both pname:front and pname:back will be ignored and must: be set + dynamically with flink:vkCmdSetStencilReference before any draws are + performed with a pipeline state with + sname:VkPipelineDepthStencilStateCreateInfo member + pname:stencilTestEnable set to ename:VK_TRUE + +// refEnd VkDynamicState + + See Also -------- +slink:VkPipelineDynamicStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDynamicState + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkEvent.txt b/doc/specs/vulkan/man/VkEvent.txt new file mode 100644 index 0000000000..9ddc80ac33 --- /dev/null +++ b/doc/specs/vulkan/man/VkEvent.txt @@ -0,0 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkEvent(3) +========== + +Name +---- +VkEvent - Opaque handle to a event object + +C Specification +--------------- + +// refBegin VkEvent - Opaque handle to a event object + +Events represent a fine-grained synchronization primitive that can: be used +to gauge progress through a sequence of commands executed on a queue by +Vulkan. An event is initially in the unsignaled state. It can: be +signaled by a device, using commands inserted into the command buffer, or by +the host. It can: also be reset to the unsignaled state by a device or the +host. The host can: query the state of an event. A device can: wait for one +or more events to become signaled. + +Events are represented by sname:VkEvent handles: + +include::../handles/VkEvent.txt[] + + +Description +----------- + +// refEnd VkEvent + + +See Also +-------- + +flink:vkCmdResetEvent, flink:vkCmdSetEvent, flink:vkCmdWaitEvents, flink:vkCreateEvent, flink:vkDestroyEvent, flink:vkGetEventStatus, flink:vkResetEvent, flink:vkSetEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkEventCreateFlags.txt b/doc/specs/vulkan/man/VkEventCreateFlags.txt index 85bfc09164..2574a5a949 100644 --- a/doc/specs/vulkan/man/VkEventCreateFlags.txt +++ b/doc/specs/vulkan/man/VkEventCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkEventCreateFlags(3) ===================== Name ---- -VkEventCreateFlags - Stub page (not yet written) +VkEventCreateFlags - Bitmask of VkEventCreateFlagBits C Specification --------------- include::../flags/VkEventCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkEventCreateFlags is a mask of zero or more elink:VkEventCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkEventCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkEventCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkEventCreateInfo.txt b/doc/specs/vulkan/man/VkEventCreateInfo.txt index bf70ae5713..a8a6e21f87 100644 --- a/doc/specs/vulkan/man/VkEventCreateInfo.txt +++ b/doc/specs/vulkan/man/VkEventCreateInfo.txt @@ -1,27 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkEventCreateInfo(3) ==================== Name ---- -VkEventCreateInfo - Stub page (not yet written) +VkEventCreateInfo - Structure specifying parameters of a newly created event C Specification --------------- +// refBegin VkEventCreateInfo - Structure specifying parameters of a newly created event + +The sname:VkEventCreateInfo structure is defined as: + include::../structs/VkEventCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:flags is reserved for future use. + Description ----------- include::../validity/structs/VkEventCreateInfo.txt[] + + See Also -------- +elink:VkEventCreateFlags, elink:VkStructureType, flink:vkCreateEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkEventCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkExtensionProperties.txt b/doc/specs/vulkan/man/VkExtensionProperties.txt index 9badef39b9..ffc16deaa0 100644 --- a/doc/specs/vulkan/man/VkExtensionProperties.txt +++ b/doc/specs/vulkan/man/VkExtensionProperties.txt @@ -1,27 +1,54 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkExtensionProperties(3) ======================== Name ---- -VkExtensionProperties - Stub page (not yet written) +VkExtensionProperties - Structure specifying a extension properties C Specification --------------- +// refBegin VkExtensionProperties - Structure specifying a extension properties + +The sname:VkExtensionProperties structure is defined as: + include::../structs/VkExtensionProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:extensionName is a null-terminated string specifying the name of + the extension. + * pname:specVersion is the version of this extension. It is an integer, + incremented with backward compatible changes. + Description ----------- include::../validity/structs/VkExtensionProperties.txt[] + + See Also -------- +flink:vkEnumerateDeviceExtensionProperties, flink:vkEnumerateInstanceExtensionProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkExtensionProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkExtent2D.txt b/doc/specs/vulkan/man/VkExtent2D.txt index 457c51a440..97af6c77b4 100644 --- a/doc/specs/vulkan/man/VkExtent2D.txt +++ b/doc/specs/vulkan/man/VkExtent2D.txt @@ -1,27 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkExtent2D(3) ============= Name ---- -VkExtent2D - Stub page (not yet written) +VkExtent2D - Structure specifying a two-dimensional extent C Specification --------------- +// refBegin VkExtent2D - Structure specifying a two-dimensional extent + +A two-dimensional extent is defined by the structure: + include::../structs/VkExtent2D.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + +include::../validity/structs/VkExtent2D.txt[] + Description ----------- -include::../validity/structs/VkExtent2D.txt[] + + See Also -------- +slink:VkRect2D, flink:vkGetRenderAreaGranularity + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkExtent2D + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkExtent3D.txt b/doc/specs/vulkan/man/VkExtent3D.txt index c6f98d25a3..d570705f3a 100644 --- a/doc/specs/vulkan/man/VkExtent3D.txt +++ b/doc/specs/vulkan/man/VkExtent3D.txt @@ -1,27 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkExtent3D(3) ============= Name ---- -VkExtent3D - Stub page (not yet written) +VkExtent3D - Structure specifying a three-dimensional extent C Specification --------------- +// refBegin VkExtent3D - Structure specifying a three-dimensional extent + +A three-dimensional extent is defined by the structure: + include::../structs/VkExtent3D.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + +include::../validity/structs/VkExtent3D.txt[] + + Description ----------- -include::../validity/structs/VkExtent3D.txt[] + + See Also -------- +slink:VkBufferImageCopy, slink:VkImageCopy, slink:VkImageCreateInfo, slink:VkImageFormatProperties, slink:VkImageResolve, slink:VkQueueFamilyProperties, slink:VkSparseImageFormatProperties, slink:VkSparseImageMemoryBind + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkExtent3D + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFence.txt b/doc/specs/vulkan/man/VkFence.txt new file mode 100644 index 0000000000..4784edce06 --- /dev/null +++ b/doc/specs/vulkan/man/VkFence.txt @@ -0,0 +1,52 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkFence(3) +========== + +Name +---- +VkFence - Opaque handle to a fence object + +C Specification +--------------- + +// refBegin VkFence - Opaque handle to a fence object + +Fences can: be used by the host to determine completion of execution of +_queue operations_. + +A fence's status is always either _signaled_ or _unsignaled_. The host can: +poll the status of a single fence, or wait for any or all of a group of +fences to become signaled. + +Fences are represented by sname:VkFence handles: + +include::../handles/VkFence.txt[] + + +Description +----------- + +// refEnd VkFence + + +See Also +-------- + +flink:vkCreateFence, flink:vkDestroyFence, flink:vkGetFenceStatus, flink:vkQueueBindSparse, flink:vkQueueSubmit, flink:vkResetFences, flink:vkWaitForFences + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFence + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFenceCreateFlagBits.txt b/doc/specs/vulkan/man/VkFenceCreateFlagBits.txt index 7fc428dc4d..23c3b7378f 100644 --- a/doc/specs/vulkan/man/VkFenceCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkFenceCreateFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFenceCreateFlagBits(3) ======================== Name ---- -VkFenceCreateFlagBits - Stub page (not yet written) +VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence C Specification --------------- +// refBegin VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence include::../enums/VkFenceCreateFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkFenceCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkFenceCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFenceCreateFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFenceCreateFlags.txt b/doc/specs/vulkan/man/VkFenceCreateFlags.txt index 79c7913919..e0f1465f0a 100644 --- a/doc/specs/vulkan/man/VkFenceCreateFlags.txt +++ b/doc/specs/vulkan/man/VkFenceCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFenceCreateFlags(3) ===================== Name ---- -VkFenceCreateFlags - Stub page (not yet written) +VkFenceCreateFlags - Bitmask of VkFenceCreateFlagBits C Specification --------------- include::../flags/VkFenceCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkFenceCreateFlags is a mask of zero or more elink:VkFenceCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkFenceCreateFlagBits, slink:VkFenceCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFenceCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFenceCreateInfo.txt b/doc/specs/vulkan/man/VkFenceCreateInfo.txt index 9ae6cefdd0..9022e44184 100644 --- a/doc/specs/vulkan/man/VkFenceCreateInfo.txt +++ b/doc/specs/vulkan/man/VkFenceCreateInfo.txt @@ -1,27 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFenceCreateInfo(3) ==================== Name ---- -VkFenceCreateInfo - Stub page (not yet written) +VkFenceCreateInfo - Structure specifying parameters of a newly created fence C Specification --------------- +// refBegin VkFenceCreateInfo - Structure specifying parameters of a newly created fence + +The sname:VkFenceCreateInfo structure is defined as: + include::../structs/VkFenceCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:flags defines the initial state and behavior of the fence. Bits + which can: be set include: ++ +-- +// refBegin VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fence +include::../enums/VkFenceCreateFlagBits.txt[] +-- ++ +If pname:flags contains ename:VK_FENCE_CREATE_SIGNALED_BIT then the fence +object is created in the signaled state. Otherwise it is created in the +unsignaled state. + Description ----------- include::../validity/structs/VkFenceCreateInfo.txt[] + + See Also -------- +elink:VkFenceCreateFlags, elink:VkStructureType, flink:vkCreateFence + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFenceCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFilter.txt b/doc/specs/vulkan/man/VkFilter.txt index f574faafbf..30bc77f4c7 100644 --- a/doc/specs/vulkan/man/VkFilter.txt +++ b/doc/specs/vulkan/man/VkFilter.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFilter(3) =========== Name ---- -VkFilter - Stub page (not yet written) +VkFilter - specify filters used for texture lookups C Specification --------------- +// refBegin VkFilter - specify filters used for texture lookups include::../enums/VkFilter.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSamplerCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkSamplerCreateInfo, flink:vkCmdBlitImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFilter + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFlags.txt b/doc/specs/vulkan/man/VkFlags.txt new file mode 100644 index 0000000000..a1590c5661 --- /dev/null +++ b/doc/specs/vulkan/man/VkFlags.txt @@ -0,0 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkFlags(3) +========== + +Name +---- +VkFlags - Vulkan bitmasks + +C Specification +--------------- + +// refBegin VkFlags - Vulkan bitmasks + +A collection of flags is represented by a bitmask using the type +basetype:VkFlags: + +include::../basetypes/VkFlags.txt[] + + +Description +----------- + +Bitmasks are passed to many commands and structures to compactly represent +options, but basetype:VkFlags is not used directly in the API. Instead, a +etext:Vk*Flags type which is an alias of basetype:VkFlags, and whose name +matches the corresponding etext:Vk*FlagBits that are valid for that type, is +used. These aliases are described in the <> +appendix of the Specification. + +// refEnd VkFlags VkColorComponentFlags + + +See Also +-------- + +elink:VkColorComponentFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFlags + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFormat.txt b/doc/specs/vulkan/man/VkFormat.txt index f3f7f6042c..412257becb 100644 --- a/doc/specs/vulkan/man/VkFormat.txt +++ b/doc/specs/vulkan/man/VkFormat.txt @@ -1,26 +1,1080 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFormat(3) =========== Name ---- -VkFormat - Stub page (not yet written) +VkFormat - available image formats C Specification --------------- -include::../enums/VkFormat.txt[] +// refBegin VkFormat available image formats -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The available formats are defined by the elink:VkFormat enumeration: + +include::../enums/VkFormat.txt[] -Constants ---------- Description ----------- +ename:VK_FORMAT_UNDEFINED:: + The format is not specified. + +ename:VK_FORMAT_R4G4_UNORM_PACK8:: + A two-component, 8-bit packed unsigned normalized format that has + a 4-bit R component in bits 4..7, and + a 4-bit G component in bits 0..3. + +ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16:: + A four-component, 16-bit packed unsigned normalized format that has + a 4-bit R component in bits 12..15, + a 4-bit G component in bits 8..11, + a 4-bit B component in bits 4..7, and + a 4-bit A component in bits 0..3. + +ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16:: + A four-component, 16-bit packed unsigned normalized format that has + a 4-bit B component in bits 12..15, + a 4-bit G component in bits 8..11, + a 4-bit R component in bits 4..7, and + a 4-bit A component in bits 0..3. + +ename:VK_FORMAT_R5G6B5_UNORM_PACK16:: + A three-component, 16-bit packed unsigned normalized format that has + a 5-bit R component in bits 11..15, + a 6-bit G component in bits 5..10, and + a 5-bit B component in bits 0..4. + +ename:VK_FORMAT_B5G6R5_UNORM_PACK16:: + A three-component, 16-bit packed unsigned normalized format that has + a 5-bit B component in bits 11..15, + a 6-bit G component in bits 5..10, and + a 5-bit R component in bits 0..4. + +ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16:: + A four-component, 16-bit packed unsigned normalized format that has + a 5-bit R component in bits 11..15, + a 5-bit G component in bits 6..10, + a 5-bit B component in bits 1..5, and + a 1-bit A component in bit 0. + +ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16:: + A four-component, 16-bit packed unsigned normalized format that has + a 5-bit B component in bits 11..15, + a 5-bit G component in bits 6..10, + a 5-bit R component in bits 1..5, and + a 1-bit A component in bit 0. + +ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16:: + A four-component, 16-bit packed unsigned normalized format that has + a 1-bit A component in bit 15, + a 5-bit R component in bits 10..14, + a 5-bit G component in bits 5..9, and + a 5-bit B component in bits 0..4. + +ename:VK_FORMAT_R8_UNORM:: + A one-component, 8-bit unsigned normalized format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_SNORM:: + A one-component, 8-bit signed normalized format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_USCALED:: + A one-component, 8-bit unsigned scaled integer format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_SSCALED:: + A one-component, 8-bit signed scaled integer format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_UINT:: + A one-component, 8-bit unsigned integer format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_SINT:: + A one-component, 8-bit signed integer format that has + a single 8-bit R component. + +ename:VK_FORMAT_R8_SRGB:: + A one-component, 8-bit unsigned normalized format that has + a single 8-bit R component stored with sRGB nonlinear encoding. + +ename:VK_FORMAT_R8G8_UNORM:: + A two-component, 16-bit unsigned normalized format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_SNORM:: + A two-component, 16-bit signed normalized format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_USCALED:: + A two-component, 16-bit unsigned scaled integer format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_SSCALED:: + A two-component, 16-bit signed scaled integer format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_UINT:: + A two-component, 16-bit unsigned integer format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_SINT:: + A two-component, 16-bit signed integer format that has + an 8-bit R component in byte 0, and + an 8-bit G component in byte 1. + +ename:VK_FORMAT_R8G8_SRGB:: + A two-component, 16-bit unsigned normalized format that has + an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and + an 8-bit G component stored with sRGB nonlinear encoding in byte 1. + +ename:VK_FORMAT_R8G8B8_UNORM:: + A three-component, 24-bit unsigned normalized format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_SNORM:: + A three-component, 24-bit signed normalized format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_USCALED:: + A three-component, 24-bit unsigned scaled format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_SSCALED:: + A three-component, 24-bit signed scaled format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_UINT:: + A three-component, 24-bit unsigned integer format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_SINT:: + A three-component, 24-bit signed integer format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit B component in byte 2. + +ename:VK_FORMAT_R8G8B8_SRGB:: + A three-component, 24-bit unsigned normalized format that has + an 8-bit R component stored with sRGB nonlinear encoding in byte 0, + an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and + an 8-bit B component stored with sRGB nonlinear encoding in byte 2. + +ename:VK_FORMAT_B8G8R8_UNORM:: + A three-component, 24-bit unsigned normalized format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_SNORM:: + A three-component, 24-bit signed normalized format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_USCALED:: + A three-component, 24-bit unsigned scaled format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_SSCALED:: + A three-component, 24-bit signed scaled format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_UINT:: + A three-component, 24-bit unsigned integer format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_SINT:: + A three-component, 24-bit signed integer format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, and + an 8-bit R component in byte 2. + +ename:VK_FORMAT_B8G8R8_SRGB:: + A three-component, 24-bit unsigned normalized format that has + an 8-bit B component stored with sRGB nonlinear encoding in byte 0, + an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and + an 8-bit R component stored with sRGB nonlinear encoding in byte 2. + +ename:VK_FORMAT_R8G8B8A8_UNORM:: + A four-component, 32-bit unsigned normalized format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_SNORM:: + A four-component, 32-bit signed normalized format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_USCALED:: + A four-component, 32-bit unsigned scaled format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_SSCALED:: + A four-component, 32-bit signed scaled format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_UINT:: + A four-component, 32-bit unsigned integer format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_SINT:: + A four-component, 32-bit signed integer format that has + an 8-bit R component in byte 0, + an 8-bit G component in byte 1, + an 8-bit B component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_R8G8B8A8_SRGB:: + A four-component, 32-bit unsigned normalized format that has + an 8-bit R component stored with sRGB nonlinear encoding in byte 0, + an 8-bit G component stored with sRGB nonlinear encoding in byte 1, + an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_UNORM:: + A four-component, 32-bit unsigned normalized format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_SNORM:: + A four-component, 32-bit signed normalized format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_USCALED:: + A four-component, 32-bit unsigned scaled format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_SSCALED:: + A four-component, 32-bit signed scaled format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_UINT:: + A four-component, 32-bit unsigned integer format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_SINT:: + A four-component, 32-bit signed integer format that has + an 8-bit B component in byte 0, + an 8-bit G component in byte 1, + an 8-bit R component in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_B8G8R8A8_SRGB:: + A four-component, 32-bit unsigned normalized format that has + an 8-bit B component stored with sRGB nonlinear encoding in byte 0, + an 8-bit G component stored with sRGB nonlinear encoding in byte 1, + an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and + an 8-bit A component in byte 3. + +ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32:: + A four-component, 32-bit packed unsigned normalized format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32:: + A four-component, 32-bit packed signed normalized format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32:: + A four-component, 32-bit packed unsigned scaled integer format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32:: + A four-component, 32-bit packed signed scaled integer format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_UINT_PACK32:: + A four-component, 32-bit packed unsigned integer format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_SINT_PACK32:: + A four-component, 32-bit packed signed integer format that has + an 8-bit A component in bits 24..31, + an 8-bit B component in bits 16..23, + an 8-bit G component in bits 8..15, and + an 8-bit R component in bits 0..7. + +ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32:: + A four-component, 32-bit packed unsigned normalized format that has + an 8-bit A component in bits 24..31, + an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, + an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15, and + an 8-bit R component stored with sRGB nonlinear encoding in bits + 0..7. + +ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32:: + A four-component, 32-bit packed unsigned normalized format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32:: + A four-component, 32-bit packed signed normalized format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32:: + A four-component, 32-bit packed unsigned scaled integer format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32:: + A four-component, 32-bit packed signed scaled integer format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2R10G10B10_UINT_PACK32:: + A four-component, 32-bit packed unsigned integer format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2R10G10B10_SINT_PACK32:: + A four-component, 32-bit packed signed integer format that has + a 2-bit A component in bits 30..31, + a 10-bit R component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit B component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32:: + A four-component, 32-bit packed unsigned normalized format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32:: + A four-component, 32-bit packed signed normalized format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32:: + A four-component, 32-bit packed unsigned scaled integer format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32:: + A four-component, 32-bit packed signed scaled integer format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_UINT_PACK32:: + A four-component, 32-bit packed unsigned integer format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_A2B10G10R10_SINT_PACK32:: + A four-component, 32-bit packed signed integer format that has + a 2-bit A component in bits 30..31, + a 10-bit B component in bits 20..29, + a 10-bit G component in bits 10..19, and + a 10-bit R component in bits 0..9. + +ename:VK_FORMAT_R16_UNORM:: + A one-component, 16-bit unsigned normalized format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_SNORM:: + A one-component, 16-bit signed normalized format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_USCALED:: + A one-component, 16-bit unsigned scaled integer format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_SSCALED:: + A one-component, 16-bit signed scaled integer format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_UINT:: + A one-component, 16-bit unsigned integer format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_SINT:: + A one-component, 16-bit signed integer format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16_SFLOAT:: + A one-component, 16-bit signed floating-point format that has + a single 16-bit R component. + +ename:VK_FORMAT_R16G16_UNORM:: + A two-component, 32-bit unsigned normalized format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_SNORM:: + A two-component, 32-bit signed normalized format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_USCALED:: + A two-component, 32-bit unsigned scaled integer format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_SSCALED:: + A two-component, 32-bit signed scaled integer format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_UINT:: + A two-component, 32-bit unsigned integer format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_SINT:: + A two-component, 32-bit signed integer format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16_SFLOAT:: + A two-component, 32-bit signed floating-point format that has + a 16-bit R component in bytes 0..1, and + a 16-bit G component in bytes 2..3. + +ename:VK_FORMAT_R16G16B16_UNORM:: + A three-component, 48-bit unsigned normalized format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_SNORM:: + A three-component, 48-bit signed normalized format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_USCALED:: + A three-component, 48-bit unsigned scaled integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_SSCALED:: + A three-component, 48-bit signed scaled integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_UINT:: + A three-component, 48-bit unsigned integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_SINT:: + A three-component, 48-bit signed integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16_SFLOAT:: + A three-component, 48-bit signed floating-point format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, and + a 16-bit B component in bytes 4..5. + +ename:VK_FORMAT_R16G16B16A16_UNORM:: + A four-component, 64-bit unsigned normalized format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_SNORM:: + A four-component, 64-bit signed normalized format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_USCALED:: + A four-component, 64-bit unsigned scaled integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_SSCALED:: + A four-component, 64-bit signed scaled integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_UINT:: + A four-component, 64-bit unsigned integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_SINT:: + A four-component, 64-bit signed integer format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R16G16B16A16_SFLOAT:: + A four-component, 64-bit signed floating-point format that has + a 16-bit R component in bytes 0..1, + a 16-bit G component in bytes 2..3, + a 16-bit B component in bytes 4..5, and + a 16-bit A component in bytes 6..7. + +ename:VK_FORMAT_R32_UINT:: + A one-component, 32-bit unsigned integer format that has + a single 32-bit R component. + +ename:VK_FORMAT_R32_SINT:: + A one-component, 32-bit signed integer format that has + a single 32-bit R component. + +ename:VK_FORMAT_R32_SFLOAT:: + A one-component, 32-bit signed floating-point format that has + a single 32-bit R component. + +ename:VK_FORMAT_R32G32_UINT:: + A two-component, 64-bit unsigned integer format that has + a 32-bit R component in bytes 0..3, and + a 32-bit G component in bytes 4..7. + +ename:VK_FORMAT_R32G32_SINT:: + A two-component, 64-bit signed integer format that has + a 32-bit R component in bytes 0..3, and + a 32-bit G component in bytes 4..7. + +ename:VK_FORMAT_R32G32_SFLOAT:: + A two-component, 64-bit signed floating-point format that has + a 32-bit R component in bytes 0..3, and + a 32-bit G component in bytes 4..7. + +ename:VK_FORMAT_R32G32B32_UINT:: + A three-component, 96-bit unsigned integer format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, and + a 32-bit B component in bytes 8..11. + +ename:VK_FORMAT_R32G32B32_SINT:: + A three-component, 96-bit signed integer format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, and + a 32-bit B component in bytes 8..11. + +ename:VK_FORMAT_R32G32B32_SFLOAT:: + A three-component, 96-bit signed floating-point format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, and + a 32-bit B component in bytes 8..11. + +ename:VK_FORMAT_R32G32B32A32_UINT:: + A four-component, 128-bit unsigned integer format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, + a 32-bit B component in bytes 8..11, and + a 32-bit A component in bytes 12..15. + +ename:VK_FORMAT_R32G32B32A32_SINT:: + A four-component, 128-bit signed integer format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, + a 32-bit B component in bytes 8..11, and + a 32-bit A component in bytes 12..15. + +ename:VK_FORMAT_R32G32B32A32_SFLOAT:: + A four-component, 128-bit signed floating-point format that has + a 32-bit R component in bytes 0..3, + a 32-bit G component in bytes 4..7, + a 32-bit B component in bytes 8..11, and + a 32-bit A component in bytes 12..15. + +ename:VK_FORMAT_R64_UINT:: + A one-component, 64-bit unsigned integer format that has + a single 64-bit R component. + +ename:VK_FORMAT_R64_SINT:: + A one-component, 64-bit signed integer format that has + a single 64-bit R component. + +ename:VK_FORMAT_R64_SFLOAT:: + A one-component, 64-bit signed floating-point format that has + a single 64-bit R component. + +ename:VK_FORMAT_R64G64_UINT:: + A two-component, 128-bit unsigned integer format that has + a 64-bit R component in bytes 0..7, and + a 64-bit G component in bytes 8..15. + +ename:VK_FORMAT_R64G64_SINT:: + A two-component, 128-bit signed integer format that has + a 64-bit R component in bytes 0..7, and + a 64-bit G component in bytes 8..15. + +ename:VK_FORMAT_R64G64_SFLOAT:: + A two-component, 128-bit signed floating-point format that has + a 64-bit R component in bytes 0..7, and + a 64-bit G component in bytes 8..15. + +ename:VK_FORMAT_R64G64B64_UINT:: + A three-component, 192-bit unsigned integer format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, and + a 64-bit B component in bytes 16..23. + +ename:VK_FORMAT_R64G64B64_SINT:: + A three-component, 192-bit signed integer format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, and + a 64-bit B component in bytes 16..23. + +ename:VK_FORMAT_R64G64B64_SFLOAT:: + A three-component, 192-bit signed floating-point format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, and + a 64-bit B component in bytes 16..23. + +ename:VK_FORMAT_R64G64B64A64_UINT:: + A four-component, 256-bit unsigned integer format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, + a 64-bit B component in bytes 16..23, and + a 64-bit A component in bytes 24..31. + +ename:VK_FORMAT_R64G64B64A64_SINT:: + A four-component, 256-bit signed integer format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, + a 64-bit B component in bytes 16..23, and + a 64-bit A component in bytes 24..31. + +ename:VK_FORMAT_R64G64B64A64_SFLOAT:: + A four-component, 256-bit signed floating-point format that has + a 64-bit R component in bytes 0..7, + a 64-bit G component in bytes 8..15, + a 64-bit B component in bytes 16..23, and + a 64-bit A component in bytes 24..31. + +ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32:: + A three-component, 32-bit packed unsigned floating-point format that has + a 10-bit B component in bits 22..31, + an 11-bit G component in bits 11..21, + an 11-bit R component in bits 0..10. + See <> and <>. + +ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:: + A three-component, 32-bit packed unsigned floating-point format that has + a 5-bit shared exponent in bits 27..31, + a 9-bit B component mantissa in bits 18..26, + a 9-bit G component mantissa in bits 9..17, and + a 9-bit R component mantissa in bits 0..8. + +ename:VK_FORMAT_D16_UNORM:: + A one-component, 16-bit unsigned normalized format that has a + single 16-bit depth component. + +ename:VK_FORMAT_X8_D24_UNORM_PACK32:: + A two-component, 32-bit format that has 24 unsigned normalized bits in + the depth component and, optionally:, 8 bits that are unused. + +ename:VK_FORMAT_D32_SFLOAT:: + A one-component, 32-bit signed floating-point format that has 32-bits in + the depth component. + +ename:VK_FORMAT_S8_UINT:: + A one-component, 8-bit unsigned integer format that has 8-bits in the + stencil component. + +ename:VK_FORMAT_D16_UNORM_S8_UINT:: + A two-component, 24-bit format that has 16 unsigned normalized bits in + the depth component and 8 unsigned integer bits in the stencil + component. + +ename:VK_FORMAT_D24_UNORM_S8_UINT:: + A two-component, 32-bit packed format that has + 8 unsigned integer bits in the stencil component, and + 24 unsigned normalized bits in the depth component. + +ename:VK_FORMAT_D32_SFLOAT_S8_UINT:: + A two-component format that has 32 signed float bits in the depth + component and 8 unsigned integer bits in the stencil component. There + are optionally: 24-bits that are unused. + +ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK:: + A three-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data. + This format has no alpha and is considered opaque. + +ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK:: + A three-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data + with sRGB nonlinear encoding. This format has no alpha and is considered + opaque. + +ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK:: + A four-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data, + and provides 1 bit of alpha. + +ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK:: + A four-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data + with sRGB nonlinear encoding, and provides 1 bit of alpha. + +ename:VK_FORMAT_BC2_UNORM_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values. + +ename:VK_FORMAT_BC2_SRGB_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values with sRGB nonlinear encoding. + +ename:VK_FORMAT_BC3_UNORM_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values. + +ename:VK_FORMAT_BC3_SRGB_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values with sRGB nonlinear encoding. + +ename:VK_FORMAT_BC4_UNORM_BLOCK:: + A one-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized red texel data. + +ename:VK_FORMAT_BC4_SNORM_BLOCK:: + A one-component, block-compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of signed normalized red texel data. + +ename:VK_FORMAT_BC5_UNORM_BLOCK:: + A two-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RG texel data + with the first 64 bits encoding red values followed by 64 bits encoding + green values. + +ename:VK_FORMAT_BC5_SNORM_BLOCK:: + A two-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of signed normalized RG texel data + with the first 64 bits encoding red values followed by 64 bits encoding + green values. + +ename:VK_FORMAT_BC6H_UFLOAT_BLOCK:: + A three-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned floating-point RGB texel + data. + +ename:VK_FORMAT_BC6H_SFLOAT_BLOCK:: + A three-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of signed floating-point RGB texel + data. + +ename:VK_FORMAT_BC7_UNORM_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_BC7_SRGB_BLOCK:: + A four-component, block-compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel + data with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:: + A three-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data. + This format has no alpha and is considered opaque. + +ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:: + A three-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data + with sRGB nonlinear encoding. This format has no alpha and is considered + opaque. + +ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:: + A four-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data, + and provides 1 bit of alpha. + +ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:: + A four-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data + with sRGB nonlinear encoding, and provides 1 bit of alpha. + +ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:: + A four-component, ETC2 compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values. + +ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:: + A four-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with the first 64 bits encoding alpha values followed by 64 bits encoding + RGB values with sRGB nonlinear encoding applied. + +ename:VK_FORMAT_EAC_R11_UNORM_BLOCK:: + A one-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized red texel data. + +ename:VK_FORMAT_EAC_R11_SNORM_BLOCK:: + A one-component, ETC2 compressed format where each 64-bit compressed + texel block encodes a 4x4 rectangle of signed normalized red texel data. + +ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK:: + A two-component, ETC2 compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RG texel data + with the first 64 bits encoding red values followed by 64 bits encoding + green values. + +ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK:: + A two-component, ETC2 compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of signed normalized RG texel data + with the first 64 bits encoding red values followed by 64 bits encoding + green values. + +ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 5x4 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 5x4 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 5x5 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 5x5 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 6x5 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 6x5 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 6x6 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 6x6 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x5 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x5 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x6 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x6 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x8 rectangle of unsigned normalized RGBA texel data. + +ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 8x8 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x5 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x5 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x6 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x6 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x8 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x8 rectangle of unsigned normalized RGBA texel data + with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x10 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 10x10 rectangle of unsigned normalized RGBA texel + data with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 12x10 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 12x10 rectangle of unsigned normalized RGBA texel + data with sRGB nonlinear encoding applied to the RGB components. + +ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 12x12 rectangle of unsigned normalized RGBA texel + data. + +ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK:: + A four-component, ASTC compressed format where each 128-bit compressed + texel block encodes a 12x12 rectangle of unsigned normalized RGBA texel + data with sRGB nonlinear encoding applied to the RGB components. + +// refEnd VkFormat + + See Also -------- +slink:VkAttachmentDescription, slink:VkBufferViewCreateInfo, slink:VkImageCreateInfo, slink:VkImageViewCreateInfo, slink:VkVertexInputAttributeDescription, flink:vkGetPhysicalDeviceFormatProperties, flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFormat + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFormatFeatureFlagBits.txt b/doc/specs/vulkan/man/VkFormatFeatureFlagBits.txt index ab3fc09b5f..9678230161 100644 --- a/doc/specs/vulkan/man/VkFormatFeatureFlagBits.txt +++ b/doc/specs/vulkan/man/VkFormatFeatureFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFormatFeatureFlagBits(3) ========================== Name ---- -VkFormatFeatureFlagBits - Stub page (not yet written) +VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer C Specification --------------- +// refBegin VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer include::../enums/VkFormatFeatureFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkFormatProperties, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkFormatFeatureFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFormatFeatureFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFormatFeatureFlags.txt b/doc/specs/vulkan/man/VkFormatFeatureFlags.txt index 98836abfe4..c43b161fea 100644 --- a/doc/specs/vulkan/man/VkFormatFeatureFlags.txt +++ b/doc/specs/vulkan/man/VkFormatFeatureFlags.txt @@ -1,66 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFormatFeatureFlags(3) ======================= Name ---- -VkFormatFeatureFlags - Capability flags of a particular format. +VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits C Specification --------------- include::../flags/VkFormatFeatureFlags.txt[] -Constants ---------- - -ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT:: - Image views having this format support filtered and/or unfiltered sampling via sampled image - and combined image sampler descriptors. - -ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT:: - Image views having this format support loads and stores via storage image descriptors. - -ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT:: - Image views having this format support atomic operations via storage image descriptors. -ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT:: - Buffer views having this format support uniform reads via uniform texel buffer descriptors. - -ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT:: - Buffer views having this format support loads and stores via storage texel buffer descriptors. - -ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT:: - Buffer views having this format support atomic operations via storage texel buffer descriptors. - -ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT:: - Indicates that the format is supported for vertex attributes. +Description +----------- -ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT:: - Indicates that the format is supported for color attachment views and thus can be used as - framebuffer color attachment format. +etext:VkFormatFeatureFlags is a mask of zero or more elink:VkFormatFeatureFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT:: - Framebuffer color attachments having this format also support blending. + - If this flag is present then ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT is also present. -ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT:: - Indicates that the format is supported for depth/stencil views and thus can be used as - framebuffer depth/stencil attachment format. +See Also +-------- -ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT:: - Format can be used as the source image of blits with flink:vkCmdBlitImage +elink:VkFormatFeatureFlagBits, slink:VkFormatProperties -ename:VK_FORMAT_FEATURE_BLIT_DST_BIT:: - Format can be used as the destination image of blits with flink:vkCmdBlitImage -Description ------------ +Document Notes +-------------- -These flags are used in the slink:VkFormatProperties structure that is returned by flink:vkGetPhysicalDeviceFormatProperties. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFormatFeatureFlags -slink:VkFormatProperties, flink:vkGetPhysicalDeviceFormatProperties +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFormatProperties.txt b/doc/specs/vulkan/man/VkFormatProperties.txt index 710456497c..3bb14a1b5e 100644 --- a/doc/specs/vulkan/man/VkFormatProperties.txt +++ b/doc/specs/vulkan/man/VkFormatProperties.txt @@ -1,27 +1,149 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFormatProperties(3) ===================== Name ---- -VkFormatProperties - Stub page (not yet written) +VkFormatProperties - Structure specifying image format properties C Specification --------------- +// refBegin VkFormatProperties - Structure specifying image format properties + +The sname:VkPhysicalDeviceLimits structure is defined as: + include::../structs/VkFormatProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:linearTilingFeatures describes the features supported by + ename:VK_IMAGE_TILING_LINEAR. + * pname:optimalTilingFeatures describes the features supported by + ename:VK_IMAGE_TILING_OPTIMAL. + * pname:bufferFeatures describes the features supported by buffers. + Description ----------- +Supported features are described as a set of elink:VkFormatFeatureFlagBits: + +// refBegin VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer +include::../enums/VkFormatFeatureFlagBits.txt[] + +The pname:linearTilingFeatures and pname:optimalTilingFeatures members of +the sname:VkFormatProperties structure describe what features are supported +by ename:VK_IMAGE_TILING_LINEAR and ename:VK_IMAGE_TILING_OPTIMAL images, +respectively. + +The following bits may: be set in pname:linearTilingFeatures and +pname:optimalTilingFeatures, indicating they are supported by images or +image views created with the queried +flink:vkGetPhysicalDeviceFormatProperties::pname:format: + +ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT:: + sname:VkImageView can: be sampled from. See + <> section. + +ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT:: + sname:VkImageView can: be used as storage image. See + <> section. + +ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT:: + sname:VkImageView can: be used as storage image that supports atomic + operations. + +ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT:: + sname:VkImageView can: be used as a framebuffer color attachment and + as an input attachment. + +ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT:: + sname:VkImageView can: be used as a framebuffer color attachment that + supports blending and as an input attachment. + +ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT:: + sname:VkImageView can: be used as a framebuffer depth/stencil attachment + and as an input attachment. + +ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT:: + sname:VkImage can: be used as pname:srcImage for the + fname:vkCmdBlitImage command. + +ename:VK_FORMAT_FEATURE_BLIT_DST_BIT:: + sname:VkImage can: be used as pname:dstImage for the + fname:vkCmdBlitImage command. + +ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT:: + If ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, + sname:VkImageView can: be used with a sampler that has either of + pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, + or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. + If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, sname:VkImage + can be used as the pname:srcImage to flink:vkCmdBlitImage + with a pname:filter of ename:VK_FILTER_LINEAR. This bit must: only be + exposed for formats that also support the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or + ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. ++ +If the format being queried is a depth/stencil format, this bit only indicates + that the depth aspect (not the stencil aspect) of an image of this format + supports linear filtering, + and that linear filtering of the depth aspect is supported whether depth + compare is enabled in the sampler or not. If this bit is not present, + linear filtering with depth compare disabled is unsupported and linear + filtering with depth compare enabled is supported, but may: compute the + filtered value in an implementation-dependent manner which differs from + the normal rules of linear filtering. The resulting value must: be in the + range latexmath:[$[0,1\]$] and should: be proportional to, or a weighted + average of, the number of comparison passes or failures. + +The following features may: appear in pname:bufferFeatures, indicating they +are supported by buffers or buffer views created with the queried +flink:vkGetPhysicalDeviceFormatProperties::pname:format: + +ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT:: + Format can: be used to create a sname:VkBufferView that can: be bound to + a ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. + +ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT:: + Format can: be used to create a sname:VkBufferView that can: be bound to + a ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. + +ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT:: + Atomic operations are supported on + ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. + +ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT:: + Format can: be used as a vertex attribute format + (sname:VkVertexInputAttributeDescription.format). + +If pname:format is a block-compression format, then buffers mustnot: support +any features for the format. + include::../validity/structs/VkFormatProperties.txt[] + + See Also -------- +elink:VkFormatFeatureFlags, flink:vkGetPhysicalDeviceFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFormatProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFramebuffer.txt b/doc/specs/vulkan/man/VkFramebuffer.txt new file mode 100644 index 0000000000..7f7bf8a235 --- /dev/null +++ b/doc/specs/vulkan/man/VkFramebuffer.txt @@ -0,0 +1,48 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkFramebuffer(3) +================ + +Name +---- +VkFramebuffer - Opaque handle to a framebuffer object + +C Specification +--------------- + +// refBegin VkFramebuffer - Opaque handle to a framebuffer object + +Render passes operate in conjunction with _framebuffers_. Framebuffers represent a +collection of specific memory attachments that a render pass instance uses. + +Framebuffers are represented by sname:VkFramebuffer handles: + +include::../handles/VkFramebuffer.txt[] + + +Description +----------- + +// refEnd VkFramebuffer + + +See Also +-------- + +slink:VkCommandBufferInheritanceInfo, slink:VkRenderPassBeginInfo, flink:vkCreateFramebuffer, flink:vkDestroyFramebuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFramebuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFramebufferCreateFlags.txt b/doc/specs/vulkan/man/VkFramebufferCreateFlags.txt index 4ace0a1285..1083d0e4af 100644 --- a/doc/specs/vulkan/man/VkFramebufferCreateFlags.txt +++ b/doc/specs/vulkan/man/VkFramebufferCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFramebufferCreateFlags(3) =========================== Name ---- -VkFramebufferCreateFlags - Stub page (not yet written) +VkFramebufferCreateFlags - Bitmask of VkFramebufferCreateFlagBits C Specification --------------- include::../flags/VkFramebufferCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkFramebufferCreateFlags is a mask of zero or more elink:VkFramebufferCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkFramebufferCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFramebufferCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFramebufferCreateInfo.txt b/doc/specs/vulkan/man/VkFramebufferCreateInfo.txt index 1147305be4..d6117b30f2 100644 --- a/doc/specs/vulkan/man/VkFramebufferCreateInfo.txt +++ b/doc/specs/vulkan/man/VkFramebufferCreateInfo.txt @@ -1,27 +1,87 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFramebufferCreateInfo(3) ========================== Name ---- -VkFramebufferCreateInfo - Stub page (not yet written) +VkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer C Specification --------------- +// refBegin VkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer + +The sname:VkFramebufferCreateInfo structure is defined as: + include::../structs/VkFramebufferCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:renderPass is a render pass that defines what render passes the + framebuffer will be compatible with. See + <> for details. + * pname:attachmentCount is the number of attachments. + * pname:pAttachments is an array of sname:VkImageView handles, each of + which will be used as the corresponding attachment in a render pass + instance. + * pname:width, pname:height and pname:layers define the dimensions of the + framebuffer. + Description ----------- +Image subresources used as attachments mustnot: be used via any +non-attachment usage for the duration of a render pass instance. + +[NOTE] +.Note +==== +This restriction means that the render pass has full knowledge of all uses +of all of the attachments, so that the implementation is able to make +correct decisions about when and how to perform layout transitions, when to +overlap execution of subpasses, etc. +==== + +[[renderpass-noattachments]] +It is legal for a subpass to use no color or depth/stencil attachments, and +rather use shader side effects such as image stores and atomics to produce +an output. In this case, the subpass continues to use the pname:width, +pname:height, and pname:layers of the framebuffer to define the dimensions +of the rendering area, and the pname:rasterizationSamples from each +pipeline's slink:VkPipelineMultisampleStateCreateInfo to define the number +of samples used in rasterization; however, if +slink:VkPhysicalDeviceFeatures::pname:variableMultisampleRate is +code:VK_FALSE, then all pipelines to be bound with a given zero-attachment +subpass must: have the same value for +slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples. + include::../validity/structs/VkFramebufferCreateInfo.txt[] + + See Also -------- +elink:VkFramebufferCreateFlags, slink:VkImageView, slink:VkRenderPass, elink:VkStructureType, flink:vkCreateFramebuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFramebufferCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkFrontFace.txt b/doc/specs/vulkan/man/VkFrontFace.txt index 96ea7eca16..acbc763a70 100644 --- a/doc/specs/vulkan/man/VkFrontFace.txt +++ b/doc/specs/vulkan/man/VkFrontFace.txt @@ -1,26 +1,74 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkFrontFace(3) ============== Name ---- -VkFrontFace - Stub page (not yet written) +VkFrontFace - interpret polygon front-facing orientation C Specification --------------- -include::../enums/VkFrontFace.txt[] +// refBegin VkFrontFace interpret polygon front-facing orientation + +The first step of polygon rasterization is to determine whether the triangle +is _back-facing_ or _front-facing_. This determination is made based on the +sign of the (clipped or unclipped) polygon's area computed in framebuffer +coordinates. One way to compute this area is: -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\[ + a = -{1 \over 2}\sum_{i=0}^{n-1} + x_f^i y_f^{i \oplus 1} - + x_f^{i \oplus 1} y_f^i +\] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +where latexmath:[$x_f^i$] and latexmath:[$y_f^i$] are the latexmath:[$x$] +and latexmath:[$y$] framebuffer coordinates of the latexmath:[$i$]th vertex +of the latexmath:[$n$]-vertex polygon (vertices are numbered starting at +zero for the purposes of this computation) and latexmath:[$i \oplus 1$] is +latexmath:[$(i + 1)~ \textrm{mod}~ n$]. + +The interpretation of the sign of latexmath:[$a$] +is determined by the +slink:VkPipelineRasterizationStateCreateInfo::pname:frontFace property of +the currently active pipeline, which takes the following values: + +include::../enums/VkFrontFace.txt[] -Constants ---------- Description ----------- +If pname:frontFace is set to ename:VK_FRONT_FACE_COUNTER_CLOCKWISE, a triangle with +positive area is considered front-facing. If it is set to +ename:VK_FRONT_FACE_CLOCKWISE, a triangle with negative area is considered +front-facing. Any triangle which is not front-facing is back-facing, +including zero-area triangles. + +// refEnd VkFrontFace + + See Also -------- +slink:VkPipelineRasterizationStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkFrontFace + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkGraphicsPipelineCreateInfo.txt b/doc/specs/vulkan/man/VkGraphicsPipelineCreateInfo.txt index b006f8fc9c..c557dcd272 100644 --- a/doc/specs/vulkan/man/VkGraphicsPipelineCreateInfo.txt +++ b/doc/specs/vulkan/man/VkGraphicsPipelineCreateInfo.txt @@ -1,27 +1,131 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkGraphicsPipelineCreateInfo(3) =============================== Name ---- -VkGraphicsPipelineCreateInfo - Stub page (not yet written) +VkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline C Specification --------------- +// refBegin VkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline + +The sname:VkGraphicsPipelineCreateInfo structure is defined as: + include::../structs/VkGraphicsPipelineCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits controlling + how the pipeline will be generated, as described below. + * pname:stageCount is the number of entries in the pname:pStages array. + * pname:pStages is an array of size pname:stageCount structures of type + slink:VkPipelineShaderStageCreateInfo describing the set of the shader + stages to be included in the graphics pipeline. + * pname:pVertexInputState is a pointer to an instance of the + slink:VkPipelineVertexInputStateCreateInfo structure. + * pname:pInputAssemblyState is a pointer to an instance of the + slink:VkPipelineInputAssemblyStateCreateInfo structure which determines + input assembly behavior, as described in <>. + * pname:pTessellationState is a pointer to an instance of the + slink:VkPipelineTessellationStateCreateInfo structure, or `NULL` if the + pipeline does not include a tessellation control shader stage and + tessellation evaluation shader stage. + * pname:pViewportState is a pointer to an instance of the + slink:VkPipelineViewportStateCreateInfo structure, or `NULL` if the + pipeline has rasterization disabled. + * pname:pRasterizationState is a pointer to an instance of the + slink:VkPipelineRasterizationStateCreateInfo structure. + * pname:pMultisampleState is a pointer to an instance of the + slink:VkPipelineMultisampleStateCreateInfo, or `NULL` if the pipeline + has rasterization disabled. + * pname:pDepthStencilState is a pointer to an instance of the + slink:VkPipelineDepthStencilStateCreateInfo structure, or `NULL` if the + pipeline has rasterization disabled or if the subpass of the render pass + the pipeline is created against does not use a depth/stencil attachment. + * pname:pColorBlendState is a pointer to an instance of the + slink:VkPipelineColorBlendStateCreateInfo structure, or `NULL` if the + pipeline has rasterization disabled or if the subpass of the render pass + the pipeline is created against does not use any color attachments. + * pname:pDynamicState is a pointer to + slink:VkPipelineDynamicStateCreateInfo and is used to indicate which + properties of the pipeline state object are dynamic and can: be changed + independently of the pipeline state. This can: be `NULL`, which means no + state in the pipeline is considered dynamic. + * pname:layout is the description of binding locations used by both the + pipeline and descriptor sets used with the pipeline. + * pname:renderPass is a handle to a render pass object describing the + environment in which the pipeline will be used; the pipeline can: be + used with an instance of any render pass compatible with the one + provided. See <> for + more information. + * pname:subpass is the index of the subpass in pname:renderPass where this + pipeline will be used. + * pname:basePipelineHandle is a pipeline to derive from. + * pname:basePipelineIndex is an index into the pname:pCreateInfos + parameter to use as a pipeline to derive from. + Description ----------- +The parameters pname:basePipelineHandle and pname:basePipelineIndex are +described in more detail in +<>. + +pname:pStages points to an array of slink:VkPipelineShaderStageCreateInfo +structures, which were previously described in +<>. + +Bits which can: be set in pname:flags are: + +// refBegin VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is generated +include::../enums/VkPipelineCreateFlagBits.txt[] + + * ename:VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT specifies that the + created pipeline will not be optimized. Using this flag may: reduce + the time taken to create the pipeline. + * ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT specifies that the + pipeline to be created is allowed to be the parent of a pipeline that + will be created in a subsequent call to flink:vkCreateGraphicsPipelines. + * ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT specifies that the pipeline to + be created will be a child of a previously created parent pipeline. + +It is valid to set both ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT and +ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT. This allows a pipeline to be both a +parent and possibly a child in a pipeline hierarchy. See +<> for more +information. + +pname:pDynamicState points to a structure of type +sname:VkPipelineDynamicStateCreateInfo. + include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[] + + See Also -------- +slink:VkPipeline, slink:VkPipelineColorBlendStateCreateInfo, elink:VkPipelineCreateFlags, slink:VkPipelineDepthStencilStateCreateInfo, slink:VkPipelineDynamicStateCreateInfo, slink:VkPipelineInputAssemblyStateCreateInfo, slink:VkPipelineLayout, slink:VkPipelineMultisampleStateCreateInfo, slink:VkPipelineRasterizationStateCreateInfo, slink:VkPipelineShaderStageCreateInfo, slink:VkPipelineTessellationStateCreateInfo, slink:VkPipelineVertexInputStateCreateInfo, slink:VkPipelineViewportStateCreateInfo, slink:VkRenderPass, elink:VkStructureType, flink:vkCreateGraphicsPipelines + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkGraphicsPipelineCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImage.txt b/doc/specs/vulkan/man/VkImage.txt new file mode 100644 index 0000000000..7f0670552d --- /dev/null +++ b/doc/specs/vulkan/man/VkImage.txt @@ -0,0 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkImage(3) +========== + +Name +---- +VkImage - Opaque handle to a image object + +C Specification +--------------- + +// refBegin VkImage - Opaque handle to a image object + +Images represent multidimensional - up to 3 - arrays of data which can: be +used for various purposes (e.g. attachments, textures), by binding them to a +graphics or compute pipeline via descriptor sets, or by directly specifying +them as parameters to certain commands. + +Images are represented by sname:VkImage handles: + +include::../handles/VkImage.txt[] + + +Description +----------- + +// refEnd VkImage + + +See Also +-------- + +slink:VkImageMemoryBarrier, slink:VkImageViewCreateInfo, slink:VkSparseImageMemoryBindInfo, slink:VkSparseImageOpaqueMemoryBindInfo, flink:vkBindImageMemory, flink:vkCmdBlitImage, flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImage, flink:vkCmdCopyImageToBuffer, flink:vkCmdResolveImage, flink:vkCreateImage, flink:vkDestroyImage, flink:vkGetImageMemoryRequirements, flink:vkGetImageSparseMemoryRequirements, flink:vkGetImageSubresourceLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImage + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageAspectFlagBits.txt b/doc/specs/vulkan/man/VkImageAspectFlagBits.txt index dcdd588e29..b88ee4c1b6 100644 --- a/doc/specs/vulkan/man/VkImageAspectFlagBits.txt +++ b/doc/specs/vulkan/man/VkImageAspectFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageAspectFlagBits(3) ======================== Name ---- -VkImageAspectFlagBits - Stub page (not yet written) +VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a view C Specification --------------- +// refBegin VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a view include::../enums/VkImageAspectFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkImageSubresourceRange, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkImageAspectFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageAspectFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageAspectFlags.txt b/doc/specs/vulkan/man/VkImageAspectFlags.txt index 1c13fd0f42..87d9f7ca91 100644 --- a/doc/specs/vulkan/man/VkImageAspectFlags.txt +++ b/doc/specs/vulkan/man/VkImageAspectFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageAspectFlags(3) ===================== Name ---- -VkImageAspectFlags - Stub page (not yet written) +VkImageAspectFlags - Bitmask of VkImageAspectFlagBits C Specification --------------- include::../flags/VkImageAspectFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkImageAspectFlags is a mask of zero or more elink:VkImageAspectFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkClearAttachment, elink:VkImageAspectFlagBits, slink:VkImageSubresource, slink:VkImageSubresourceLayers, slink:VkImageSubresourceRange, slink:VkSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageAspectFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageBlit.txt b/doc/specs/vulkan/man/VkImageBlit.txt index 9f5cd1d82a..3f63a0e157 100644 --- a/doc/specs/vulkan/man/VkImageBlit.txt +++ b/doc/specs/vulkan/man/VkImageBlit.txt @@ -1,27 +1,60 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageBlit(3) ============== Name ---- -VkImageBlit - Stub page (not yet written) +VkImageBlit - Structure specifying an image blit operation C Specification --------------- +// refBegin VkImageBlit - Structure specifying an image blit operation + +The sname:VkImageBlit structure is defined as: + include::../structs/VkImageBlit.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:srcSubresource is the subresource to blit from. + * pname:srcOffsets is an array of two slink:VkOffset3D structures + specifying the bounds of the source region within pname:srcSubresource. + * pname:dstSubresource is the subresource to blit into. + * pname:dstOffsets is an array of two slink:VkOffset3D structures + specifying the bounds of the destination region within + pname:dstSubresource. + Description ----------- +For each element of the pname:pRegions array, a blit operation is performed +the specified source and destination regions. + include::../validity/structs/VkImageBlit.txt[] + + See Also -------- +slink:VkImageSubresourceLayers, slink:VkOffset3D, flink:vkCmdBlitImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageBlit + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageCopy.txt b/doc/specs/vulkan/man/VkImageCopy.txt index 5b189b425b..dfc2bc5fc9 100644 --- a/doc/specs/vulkan/man/VkImageCopy.txt +++ b/doc/specs/vulkan/man/VkImageCopy.txt @@ -1,27 +1,62 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageCopy(3) ============== Name ---- -VkImageCopy - Stub page (not yet written) +VkImageCopy - Structure specifying an image copy operation C Specification --------------- +// refBegin VkImageCopy - Structure specifying an image copy operation + +The sname:VkImageCopy structure is defined as: + include::../structs/VkImageCopy.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:srcSubresource and pname:dstSubresource are + slink:VkImageSubresourceLayers structures specifying the image + subresources of the images used for the source and destination image + data, respectively. + * pname:srcOffset and pname:dstOffset select the initial x, y, and z + offsets in texels of the sub-regions of the source and destination image + data. + * pname:extent is the size in texels of the source image to copy in + pname:width, pname:height and pname:depth. 1D images use only pname:x + and pname:width. 2D images use pname:x, pname:y, pname:width and + pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, + pname:height and pname:depth. + Description ----------- include::../validity/structs/VkImageCopy.txt[] + + See Also -------- +slink:VkExtent3D, slink:VkImageSubresourceLayers, slink:VkOffset3D, flink:vkCmdCopyImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageCopy + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageCreateFlagBits.txt b/doc/specs/vulkan/man/VkImageCreateFlagBits.txt index 6493e8ad17..b4c06e5855 100644 --- a/doc/specs/vulkan/man/VkImageCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkImageCreateFlagBits.txt @@ -1,26 +1,75 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageCreateFlagBits(3) ======================== Name ---- -VkImageCreateFlagBits - Stub page (not yet written) +VkImageCreateFlagBits - Bitmask specifying additional parameters of an image C Specification --------------- -include::../enums/VkImageCreateFlagBits.txt[] +// refBegin VkImageCreateFlagBits - Bitmask specifying additional parameters of an image -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Additional parameters of an image are specified by +slink:VkImageCreateInfo::pname:flags. Bits which can: be set include: + +include::../enums/VkImageCreateFlagBits.txt[] -Constants ---------- Description ----------- +These bits have the following meanings: + + * ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT indicates that the image will + be backed using sparse memory binding. + * ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT indicates that the image can: + be partially backed using sparse memory binding. Images created with + this flag must: also be created with the + ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag. + * ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT indicates that the image will + be backed using sparse memory binding with memory ranges that might also + simultaneously be backing another image (or another portion of the same + image). Images created with this flag must: also be created with the + ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag + * ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can: + be used to create a sname:VkImageView with a different format from the + image. + * ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT indicates that the image can: + be used to create a sname:VkImageView of type + ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY. + +If any of the bits ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, +ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or +ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT are set, +ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set. + +See <> and +<> for +more details. + +// refEnd VkImageCreateFlagBits + + See Also -------- +elink:VkImageCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageCreateFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageCreateFlags.txt b/doc/specs/vulkan/man/VkImageCreateFlags.txt index 0af0f07ff2..29c1ba5f4d 100644 --- a/doc/specs/vulkan/man/VkImageCreateFlags.txt +++ b/doc/specs/vulkan/man/VkImageCreateFlags.txt @@ -1,51 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageCreateFlags(3) ===================== Name ---- -VkImageCreateFlags - Image object creation flags. +VkImageCreateFlags - Bitmask of VkImageCreateFlagBits C Specification --------------- -include::../enums/VkImageCreateFlagBits.txt[] include::../flags/VkImageCreateFlags.txt[] -Constants ---------- -VK_IMAGE_CREATE_SPARSE_BINDING_BIT:: - Image objects created with this flag allow their contents to backed by sparse - memory allocations using flink:vkQueueBindSparse. +Description +----------- -VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT:: - Image objects created with this flag allow their contents to be backed by a - partially resident sparse memory allocation. +etext:VkImageCreateFlags is a mask of zero or more elink:VkImageCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -VK_IMAGE_CREATE_SPARSE_ALIASED_BIT:: - Image objects created with this flag allow their contents to be backed by a - sparse memory allocation that might also simultaneously be backing another - image (or another portion of the image). -VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT:: - Image objects created with this flag allow image view objects created from them to override the - format of the image to any compatible format. Otherwise image view objects created from the - image must match the format of the image object. +See Also +-------- -VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT:: - Image objects created with this flag allow image view objects of type ename:VK_IMAGE_VIEW_TYPE_CUBE - to be created from. This flag is only allowed to be used if the image object's type is - ename:VK_IMAGE_TYPE_2D. +elink:VkImageCreateFlagBits, slink:VkImageCreateInfo, flink:vkGetPhysicalDeviceImageFormatProperties -Description ------------ -These flags are used in the slink:VkImageCreateInfo structure passed as parameter to flink:vkCreateImage -to define the properties of the created image object. +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL -slink:VkImageCreateInfo, flink:vkCreateImage +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageCreateInfo.txt b/doc/specs/vulkan/man/VkImageCreateInfo.txt index ba1e6410b6..527ead58f6 100644 --- a/doc/specs/vulkan/man/VkImageCreateInfo.txt +++ b/doc/specs/vulkan/man/VkImageCreateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageCreateInfo(3) ==================== @@ -8,67 +12,100 @@ VkImageCreateInfo - Structure specifying the parameters of a newly created image C Specification --------------- -include::../structs/VkImageCreateInfo.txt[] - -Fields ------- - -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO. - -pname:pNext:: - Pointer to next structure in the structure chain when applicable. +// refBegin VkImageCreateInfo Structure specifying the parameters of a newly created image object. -pname:imageType:: - Type of the image (see elink:VkImageType for more detail). +The sname:VkImageCreateInfo structure is defined as: -pname:format:: - Format of the texels of the image (see elink:VkFormat for more detail). - -pname:extent:: - Width, height, and depth of the image in texels. +include::../structs/VkImageCreateInfo.txt[] -pname:mipLevels:: - Number of mip levels of the image. -pname:arrayLayers:: - Number of layers of the image. +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask describing additional parameters of the image. + See elink:VkImageCreateFlagBits below for a description of the supported + bits. + * pname:imageType is a elink:VkImageType specifying the basic + dimensionality of the image, as described below. Layers in array + textures do not count as a dimension for the purposes of the image type. + * pname:format is a elink:VkFormat describing the format and type of the + data elements that will be contained in the image. + * pname:extent is a slink:VkExtent3D describing the number of data + elements in each dimension of the base level. + * pname:mipLevels describes the number of levels of detail available for + minified sampling of the image. + * pname:arrayLayers is the number of layers in the image. + * pname:samples is the number of sub-data element samples in the image as + defined in elink:VkSampleCountFlagBits. See + <>. + * pname:tiling is a elink:VkImageTiling specifying the tiling arrangement + of the data elements in memory, as described below. + * pname:usage is a bitmask describing the intended usage of the image. + See elink:VkImageUsageFlagBits below for a description of the supported + bits. + * pname:sharingMode is the sharing mode of the image when it will be + accessed by multiple queue families, and must: be one of the values + described for elink:VkSharingMode in the <> section below. + * pname:queueFamilyIndexCount is the number of entries in the + pname:pQueueFamilyIndices array. + * pname:pQueueFamilyIndices is a list of queue families that will + access this image (ignored if pname:sharingMode is not + ename:VK_SHARING_MODE_CONCURRENT). + * pname:initialLayout selects the initial elink:VkImageLayout state of all + image subresources of the image. See <>. pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED + or ename:VK_IMAGE_LAYOUT_PREINITIALIZED. -pname:samples:: - Number of samples of the image. -pname:tiling:: - Image tiling mode of the image (see elink:VkImageTiling for more detail). +Description +----------- -pname:usage:: - Allowed usages of the image (see elink:VkImageUsageFlags for more detail). +Valid limits for the image pname:extent, pname:mipLevels, pname:arrayLayers +and pname:samples members are queried with the +flink:vkGetPhysicalDeviceImageFormatProperties command. + +Images created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR have +further restrictions on their limits and capabilities compared to images +created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL. Creation +of images with tiling ename:VK_IMAGE_TILING_LINEAR may: not be supported +unless other parameters meet all of the constraints: + + * pname:imageType is ename:VK_IMAGE_TYPE_2D + * pname:format is not a depth/stencil format + * pname:mipLevels is 1 + * pname:arrayLayers is 1 + * pname:samples is ename:VK_SAMPLE_COUNT_1_BIT + * pname:usage only includes ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT + and/or ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT + +Implementations may: support additional limits and capabilities beyond those +listed above. To determine the specific capabilities of an implementation, +query the valid pname:usage bits by calling +flink:vkGetPhysicalDeviceFormatProperties and the valid limits for +pname:mipLevels and pname:arrayLayers by calling +flink:vkGetPhysicalDeviceImageFormatProperties. -pname:flags:: - Other properties of the image (see elink:VkImageCreateFlags for more detail). +include::../validity/structs/VkImageCreateInfo.txt[] -pname:sharingMode:: - Sharing mode used for the image (see elink:VkSharingMode for more detail). -pname:queueFamilyIndexCount:: - Number of queue families that can access the image in case - pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT. +See Also +-------- -pname:pQueueFamilyIndices:: - Array of pname:queueFamilyIndexCount queue family indices specifying the - set of queue families that can access the image in case - pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT. +slink:VkExtent3D, elink:VkFormat, elink:VkImageCreateFlags, elink:VkImageLayout, elink:VkImageTiling, elink:VkImageType, elink:VkImageUsageFlags, elink:VkSampleCountFlagBits, elink:VkSharingMode, elink:VkStructureType, flink:vkCreateImage -Description ------------ -This structure is used to specify the parameters of image objects created using -flink:vkCreateImage. +Document Notes +-------------- -include::../validity/structs/VkImageCreateInfo.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageCreateInfo -flink:vkCreateImage +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageFormatProperties.txt b/doc/specs/vulkan/man/VkImageFormatProperties.txt index 1c6cf52909..49672f5b6b 100644 --- a/doc/specs/vulkan/man/VkImageFormatProperties.txt +++ b/doc/specs/vulkan/man/VkImageFormatProperties.txt @@ -1,27 +1,104 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageFormatProperties(3) ========================== Name ---- -VkImageFormatProperties - Stub page (not yet written) +VkImageFormatProperties - Structure specifying a image format properties C Specification --------------- +// refBegin VkImageFormatProperties - Structure specifying a image format properties + +The sname:VkImageFormatProperties structure is defined as: + include::../structs/VkImageFormatProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:maxExtent are the maximum image dimensions. See the + <> section below for + how these values are constrained by pname:type. + * pname:maxMipLevels is the maximum number of mipmap levels. + pname:maxMipLevels must: either be equal to 1 (valid only if + pname:tiling is ename:VK_IMAGE_TILING_LINEAR) or be + equal to + latexmath:[$\left\lceil\log_2(\max( + \mathit{width},\mathit{height},\mathit{depth})) + \right\rceil + 1$] + where latexmath:[$\mathit{width}$], latexmath:[$\mathit{height}$], and + latexmath:[$\mathit{depth}$] are taken from the corresponding members of + pname:maxExtent. + * pname:maxArrayLayers is the maximum number of array layers. + pname:maxArrayLayers must: either be equal to 1 or be greater than or + equal to the pname:maxImageArrayLayers member of + slink:VkPhysicalDeviceLimits. A value of 1 is valid only if pname:tiling + is ename:VK_IMAGE_TILING_LINEAR or if pname:type is + ename:VK_IMAGE_TYPE_3D. + * pname:sampleCounts is a bitmask of elink:VkSampleCountFlagBits + specifying all the supported sample counts for this image. When + pname:tiling is ename:VK_IMAGE_TILING_LINEAR the pname:sampleCounts will + be set to ename:VK_SAMPLE_COUNT_1_BIT. Otherwise the bits set here are a + superset of the corresponding limits for the image type in the + sname:VkPhysicalDeviceLimits struct. For non-integer color images this + is pname:sampledImageColorSampleCounts, for integer format color images + this is pname:sampledImageIntegerSampleCounts, for depth/stencil images + with a depth component this is pname:sampledImageDepthSampleCounts, for + depth/stencil with a stencil component images this is + pname:sampledImageStencilSampleCounts, and if pname:usage has + ename:VK_IMAGE_USAGE_STORAGE_BIT set this is + pname:storageImageSampleCounts. For depth/stencil images with both a + depth and stencil component, both the depth and stencil limits must: be + satisfied. + * pname:maxResourceSize is an upper bound on the total image size in bytes, + inclusive of all image subresources. Implementations may: have an + address space limit on total size of a resource, which is advertised by + this property. pname:maxResourceSize must: be at least 2^31^. + Description ----------- +[NOTE] +.Note +==== +There is no mechanism to query the size of an image before creating it, to +compare that size against pname:maxResourceSize. If an application attempts +to create an image that exceeds this limit, the creation will fail or the +image will be invalid. While the advertised limit must: be at least 2^31^, +it may: not be possible to create an image that approaches that size, +particularly for ename:VK_IMAGE_TYPE_1D. +==== + +If the combination of parameters to +fname:vkGetPhysicalDeviceImageFormatProperties is not supported by the +implementation for use in flink:vkCreateImage, then all members of +sname:VkImageFormatProperties will be filled with zero. + include::../validity/structs/VkImageFormatProperties.txt[] + + See Also -------- +basetypes:VkDeviceSize, slink:VkExtent3D, elink:VkSampleCountFlags, flink:vkGetPhysicalDeviceImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageFormatProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageLayout.txt b/doc/specs/vulkan/man/VkImageLayout.txt index 5de1b9289d..e81b86e3e2 100644 --- a/doc/specs/vulkan/man/VkImageLayout.txt +++ b/doc/specs/vulkan/man/VkImageLayout.txt @@ -1,86 +1,113 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageLayout(3) ================ Name ---- -VkImageLayout - Specifies what layout an image object (or a sub-range of it) is in. +VkImageLayout - Layout of image and image subresources C Specification --------------- +// refBegin VkImageLayout - Layout of image and image subresources + +The set of image layouts consists of: + include::../enums/VkImageLayout.txt[] -Constants ---------- - -VK_IMAGE_LAYOUT_UNDEFINED:: - The contents of images (or a sub-range of it) in this layout are undefined. + - This is the layout all images are assumed to be in right after creation, or when their memory - binding is changed. + - Any operation performed on an image sub-range in this layout leaves the contents of it undefined. - Applications need to transition an image sub-range to another layout before being able to perform - any operations on it that should result in defined contents. - -VK_IMAGE_LAYOUT_GENERAL:: - An image (or a sub-range of it) in this layout allows all operations to be performed on the image - sub-range that is otherwise permitted by the usage flags the image object was created with (see - elink:VkImageUsageFlags for more detail). - -VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as a framebuffer color attachment - and as such can only be accessed through framebuffer color reads and writes resulting from the - issuing of draw commands, fname:vkCmdClearAttachments, and through clearing writes resulting from the use of - the ename:VK_ATTACHMENT_LOAD_OP_CLEAR framebuffer attachment load operation. - -VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as a framebuffer depth/stencil - attachment and as such can only be accessed through framebuffer depth/stencil reads and writes - resulting from the issuing of draw commands, fname:vkCmdClearAttachments, and through clearing writes resulting from the use of - the ename:VK_ATTACHMENT_LOAD_OP_CLEAR framebuffer attachment load operation. - -VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as a read-only framebuffer - depth/stencil attachment and as such can only be accessed through framebuffer depth/stencil reads - resulting from the issuing of draw commands, and through shader reads done via a sampled image - descriptor, combined image sampler descriptor, or read-only storage image descriptor (see - elink:VkDescriptorType for more detail). - -VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as a read-only shader resource and - as such can only be accessed by shader reads done via a sampled image descriptor, combined image - sampler descriptor, or read-only storage image descriptor (see elink:VkDescriptorType for more detail). - -VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as the source operand of the - commands flink:vkCmdCopyImage, flink:vkCmdBlitImage, flink:vkCmdCopyImageToBuffer, - and flink:vkCmdResolveImage. - -VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:: - An image (or a sub-range of it) in this layout can only be used as the destination operand of the - commands flink:vkCmdCopyImage, flink:vkCmdBlitImage, flink:vkCmdCopyBufferToImage, flink:vkCmdResolveImage, - flink:vkCmdClearColorImage, and flink:vkCmdClearDepthStencilImage. Description ----------- -The constants of this enumeration are used to identify the layout an image object (or a sub-range of it) -is expected to be in at any given time, or used to specify the destination layout an image sub-range -should be transitioned to as the result of an image memory barrier (see slink:VkImageMemoryBarrier for more -details). +The type(s) of device access supported by each layout are: + + * ename:VK_IMAGE_LAYOUT_UNDEFINED: Supports no device access. This layout + must: only be used as an pname:initialLayout or as the pname:oldLayout + in an image transition. When transitioning out of this layout, the + contents of the memory are not guaranteed to be preserved. + * ename:VK_IMAGE_LAYOUT_PREINITIALIZED: Supports no device access. This + layout must: only be used as an pname:initialLayout or as the + pname:oldLayout in an image transition. When transitioning out of this + layout, the contents of the memory are preserved. This + layout is intended to be used as the initial layout for an image whose + contents are written by the host, and hence the data can: be written to + memory immediately, without first executing a layout transition. + Currently, ename:VK_IMAGE_LAYOUT_PREINITIALIZED is only useful with + ename:VK_IMAGE_TILING_LINEAR images because there is not a standard + layout defined for ename:VK_IMAGE_TILING_OPTIMAL images. + * ename:VK_IMAGE_LAYOUT_GENERAL: Supports all types of device access. + * ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: must: only be used as a + color or resolve attachment in a sname:VkFramebuffer. This layout is + valid only for image subresources of images created with the + ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT usage bit enabled. + * ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: must: only be + used as a depth/stencil attachment in a sname:VkFramebuffer. This layout + is valid only for image subresources of images created with the + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled. + * ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: must: only be + used as a read-only depth/stencil attachment in a sname:VkFramebuffer + and/or as a read-only image in a shader (which can: be read as a sampled + image, combined image/sampler and/or input attachment). This layout is + valid only for image subresources of images created with the + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled. + * ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: must: only be used as a + read-only image in a shader (which can: be read as a sampled image, + combined image/sampler and/or input attachment). This layout is valid + only for image subresources of images created with the + ename:VK_IMAGE_USAGE_SAMPLED_BIT or + ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage bit enabled. + * ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: must: only be used as a + source image of a transfer command (see the definition of + <>). + This layout is valid only for image subresources of images created with + the ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled. + * ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: must: only be used as a + destination image of a transfer command. This layout is valid only for + image subresources of images created with the + ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage bit enabled. + +For each mechanism of accessing an image in the API, there is a parameter or +structure member that controls the image layout used to access the image. +For transfer commands, this is a parameter to the command (see <> +and <>). For use as a framebuffer attachment, this is a member in +the substructures of the sname:VkRenderPassCreateInfo (see +<>). For use in a descriptor set, this is a member +in the sname:VkDescriptorImageInfo structure (see +<>). At the time that any command buffer command +accessing an image executes on any queue, the layouts of the image +subresources that are accessed must: all match the layout specified via the +API controlling those accesses. + +The image layout of each image subresource must: be well-defined at each +point in the image subresource's lifetime. This means that when performing a +layout transition on the image subresource, the old layout value must: +either equal the current layout of the image subresource (at the time the +transition executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying +that the contents of the image subresource need not be preserved). The new +layout used in a transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or +ename:VK_IMAGE_LAYOUT_PREINITIALIZED. + +// refEnd VkImageLayout -Performing any operation on an image sub-range that isn't permitted by the layout the image sub-range is -currently in is undefined. - -If any operation tries to read from an image sub-range that isn't in the expected image layout results -in undefined data to be returned as the result of the read. - -If any operation tries to write to or perform an atomic operation on an image sub-range that isn't in the -expected image layout results in the contents of the whole image to become undefined, i.e. the whole image -is logically transitioned to the ename:VK_IMAGE_LAYOUT_UNDEFINED layout. See Also -------- -slink:VkImageMemoryBarrier +slink:VkAttachmentDescription, slink:VkAttachmentReference, slink:VkDescriptorImageInfo, slink:VkImageCreateInfo, slink:VkImageMemoryBarrier, flink:vkCmdBlitImage, flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImage, flink:vkCmdCopyImageToBuffer, flink:vkCmdResolveImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageMemoryBarrier.txt b/doc/specs/vulkan/man/VkImageMemoryBarrier.txt index bac1f647b9..67e6467c98 100644 --- a/doc/specs/vulkan/man/VkImageMemoryBarrier.txt +++ b/doc/specs/vulkan/man/VkImageMemoryBarrier.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageMemoryBarrier(3) ======================= @@ -8,55 +12,86 @@ VkImageMemoryBarrier - Structure specifying the parameters of an image memory ba C Specification --------------- -include::../structs/VkImageMemoryBarrier.txt[] +// refBegin VkImageMemoryBarrier Structure specifying the parameters of an image memory barrier. -Fields ------- +The sname:VkImageMemoryBarrier structure is defined as: -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER. +include::../structs/VkImageMemoryBarrier.txt[] -pname:pNext:: - Pointer to next structure in the structure chain when applicable. -pname:outputMask:: - Types of writes to the image to flush (see elink:VkMemoryOutputFlags for more detail). +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:srcAccessMask is a bitmask of the classes of memory accesses + performed by the first set of commands that will participate in + the dependency. + * pname:dstAccessMask is a bitmask of the classes of memory accesses + performed by the second set of commands that will participate in + the dependency. + * pname:oldLayout describes the current layout of the image + subresource(s). + * pname:newLayout describes the new layout of the image subresource(s). + * pname:srcQueueFamilyIndex is the queue family that is relinquishing + ownership of the image subresource(s) to another queue, or + ename:VK_QUEUE_FAMILY_IGNORED if there is no transfer of ownership). + * pname:dstQueueFamilyIndex is the queue family that is acquiring + ownership of the image subresource(s) from another queue, or + ename:VK_QUEUE_FAMILY_IGNORED if there is no transfer of ownership). + * pname:image is a handle to the image whose backing memory is affected by + the barrier. + * pname:subresourceRange describes an area of the backing memory for + pname:image (see <> for the description of + sname:VkImageSubresourceRange), as well as the set of image subresources + whose image layouts are modified. -pname:inputMask:: - Types of reads from the image to invalidate (see elink:VkMemoryInputFlags for more detail). -pname:oldLayout:: - Current layout the image is expected to be in (see elink:VkImageLayout for more detail). +Description +----------- -pname:newLayout:: - New layout the image should be transferred to (see elink:VkImageLayout for more detail). +If pname:oldLayout differs from pname:newLayout, a layout transition occurs +as part of the image memory barrier, affecting the data contained in the +region of the image defined by the pname:subresourceRange. If +pname:oldLayout is ename:VK_IMAGE_LAYOUT_UNDEFINED, then the data is +undefined after the layout transition. This may: allow a more efficient +transition, since the data may: be discarded. The layout transition must: +occur after all operations using the old layout are completed and before all +operations using the new layout are started. This is achieved by ensuring +that there is a memory dependency between previous accesses and the layout +transition, as well as between the layout transition and subsequent +accesses, where the layout transition occurs between the two halves of a +memory dependency in an image memory barrier. + +Layout transitions that are performed via image memory barriers are +automatically ordered against other layout transitions, including those that +occur as part of a render pass instance. + +[NOTE] +.Note +==== +See <> for details on available image layouts +and their usages. +==== -pname:srcQueueFamilyIndex:: - Identifies the source queue family to transfer ownership of the image from. - A value of ename:VK_QUEUE_FAMILY_IGNORED indicates that this member should be ignored. +include::../validity/structs/VkImageMemoryBarrier.txt[] -pname:dstQueueFamilyIndex:: - Identifies the destination queue family to transfer ownership of the image to. - A value of ename:VK_QUEUE_FAMILY_IGNORED indicates that this member should be ignored. -pname:image:: - Image object the memory barrier applies to. +See Also +-------- -pname:subresourceRange:: - Sub-range of the image the memory barrier applies to. +elink:VkAccessFlags, slink:VkImage, elink:VkImageLayout, slink:VkImageSubresourceRange, elink:VkStructureType, flink:vkCmdPipelineBarrier, flink:vkCmdWaitEvents -Description ------------ -This structure specifies the parameters of an image memory barrier that can -be passed in the ptext:ppMemBarriers parameter of flink:vkCmdPipelineBarrier -and flink:vkCmdWaitEvents. +Document Notes +-------------- -include::../validity/structs/VkImageMemoryBarrier.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageMemoryBarrier -flink:vkCmdPipelineBarrier, flink:vkCmdWaitEvents, slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageResolve.txt b/doc/specs/vulkan/man/VkImageResolve.txt index 10532257cf..21776cb420 100644 --- a/doc/specs/vulkan/man/VkImageResolve.txt +++ b/doc/specs/vulkan/man/VkImageResolve.txt @@ -1,27 +1,62 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageResolve(3) ================= Name ---- -VkImageResolve - Stub page (not yet written) +VkImageResolve - Structure specifying an image resolve operation C Specification --------------- +// refBegin VkImageResolve - Structure specifying an image resolve operation + +The sname:VkImageResolve structure is defined as: + include::../structs/VkImageResolve.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:srcSubresource and pname:dstSubresource are + slink:VkImageSubresourceLayers structures specifying the image + subresources of the images used for the source and destination image + data, respectively. Resolve of depth/stencil images is not supported. + * pname:srcOffset and pname:dstOffset select the initial x, y, and z + offsets in texels of the sub-regions of the source and destination image + data. + * pname:extent is the size in texels of the source image to resolve in + pname:width, pname:height and pname:depth. 1D images use only pname:x + and pname:width. 2D images use pname:x, pname:y, pname:width and + pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, + pname:height and pname:depth. + Description ----------- include::../validity/structs/VkImageResolve.txt[] + + See Also -------- +slink:VkExtent3D, slink:VkImageSubresourceLayers, slink:VkOffset3D, flink:vkCmdResolveImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageResolve + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageSubresource.txt b/doc/specs/vulkan/man/VkImageSubresource.txt index deb46be603..b80714c7f3 100644 --- a/doc/specs/vulkan/man/VkImageSubresource.txt +++ b/doc/specs/vulkan/man/VkImageSubresource.txt @@ -1,27 +1,54 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageSubresource(3) ===================== Name ---- -VkImageSubresource - Stub page (not yet written) +VkImageSubresource - Structure specifying a image subresource C Specification --------------- +// refBegin VkImageSubresource - Structure specifying a image subresource + +The sname:VkImageSubresource structure is defined as: + include::../structs/VkImageSubresource.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:aspectMask is a elink:VkImageAspectFlags selecting the image + _aspect_. + * pname:mipLevel selects the mipmap level. + * pname:arrayLayer selects the array layer. + Description ----------- include::../validity/structs/VkImageSubresource.txt[] + + See Also -------- +elink:VkImageAspectFlags, slink:VkSparseImageMemoryBind, flink:vkGetImageSubresourceLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageSubresource + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageSubresourceLayers.txt b/doc/specs/vulkan/man/VkImageSubresourceLayers.txt index 897d5215a6..0aa3205589 100644 --- a/doc/specs/vulkan/man/VkImageSubresourceLayers.txt +++ b/doc/specs/vulkan/man/VkImageSubresourceLayers.txt @@ -1,27 +1,55 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageSubresourceLayers(3) =========================== Name ---- -VkImageSubresourceLayers - Stub page (not yet written) +VkImageSubresourceLayers - Structure specifying a image subresource layers C Specification --------------- +// refBegin VkImageSubresourceLayers - Structure specifying a image subresource layers + +The sname:VkImageSubresourceLayers structure is defined as: + include::../structs/VkImageSubresourceLayers.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:aspectMask is a combination of elink:VkImageAspectFlagBits, + selecting the color, depth and/or stencil aspects to be copied. + * pname:mipLevel is the mipmap level to copy from. + * pname:baseArrayLayer and pname:layerCount are the starting layer and + number of layers to copy. + Description ----------- include::../validity/structs/VkImageSubresourceLayers.txt[] + + See Also -------- +slink:VkBufferImageCopy, elink:VkImageAspectFlags, slink:VkImageBlit, slink:VkImageCopy, slink:VkImageResolve + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageSubresourceLayers + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageSubresourceRange.txt b/doc/specs/vulkan/man/VkImageSubresourceRange.txt index 3a5c45af4c..d73bc70c38 100644 --- a/doc/specs/vulkan/man/VkImageSubresourceRange.txt +++ b/doc/specs/vulkan/man/VkImageSubresourceRange.txt @@ -1,27 +1,105 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageSubresourceRange(3) ========================== Name ---- -VkImageSubresourceRange - Stub page (not yet written) +VkImageSubresourceRange - Structure specifying a image subresource range C Specification --------------- +// refBegin VkImageSubresourceRange - Structure specifying a image subresource range + +The sname:VkImageSubresourceRange structure is defined as: + include::../structs/VkImageSubresourceRange.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:aspectMask is a bitmask indicating which aspect(s) of the image + are included in the view. See elink:VkImageAspectFlagBits. + * pname:baseMipLevel is the first mipmap level accessible to the view. + * pname:levelCount is the number of mipmap levels (starting from + pname:baseMipLevel) accessible to the view. + * pname:baseArrayLayer is the first array layer accessible to the view. + * pname:layerCount is the number of array layers (starting from + pname:baseArrayLayer) accessible to the view. + Description ----------- +The number of mip-map levels and array layers must: be a subset of the +image subresources in the image. If an application wants to use all +mip-levels or layers in an image after the pname:baseMipLevel or +pname:baseArrayLayer, it can: set pname:levelCount and pname:layerCount to +the special values ename:VK_REMAINING_MIP_LEVELS and +ename:VK_REMAINING_ARRAY_LAYERS without knowing the exact number of +mip-levels or layers. + +For cube and cube array image views, the layers of the image view starting +at pname:baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z, +-Z. For cube arrays, each set of six sequential layers is a single cube, so +the number of cube maps in a cube map array view is _pname:layerCount / 6_, +and image array layer _pname:baseArrayLayer + i_ is face index _i mod 6_ of +cube _i / 6_. If the number of layers in the view, whether set explicitly in +pname:layerCount or implied by ename:VK_REMAINING_ARRAY_LAYERS, is not a +multiple of 6, behavior when indexing the last cube is undefined. + +pname:aspectMask is a bitmask indicating the format being used. Bits which +may: be set include: + +// refBegin VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a view +include::../enums/VkImageAspectFlagBits.txt[] + +The mask must: be only ename:VK_IMAGE_ASPECT_COLOR_BIT, +ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT if +pname:format is a color, depth-only or stencil-only format, respectively. If +using a depth/stencil format with both depth and stencil components, +pname:aspectMask must: include at least one of +ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT, and +can: include both. + +When using an imageView of a depth/stencil image to populate a descriptor +set (e.g. for sampling in the shader, or for use as an input attachment), +the pname:aspectMask must: only include one bit and selects whether the +imageView is used for depth reads (i.e. using a floating-point sampler or +input attachment in the shader) or stencil reads (i.e. using an unsigned +integer sampler or input attachment in the shader). When an imageView of a +depth/stencil image is used as a depth/stencil framebuffer attachment, the +pname:aspectMask is ignored and both depth and stencil image subresources +are used. + +The pname:components member is of type slink:VkComponentMapping, and +describes a remapping from components of the image to components of the +vector returned by shader image instructions. This remapping must: be +identity for storage image descriptors, input attachment descriptors, and +framebuffer attachments. + include::../validity/structs/VkImageSubresourceRange.txt[] + + See Also -------- +elink:VkImageAspectFlags, slink:VkImageMemoryBarrier, slink:VkImageViewCreateInfo, flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageSubresourceRange + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageTiling.txt b/doc/specs/vulkan/man/VkImageTiling.txt index c78db7cf8d..7602db002f 100644 --- a/doc/specs/vulkan/man/VkImageTiling.txt +++ b/doc/specs/vulkan/man/VkImageTiling.txt @@ -1,26 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageTiling(3) ================ Name ---- -VkImageTiling - Stub page (not yet written) +VkImageTiling - specifies the tiling arrangement of data in an image C Specification --------------- -include::../enums/VkImageTiling.txt[] +// refBegin VkImageTiling specifies the tiling arrangement of data in an image -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The tiling arrangement of data elements in an image is specified by +slink:VkImageCreateInfo::pname:tiling, which must: be one of the values + +include::../enums/VkImageTiling.txt[] -Constants ---------- Description ----------- +ename:VK_IMAGE_TILING_OPTIMAL specifies optimal tiling (texels are laid out +in an implementation-dependent arrangement, for more optimal memory access), +and ename:VK_IMAGE_TILING_LINEAR specifies linear tiling (texels are laid +out in memory in row-major order, possibly with some padding on each row). + +// refEnd VkImageTiling + + See Also -------- +slink:VkImageCreateInfo, flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageTiling + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageType.txt b/doc/specs/vulkan/man/VkImageType.txt index de458ef310..1cdcf06d09 100644 --- a/doc/specs/vulkan/man/VkImageType.txt +++ b/doc/specs/vulkan/man/VkImageType.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageType(3) ============== @@ -8,29 +12,37 @@ VkImageType - Specifies the type of an image object. C Specification --------------- -include::../enums/VkImageType.txt[] - -Constants ---------- +// refBegin VkImageType Specifies the type of an image object. -ename:VK_IMAGE_TYPE_1D:: - One-dimensional image type. +The basic dimensionality of an image is specified by +slink:VkImageCreateInfo::pname:imageType, which must: be one of the values -ename:VK_IMAGE_TYPE_2D:: - Two-dimensional image type. +include::../enums/VkImageType.txt[] -ename:VK_IMAGE_TYPE_3D:: - Three-dimensional image type. Description ----------- -The constants of this enumeration are used to specify the type of an image object created using -the flink:vkCreateImage command. +These values specify one-, two-, or three-dimensional images, respectively. + +// refEnd VkImageType + See Also -------- -slink:VkImageCreateInfo, flink:vkCreateImage +slink:VkImageCreateInfo, flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageUsageFlagBits.txt b/doc/specs/vulkan/man/VkImageUsageFlagBits.txt index c3838e703b..b611320e0d 100644 --- a/doc/specs/vulkan/man/VkImageUsageFlagBits.txt +++ b/doc/specs/vulkan/man/VkImageUsageFlagBits.txt @@ -1,26 +1,81 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageUsageFlagBits(3) ======================= Name ---- -VkImageUsageFlagBits - Stub page (not yet written) +VkImageUsageFlagBits - Bitmask specifying intended usage of an image C Specification --------------- -include::../enums/VkImageUsageFlagBits.txt[] +// refBegin VkImageUsageFlagBits - Bitmask specifying intended usage of an image -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The intended usage of an image is specified by the bitmask +slink:VkImageCreateInfo::pname:usage. Bits which can: be set include: + +include::../enums/VkImageUsageFlagBits.txt[] -Constants ---------- Description ----------- +These bits have the following meanings: + + * ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT indicates that the image can: be + used as the source of a transfer command. + * ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT indicates that the image + can: be used as the destination of a transfer command. + * ename:VK_IMAGE_USAGE_SAMPLED_BIT indicates that the image can: be used + to create a sname:VkImageView suitable for occupying a + sname:VkDescriptorSet slot either of type + ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and be sampled by a + shader. + * ename:VK_IMAGE_USAGE_STORAGE_BIT indicates that the image can: be used + to create a sname:VkImageView suitable for occupying a + sname:VkDescriptorSet slot of type + ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE. + * ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT indicates that the image can: + be used to create a sname:VkImageView suitable for use as a color or + resolve attachment in a sname:VkFramebuffer. + * ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT indicates that the + image can: be used to create a sname:VkImageView suitable for use as a + depth/stencil attachment in a sname:VkFramebuffer. + * ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT indicates that the memory + bound to this image will have been allocated with the + ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT (see <> for more + detail). If this is set, then bits other than + ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and + ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT mustnot: be set. + * ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT indicates that the image can: + be used to create a sname:VkImageView suitable for occupying + sname:VkDescriptorSet slot of type + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; be read from a shader as an + input attachment; and be used as an input attachment in a framebuffer. + +// refEnd VkImageUsageFlagBits + + See Also -------- +elink:VkImageUsageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageUsageFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageUsageFlags.txt b/doc/specs/vulkan/man/VkImageUsageFlags.txt index 37aabaab8d..853019afdf 100644 --- a/doc/specs/vulkan/man/VkImageUsageFlags.txt +++ b/doc/specs/vulkan/man/VkImageUsageFlags.txt @@ -1,68 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageUsageFlags(3) ==================== Name ---- -VkImageUsageFlags - Image object usage flags. +VkImageUsageFlags - Bitmask of VkImageUsageFlagBits C Specification --------------- -include::../enums/VkImageUsageFlagBits.txt[] include::../flags/VkImageUsageFlags.txt[] -Constants ---------- - -ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT:: - The image can be used as the source operand of transfer operations (flink:vkCmdCopyImage, - flink:vkCmdBlitImage, flink:vkCmdCopyImageToBuffer, flink:vkCmdResolveImage). - -ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT:: - The image can be used as the destination operand of transfer operations (flink:vkCmdCopyImage, - flink:vkCmdBlitImage, flink:vkCmdCopyBufferToImage, flink:vkCmdClearColorImage, - flink:vkCmdClearDepthStencilImage, flink:vkCmdResolveImage). - -ename:VK_IMAGE_USAGE_SAMPLED_BIT:: - The image supports filtered and/or unfiltered sampling via sampled image and combined image sampler - descriptors. -ename:VK_IMAGE_USAGE_STORAGE_BIT:: - The image supports loads, stores, and atomic operations via storage image descriptors. - -ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT:: - The image can be used as a framebuffer color attachment. + - A framebuffer can only use an attachment view as a color attachment if the - view's image was created with this usage flag. +Description +----------- -ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT:: - The image can be used as a framebuffer depth/stencil attachment. + - A framebuffer can only use an attachment view as a depth/stencil attachment if the - view's image was created with this usage flag. +etext:VkImageUsageFlags is a mask of zero or more elink:VkImageUsageFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT:: - The contents of images created with this usage flag are only maintained within a render pass. -ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT:: - The image can be used as a framebuffer input attachment. +See Also +-------- -Description ------------ +slink:VkImageCreateInfo, elink:VkImageUsageFlagBits, flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceSparseImageFormatProperties -These flags are used in the slink:VkImageCreateInfo structure passed as parameter to flink:vkCreateImage -to define the intended use of the created image. Trying to use the image for any other purpose than -those requested at creation time may result in undefined behavior. -ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT and ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT are -exclusive. No image can be created with both of these flags being set. +Document Notes +-------------- -ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT can only be used together with either the -ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, or -the ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT flags. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageUsageFlags -slink:VkImageCreateInfo, flink:vkCreateImage +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageView.txt b/doc/specs/vulkan/man/VkImageView.txt new file mode 100644 index 0000000000..c52d92b2aa --- /dev/null +++ b/doc/specs/vulkan/man/VkImageView.txt @@ -0,0 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkImageView(3) +============== + +Name +---- +VkImageView - Opaque handle to a image view object + +C Specification +--------------- + +// refBegin VkImageView - Opaque handle to a image view object + +Image objects are not directly accessed by pipeline shaders for reading or +writing image data. Instead, _image views_ representing contiguous ranges of +the image subresources and containing additional metadata are used for that +purpose. Views must: be created on images of compatible types, and must: +represent a valid subset of image subresources. + +Image views are represented by sname:VkImageView handles: + +include::../handles/VkImageView.txt[] + + +Description +----------- + +// refEnd VkImageView + + +See Also +-------- + +slink:VkDescriptorImageInfo, slink:VkFramebufferCreateInfo, flink:vkCreateImageView, flink:vkDestroyImageView + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageView + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageViewCreateFlags.txt b/doc/specs/vulkan/man/VkImageViewCreateFlags.txt index ffedc70e21..4a5a7edcf9 100644 --- a/doc/specs/vulkan/man/VkImageViewCreateFlags.txt +++ b/doc/specs/vulkan/man/VkImageViewCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageViewCreateFlags(3) ========================= Name ---- -VkImageViewCreateFlags - Stub page (not yet written) +VkImageViewCreateFlags - Bitmask of VkImageViewCreateFlagBits C Specification --------------- include::../flags/VkImageViewCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkImageViewCreateFlags is a mask of zero or more elink:VkImageViewCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkImageViewCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageViewCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageViewCreateInfo.txt b/doc/specs/vulkan/man/VkImageViewCreateInfo.txt index 8306348ab8..9a5f94cc6b 100644 --- a/doc/specs/vulkan/man/VkImageViewCreateInfo.txt +++ b/doc/specs/vulkan/man/VkImageViewCreateInfo.txt @@ -1,27 +1,169 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageViewCreateInfo(3) ======================== Name ---- -VkImageViewCreateInfo - Stub page (not yet written) +VkImageViewCreateInfo - Structure specifying parameters of a newly created image view C Specification --------------- +// refBegin VkImageViewCreateInfo - Structure specifying parameters of a newly created image view + +The sname:VkImageViewCreateInfo structure is defined as: + include::../structs/VkImageViewCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:image is a sname:VkImage on which the view will be created. + * pname:viewType is the type of the image view. + * pname:format is a elink:VkFormat describing the format and type used to + interpret data elements in the image. + * pname:components specifies a remapping of color components (or of depth + or stencil components after they have been converted into color + components). See slink:VkComponentMapping. + * pname:subresourceRange selects the set of mipmap levels and array layers + to be accessible to the view. + Description ----------- +If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT +flag, pname:format can: be different from the image's format, but if they +are not equal they must: be _compatible_. Image format compatibility is +defined in the <> section. + +[[resources-image-views-compatibility]] +.Image and image view parameter compatibility requirements +[cols="20%h,35%,45%",options="header"] +|======================================== +| Dim, Arrayed, MS | Image parameters | View parameters +| 1D, 0, 0 | +imageType = IMAGE_TYPE_1D + +width >= 1 + +height = 1 + +depth = 1 + +arrayLayers >= 1 + +samples = 1 | +viewType = VIEW_TYPE_1D + +baseArrayLayer >= 0 + +arrayLayers = 1 +| 1D, 1, 0 | +imageType = IMAGE_TYPE_1D + +width >= 1 + +height = 1 + +depth = 1 + +arrayLayers >= 1 + +samples = 1 | +viewType = VIEW_TYPE_1D_ARRAY + +baseArrayLayer >= 0 + +arrayLayers >= 1 +| 2D, 0, 0 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height >= 1 + +depth = 1 + +arrayLayers >= 1 + +samples = 1 | +viewType = VIEW_TYPE_2D + +baseArrayLayer >= 0 + +arrayLayers = 1 +| 2D, 1, 0 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height >= 1 + +depth = 1 + +arrayLayers >= 1 + +samples = 1 | +viewType = VIEW_TYPE_2D_ARRAY + +baseArrayLayer >= 0 + +arrayLayers >= 1 +| 2D, 0, 1 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height >= 1 + +depth = 1 + +arrayLayers >= 1 + +samples > 1 | +viewType = VIEW_TYPE_2D + +baseArrayLayer >= 0 + +arrayLayers = 1 +| 2D, 1, 1 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height >= 1 + +depth = 1 + +arrayLayers >= 1 + +samples > 1 | +viewType = VIEW_TYPE_2D_ARRAY + +baseArrayLayer >= 0 + +arrayLayers >= 1 +| CUBE, 0, 0 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height = width + +depth = 1 + +arrayLayers >= 6 + +samples = 1 + +flags include ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT | +viewType = VIEW_TYPE_CUBE + +baseArrayLayer >= 0 + +arrayLayers = 6 +| CUBE, 1, 0 | +imageType = IMAGE_TYPE_2D + +width >= 1 + +height = width + +depth = 1 + +arrayLayers >= 6×N + +samples = 1 + +flags include ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT | +viewType = VIEW_TYPE_CUBE_ARRAY + +baseArrayLayer >= 0 + +arrayLayers = 6×N +| 3D, 0, 0 | +imageType = IMAGE_TYPE_3D + +width >= 1 + +height >= 1 + +depth >= 1 + +arrayLayers = 1 + +samples = 1 | +viewType = VIEW_TYPE_3D + +baseArrayLayer = 0 + +arrayLayers = 1 +|======================================== + +The pname:subresourceRange member is of type slink:VkImageSubresourceRange. + include::../validity/structs/VkImageViewCreateInfo.txt[] + + See Also -------- +slink:VkComponentMapping, elink:VkFormat, slink:VkImage, slink:VkImageSubresourceRange, elink:VkImageViewCreateFlags, elink:VkImageViewType, elink:VkStructureType, flink:vkCreateImageView + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageViewCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkImageViewType.txt b/doc/specs/vulkan/man/VkImageViewType.txt index 9e9645f6c3..db1e8e4c91 100644 --- a/doc/specs/vulkan/man/VkImageViewType.txt +++ b/doc/specs/vulkan/man/VkImageViewType.txt @@ -1,57 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkImageViewType(3) ================== Name ---- -VkImageViewType - Specifies the type of an image view object. +VkImageViewType - Image view types C Specification --------------- +// refBegin VkImageViewType - Image view types + +The types of image views that can: be created are: + include::../enums/VkImageViewType.txt[] -Constants ---------- -VK_IMAGE_VIEW_TYPE_1D:: - One-dimensional image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_1D. +Description +----------- -VK_IMAGE_VIEW_TYPE_2D:: - Two-dimensional image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_2D. +The exact image view type is partially implicit, based on the image's type +and sample count, as well as the view creation parameters as described in +the <>. This table also +shows which SPIR-V OpTypeImage Dim and Arrayed parameters correspond to each +image view type. -VK_IMAGE_VIEW_TYPE_3D:: - Three-dimensional image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_3D. +// refEnd VkImageViewType -VK_IMAGE_VIEW_TYPE_CUBE:: - Cube image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_2D that were - created using the ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT creation flag. -VK_IMAGE_VIEW_TYPE_1D_ARRAY:: - One-dimensional array image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_1D. +See Also +-------- -VK_IMAGE_VIEW_TYPE_2D_ARRAY:: - Two-dimensional array image view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_2D. +slink:VkImageViewCreateInfo -VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:: - Cube image array view type. + - Image views of this type can only be created from image objects of type ename:VK_IMAGE_TYPE_2D that were - created using the ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT creation flag. -Description ------------ +Document Notes +-------------- -The constants of this enumeration are used to specify the type of an image view object created using -the flink:vkCreateImageView command. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkImageViewType -slink:VkImageViewCreateInfo, flink:vkCreateImageView +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkIndexType.txt b/doc/specs/vulkan/man/VkIndexType.txt index acf79c3ff2..b33ed093fc 100644 --- a/doc/specs/vulkan/man/VkIndexType.txt +++ b/doc/specs/vulkan/man/VkIndexType.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkIndexType(3) ============== Name ---- -VkIndexType - Stub page (not yet written) +VkIndexType - type of index buffer indices C Specification --------------- +// refBegin VkIndexType - type of index buffer indices include::../enums/VkIndexType.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkCmdBindIndexBuffer, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +flink:vkCmdBindIndexBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkIndexType + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkInstance.txt b/doc/specs/vulkan/man/VkInstance.txt new file mode 100644 index 0000000000..5fb7c58d1f --- /dev/null +++ b/doc/specs/vulkan/man/VkInstance.txt @@ -0,0 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkInstance(3) +============= + +Name +---- +VkInstance - Opaque handle to a instance object + +C Specification +--------------- + +// refBegin VkInstance - Opaque handle to a instance object + +There is no global state in Vulkan and all per-application state is +stored in a sname:VkInstance object. Creating a sname:VkInstance object +initializes the Vulkan library and allows the application to pass +information about itself to the implementation. + +Instances are represented by sname:VkInstance handles: + +include::../handles/VkInstance.txt[] + + +Description +----------- + +// refEnd VkInstance + + +See Also +-------- + +flink:vkCreateInstance, flink:vkDestroyInstance, flink:vkEnumeratePhysicalDevices, flink:vkGetInstanceProcAddr + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkInstance + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkInstanceCreateFlags.txt b/doc/specs/vulkan/man/VkInstanceCreateFlags.txt index 915dc928fe..f873cfe850 100644 --- a/doc/specs/vulkan/man/VkInstanceCreateFlags.txt +++ b/doc/specs/vulkan/man/VkInstanceCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkInstanceCreateFlags(3) ======================== Name ---- -VkInstanceCreateFlags - Stub page (not yet written) +VkInstanceCreateFlags - Bitmask of VkInstanceCreateFlagBits C Specification --------------- include::../flags/VkInstanceCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkInstanceCreateFlags is a mask of zero or more elink:VkInstanceCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkInstanceCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkInstanceCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkInstanceCreateInfo.txt b/doc/specs/vulkan/man/VkInstanceCreateInfo.txt index ebff58af6d..52aa36816a 100644 --- a/doc/specs/vulkan/man/VkInstanceCreateInfo.txt +++ b/doc/specs/vulkan/man/VkInstanceCreateInfo.txt @@ -1,27 +1,67 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkInstanceCreateInfo(3) ======================= Name ---- -VkInstanceCreateInfo - Stub page (not yet written) +VkInstanceCreateInfo - Structure specifying parameters of a newly created instance C Specification --------------- +// refBegin VkInstanceCreateInfo - Structure specifying parameters of a newly created instance + +The sname:VkInstanceCreateInfo structure is defined as: + include::../structs/VkInstanceCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:pApplicationInfo is `NULL` or a pointer to an instance of + sname:VkApplicationInfo. If not `NULL`, this information helps + implementations recognize behavior inherent to classes of applications. + slink:VkApplicationInfo is defined in detail below. + * 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 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 + pname:enabledExtensionCount null-terminated UTF-8 strings containing the + names of extensions to enable. + Description ----------- include::../validity/structs/VkInstanceCreateInfo.txt[] + + See Also -------- +slink:VkApplicationInfo, elink:VkInstanceCreateFlags, elink:VkStructureType, flink:vkCreateInstance + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkInstanceCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkInternalAllocationType.txt b/doc/specs/vulkan/man/VkInternalAllocationType.txt index 30b29564e6..a60470a45c 100644 --- a/doc/specs/vulkan/man/VkInternalAllocationType.txt +++ b/doc/specs/vulkan/man/VkInternalAllocationType.txt @@ -1,26 +1,49 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkInternalAllocationType(3) =========================== Name ---- -VkInternalAllocationType - Stub page (not yet written) +VkInternalAllocationType - allocation type C Specification --------------- -include::../enums/VkInternalAllocationType.txt[] +// refBegin VkInternalAllocationType allocation type -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The pname:allocationType parameter to the pname:pfnInternalAllocation and +pname:pfnInternalFree functions may: be one of the following values: + +include::../enums/VkInternalAllocationType.txt[] -Constants ---------- Description ----------- + * ename:VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - The allocation is + intended for execution by the host. + +// refEnd VkInternalAllocationType PFN_vkInternalAllocationNotification PFN_vkInternalFreeNotification + + See Also -------- +tlink:PFN_vkInternalAllocationNotification, tlink:PFN_vkInternalFreeNotification + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkInternalAllocationType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkLayerProperties.txt b/doc/specs/vulkan/man/VkLayerProperties.txt index ed853cdb41..8d9a24fed5 100644 --- a/doc/specs/vulkan/man/VkLayerProperties.txt +++ b/doc/specs/vulkan/man/VkLayerProperties.txt @@ -1,27 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkLayerProperties(3) ==================== Name ---- -VkLayerProperties - Stub page (not yet written) +VkLayerProperties - Structure specifying layer properties C Specification --------------- +// refBegin VkLayerProperties - Structure specifying layer properties + +The sname:VkLayerProperties structure is defined as: + include::../structs/VkLayerProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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 structure to enable this layer for an + instance. + * pname:specVersion is the Vulkan 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 UTF-8 string providing additional + details that can: be used by the application to identify the layer. + Description ----------- include::../validity/structs/VkLayerProperties.txt[] + + See Also -------- +flink:vkEnumerateDeviceLayerProperties, flink:vkEnumerateInstanceLayerProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkLayerProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkLogicOp.txt b/doc/specs/vulkan/man/VkLogicOp.txt index e437568ae0..bef9ae208d 100644 --- a/doc/specs/vulkan/man/VkLogicOp.txt +++ b/doc/specs/vulkan/man/VkLogicOp.txt @@ -1,26 +1,95 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkLogicOp(3) ============ Name ---- -VkLogicOp - Stub page (not yet written) +VkLogicOp - framebuffer logical operations C Specification --------------- -include::../enums/VkLogicOp.txt[] +// refBegin VkLogicOp framebuffer logical operations -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Logical operations are controlled by the pname:logicOpEnable and +pname:logicOp members of slink:VkPipelineColorBlendStateCreateInfo. If +pname:logicOpEnable is ename:VK_TRUE, then a logical operation selected by +pname:logicOp is applied between each color attachment and the fragment's +corresponding output value, and blending of all attachments is treated as if +it were disabled. Any attachments using color formats for which logical +operations are not supported simply pass through the color values +unmodified. The logical operation is applied independently for each of the +red, green, blue, and alpha components. The pname:logicOp is selected from +the following operations: + +include::../enums/VkLogicOp.txt[] -Constants ---------- Description ----------- +<<< + +The logical operations supported by Vulkan are summarized in the +following table in which + + * latexmath:[$\lnot$] is bitwise invert, + * latexmath:[$\land$] is bitwise and, + * latexmath:[$\lor$] is bitwise or, + * latexmath:[$\oplus$] is bitwise exclusive or, + * latexmath:[$s$] is the fragment's latexmath:[$R_{s0}, G_{s0}, B_{s0}$] + or latexmath:[$A_{s0}$] component value for the fragment output + corresponding to the color attachment being updated, and + * latexmath:[$d$] is the color attachment's latexmath:[$R, G, B$] or + latexmath:[$A$] component value: + +.Logical Operations +[width="75%",options="header",align="center"] +|========================================== +|Mode | Operation +|ename:VK_LOGIC_OP_CLEAR | latexmath:[$0$] +|ename:VK_LOGIC_OP_AND | latexmath:[$s \land d$] +|ename:VK_LOGIC_OP_AND_REVERSE | latexmath:[$s \land \lnot d$] +|ename:VK_LOGIC_OP_COPY | latexmath:[$s$] +|ename:VK_LOGIC_OP_AND_INVERTED | latexmath:[$\lnot s \land d$] +|ename:VK_LOGIC_OP_NO_OP | latexmath:[$d$] +|ename:VK_LOGIC_OP_XOR | latexmath:[$s \oplus d$] +|ename:VK_LOGIC_OP_OR | latexmath:[$s \lor d$] +|ename:VK_LOGIC_OP_NOR | latexmath:[$\lnot (s \lor d)$] +|ename:VK_LOGIC_OP_EQUIVALENT | latexmath:[$\lnot (s \oplus d)$] +|ename:VK_LOGIC_OP_INVERT | latexmath:[$\lnot d$] +|ename:VK_LOGIC_OP_OR_REVERSE | latexmath:[$s \lor \lnot d$] +|ename:VK_LOGIC_OP_COPY_INVERTED | latexmath:[$\lnot s$] +|ename:VK_LOGIC_OP_OR_INVERTED | latexmath:[$\lnot s \lor d$] +|ename:VK_LOGIC_OP_NAND | latexmath:[$\lnot (s \land d)$] +|ename:VK_LOGIC_OP_SET | all 1s +|========================================== + +The result of the logical operation is then written to the color attachment +as controlled by the component write mask, described in +<>. + +// refEnd VkLogicOp + + See Also -------- +slink:VkPipelineColorBlendStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkLogicOp + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMappedMemoryRange.txt b/doc/specs/vulkan/man/VkMappedMemoryRange.txt index 2bcd2ec297..0537ac15d2 100644 --- a/doc/specs/vulkan/man/VkMappedMemoryRange.txt +++ b/doc/specs/vulkan/man/VkMappedMemoryRange.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMappedMemoryRange(3) ====================== Name ---- -VkMappedMemoryRange - Stub page (not yet written) +VkMappedMemoryRange - Structure specifying a mapped memory range C Specification --------------- +// refBegin VkMappedMemoryRange - Structure specifying a mapped memory range + +The sname:VkMappedMemoryRange structure is defined as: + include::../structs/VkMappedMemoryRange.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:memory is the memory object to which this range belongs. + * pname:offset is the zero-based byte offset from the beginning of the + memory object. + * pname:size is either the size of range, or ename:VK_WHOLE_SIZE to affect + the range from pname:offset to the end of the current mapping of the + allocation. + Description ----------- include::../validity/structs/VkMappedMemoryRange.txt[] + + See Also -------- +slink:VkDeviceMemory, basetypes:VkDeviceSize, elink:VkStructureType, flink:vkFlushMappedMemoryRanges, flink:vkInvalidateMappedMemoryRanges + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMappedMemoryRange + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryAllocateInfo.txt b/doc/specs/vulkan/man/VkMemoryAllocateInfo.txt index bf353ef157..3c45847ef7 100644 --- a/doc/specs/vulkan/man/VkMemoryAllocateInfo.txt +++ b/doc/specs/vulkan/man/VkMemoryAllocateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryAllocateInfo(3) ======================= @@ -8,14 +12,45 @@ VkMemoryAllocateInfo - Structure containing parameters of a memory allocation. C Specification --------------- +// refBegin VkMemoryAllocateInfo Structure containing parameters of a memory allocation. + +The sname:VkMemoryAllocateInfo structure is defined as: + include::../structs/VkMemoryAllocateInfo.txt[] -Fields ------- + +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:allocationSize is the size of the allocation in bytes + * pname:memoryTypeIndex is the memory type index, which selects the + properties of the memory to be allocated, as well as the heap the memory + will come from. + Description ----------- include::../validity/structs/VkMemoryAllocateInfo.txt[] + +See Also +-------- + +basetypes:VkDeviceSize, elink:VkStructureType, flink:vkAllocateMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryAllocateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryBarrier.txt b/doc/specs/vulkan/man/VkMemoryBarrier.txt index 901856f482..9c30ecf7a8 100644 --- a/doc/specs/vulkan/man/VkMemoryBarrier.txt +++ b/doc/specs/vulkan/man/VkMemoryBarrier.txt @@ -1,27 +1,188 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryBarrier(3) ================== Name ---- -VkMemoryBarrier - Stub page (not yet written) +VkMemoryBarrier - Structure specifying a memory barrier C Specification --------------- +// refBegin VkMemoryBarrier - Structure specifying a memory barrier + +The sname:VkMemoryBarrier structure is defined as: + include::../structs/VkMemoryBarrier.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:srcAccessMask is a bitmask of the classes of memory accesses + performed by the first set of commands that will participate in + the dependency. + * pname:dstAccessMask is a bitmask of the classes of memory accesses + performed by the second set of commands that will participate in + the dependency. + Description ----------- +pname:srcAccessMask and pname:dstAccessMask, along with pname:srcStageMask +and pname:dstStageMask from flink:vkCmdPipelineBarrier, define the two +halves of a memory dependency and an execution dependency. Memory accesses +using the set of access types in pname:srcAccessMask performed in pipeline +stages in pname:srcStageMask by the first set of commands must: complete and +be available to later commands. The side effects of the first set of +commands will be visible to memory accesses using the set of access types in +pname:dstAccessMask performed in pipeline stages in pname:dstStageMask by +the second set of commands. If the barrier is by-region, these requirements +only apply to invocations within the same framebuffer-space region, for +pipeline stages that perform framebuffer-space work. The execution +dependency guarantees that execution of work by the destination stages of +the second set of commands will not begin until execution of work by the +source stages of the first set of commands has completed. + +A common type of memory dependency is to avoid a read-after-write hazard. In +this case, the source access mask and stages will include writes from a +particular stage, and the destination access mask and stages will indicate +how those writes will be read in subsequent commands. However, barriers can: +also express write-after-read dependencies and write-after-write +dependencies, and are even useful to express read-after-read dependencies +across an image layout change. + +// refBegin VkAccessFlagBits - Bitmask specifying classes of memory access the will participate in a memory barrier dependency + +Bits which can: be set in slink:VkMemoryBarrier::pname:srcAccessMask and +slink:VkMemoryBarrier::pname:dstAccessMask include: + +[[synchronization-access-flags]] +include::../enums/VkAccessFlagBits.txt[] + + * ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT indicates that the access is + an indirect command structure read as part of an indirect drawing + command. + * ename:VK_ACCESS_INDEX_READ_BIT indicates that the access is an index + buffer read. + * ename:VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT indicates that the access is a + read via the vertex input bindings. + * ename:VK_ACCESS_UNIFORM_READ_BIT indicates that the access is a read via + a uniform buffer or dynamic uniform buffer descriptor. + * ename:VK_ACCESS_INPUT_ATTACHMENT_READ_BIT indicates that the access is a + read via an input attachment descriptor. + * ename:VK_ACCESS_SHADER_READ_BIT indicates that the access is a read from + a shader via any other descriptor type. + * ename:VK_ACCESS_SHADER_WRITE_BIT indicates that the access is a write + or atomic from a shader via the same descriptor types as in + ename:VK_ACCESS_SHADER_READ_BIT. + * ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT indicates that the access is a + read via a color attachment. + * ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT indicates that the access is + a write via a color or resolve attachment. + * ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT indicates that the + access is a read via a depth/stencil attachment. + * ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT indicates that the + access is a write via a depth/stencil attachment. + * ename:VK_ACCESS_TRANSFER_READ_BIT indicates that the access is a read + from a transfer (copy, blit, resolve, etc.) operation. For the complete + set of transfer operations, see + <>. + * ename:VK_ACCESS_TRANSFER_WRITE_BIT indicates that the access is a write + from a transfer (copy, blit, resolve, etc.) operation. For the complete + set of transfer operations, see + <>. + * ename:VK_ACCESS_HOST_READ_BIT indicates that the access is a read via + the host. + * ename:VK_ACCESS_HOST_WRITE_BIT indicates that the access is a write via + the host. + * ename:VK_ACCESS_MEMORY_READ_BIT indicates that the access is a read via + a non-specific unit attached to the memory. This unit may: be external + to the Vulkan device or otherwise not part of the core Vulkan pipeline. + When included in pname:dstAccessMask, all writes using access types in + pname:srcAccessMask performed by pipeline stages in pname:srcStageMask + must: be visible in memory. + * ename:VK_ACCESS_MEMORY_WRITE_BIT indicates that the access is a write + via a non-specific unit attached to the memory. This unit may: be + external to the Vulkan device or otherwise not part of the core Vulkan + pipeline. When included in pname:srcAccessMask, all access types in + pname:dstAccessMask from pipeline stages in pname:dstStageMask will + observe the side effects of commands that executed before the barrier. + When included in pname:dstAccessMask all writes using access types in + pname:srcAccessMask performed by pipeline stages in pname:srcStageMask + must: be visible in memory. + +Color attachment reads and writes are automatically (without memory or +execution dependencies) coherent and ordered against themselves and each +other for a given sample within a subpass of a render pass instance, +executing in <>. Similarly, +depth/stencil attachment reads and writes are automatically coherent and +ordered against themselves and each other in the same circumstances. + +Shader reads and/or writes through two variables (in the same or different +shader invocations) decorated with code:Coherent and which use the same +image view or buffer view are automatically coherent with each other, but +require execution dependencies if a specific order is desired. Similarly, +shader atomic operations are coherent with each other and with code:Coherent +variables. Non-code:Coherent shader memory accesses require memory +dependencies for writes to be available and reads to be visible. + +Certain memory access types are only supported on queues that support a +particular set of operations. The following table lists, for each access +flag, which queue capability flag must: be supported by the queue. When +multiple flags are enumerated in the second column of the table it means +that the access type is supported on the queue if it supports any of the +listed capability flags. For further details on queue capabilities see +<> +and <>. + +.Supported access flags +[width="100%",cols="67%,33%",options="header",align="center"] +|======================================== +|Access flag | Required queue capability flag +|ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT +|ename:VK_ACCESS_INDEX_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_UNIFORM_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT +|ename:VK_ACCESS_INPUT_ATTACHMENT_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_SHADER_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT +|ename:VK_ACCESS_SHADER_WRITE_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT +|ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | ename:VK_QUEUE_GRAPHICS_BIT +|ename:VK_ACCESS_TRANSFER_READ_BIT | ename:VK_QUEUE_GRAPHICS_BIT, ename:VK_QUEUE_COMPUTE_BIT or ename:VK_QUEUE_TRANSFER_BIT +|ename:VK_ACCESS_TRANSFER_WRITE_BIT | ename:VK_QUEUE_GRAPHICS_BIT, ename:VK_QUEUE_COMPUTE_BIT or ename:VK_QUEUE_TRANSFER_BIT +|ename:VK_ACCESS_HOST_READ_BIT | None +|ename:VK_ACCESS_HOST_WRITE_BIT | None +|ename:VK_ACCESS_MEMORY_READ_BIT | None +|ename:VK_ACCESS_MEMORY_WRITE_BIT | None +|======================================== + include::../validity/structs/VkMemoryBarrier.txt[] + + See Also -------- +elink:VkAccessFlags, elink:VkStructureType, flink:vkCmdPipelineBarrier, flink:vkCmdWaitEvents + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryBarrier + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryHeap.txt b/doc/specs/vulkan/man/VkMemoryHeap.txt index 180bf0eb4f..cf70aa2ea2 100644 --- a/doc/specs/vulkan/man/VkMemoryHeap.txt +++ b/doc/specs/vulkan/man/VkMemoryHeap.txt @@ -1,27 +1,62 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryHeap(3) =============== Name ---- -VkMemoryHeap - Stub page (not yet written) +VkMemoryHeap - Structure specifying a memory heap C Specification --------------- +// refBegin VkMemoryHeap - Structure specifying a memory heap + +The sname:VkMemoryHeap structure is defined as: + include::../structs/VkMemoryHeap.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:size is the total memory size in bytes in the heap. + * pname:flags is a bitmask of attribute flags for the heap. The bits + specified in pname:flags are: ++ +-- +// refBegin VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap +include::../enums/VkMemoryHeapFlagBits.txt[] +-- + ** if pname:flags contains ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, it means + the heap corresponds to device local memory. Device local memory may: + have different performance characteristics than host local memory, and + may: support different memory property flags. + Description ----------- include::../validity/structs/VkMemoryHeap.txt[] + + See Also -------- +basetypes:VkDeviceSize, elink:VkMemoryHeapFlags, slink:VkPhysicalDeviceMemoryProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryHeap + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryHeapFlagBits.txt b/doc/specs/vulkan/man/VkMemoryHeapFlagBits.txt index 0b1a7a80bc..e82d64502f 100644 --- a/doc/specs/vulkan/man/VkMemoryHeapFlagBits.txt +++ b/doc/specs/vulkan/man/VkMemoryHeapFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryHeapFlagBits(3) ======================= Name ---- -VkMemoryHeapFlagBits - Stub page (not yet written) +VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap C Specification --------------- +// refBegin VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap include::../enums/VkMemoryHeapFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkMemoryHeap, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkMemoryHeapFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryHeapFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryHeapFlags.txt b/doc/specs/vulkan/man/VkMemoryHeapFlags.txt index 0e5b193a52..5abe7e3ec4 100644 --- a/doc/specs/vulkan/man/VkMemoryHeapFlags.txt +++ b/doc/specs/vulkan/man/VkMemoryHeapFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryHeapFlags(3) ==================== Name ---- -VkMemoryHeapFlags - Stub page (not yet written) +VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits C Specification --------------- include::../flags/VkMemoryHeapFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkMemoryHeapFlags is a mask of zero or more elink:VkMemoryHeapFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkMemoryHeap, elink:VkMemoryHeapFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryHeapFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryMapFlags.txt b/doc/specs/vulkan/man/VkMemoryMapFlags.txt index 73488c83f4..9c063b0921 100644 --- a/doc/specs/vulkan/man/VkMemoryMapFlags.txt +++ b/doc/specs/vulkan/man/VkMemoryMapFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryMapFlags(3) =================== Name ---- -VkMemoryMapFlags - Stub page (not yet written) +VkMemoryMapFlags - Bitmask of VkMemoryMapFlagBits C Specification --------------- include::../flags/VkMemoryMapFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkMemoryMapFlags is a mask of zero or more elink:VkMemoryMapFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +flink:vkMapMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryMapFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryPropertyFlagBits.txt b/doc/specs/vulkan/man/VkMemoryPropertyFlagBits.txt index 1751d2ed53..977f82f091 100644 --- a/doc/specs/vulkan/man/VkMemoryPropertyFlagBits.txt +++ b/doc/specs/vulkan/man/VkMemoryPropertyFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryPropertyFlagBits(3) =========================== Name ---- -VkMemoryPropertyFlagBits - Stub page (not yet written) +VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type C Specification --------------- +// refBegin VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type include::../enums/VkMemoryPropertyFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkMemoryType, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkMemoryPropertyFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryPropertyFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryPropertyFlags.txt b/doc/specs/vulkan/man/VkMemoryPropertyFlags.txt index 84f006f9ae..8e6c9b95a4 100644 --- a/doc/specs/vulkan/man/VkMemoryPropertyFlags.txt +++ b/doc/specs/vulkan/man/VkMemoryPropertyFlags.txt @@ -1,54 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryPropertyFlags(3) ======================== Name ---- -VkMemoryPropertyFlags - Memory pool properties. +VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits C Specification --------------- -include::../enums/VkMemoryPropertyFlagBits.txt[] include::../flags/VkMemoryPropertyFlags.txt[] -Constants ---------- -ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT:: - Identifies a memory pool that is the most efficient for device access. +Description +----------- -ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:: - Identifies a memory pool that can be mapped into host memory address - space and thus is accessible by the host. +etext:VkMemoryPropertyFlags is a mask of zero or more elink:VkMemoryPropertyFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT:: - Identifies a memory pool where accesses between the host and the - coherency domain are coherent. Memory without this property requires - explicit use of flink:vkFlushMappedMemoryRanges after host writes to - this type of memory, and use of flink:vkInvalidateMappedMemoryRanges - before host reads from that memory. -ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT:: - Identifies memory that is cached by the host. +See Also +-------- -ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT:: - Identifies memory where an object's backing may be provided lazily - (when needed) by the implementation. +elink:VkMemoryPropertyFlagBits, slink:VkMemoryType -Description ------------ -These flags are used in the slink:VkMemoryAllocateInfo structure passed as parameter to flink:vkAllocateMemory -to define the properties of the memory pool the memory object should be allocated from. +Document Notes +-------------- -Additionally, when querying the memory requirements of objects using -flink:vkGetBufferMemoryRequirements or flink:vkGetImageMemoryRequirements, -the ptext:memoryTypeBits member returned in the slink:VkMemoryRequirements -structure takes its values from these set of flags. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryPropertyFlags -slink:VkMemoryAllocateInfo, flink:vkAllocateMemory, slink:VkMemoryRequirements +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryRequirements.txt b/doc/specs/vulkan/man/VkMemoryRequirements.txt index 08a7e77384..6cc58b2562 100644 --- a/doc/specs/vulkan/man/VkMemoryRequirements.txt +++ b/doc/specs/vulkan/man/VkMemoryRequirements.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryRequirements(3) ======================= Name ---- -VkMemoryRequirements - Stub page (not yet written) +VkMemoryRequirements - Structure specifying memory requirements C Specification --------------- +// refBegin VkMemoryRequirements - Structure specifying memory requirements + +The sname:VkMemoryRequirements structure is defined as: + include::../structs/VkMemoryRequirements.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:size is the size, in bytes, of the memory allocation required: for + the resource. + * pname:alignment is the alignment, in bytes, of the offset within the + allocation required: for the resource. + * pname:memoryTypeBits is a bitmask and contains one bit set for every + supported memory type for the resource. Bit `i` is set if and only if + the memory type `i` in the sname:VkPhysicalDeviceMemoryProperties + structure for the physical device is supported for the resource. + Description ----------- include::../validity/structs/VkMemoryRequirements.txt[] + + See Also -------- +basetypes:VkDeviceSize, flink:vkGetBufferMemoryRequirements, flink:vkGetImageMemoryRequirements + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryRequirements + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMemoryType.txt b/doc/specs/vulkan/man/VkMemoryType.txt index 1a8c51f11d..0659cad759 100644 --- a/doc/specs/vulkan/man/VkMemoryType.txt +++ b/doc/specs/vulkan/man/VkMemoryType.txt @@ -1,27 +1,88 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkMemoryType(3) =============== Name ---- -VkMemoryType - Stub page (not yet written) +VkMemoryType - Structure specifying memory type C Specification --------------- +// refBegin VkMemoryType - Structure specifying memory type + +The sname:VkMemoryType structure is defined as: + include::../structs/VkMemoryType.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:heapIndex describes which memory heap this memory type + corresponds to, and must: be less than pname:memoryHeapCount from the + sname:VkPhysicalDeviceMemoryProperties structure. + * pname:propertyFlags is a bitmask of properties for this memory type. The + bits specified in pname:propertyFlags are: ++ +-- +// refBegin VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type +include::../enums/VkMemoryPropertyFlagBits.txt[] +-- + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set, memory allocated + with this type is the most efficient for device access. This property + will only be set for memory types belonging to heaps with the + ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT set. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT bit set, memory allocated + with this type can: be mapped using flink:vkMapMemory so that it can: + be accessed on the host. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bit set, host cache + management commands fname:vkFlushMappedMemoryRanges and + fname:vkInvalidateMappedMemoryRanges are not needed to make host writes + visible to the device or device writes visible to the host, + respectively. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT bit set, memory allocated + with this type is cached on the host. Host memory accesses to + uncached memory are slower than to cached memory, however uncached + memory is always host coherent. + ** if pname:propertyFlags has the + ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type + only allows device access to the memory. Memory types must: not have + both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and + ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally, + the object's backing memory may: be provided by the implementation + lazily as specified in <>. + Description ----------- include::../validity/structs/VkMemoryType.txt[] + + See Also -------- +elink:VkMemoryPropertyFlags, slink:VkPhysicalDeviceMemoryProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkMemoryType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkMirSurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkMirSurfaceCreateFlagsKHR.txt deleted file mode 100644 index d3be52d095..0000000000 --- a/doc/specs/vulkan/man/VkMirSurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkMirSurfaceCreateFlagsKHR(3) -============================= - -Name ----- -VkMirSurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkMirSurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkMirSurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkMirSurfaceCreateInfoKHR.txt deleted file mode 100644 index b454518e04..0000000000 --- a/doc/specs/vulkan/man/VkMirSurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkMirSurfaceCreateInfoKHR(3) -============================ - -Name ----- -VkMirSurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkMirSurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkMirSurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkOffset2D.txt b/doc/specs/vulkan/man/VkOffset2D.txt index 47eb4b535d..d538fde7ea 100644 --- a/doc/specs/vulkan/man/VkOffset2D.txt +++ b/doc/specs/vulkan/man/VkOffset2D.txt @@ -1,27 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkOffset2D(3) ============= Name ---- -VkOffset2D - Stub page (not yet written) +VkOffset2D - Structure specifying a two-dimensional offset C Specification --------------- +// refBegin VkOffset2D - Structure specifying a two-dimensional offset + +A two-dimensional offsets is defined by the structure: + include::../structs/VkOffset2D.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + +include::../validity/structs/VkOffset2D.txt[] + Description ----------- -include::../validity/structs/VkOffset2D.txt[] + + See Also -------- +slink:VkRect2D + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkOffset2D + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkOffset3D.txt b/doc/specs/vulkan/man/VkOffset3D.txt index 653bc40c11..79c581e72b 100644 --- a/doc/specs/vulkan/man/VkOffset3D.txt +++ b/doc/specs/vulkan/man/VkOffset3D.txt @@ -1,27 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkOffset3D(3) ============= Name ---- -VkOffset3D - Stub page (not yet written) +VkOffset3D - Structure specifying a three-dimensional offset C Specification --------------- +// refBegin VkOffset3D - Structure specifying a three-dimensional offset + +A three-dimensional offset is defined by the structure: + include::../structs/VkOffset3D.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + +include::../validity/structs/VkOffset3D.txt[] + + Description ----------- -include::../validity/structs/VkOffset3D.txt[] + + See Also -------- +slink:VkBufferImageCopy, slink:VkImageBlit, slink:VkImageCopy, slink:VkImageResolve, slink:VkSparseImageMemoryBind + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkOffset3D + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDevice.txt b/doc/specs/vulkan/man/VkPhysicalDevice.txt new file mode 100644 index 0000000000..f6b3d88687 --- /dev/null +++ b/doc/specs/vulkan/man/VkPhysicalDevice.txt @@ -0,0 +1,51 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkPhysicalDevice(3) +=================== + +Name +---- +VkPhysicalDevice - Opaque handle to a physical device object + +C Specification +--------------- + +// refBegin VkPhysicalDevice - Opaque handle to a physical device object + +Vulkan separates the concept of _physical_ and _logical_ devices. A +physical device usually represents a single device in a system (perhaps made +up of several individual hardware devices working together), of which there +are a finite number. A logical device represents an application's view of +the device. + +Physical devices are represented by sname:VkPhysicalDevice handles: + +include::../handles/VkPhysicalDevice.txt[] + + +Description +----------- + +// refEnd VkPhysicalDevice + + +See Also +-------- + +flink:vkCreateDevice, flink:vkEnumerateDeviceExtensionProperties, flink:vkEnumerateDeviceLayerProperties, flink:vkEnumeratePhysicalDevices, flink:vkGetPhysicalDeviceFeatures, flink:vkGetPhysicalDeviceFormatProperties, flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceMemoryProperties, flink:vkGetPhysicalDeviceProperties, flink:vkGetPhysicalDeviceQueueFamilyProperties, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDevice + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceFeatures.txt b/doc/specs/vulkan/man/VkPhysicalDeviceFeatures.txt index ac3bf9b051..e557750676 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceFeatures.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceFeatures.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceFeatures(3) =========================== @@ -8,192 +12,519 @@ VkPhysicalDeviceFeatures - Structure describing the fine-grained features that c C Specification --------------- -include::../structs/VkPhysicalDeviceFeatures.txt[] - -Fields ------- - -pname:robustBufferAccess:: - out of bounds buffer accesses are well defined - -pname:fullDrawIndexUint32:: - full 32-bit range of indices are supported for indexed draw calls using VK_INDEX_TYPE_UINT32. - -pname:imageCubeArray:: - image views which are arrays of cube maps are supported (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) - -pname:independentBlend:: - blending operations are controlled independently per-attachment - -pname:geometryShader:: - geometry shader stage is supported - -pname:tessellationShader:: - tessellation control and evaluation shader stages are supported - -pname:sampleRateShading:: - per-sample shading and multisample interpolation are supported - -pname:dualSrcBlend:: - blend operations which take two sources are supported - -pname:logicOp:: - logic operations are supported - -pname:multiDrawIndirect:: - multi draw indirect is supported - -pname:depthClamp:: - depth clamping is supported - -pname:depthBiasClamp:: - depth bias clamping is supported - -pname:fillModeNonSolid:: - point and wireframe fill modes are supported - -pname:depthBounds:: - depth bounds test is supported - -pname:wideLines:: - lines with width greater than 1 are supported - -pname:largePoints:: - points with size greater than 1 are supported - -pname:alphaToOne:: - the implementation can replace the alpha value of the color fragment output to the maximum - representable alpha value for fixed-point colors or 1.0 for floating-point colors. - -pname:multiViewport:: - mulitple viewports are supported - -pname:samplerAnisotropy:: - Anisotropic filtering is supported - -pname:textureCompressionETC2:: - ETC and EAC texture compression formats are supported - -pname:textureCompressionASTC_LDR:: - ASTC LDR texture compression formats are supported - -pname:textureCompressionBC:: - BC1-7 texture compressed formats are supported - -pname:pipelineStatisticsQuery:: - pipeline statistics queries are supported - - -pname:vertexPipelineStoresAndAtomics:: - storage buffers and images support stores and atomic operationscan in - the vertex, tessellation, and geometry shader stages. - +// refBegin VkPhysicalDeviceFeatures Structure describing the fine-grained features that can be supported by an implementation. -pname:fragmentStoresAndAtomics:: - storage buffers and images support stores and atomic operationscan in - the fragment shader stage. +The sname:VkPhysicalDeviceFeatures structure is defined as: +include::../structs/VkPhysicalDeviceFeatures.txt[] -pname:shaderTessellationAndGeometryPointSize:: - the _PointSize_ shader builtin is available in the tessellation control, - tessellation evaluation, and geometry shader stages. - -pname:shaderImageGatherExtended:: - image gather with _non-constant offset_ and image gather with _offsets_ are supported - -pname:shaderStorageImageExtendedFormats:: - the extended set of image formats can be used for storage images - -pname:shaderStorageImageMultisample:: - multisample images can be used for storage images - -pname:shaderUniformBufferArrayDynamicIndexing:: - arrays of uniform buffers can be accessed with dynamically uniform indices - -pname:shaderSampledImageArrayDynamicIndexing:: - arrays of samplers and sampled images can be accessed with dynamically uniform indices - -pname:shaderStorageBufferArrayDynamicIndexing:: - arrays of storage buffers can be accessed with dynamically uniform indices - -pname:shaderStorageImageArrayDynamicIndexing:: - arrays of storage images can be accessed with dynamically uniform indices - -pname:shaderClipDistance:: - clip distance is supported in shader code - -pname:shaderCullDistance:: - cull distance is supported in shader code - -pname:shaderFloat64:: - 64-bit floats (doubles) are supported in shader code - -pname:shaderInt64:: - 64-bit integers are supported in shader code - -pname:shaderInt16:: - 16-bit integers are supported in shader code - -pname:shaderResourceResidency:: - image operations that return resource residency information are supported in shader code - -pname:shaderResourceMinLod:: - image operations that specify minimum resource Lod are supported in shader code - -pname:sparseBinding:: - indicates whether resource memory can be managed at opaque page level - -pname:shaderResourceResidency:: - Sparse resources support: Resource memory can be managed at opaque page level rather than object level - -pname:sparseResidencyBuffer:: - Sparse resources support: physical device can access partially resident buffers - -pname:sparseResidencyImage2D:: - Sparse resources support: physical device can access partially resident 2D (non-MSAA non-DepthStencil) images -pname:sparseResidencyImage3D:: - Sparse resources support: physical device can access partially resident 3D images +Members +------- -pname:sparseResidency2Samples:: - Sparse resources support: physical device can access partially resident MSAA 2D images with 2 samples +The members of the sname:VkPhysicalDeviceFeatures structure describe the +following features: -pname:sparseResidency4Samples:: - Sparse resources support: physical device can access partially resident MSAA 2D images with 4 samples -pname:sparseResidency8Samples:: - Sparse resources support: physical device can access partially resident MSAA 2D images with 8 samples +Description +----------- -pname:sparseResidency16Samples:: - Sparse resources support: physical device can access partially resident MSAA 2D images with 16 samples + * [[features-features-robustBufferAccess]] pname:robustBufferAccess + indicates that out of bounds accesses to buffers via shader operations + are well-defined. + ** When enabled, out-of-bounds buffer reads will return any of the + following values: + *** Values from anywhere within the buffer object. + *** Zero values, or (0,0,0,x) vectors for vector reads where x is a valid + value represented in the type of the vector components and may: be any + of: + **** 0, 1, or the maximum representable positive integer value, for signed + or unsigned integer components + **** 0.0 or 1.0, for floating-point components + ** When enabled, out-of-bounds writes may: modify values within the buffer + object or be ignored. + ** If not enabled, out of bounds accesses may: cause undefined behaviour + up-to and including process termination. + * [[features-features-fullDrawIndexUint32]] pname:fullDrawIndexUint32 + indicates the full 32-bit range of indices is supported for indexed draw + calls when using a elink:VkIndexType of ename:VK_INDEX_TYPE_UINT32. + pname:maxDrawIndexedIndexValue is the maximum index value that may: be + used (aside from the primitive restart index, which is always 2^32^-1 + when the elink:VkIndexType is ename:VK_INDEX_TYPE_UINT32). If this + feature is supported, pname:maxDrawIndexedIndexValue must: be 2^32^-1; + otherwise it must: be no smaller than 2^24^-1. See + <>. + * [[features-features-imageCubeArray]] pname:imageCubeArray indicates + whether image views with a elink:VkImageViewType of + ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the + corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V + capabilities can: be used in shader code. + * [[features-features-independentBlend]] pname:independentBlend indicates + whether the sname:VkPipelineColorBlendAttachmentState settings are + controlled independently per-attachment. If this feature is not enabled, + the sname:VkPipelineColorBlendAttachmentState settings for all color + attachments must: be identical. Otherwise, a different + sname:VkPipelineColorBlendAttachmentState can: be provided for each + bound color attachment. + * [[features-features-geometryShader]] pname:geometryShader indicates + whether geometry shaders are supported. If this feature is not enabled, + the ename:VK_SHADER_STAGE_GEOMETRY_BIT and + ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT enum values mustnot: be + used. This also indicates whether shader modules can: declare the + code:Geometry capability. + * [[features-features-tessellationShader]] pname:tessellationShader + indicates whether tessellation control and evaluation shaders are + supported. If this feature is not enabled, the + ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, + ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, + ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, + ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, and + ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO enum + values mustnot: be used. This also indicates whether shader modules can: + declare the code:Tessellation capability. + * [[features-features-sampleRateShading]] pname:sampleRateShading + indicates whether per-sample shading and multisample interpolation are + supported. If this feature is not enabled, the pname:sampleShadingEnable + member of the sname:VkPipelineMultisampleStateCreateInfo structure must: + be set to ename:VK_FALSE and the pname:minSampleShading member is + ignored. This also indicates whether shader modules can: declare the + code:SampleRateShading capability. + * [[features-features-dualSrcBlend]] pname:dualSrcBlend indicates whether + blend operations which take two sources are supported. If this feature + is not enabled, the ename:VK_BLEND_FACTOR_SRC1_COLOR, + ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, + ename:VK_BLEND_FACTOR_SRC1_ALPHA, and + ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA enum values mustnot: be used + as source or destination blending factors. See <>. + * [[features-features-logicOp]] pname:logicOp indicates whether logic + operations are supported. If this feature is not enabled, the + pname:logicOpEnable member of the + sname:VkPipelineColorBlendStateCreateInfo structure must: be set to + ename:VK_FALSE, and the pname:logicOp member is ignored. + * [[features-features-multiDrawIndirect]] pname:multiDrawIndirect + indicates whether multiple draw indirect is supported. If this feature + is not enabled, the pname:drawCount parameter to the + fname:vkCmdDrawIndirect and fname:vkCmdDrawIndexedIndirect commands + must: be 0 or 1. The pname:maxDrawIndirectCount member of the + sname:VkPhysicalDeviceLimits structure must: also be 1 if this feature + is not supported. See + <>. + * [[features-features-drawIndirectFirstInstance]] + pname:drawIndirectFirstInstance indicates whether indirect draw calls + support the pname:firstInstance parameter. If this feature is not + enabled, the pname:firstInstance member of all + sname:VkDrawIndirectCommand and sname:VkDrawIndexedIndirectCommand + structures that are provided to the fname:vkCmdDrawIndirect and + fname:vkCmdDrawIndexedIndirect commands must: be 0. + * [[features-features-depthClamp]] pname:depthClamp indicates whether + depth clamping is supported. If this feature is not enabled, the + pname:depthClampEnable member of the + sname:VkPipelineRasterizationStateCreateInfo structure must: be set to + ename:VK_FALSE. Otherwise, setting pname:depthClampEnable to + ename:VK_TRUE will enable depth clamping. + * [[features-features-depthBiasClamp]] pname:depthBiasClamp indicates + whether depth bias clamping is supported. If this feature is not + enabled, the pname:depthBiasClamp member of the + sname:VkPipelineRasterizationStateCreateInfo structure must: be set + to 0.0 unless the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is enabled, + and the pname:depthBiasClamp parameter to fname:vkCmdSetDepthBias must: + be set to 0.0. + * [[features-features-fillModeNonSolid]] pname:fillModeNonSolid indicates + whether point and wireframe fill modes are supported. If this feature is + not enabled, the ename:VK_POLYGON_MODE_POINT and + ename:VK_POLYGON_MODE_LINE enum values mustnot: be used. + * [[features-features-depthBounds]] pname:depthBounds indicates whether + depth bounds tests are supported. If this feature is not enabled, the + pname:depthBoundsTestEnable member of the + sname:VkPipelineDepthStencilStateCreateInfo structure must: be set to + ename:VK_FALSE. When pname:depthBoundsTestEnable is set to + ename:VK_FALSE, the pname:minDepthBounds and + pname:maxDepthBounds members of the + sname:VkPipelineDepthStencilStateCreateInfo structure are ignored. + * [[features-features-wideLines]] pname:wideLines indicates whether lines + with width other than 1.0 are supported. If this feature is not enabled, + the pname:lineWidth member of the + sname:VkPipelineRasterizationStateCreateInfo structure must: be set + to 1.0 unless the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is enabled, + and the pname:lineWidth parameter to fname:vkCmdSetLineWidth must: be set + to 1.0. When this feature is supported, the range and granularity of + supported line widths are indicated by the pname:lineWidthRange and + pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits + structure, respectively. + * [[features-features-largePoints]] pname:largePoints indicates whether + points with size greater than 1.0 are supported. If this feature is not + enabled, only a point size of 1.0 written by a shader is supported. The + range and granularity of supported point sizes are indicated by the + pname:pointSizeRange and pname:pointSizeGranularity members of the + sname:VkPhysicalDeviceLimits structure, respectively. + * [[features-features-alphaToOne]] pname:alphaToOne indicates whether the + implementation is able to replace the alpha value of the color fragment + output from the fragment shader with the maximum representable alpha + value for fixed-point colors or 1.0 for floating-point colors. If this + feature is not enabled, then the pname:alphaToOneEnable member of the + sname:VkPipelineMultisampleStateCreateInfo structure must: be set to + ename:VK_FALSE. Otherwise setting pname:alphaToOneEnable to + ename:VK_TRUE will enable alpha-to-one behaviour. + * [[features-features-multiViewport]] pname:multiViewport indicates + whether more than one viewport is supported. If this feature is not + enabled, the pname:viewportCount and pname:scissorCount members of the + sname:VkPipelineViewportStateCreateInfo structure must: be set to 1. + Similarly, the pname:viewportCount parameter to the + fname:vkCmdSetViewport command and the pname:scissorCount parameter to + the fname:vkCmdSetScissor command must: be 1, and the + pname:firstViewport parameter to the fname:vkCmdSetViewport command and + the pname:firstScissor parameter to the fname:vkCmdSetScissor command + must: be 0. + * [[features-features-samplerAnisotropy]] pname:samplerAnisotropy + indicates whether anisotropic filtering is supported. If this feature is + not enabled, the pname:maxAnisotropy member of the + sname:VkSamplerCreateInfo structure must: be 1.0. + * [[features-features-textureCompressionETC2]] + pname:textureCompressionETC2 indicates whether the ETC2 and EAC + compressed texture formats are supported. If this feature is not + enabled, the following formats mustnot: be used to create images: ++ +-- +* ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK +* ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK +* ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK +* ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK +* ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK +* ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK +* ename:VK_FORMAT_EAC_R11_UNORM_BLOCK +* ename:VK_FORMAT_EAC_R11_SNORM_BLOCK +* ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK +* ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK +-- ++ +flink:vkGetPhysicalDeviceFormatProperties is used to +check for the supported properties of individual formats. ++ + * [[features-features-textureCompressionASTC_LDR]] + pname:textureCompressionASTC_LDR indicates whether the ASTC LDR + compressed texture formats are supported. If this feature is not + enabled, the following formats mustnot: be used to create images: ++ +-- +* ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK +* ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK +* ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK +-- ++ +flink:vkGetPhysicalDeviceFormatProperties is used to +check for the supported properties of individual formats. ++ + * [[features-features-textureCompressionBC]] pname:textureCompressionBC + indicates whether the BC compressed texture formats are supported. If + this feature is not enabled, the following formats mustnot: be used to + create images: ++ +-- +* ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK +* ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK +* ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK +* ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK +* ename:VK_FORMAT_BC2_UNORM_BLOCK +* ename:VK_FORMAT_BC2_SRGB_BLOCK +* ename:VK_FORMAT_BC3_UNORM_BLOCK +* ename:VK_FORMAT_BC3_SRGB_BLOCK +* ename:VK_FORMAT_BC4_UNORM_BLOCK +* ename:VK_FORMAT_BC4_SNORM_BLOCK +* ename:VK_FORMAT_BC5_UNORM_BLOCK +* ename:VK_FORMAT_BC5_SNORM_BLOCK +* ename:VK_FORMAT_BC6H_UFLOAT_BLOCK +* ename:VK_FORMAT_BC6H_SFLOAT_BLOCK +* ename:VK_FORMAT_BC7_UNORM_BLOCK +* ename:VK_FORMAT_BC7_SRGB_BLOCK +-- ++ +flink:vkGetPhysicalDeviceFormatProperties is used to +check for the supported properties of individual formats. ++ + * [[features-features-occlusionQueryPrecise]] pname:occlusionQueryPrecise + indicates whether occlusion queries returning actual sample counts are + supported. Occlusion queries are created in a sname:VkQueryPool by + specifying the pname:queryType of ename:VK_QUERY_TYPE_OCCLUSION in the + sname:VkQueryPoolCreateInfo structure which is passed to + fname:vkCreateQueryPool. If this feature is enabled, queries of this + type can: enable ename:VK_QUERY_CONTROL_PRECISE_BIT in the pname:flags + parameter to fname:vkCmdBeginQuery. If this feature is not supported, + the implementation supports only boolean occlusion queries. When any + samples are passed, boolean queries will return a non-zero result value, + otherwise a result value of zero is returned. When this feature is + enabled and ename:VK_QUERY_CONTROL_PRECISE_BIT is set, occlusion queries + will report the actual number of samples passed. + * [[features-features-pipelineStatisticsQuery]] + pname:pipelineStatisticsQuery indicates whether the pipeline statistics + queries are supported. If this feature is not enabled, queries of type + ename:VK_QUERY_TYPE_PIPELINE_STATISTICS cannot: be created, and none of + the elink:VkQueryPipelineStatisticFlagBits bits can: be set in the + pname:pipelineStatistics member of the sname:VkQueryPoolCreateInfo + structure. + * [[features-features-vertexPipelineStoresAndAtomics]] + pname:vertexPipelineStoresAndAtomics indicates whether storage buffers + and images support stores and atomic operations in the vertex, + tessellation, and geometry shader stages. If this feature is not + enabled, all storage image, storage texel buffers, and storage buffer + variables used by these stages in shader modules must: be decorated with + the code:NonWriteable decoration (or the code:readonly memory qualifier + in GLSL). + * [[features-features-fragmentStoresAndAtomics]] + pname:fragmentStoresAndAtomics indicates whether storage buffers and + images support stores and atomic operations in the fragment shader + stage. If this feature is not enabled, all storage image, storage texel + buffers, and storage buffer variables used by the fragment stage in + shader modules must: be decorated with the code:NonWriteable decoration + (or the code:readonly memory qualifier in GLSL). + * [[features-features-shaderTessellationAndGeometryPointSize]] + pname:shaderTessellationAndGeometryPointSize indicates whether the + code:PointSize built-in decoration is available in the tessellation + control, tessellation evaluation, and geometry shader stages. If this + feature is not enabled, the code:PointSize built-in decoration is not + available in these shader stages and all points written from a + tessellation or geometry shader will have a size of 1.0. This also + indicates whether shader modules can: declare the + code:TessellationPointSize capability for tessellation control and + evaluation shaders, or if the shader modules can: declare the + code:GeometryPointSize capability for geometry shaders. An + implementation supporting this feature must: also support one or both of + the <> or + <> features. + * [[features-features-shaderImageGatherExtended]] + pname:shaderImageGatherExtended indicates whether the extended set of + image gather instructions are available in shader code. If this feature + is not enabled, the code:OpImage*code:Gather instructions do not support + the code:Offset and code:ConstOffsets operands. This also indicates + whether shader modules can: declare the code:ImageGatherExtended + capability. + * [[features-features-shaderStorageImageExtendedFormats]] + pname:shaderStorageImageExtendedFormats indicates whether the extended + storage image formats are available in shader code. If this feature is + not enabled, the formats requiring the code:StorageImageExtendedFormats + capability are not supported for storage images. This also indicates + whether shader modules can: declare the code:StorageImageExtendedFormats + capability. + * [[features-features-shaderStorageImageMultisample]] + pname:shaderStorageImageMultisample indicates whether multisampled + storage images are supported. If this feature is not enabled, images + that are created with a pname:usage that includes + ename:VK_IMAGE_USAGE_STORAGE_BIT must: be created with pname:samples + equal to ename:VK_SAMPLE_COUNT_1_BIT. This also indicates whether shader + modules can: declare the code:StorageImageMultisample capability. + * [[features-features-shaderStorageImageReadWithoutFormat]] + 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: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:OpTypeImage of code:Unknown. This also + indicates whether shader modules can: declare the + code:StorageImageWriteWithoutFormat capability. + * [[features-features-shaderUniformBufferArrayDynamicIndexing]] + pname:shaderUniformBufferArrayDynamicIndexing indicates whether arrays + of uniform buffers can: be indexed by dynamically uniform integer + expressions in shader code. If this feature is not enabled, resources + with a descriptor type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: be indexed only by + constant integral expressions when aggregated into arrays in shader + code. This also indicates whether shader modules can: declare the + code:UniformBufferArrayDynamicIndexing capability. + * [[features-features-shaderSampledImageArrayDynamicIndexing]] + pname:shaderSampledImageArrayDynamicIndexing indicates whether arrays of + samplers or sampled images can: be indexed by dynamically uniform + integer expressions in shader code. If this feature is not enabled, + resources with a descriptor type of ename:VK_DESCRIPTOR_TYPE_SAMPLER, + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or + ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: be indexed only by constant + integral expressions when aggregated into arrays in shader code. This + also indicates whether shader modules can: declare the + code:SampledImageArrayDynamicIndexing capability. + * [[features-features-shaderStorageBufferArrayDynamicIndexing]] + pname:shaderStorageBufferArrayDynamicIndexing indicates whether arrays + of storage buffers can: be indexed by dynamically uniform integer + expressions in shader code. If this feature is not enabled, resources + with a descriptor type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: be indexed only by + constant integral expressions when aggregated into arrays in shader + code. This also indicates whether shader modules can: declare the + code:StorageBufferArrayDynamicIndexing capability. + * [[features-features-shaderStorageImageArrayDynamicIndexing]] + pname:shaderStorageImageArrayDynamicIndexing indicates whether arrays of + storage images can: be indexed by dynamically uniform integer + expressions in shader code. If this feature is not enabled, resources + with a descriptor type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: + be indexed only by constant integral expressions when aggregated into + arrays in shader code. This also indicates whether shader modules can: + declare the code:StorageImageArrayDynamicIndexing capability. + * [[features-features-shaderClipDistance]] pname:shaderClipDistance + indicates whether clip distances are supported in shader code. If this + feature is not enabled, the code:ClipDistance built-in decoration + 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 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. + * [[features-features-shaderFloat64]] pname:shaderFloat64 indicates + whether 64-bit floats (doubles) are supported in shader code. If this + feature is not enabled, 64-bit floating-point types mustnot: be used in + shader code. This also indicates whether shader modules can: declare the + code:Float64 capability. + * [[features-features-shaderInt64]] pname:shaderInt64 indicates whether + 64-bit integers (signed and unsigned) are supported in shader code. If + this feature is not enabled, 64-bit integer types mustnot: be used in + shader code. This also indicates whether shader modules can: declare the + code:Int64 capability. + * [[features-features-shaderInt16]] pname:shaderInt16 indicates whether + 16-bit integers (signed and unsigned) are supported in shader code. If + this feature is not enabled, 16-bit integer types mustnot: be used in + shader code. This also indicates whether shader modules can: declare the + code:Int16 capability. + * [[features-features-shaderResourceResidency]] + pname:shaderResourceResidency indicates whether image operations that + 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 code:SparseResidency capability. The feature + requires at least one of the ptext:sparseResidency* features to be + supported. + * [[features-features-shaderResourceMinLod]] pname:shaderResourceMinLod + indicates whether image operations that specify the minimum resource + level-of-detail (LOD) are supported in shader code. If this feature is + not enabled, the code:MinLod image operand mustnot: be used in shader + code. This also indicates whether shader modules can: declare the + code:MinLod capability. + * [[features-features-sparseBinding]] pname:sparseBinding indicates + whether resource memory can: be managed at opaque sparse block level + instead of at the object level. If this feature is not enabled, resource + memory must: be bound only on a per-object basis using the + fname:vkBindBufferMemory and fname:vkBindImageMemory commands. In this + case, buffers and images mustnot: be created with + ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and + ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in the pname:flags member + of the sname:VkBufferCreateInfo and sname:VkImageCreateInfo structures, + respectively. Otherwise resource memory can: be managed as described in + <>. + * [[features-features-sparseResidencyBuffer]] pname:sparseResidencyBuffer + indicates whether the device can: access partially resident buffers. If + this feature is not enabled, buffers mustnot: be created with + ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags + member of the sname:VkBufferCreateInfo structure. + * [[features-features-sparseResidencyImage2D]] + pname:sparseResidencyImage2D indicates whether the device can: access + partially resident 2D images with 1 sample per pixel. If this feature is + not enabled, images with an pname:imageType of ename:VK_IMAGE_TYPE_2D + and pname:samples set to ename:VK_SAMPLE_COUNT_1_BIT mustnot: be created + with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags + member of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidencyImage3D]] + pname:sparseResidencyImage3D indicates whether the device can: access + partially resident 3D images. If this feature is not enabled, images + with an pname:imageType of ename:VK_IMAGE_TYPE_3D mustnot: be created + with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags + member of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidency2Samples]] + pname:sparseResidency2Samples indicates whether the physical device can: + access partially resident 2D images with 2 samples per pixel. If this + feature is not enabled, images with an pname:imageType of + ename:VK_IMAGE_TYPE_2D and pname:samples set to + ename:VK_SAMPLE_COUNT_2_BIT mustnot: be created with + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member + of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidency4Samples]] + pname:sparseResidency4Samples indicates whether the physical device can: + access partially resident 2D images with 4 samples per pixel. If this + feature is not enabled, images with an pname:imageType of + ename:VK_IMAGE_TYPE_2D and pname:samples set to + ename:VK_SAMPLE_COUNT_4_BIT mustnot: be created with + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member + of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidency8Samples]] + pname:sparseResidency8Samples indicates whether the physical device can: + access partially resident 2D images with 8 samples per pixel. If this + feature is not enabled, images with an pname:imageType of + ename:VK_IMAGE_TYPE_2D and pname:samples set to + ename:VK_SAMPLE_COUNT_8_BIT mustnot: be created with + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member + of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidency16Samples]] + pname:sparseResidency16Samples indicates whether the physical device + can: access partially resident 2D images with 16 samples per pixel. If + this feature is not enabled, images with an pname:imageType of + ename:VK_IMAGE_TYPE_2D and pname:samples set to + ename:VK_SAMPLE_COUNT_16_BIT mustnot: be created with + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member + of the sname:VkImageCreateInfo structure. + * [[features-features-sparseResidencyAliased]] + pname:sparseResidencyAliased indicates whether the physical device can: + correctly access data aliased into multiple locations. If this feature + is not enabled, the ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT and + ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT enum values mustnot: be used in + pname:flags members of the sname:VkBufferCreateInfo and + sname:VkImageCreateInfo structures, respectively. + * [[features-features-variableMultisampleRate]] + pname:variableMultisampleRate indicates whether all pipelines that will + be bound to a command buffer during a subpass with no attachments must: + have the same value for + sname:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples. + If set to ename:VK_TRUE, the implementation supports variable + multisample rates in a subpass with no attachments. If set to + ename:VK_FALSE, then all pipelines bound in such a subpass must: have + the same multisample rate. This has no effect in situations where a + subpass uses any attachments. + * [[features-features-inheritedQueries]] pname:inheritedQueries indicates + whether a secondary command buffer may: be executed while a query is + active. + +include::../validity/structs/VkPhysicalDeviceFeatures.txt[] -pname:sparseResidencyAliased:: - Sparse resources support: physical device can correctly access data aliased into multiple locations (opt-in) -Description ------------ +See Also +-------- -The VkPhysicalDeviceFeatures structure contains a feature flag for each of -the fine-grained features that may be supported by an implementation. +basetypes:VkBool32, slink:VkDeviceCreateInfo, flink:vkGetPhysicalDeviceFeatures -When passed to flink:vkGetPhysicalDeviceFeatures as the ptext:pFeatures -parameter, the implementation will fill in each member of the structure -with ename:VK_TRUE if the indicated ptext:physicalDevice supports the feature, -or with ename:VK_FALSE if the physical device does not support the feature. -Fine-grained features must be enabled at slink:VkDevice creation time. This -is done by passing a pointer to a slink:VkPhysicalDeviceFeatures structure -in the ptext:pEnabledFeatures member of the slink:VkDeviceCreateInfo -structure that is passed to flink:vkCreateDevice. In this case, setting a -member of the structure to ename:VK_TRUE will enable support for the -feature on the indictated physical device, and setting a member to -ename:VK_FALSE will disable support for the feature. +Document Notes +-------------- -include::../validity/structs/VkPhysicalDeviceFeatures .txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceFeatures -flink:vkGetPhysicalDeviceFeatures, flink:vkGetPhysicalDeviceProperties, flink:vkCreateDevice +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceLimits.txt b/doc/specs/vulkan/man/VkPhysicalDeviceLimits.txt index 0dbbd31eb8..1ee56431bc 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceLimits.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceLimits.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceLimits(3) ========================= @@ -8,226 +12,676 @@ VkPhysicalDeviceLimits - Structure C Specification --------------- +// refBegin VkPhysicalDeviceLimits Structure + +The sname:VkPhysicalDeviceLimits structure is defined as: + include::../structs/VkPhysicalDeviceLimits.txt[] -Fields ------- - -maxImageDimension1D:: - max 1D image dimension -maxImageDimension2D:: - max 2D image dimension -maxImageDimension3D:: - max 3D image dimension -maxImageDimensionCube:: - max cubemap image dimension -maxImageArrayLayers:: - max layers for image arrays -maxTexelBufferSize:: - max texel buffer size (bytes) -maxUniformBufferRange:: - max uniform buffer range (bytes) -maxStorageBufferRange:: - max storage buffer range (bytes) -maxPushConstantsSize:: - max size of the push constants pool (bytes) - -maxMemoryAllocationCount:: - max number of device memory allocations supported -maxSamplerAllocationCount:: - max number of samplers that can be allocated on a device -bufferImageGranularity:: - Granularity (in bytes) at which buffers and linear images vs optimal - images can be bound to adjacent memory locations without aliasing - -maxBoundDescriptorSets:: - max number of descriptors sets that can be bound to a pipeline -maxPerStageDescriptorSamplers:: - max num of samplers allowed per-stage in a descriptor set -maxPerStageDescriptorUniformBuffers:: - max num of uniform buffers allowed per-stage in a descriptor set -maxPerStageDescriptorStorageBuffers:: - max num of storage buffers allowed per-stage in a descriptor set -maxPerStageDescriptorSampledImages:: - max num of sampled images allowed per-stage in a descriptor set -maxPerStageDescriptorStorageImages:: - max num of storage images allowed per-stage in a descriptor set -maxPerStageDescriptorInputAttachments:: - max num of input attachments allowed per-stage in a descriptor set -maxDescriptorSetUniformBuffers:: - max num of uniform buffers allowed in all stages in a descriptor set -maxDescriptorSetStorageBuffers:: - max num of storage buffers allowed in all stages in a descriptor set -maxDescriptorSetSampledImages:: - max num of sampled images allowed in all stages in a descriptor set -maxDescriptorSetStorageImages:: - max num of storage images allowed in all stages in a descriptor set -maxDescriptorSetInputAttachments:: - max num of input attachments allowed in all stages in a descriptor set - -maxVertexInputAttributes:: - max num of vertex input attribute slots -maxVertexInputBindings: - max num of vertex input binding slots -maxVertexInputAttributeOffset:: - max vertex input attribute offset added to vertex buffer offset -maxVertexInputBindingStride:: - max vertex input binding stride -maxVertexOutputComponents:: - max num of output components written by vertex shader - -maxTessellationGenLevel:: - max level supported by tessellation primitive generator -maxTessellationPatchSize:: - max patch size (vertices) -maxTessellationControlPerVertexInputComponents:: - max num of input components per-vertex in TCS -maxTessellationControlPerVertexOutputComponents:: - max num of output components per-vertex in TCS -maxTessellationControlPerPatchOutputComponents:: - max num of output components per-patch in TCS -maxTessellationControlTotalOutputComponents:: - max total num of per-vertex and per-patch output components in TCS - -maxTessellationEvaluationInputComponents:: - max num of input components per vertex in TES -maxTessellationEvaluationOutputComponents:: - max num of output components per vertex in TES - -maxGeometryShaderInvocations:: - max invocation count supported in geometry shader -maxGeometryInputComponents:: - max num of input components read in geometry stage -maxGeometryOutputComponents:: - max num of output components written in geometry stage -maxGeometryOutputVertices:: - max num of vertices that can be emitted in geometry stage -maxGeometryTotalOutputComponents:: - max total num of components (all vertices) written in geometry stage -maxFragmentInputComponents:: - max num of input compontents read in fragment stage -maxFragmentOutputAttachments:: - max num of output attachments written in fragment stage -maxFragmentDualSourceAttachments:: - max num of output attachments written when using dual source blending -maxFragmentCombinedOutputResources:: - total num of storage buffers, storage images and output buffers -maxComputeSharedMemorySize:: - max total storage size of work group local storage (bytes) -maxComputeWorkGroupCount[3]:: - max num of compute work groups that may be dispatched by a single command (x,y,z) -maxComputeWorkGroupInvocations:: - max total compute invocations in a single local work group -maxComputeWorkGroupSize[3]:: - max local size of a compute work group (x,y,z) - -subPixelPrecisionBits:: - num bits of subpixel precision in screen x and y -subTexelPrecisionBits:: - num bits of subtexel precision -mipmapPrecisionBits:: - num bits of mipmap precision - -maxDrawIndexedIndexValue:: - max index value for indexed draw calls (for 32-bit indices) -maxDrawIndirectCount:: - max draw count for indirect draw calls - -maxSamplerLodBias:: - max absolute sampler level of detail bias -maxSamplerAnisotropy:: - max degree of sampler anisotropy - -maxViewports:: - max number of active viewports -maxViewportDimensions[2]:: - max viewport dimensions (x,y) -viewportBoundsRange[2]:: - viewport bounds range (min,max) -viewportSubPixelBits:: - num bits of subpixel precision for viewport - -minMemoryMapAlignment:: - min required alignment of host-visible memory allocations within the host - address space (bytes) -minTexelBufferOffsetAlignment:: - min required alignment for texel buffer offsets (bytes) -minUniformBufferOffsetAlignment:: - min required alignment for uniform buffer sizes and offsets (bytes) -minStorageBufferOffsetAlignment:: - min required alignment for storage buffer offsets (bytes) -minTexelOffset:: - min texel offset for OpTextureSampleOffset -maxTexelOffset:: - max texel offset for OpTextureSampleOffset -minTexelGatherOffset:: - min texel offset for OpTextureGatherOffset -maxTexelGatherOffset:: - max texel offset for OpTextureGatherOffset -minInterpolationOffset:: - furthest negative offset for interpolateAtOffset -maxInterpolationOffset:: - furthest positive offset for interpolateAtOffset -subPixelInterpolationOffsetBits:: - num of subpixel bits for interpolateAtOffset - -maxFramebufferWidth:: - max width for a framebuffer -maxFramebufferHeight:: - max height for a framebuffer -maxFramebufferLayers:: - max layer count for a layered framebuffer -framebufferColorSampleCounts:: - supported color sample counts for a framebuffer -framebufferDepthSampleCounts:: - supported depth sample counts for a framebuffer -framebufferStencilSampleCounts:: - supported stencil sample counts for a framebuffer -framebufferNoAttachmentsSampleCounts:: - supported sample counts for a framebuffer with no attachments - -maxColorAttachments:: - max num of color attachments per subpass - -sampledImageColorSampleCounts:: - supported sample counts for an image with a non-integer color format -sampledImageIntegerSampleCounts:: - supported sample counts for an image with an integer color format -sampledImageDepthSampleCounts:: - supported sample counts for an image with a depth format -sampledImageStencilSampleCounts:: - supported sample counts for an image with a stencil format -storageImageSampleCounts:: - supported sample counts for an image used for storage operations - -timestampFrequency:: - 1/clock_tick_granularity for timestamp queries - -maxClipDistances:: - max number of clip distances -maxCullDistances:: - max number of cull distances -maxCombinedClipAndCullDistances:: - max combined number of user clipping - -pointSizeRange[2]:: - range (min,max) of supported point sizes -lineWidthRange[2]:: - range (min,max) of supported line widths -pointSizeGranularity:: - granularity of supported point sizes -lineWidthGranularity:: - granularity of supported line widths + +Members +------- + + * [[features-limits-maxImageDimension1D]] pname:maxImageDimension1D is the + maximum dimension (pname:width) of an image created with an + pname:imageType of ename:VK_IMAGE_TYPE_1D. + * [[features-limits-maxImageDimension2D]] pname:maxImageDimension2D is the + maximum dimension (pname:width or pname:height) of an image created with + an pname:imageType of ename:VK_IMAGE_TYPE_2D and without + ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT set in pname:flags. + * [[features-limits-maxImageDimension3D]] pname:maxImageDimension3D is the + maximum dimension (pname:width, pname:height, or pname:depth) of an + image created with an pname:imageType of ename:VK_IMAGE_TYPE_3D. + * [[features-limits-maxImageDimensionCube]] pname:maxImageDimensionCube is + the maximum dimension (pname:width or pname:height) of an image created + with an pname:imageType of ename:VK_IMAGE_TYPE_2D and with + ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT set in pname:flags. + * [[features-limits-maxImageArrayLayers]] pname:maxImageArrayLayers is the + maximum number of layers (pname:arrayLayers) for an image. + * [[features-limits-maxTexelBufferElements]] pname:maxTexelBufferElements + is the maximum number of addressable texels for a buffer view created on + a buffer which was created with the + ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or + ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set in the pname:usage + member of the sname:VkBufferCreateInfo structure. + * [[features-limits-maxUniformBufferRange]] pname:maxUniformBufferRange is + the maximum value that can: be specified in the pname:range member of + any slink:VkDescriptorBufferInfo structures passed to a call to + flink:vkUpdateDescriptorSets for descriptors of type + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC. + * [[features-limits-maxStorageBufferRange]] pname:maxStorageBufferRange is + the maximum value that can: be specified in the pname:range member of + any slink:VkDescriptorBufferInfo structures passed to a call to + flink:vkUpdateDescriptorSets for descriptors of type + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. + * [[features-limits-maxPushConstantsSize]] pname:maxPushConstantsSize is + the maximum size, in bytes, of the pool of push constant memory. For + each of the push constant ranges indicated by the + pname:pPushConstantRanges member of the sname:VkPipelineLayoutCreateInfo + structure, pname:offset + pname:size must: be less than or equal to this + limit. + * [[features-limits-maxMemoryAllocationCount]] + pname:maxMemoryAllocationCount is the maximum number of device memory + allocations, as created by flink:vkAllocateMemory, which can: + simultaneously exist. + * [[features-limits-maxSamplerAllocationCount]] + pname:maxSamplerAllocationCount is the maximum number of sampler + objects, as created by flink:vkCreateSampler, which can: simultaneously + exist on a device. + * [[features-limits-bufferImageGranularity]] pname:bufferImageGranularity + is the granularity, in bytes, at which buffer or linear image resources, + and optimal image resources can: be bound to adjacent offsets in the same + sname:VkDeviceMemory object without aliasing. See + <> for more + details. + * [[features-limits-sparseAddressSpaceSize]] pname:sparseAddressSpaceSize + is the total amount of address space available, in bytes, for sparse + memory resources. This is an upper bound on the sum of the size of all + sparse resources, regardless of whether any memory is bound to them. + * [[features-limits-maxBoundDescriptorSets]] pname:maxBoundDescriptorSets + is the maximum number of descriptor sets that can: be simultaneously + used by a pipeline. All code:DescriptorSet decorations in shader modules + must: have a value less than pname:maxBoundDescriptorSets. See + <>. + * [[features-limits-maxPerStageDescriptorSamplers]] + pname:maxPerStageDescriptorSamplers is the maximum number of samplers + that can: be accessible to a single shader stage in a pipeline layout. + Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this + limit. A descriptor is accessible to a shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. See + <> and <>. + * [[features-limits-maxPerStageDescriptorUniformBuffers]] + pname:maxPerStageDescriptorUniformBuffers is the maximum number of + uniform buffers that can: be accessible to a single shader stage in a + pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this + limit. A descriptor is accessible to a shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. See + <> and + <>. + * [[features-limits-maxPerStageDescriptorStorageBuffers]] + pname:maxPerStageDescriptorStorageBuffers is the maximum number of + storage buffers that can: be accessible to a single shader stage in a + pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this + limit. A descriptor is accessible to a pipeline shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. See + <> and + <>. + * [[features-limits-maxPerStageDescriptorSampledImages]] + pname:maxPerStageDescriptorSampledImages is the maximum number of + sampled images that can: be accessible to a single shader stage in a + pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit. + A descriptor is accessible to a pipeline shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. See + <>, + <>, and + <>. + * [[features-limits-maxPerStageDescriptorStorageImages]] + pname:maxPerStageDescriptorStorageImages is the maximum number of + storage images that can: be accessible to a single shader stage in a + pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or + ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit. + A descriptor is accessible to a pipeline shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. See + <>, and + <>. + * [[features-limits-maxPerStageDescriptorInputAttachments]] + pname:maxPerStageDescriptorInputAttachments is the maximum number of + input attachments that can: be accessible to a single shader stage in a + pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit. + A descriptor is accessible to a pipeline shader stage when the + pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding + structure has the bit for that shader stage set. These are only + supported for the fragment stage. See + <>. + * [[features-limits-maxPerStageResources]] pname:maxPerStageResources is + the maximum number of resources that can: be accessible to a single + shader stage in a pipeline layout. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, + ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, + ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, or + 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]] + pname:maxDescriptorSetSamplers is the maximum number of samplers that + can: be included in descriptor bindings in a pipeline layout across all + pipeline shader stages and descriptor set numbers. Descriptors with a + type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this + limit. See <> and + <>. + * [[features-limits-maxDescriptorSetUniformBuffers]] + pname:maxDescriptorSetUniformBuffers is the maximum number of uniform + buffers that can: be included in descriptor bindings in a pipeline + layout across all pipeline shader stages and descriptor set numbers. + Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this + limit. See <> and + <>. + * [[features-limits-maxDescriptorSetUniformBuffersDynamic]] + pname:maxDescriptorSetUniformBuffersDynamic is the maximum number of + dynamic uniform buffers that can: be included in descriptor bindings in + a pipeline layout across all pipeline shader stages and descriptor set + numbers. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this + limit. See <>. + * [[features-limits-maxDescriptorSetStorageBuffers]] + pname:maxDescriptorSetStorageBuffers is the maximum number of storage + buffers that can: be included in descriptor bindings in a pipeline + layout across all pipeline shader stages and descriptor set numbers. + Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this + limit. See <> and + <>. + * [[features-limits-maxDescriptorSetStorageBuffersDynamic]] + pname:maxDescriptorSetStorageBuffersDynamic is the maximum number of + dynamic storage buffers that can: be included in descriptor bindings + in a pipeline layout across all pipeline shader stages and descriptor + set numbers. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this + limit. See <>. + * [[features-limits-maxDescriptorSetSampledImages]] + pname:maxDescriptorSetSampledImages is the maximum number of sampled + images that can: be included in descriptor bindings in a pipeline + layout across all pipeline shader stages and descriptor set numbers. + Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit. + See <>, + <>, and + <>. + * [[features-limits-maxDescriptorSetStorageImages]] + pname:maxDescriptorSetStorageImages is the maximum number of storage + images that can: be included in descriptor bindings in a pipeline + layout across all pipeline shader stages and descriptor set numbers. + Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or + ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit. + See <>, and + <>. + * [[features-limits-maxDescriptorSetInputAttachments]] + pname:maxDescriptorSetInputAttachments is the maximum number of input + attachments that can: be included in descriptor bindings in a + pipeline layout across all pipeline shader stages and descriptor set + numbers. Descriptors with a type of + ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit. See + <>. + * [[features-limits-maxVertexInputAttributes]] + pname:maxVertexInputAttributes is the maximum number of vertex input + attributes that can: be specified for a graphics pipeline. These are + described in the array of sname:VkVertexInputAttributeDescription + structures that are provided at graphics pipeline creation time via the + pname:pVertexAttributeDescriptions member of the + sname:VkPipelineVertexInputStateCreateInfo structure. See + <> and <>. + * [[features-limits-maxVertexInputBindings]] + pname:maxVertexInputBindings is the maximum number of vertex buffers + that can: be specified for providing vertex attributes to a graphics + pipeline. These are described in the array of + sname:VkVertexInputBindingDescription structures that are provided at + graphics pipeline creation time via the pname:pVertexBindingDescriptions + member of the sname:VkPipelineVertexInputStateCreateInfo structure. The + pname:binding member of sname:VkVertexInputBindingDescription must: be + less than this limit. See <>. + * [[features-limits-maxVertexInputAttributeOffset]] + pname:maxVertexInputAttributeOffset is the maximum vertex input + attribute offset that can: be added to the vertex input binding stride. + The pname:offset member of the sname:VkVertexInputAttributeDescription + structure must: be less than or equal to this limit. See + <>. + * [[features-limits-maxVertexInputBindingStride]] + pname:maxVertexInputBindingStride is the maximum vertex input binding + stride that can: be specified in a vertex input binding. The + pname:stride member of the sname:VkVertexInputBindingDescription + structure must: be less than or equal to this limit. See + <>. + * [[features-limits-maxVertexOutputComponents]] + pname:maxVertexOutputComponents is the maximum number of components of + output variables which can: be output by a vertex shader. See + <>. + * [[features-limits-maxTessellationGenerationLevel]] + pname:maxTessellationGenerationLevel is the maximum tessellation + generation level supported by the fixed-function tessellation primitive + generator. See <>. + * [[features-limits-maxTessellationPatchSize]] + pname:maxTessellationPatchSize is the maximum patch size, in vertices, + of patches that can: be processed by the tessellation control shader and + tessellation primitive generator. The + pname:patchControlPoints member of the + sname:VkPipelineTessellationStateCreateInfo structure specified at + pipeline creation time and the value provided in the code:OutputVertices + execution mode of shader modules must: be less than or equal to this + limit. See <>. + * [[features-limits-maxTessellationControlPerVertexInputComponents]] + pname:maxTessellationControlPerVertexInputComponents is the maximum + number of components of input variables which can: be provided as + per-vertex inputs to the tessellation control shader stage. + * [[features-limits-maxTessellationControlPerVertexOutputComponents]] + pname:maxTessellationControlPerVertexOutputComponents is the maximum + number of components of per-vertex output variables which can: be output + from the tessellation control shader stage. + * [[features-limits-maxTessellationControlPerPatchOutputComponents]] + pname:maxTessellationControlPerPatchOutputComponents is the maximum + number of components of per-patch output variables which can: be output + from the tessellation control shader stage. + * [[features-limits-maxTessellationControlTotalOutputComponents]] + pname:maxTessellationControlTotalOutputComponents is the maximum total + number of components of per-vertex and per-patch output variables which + can: be output from the tessellation control shader stage. + * [[features-limits-maxTessellationEvaluationInputComponents]] + pname:maxTessellationEvaluationInputComponents is the maximum number of + components of input variables which can: be provided as per-vertex + inputs to the tessellation evaluation shader stage. + * [[features-limits-maxTessellationEvaluationOutputComponents]] + pname:maxTessellationEvaluationOutputComponents is the maximum number of + components of per-vertex output variables which can: be output from the + tessellation evaluation shader stage. + * [[features-limits-maxGeometryShaderInvocations]] + pname:maxGeometryShaderInvocations is the maximum invocation count + supported for instanced geometry shaders. The value provided in the + code:Invocations execution mode of shader modules must: be less than + or equal to this limit. See <>. + * [[features-limits-maxGeometryInputComponents]] + pname:maxGeometryInputComponents is the maximum number of components of + input variables which can: be provided as inputs to the geometry shader + stage. + * [[features-limits-maxGeometryOutputComponents]] + pname:maxGeometryOutputComponents is the maximum number of components of + output variables which can: be output from the geometry shader stage. + * [[features-limits-maxGeometryOutputVertices]] + pname:maxGeometryOutputVertices is the maximum number of vertices which + can: be emitted by any geometry shader. + * [[features-limits-maxGeometryTotalOutputComponents]] + pname:maxGeometryTotalOutputComponents is the maximum total number of + components of output, across all emitted vertices, which can: be output + from the geometry shader stage. + * [[features-limits-maxFragmentInputComponents]] + pname:maxFragmentInputComponents is the maximum number of components of + input variables which can: be provided as inputs to the fragment shader + stage. + * [[features-limits-maxFragmentOutputAttachments]] + pname:maxFragmentOutputAttachments is the maximum number of output + attachments which can: be written to by the fragment shader stage. + * [[features-limits-maxFragmentDualSrcAttachments]] + pname:maxFragmentDualSrcAttachments is the maximum number of output + attachments which can: be written to by the fragment shader stage when + blending is enabled and one of the dual source blend modes is in use. + See <> and + <>. + * [[features-limits-maxFragmentCombinedOutputResources]] + pname:maxFragmentCombinedOutputResources is the total number of storage + buffers, storage images, and output buffers which can: be used in the + fragment shader stage. + * [[features-limits-maxComputeSharedMemorySize]] + pname:maxComputeSharedMemorySize is the maximum total storage size, in + bytes, of all variables declared with the code:WorkgroupLocal storage + class in shader modules (or with the code:shared storage qualifier in + GLSL) in the compute shader stage. + * [[features-limits-maxComputeWorkGroupCount]] + pname:maxComputeWorkGroupCount[3] is the maximum number of local workgroups + that can: be dispatched by a single dispatch command. These three values + represent the maximum number of local workgroups for the X, Y, and Z + dimensions, respectively. The pname:x, pname:y, and pname:z parameters + to the flink:vkCmdDispatch command, or members of the + slink:VkDispatchIndirectCommand structure must: be less than or equal to + the corresponding limit. See <>. + * [[features-limits-maxComputeWorkGroupInvocations]] + pname:maxComputeWorkGroupInvocations is the maximum total number of + compute shader invocations in a single local workgroup. The product of + the X, Y, and Z sizes as specified by the code:LocalSize execution mode + in shader modules and by the object decorated by the code:WorkgroupSize + decoration must: be less than or equal to this limit. + * [[features-limits-maxComputeWorkGroupSize]] + pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute + workgroup, per dimension. These three values represent the maximum + local workgroup size in the X, Y, and Z dimensions, respectively. The + pname:x, pname:y, and pname:z sizes specified by the code:LocalSize + execution mode and by the object decorated by the code:WorkgroupSize + decoration in shader modules must: be less than or equal to the + corresponding limit. + * [[features-limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is + the number of bits of subpixel precision in framebuffer coordinates + latexmath:[$x_f$] and latexmath:[$y_f$]. See <>. + * [[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 + 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 actual number of divisions. ++ +-- +[NOTE] +.Note +==== +For example, if this value is 2 bits then when linearly filtering between +two levels, each level could: contribute: 0%, 33%, 66%, or 100% (this is +just an example and the amount of contribution should: be covered by +different equations in the spec). +==== +-- ++ + * [[features-limits-maxDrawIndexedIndexValue]] + pname:maxDrawIndexedIndexValue is the maximum index value that can: be + used for indexed draw calls when using 32-bit indices. This excludes the + primitive restart index value of 0xFFFFFFFF. See + <>. + * [[features-limits-maxDrawIndirectCount]] pname:maxDrawIndirectCount is + the maximum draw count that is supported for indirect draw calls. See + <>. + * [[features-limits-maxSamplerLodBias]] pname:maxSamplerLodBias is the + maximum absolute sampler level of detail bias. The sum of the + pname:mipLodBias member of the sname:VkSamplerCreateInfo structure and + 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}\]$]. + See <>. + * [[features-limits-maxSamplerAnisotropy]] pname:maxSamplerAnisotropy is + the maximum degree of sampler anisotropy. The maximum degree of + anisotropic filtering used for an image sampling operation is the + minimum of the pname:maxAnisotropy member of the + sname:VkSamplerCreateInfo structure and this limit. See + <>. + * [[features-limits-maxViewports]] pname:maxViewports is the maximum + number of active viewports. The pname:viewportCount member of the + sname:VkPipelineViewportStateCreateInfo structure that is provided at + pipeline creation must: be less than or equal to this limit. + * [[features-limits-maxViewportDimensions]] pname:maxViewportDimensions[2] + are the maximum viewport dimensions in the X (width) and Y (height) + dimensions, respectively. The maximum viewport dimensions must: be + greater than or equal to the largest image + which can: be created and used as a framebuffer attachment. See + <>. + * [[features-limits-viewportboundsrange]] pname:viewportBoundsRange[2] is + the latexmath:[$[\mathit{minimum},\mathit{maximum}\]$] range that the + corners of a viewport must: be contained in. This range must: be at + least latexmath:[$[- 2 \times \mathit{maxViewportDimensions}, + 2 \times \mathit{maxViewportDimensions} - 1\]$]. + See <>. ++ +-- +[NOTE] +.Note +==== +The intent of the pname:viewportBoundsRange limit is to allow a maximum sized +viewport to be arbitrarily shifted relative to the output target as long +as at least some portion intersects. This would give a bounds limit of +latexmath:[$[- \mathit{maxViewportDimensions}+1, + 2 \times \mathit{maxViewportDimensions} -1\]$] which would allow +all possible non-empty-set intersections of the output target and the viewport. +Since these numbers are typically powers of two, picking the signed number +range using the smalled possible number of bits, ends up with the specified +range. +==== +-- + * [[features-limits-viewportSubPixelBits]] pname:viewportSubPixelBits is + the number of bits of subpixel precision for viewport bounds. The + subpixel precision that floating-point viewport bounds are interpreted + at is given by this limit. + * [[features-limits-minMemoryMapAlignment]] pname:minMemoryMapAlignment is + the minimum required alignment, in bytes, of host visible memory + allocations within the host address space. When mapping a memory + allocation with flink:vkMapMemory, subtracting pname:offset bytes from + the returned pointer will always produce an integer multiple of this + limit. See <>. + * [[features-limits-minTexelBufferOffsetAlignment]] + pname:minTexelBufferOffsetAlignment is the minimum required alignment, + in bytes, for the pname:offset member of the + sname:VkBufferViewCreateInfo structure for texel buffers. When a buffer + view is created for a buffer which was created with + ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or + ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set in the pname:usage + member of the sname:VkBufferCreateInfo structure, the pname:offset must: + be an integer multiple of this limit. + * [[features-limits-minUniformBufferOffsetAlignment]] + pname:minUniformBufferOffsetAlignment is the minimum required alignment, + in bytes, for the pname:offset member of the + sname:VkDescriptorBufferInfo structure for uniform buffers. When a + descriptor of type ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or + ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC is updated, the + pname:offset must: be an integer multiple of this limit. Similarly, + dynamic offsets for uniform buffers must: be multiples of this limit. + * [[features-limits-minStorageBufferOffsetAlignment]] + pname:minStorageBufferOffsetAlignment is the minimum required alignment, + in bytes, for the pname:offset member of the + sname:VkDescriptorBufferInfo structure for storage buffers. When a + descriptor of type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or + ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC is updated, the + pname:offset must: be an integer multiple of this limit. Similarly, + dynamic offsets for storage buffers must: be multiples of this limit. + * [[features-limits-minTexelOffset]] pname:minTexelOffset is the minimum + offset value for the code:ConstOffset image operand of any of the + code:OpImageSample* or code:OpImageFetch* image instructions. + * [[features-limits-maxTexelOffset]] pname:maxTexelOffset is the maximum + offset value for the code:ConstOffset image operand of any of the + code:OpImageSample* or code:OpImageFetch* image instructions. + * [[features-limits-minTexelGatherOffset]] pname:minTexelGatherOffset is + the minimum offset value for the code:Offset or code:ConstOffsets image + operands of any of the code:OpImage*code:Gather image instructions. + * [[features-limits-maxTexelGatherOffset]] pname:maxTexelGatherOffset is + the maximum offset value for the code:Offset or code:ConstOffsets image + operands of any of the code:OpImage*code:Gather image instructions. + * [[features-limits-minInterpolationOffset]] pname:minInterpolationOffset + is the minimum negative offset value for the code:offset operand of the + code:InterpolateAtOffset extended instruction. + * [[features-limits-maxInterpolationOffset]] pname:maxInterpolationOffset + is the maximum positive offset value for the code:offset operand of the + code:InterpolateAtOffset extended instruction. + * [[features-limits-subPixelInterpolationOffsetBits]] + pname:subPixelInterpolationOffsetBits is the number of subpixel + fractional bits that the code:x and code:y offsets to the + code:InterpolateAtOffset extended instruction may: be rounded to as + fixed-point values. + * [[features-limits-maxFramebufferWidth]] pname:maxFramebufferWidth is the + maximum width for a framebuffer. The pname:width member of the + sname:VkFramebufferCreateInfo structure must: be less than or equal to + this limit. + * [[features-limits-maxFramebufferHeight]] pname:maxFramebufferHeight is + the maximum height for a framebuffer. The pname:height member of the + sname:VkFramebufferCreateInfo structure must: be less than or equal to + this limit. + * [[features-limits-maxFramebufferLayers]] pname:maxFramebufferLayers is + the maximum layer count for a layered framebuffer. The pname:layers + member of the sname:VkFramebufferCreateInfo structure must: be less than + or equal to this limit. + * [[features-limits-framebufferColorSampleCounts]] + pname:framebufferColorSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the supported color sample + counts for a framebuffer color attachment. + * [[features-limits-framebufferDepthSampleCounts]] + pname:framebufferDepthSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the supported depth sample + counts for a framebuffer depth/stencil attachment, when the format + includes a depth component. + * pname:framebufferStencilSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the supported stencil sample + counts for a framebuffer depth/stencil attachment, when the format + includes a stencil component. + * pname:framebufferNoAttachmentsSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the supported sample counts + for a framebuffer with no attachments. + * [[features-limits-maxColorAttachments]] pname:maxColorAttachments is the + maximum number of color attachments that can: be used by a subpass in a + render pass. The pname:colorAttachmentCount member of the + sname:VkSubpassDescription structure must: be less than or equal to this + limit. + * [[features-limits-sampledImageColorSampleCounts]] + pname:sampledImageColorSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the sample counts supported + for all images with a non-integer color format. + * [[features-limits-sampledImageIntegerSampleCounts]] + pname:sampledImageIntegerSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the sample counts supported + for all images with a integer color format. + * [[features-limits-sampledImageDepthSampleCounts]] + pname:sampledImageDepthSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the sample counts supported + for all images with a depth format. + * [[features-limits-sampledImageStencilSampleCounts]] + pname:sampledImageStencilSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the sample supported for all + images with a stencil format. + * [[features-limits-storageImageSampleCounts]] + pname:storageImageSampleCounts is a bitmask^1^ of + elink:VkSampleCountFlagBits bits indicating the sample counts supported + for all images used for storage operations. + * [[features-limits-maxSampleMaskWords]] pname:maxSampleMaskWords is the + maximum number of array elements of a variable decorated with the + code:SampleMask built-in decoration. + * [[features-limits-timestampComputeAndGraphics]] + pname:timestampComputeAndGraphics indicates support for timestamps on + all graphics and compute queues. If this limit is set to ename:VK_TRUE, + all queues that advertise the ename:VK_QUEUE_GRAPHICS_BIT or + ename:VK_QUEUE_COMPUTE_BIT in the + sname:VkQueueFamilyProperties::pname:queueFlags support + sname:VkQueueFamilyProperties::pname:timestampValidBits of at least 36. + See <>. + * [[features-limits-timestampPeriod]] pname:timestampPeriod is the number + of nanoseconds required for a timestamp query to be incremented by 1. + See <>. + * [[features-limits-maxClipDistances]] pname:maxClipDistances is the + maximum number of clip distances that can: be used in a single shader + stage. The size of any array declared with the code:ClipDistance + built-in decoration in a shader module must: be less than or equal to + this limit. + * [[features-limits-maxCullDistances]] pname:maxCullDistances is the + maximum number of cull distances that can: be used in a single shader + stage. The size of any array declared with the code:CullDistance + built-in decoration in a shader module must: be less than or equal to + this limit. + * [[features-limits-maxCombinedClipAndCullDistances]] + pname:maxCombinedClipAndCullDistances is the maximum combined number of + clip and cull distances that can: be used in a single shader stage. + The sum of the sizes of any pair of arrays declared with the + code:ClipDistance and code:CullDistance built-in decoration used by + a single shader stage in a shader module must: be less than or equal to + this limit. + * [[features-limits-discreteQueuePriorities]] + pname:discreteQueuePriorities is the number of discrete priorities that + can: be assigned to a queue based on the value of each member of + sname:VkDeviceQueueCreateInfo::pname:pQueuePriorities. This must: be at + 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. + * [[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 + sname:VkPipelineRasterizationStateCreateInfo or the pname:lineWidth + parameter to fname:vkCmdSetLineWidth are clamped to this range. + * [[features-limits-pointSizeGranularity]] pname:pointSizeGranularity is + the granularity of supported point sizes. Not all point sizes in the + range defined by pname:pointSizeRange are supported. This limit + specifies the granularity (or increment) between successive supported + point sizes. + * [[features-limits-lineWidthGranularity]] pname:lineWidthGranularity is + the granularity of supported line widths. Not all line widths in the + range defined by pname:lineWidthRange are supported. This limit + specifies the granularity (or increment) between successive supported + line widths. + * [[features-limits-strictLines]] pname:strictLines indicates whether + lines are rasterized according to the preferred method of rasterization. + If set to ename:VK_FALSE, lines may: be rasterized under a relaxed set + of rules. If set to ename:VK_TRUE, lines are rasterized as per the + strict definition. See <>. + * [[features-limits-standardSampleLocations]] + pname:standardSampleLocations indicates whether rasterization uses the + standard sample locations as documented in + <>. If set to ename:VK_TRUE, the + implementation uses the documented sample locations. If set to + ename:VK_FALSE, the implementation may: use different sample locations. + * [[features-limits-optimalBufferCopyOffsetAlignment]] + pname:optimalBufferCopyOffsetAlignment is the optimal buffer + offset alignment in bytes for fname:vkCmdCopyBufferToImage and + fname:vkCmdCopyImageToBuffer. The per texel alignment requirements are + still enforced, this is just an additional alignment recommendation for + optimal performance and power. + * [[features-limits-optimalBufferCopyRowPitchAlignment]] + pname:optimalBufferCopyRowPitchAlignment is the optimal buffer + row pitch alignment in bytes for fname:vkCmdCopyBufferToImage and + fname:vkCmdCopyImageToBuffer. Row pitch is the number of bytes between + texels with the same X coordinate in adjacent rows (Y coordinates differ + by one). The per texel alignment requirements are still enforced, this + is just an additional alignment recommendation for optimal performance + and power. + * [[features-limits-nonCoherentAtomSize]] + pname:nonCoherentAtomSize is the size and alignment in bytes that bounds + concurrent access to + <>. Description ----------- +// End of list + +1:: + For all bitmasks of type elink:VkSampleCountFlags above, possible + values include: ++ +-- +// refBegin VkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operations +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 +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[] + See Also -------- -flink:vkGetPhysicalDeviceFeatures +basetypes:VkBool32, basetypes:VkDeviceSize, slink:VkPhysicalDeviceProperties, elink:VkSampleCountFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceLimits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceMemoryProperties.txt b/doc/specs/vulkan/man/VkPhysicalDeviceMemoryProperties.txt index bdd3bfba31..270ab4fd7b 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceMemoryProperties.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceMemoryProperties.txt @@ -1,27 +1,156 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceMemoryProperties(3) =================================== Name ---- -VkPhysicalDeviceMemoryProperties - Stub page (not yet written) +VkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties C Specification --------------- +// refBegin VkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties + +The sname:VkPhysicalDeviceMemoryProperties structure is defined as: + include::../structs/VkPhysicalDeviceMemoryProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:memoryTypeCount is the number of valid elements in the + pname:pMemoryRanges array. + * pname:memoryTypes is an array of slink:VkMemoryType structures + describing the _memory types_ that can: be used to access memory + allocated from the heaps specified by pname:memoryHeaps. + * pname:memoryHeapCount is the number of valid elements in the + pname:pMemoryRanges array. + * pname:memoryHeaps is an array of slink:VkMemoryHeap structures + describing the _memory heaps_ from which memory can: be allocated. + Description ----------- +The sname:VkPhysicalDeviceMemoryProperties structure describes a number of +_memory heaps_ as well as a number of _memory types_ that can: be used to +access memory allocated in those heaps. Each heap describes a memory +resource of a particular size, and each memory type describes a set of +memory properties (e.g. host cached vs uncached) that can: be used with a +given memory heap. Allocations using a particular memory type will consume +resources from the heap indicated by that memory type's heap index. More +than one memory type may: share each heap, and the heaps and memory types +provide a mechanism to advertise an accurate size of the physical memory +resources while allowing the memory to be used with a variety of different +properties. + +The number of memory heaps is given by pname:memoryHeapCount and is less +than or equal to ename:VK_MAX_MEMORY_HEAPS. Each heap is described by an +element of the pname:memoryHeaps array, as a sname:VkMemoryHeap structure. +The number of memory types available across all memory heaps is given by +pname:memoryTypeCount and is less than or equal to +ename:VK_MAX_MEMORY_TYPES. Each memory type is described by an element of +the pname:memoryTypes array, as a sname:VkMemoryType structure. + +At least one heap must: include ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT in +slink:VkMemoryHeap::pname:flags. If there are multiple heaps that all have similar performance +characteristics, they may: all include ename:VK_MEMORY_HEAP_DEVICE_LOCAL_BIT. +In a unified memory architecture (UMA) system, there is often only a single +memory heap which is considered to be equally ``local'' to the host and to the +device, and such an implementation must: advertise the heap as device-local. + + +Each memory type returned by flink:vkGetPhysicalDeviceMemoryProperties must: +have its pname:propertyFlags set to one of the following values: + + * 0 + * ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT + * ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT + * ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT + * ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT + * ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT + * ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT + * ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT + * ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT + +There must: be at least one memory type with both the +ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bits set in its pname:propertyFlags. +There must: be at least one memory type with the +ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set in its pname:propertyFlags. + +The memory types are sorted according to a preorder which serves to aid +in easily selecting an appropriate memory type. Given two memory types X and +Y, the preorder defines latexmath:[$X \leq Y$] if: + + * the memory property bits set for X are a strict subset of the memory + property bits set for Y. Or, + * the memory property bits set for X are the same as the memory property + bits set for Y, and X uses a memory heap with greater or equal + performance (as determined in an implementation-specific manner). + +Memory types are ordered in the list such that X is assigned a lesser +pname:memoryTypeIndex than Y if latexmath:[$X \leq Y \land \neg(Y \leq X)$] according to the +preorder. Note that the list of all allowed memory property flag +combinations above satisfies this preorder, but other orders would as +well. The goal of this ordering is to enable applications to use a simple +search loop in selecting the proper memory type, along the lines of: + +[source,{basebackend@docbook:c++:cpp}] +--------------------------------------------------- +// Find a memory type in "memoryTypeBits" that includes all of "properties" +int32_t FindProperties(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties) +{ + for (int32_t i = 0; i < memoryTypeCount; ++i) + { + if ((memoryTypeBits & (1 << i)) && + ((memoryTypes[i].propertyFlags & properties) == properties)) + return i; + } + return -1; +} + +// Try to find an optimal memory type, or if it does not exist +// find any compatible memory type +VkMemoryRequirements memoryRequirements; +vkGetImageMemoryRequirements(device, image, &memoryRequirements); +int32_t memoryType = FindProperties(memoryRequirements.memoryTypeBits, optimalProperties); +if (memoryType == -1) + memoryType = FindProperties(memoryRequirements.memoryTypeBits, requiredProperties); +--------------------------------------------------- + +The loop will find the first supported memory type that has all bits requested in +code:properties set. If there is no exact match, it will find a closest +match (i.e. a memory type with the fewest additional bits set), which has +some additional bits set but which are not detrimental to the behaviors +requested by code:properties. The application can: first search for the optimal +properties, e.g. a memory type that is device-local or supports coherent cached +accesses, as appropriate for the intended usage, and if such a memory type is +not present can: fallback to searching for a less optimal but guaranteed set of +properties such as "0" or "host-visible and coherent". + include::../validity/structs/VkPhysicalDeviceMemoryProperties.txt[] + + See Also -------- +slink:VkMemoryHeap, slink:VkMemoryType, flink:vkGetPhysicalDeviceMemoryProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceMemoryProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceProperties.txt b/doc/specs/vulkan/man/VkPhysicalDeviceProperties.txt index 605f6b496b..715e00447d 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceProperties.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceProperties.txt @@ -1,27 +1,108 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceProperties(3) ============================= Name ---- -VkPhysicalDeviceProperties - Stub page (not yet written) +VkPhysicalDeviceProperties - Structure specifying physical device properties C Specification --------------- +// refBegin VkPhysicalDeviceProperties - Structure specifying physical device properties + +The sname:VkPhysicalDeviceProperties structure is defined as: + include::../structs/VkPhysicalDeviceProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:apiVersion is the version of Vulkan supported by the device, + encoded as described in the <> section. + * pname:driverVersion is the vendor-specified version of the driver. + * pname:vendorID is a unique identifier for the _vendor_ (see below) of + the physical device. + * pname:deviceID is a unique identifier for the physical device among + devices available from the vendor. + * pname:deviceType is a elink:VkPhysicalDeviceType specifying the type of + device. + * pname:deviceName is a null-terminated UTF-8 string containing the name + of the device. + * pname:pipelineCacheUUID is an array of size ename:VK_UUID_SIZE, + containing 8-bit values that represent a universally unique identifier + for the device. + * pname:limits is the slink:VkPhysicalDeviceLimits structure which + specifies device-specific limits of the physical device. See + <> for details. + * pname:sparseProperties is the slink:VkPhysicalDeviceSparseProperties + structure which specifies various sparse related properties of the + physical device. See <> + for details. + Description ----------- +The pname:vendorID and pname:deviceID fields are provided to allow +applications to adapt to device characteristics that are not +adequately exposed by other Vulkan queries. These may: include +performance profiles, hardware errata, or other characteristics. +In PCI-based implementations, the low sixteen bits of pname:vendorID +and pname:deviceID must: contain (respectively) the PCI vendor and +device IDs associated with the hardware device, and the remaining bits +must: be set to zero. In non-PCI implementations, the choice of what values +to return may: be dictated by operating system or platform policies. It is +otherwise at the discretion of the implementer, subject to the following +constraints and guidelines: + + * For purposes of physical device identification, the _vendor_ of a + physical device is the entity responsible for the most salient + characteristics of the hardware represented by the physical device + handle. In the case of a discrete GPU, this should: be the GPU + chipset vendor. In the case of a GPU or other accelerator integrated + into a system-on-chip (SoC), this should: be the supplier of the + silicon IP used to create the GPU or other accelerator. + * If the vendor of the physical device has a valid PCI vendor ID issued by + https://pcisig.com/[PCI-SIG], that ID should: be used to construct + pname:vendorID as described above for PCI-based + implementations. Implementations that do not return a PCI vendor ID in + pname:vendorID must: return a valid Khronos vendor ID, obtained as + defined in the <> section. Khronos vendor IDs are allocated starting at 0x10000, + to distinguish them from the PCI vendor ID namespace. + * The vendor of the physical device is responsible for selecting + pname:deviceID. The value selected should: uniquely + identify both the device version and any major configuration options + (for example, core count in the case of multicore devices). The same + device ID should: be used for all physical implementations of that + device version and configuration. For example, all uses of a + specific silicon IP GPU version and configuration should use the + same device ID, even if those uses occur in different SoCs. + include::../validity/structs/VkPhysicalDeviceProperties.txt[] + + See Also -------- +slink:VkPhysicalDeviceLimits, slink:VkPhysicalDeviceSparseProperties, elink:VkPhysicalDeviceType, flink:vkGetPhysicalDeviceProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceSparseProperties.txt b/doc/specs/vulkan/man/VkPhysicalDeviceSparseProperties.txt index 74b0b5c95a..6926bcd410 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceSparseProperties.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceSparseProperties.txt @@ -1,27 +1,93 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceSparseProperties(3) =================================== Name ---- -VkPhysicalDeviceSparseProperties - Stub page (not yet written) +VkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory properties C Specification --------------- +// refBegin VkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory properties + +The sname:VkPhysicalDeviceSparseProperties structure is defined as: + include::../structs/VkPhysicalDeviceSparseProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:residencyStandard2DBlockShape is ename:VK_TRUE if the physical + device will access all single-sample 2D sparse resources using the + standard sparse image block shapes (based on image format), as described + in the <> table. If this property is not supported the + value returned in the pname:imageGranularity member of the + sname:VkSparseImageFormatProperties structure for single-sample 2D + images is not required: to match the standard sparse image block + dimensions listed in the table. + * pname:residencyStandard2DMultisampleBlockShape is ename:VK_TRUE if the + physical device will access all multisample 2D sparse resources using + the standard sparse image block shapes (based on image format), as + described in the <> table. If this property is not supported, the + value returned in the pname:imageGranularity member of the + sname:VkSparseImageFormatProperties structure for multisample 2D images + is not required: to match the standard sparse image block dimensions + listed in the table. + * pname:residencyStandard3DBlockShape is ename:VK_TRUE if the physical + device will access all 3D sparse resources using the standard sparse image + block shapes (based on image format), as described in the + <> table. If this property is not supported, the + value returned in the pname:imageGranularity member of the + sname:VkSparseImageFormatProperties structure for 3D images is not + required: to match the standard sparse image block dimensions listed in + the table. + * pname:residencyAlignedMipSize is ename:VK_TRUE if images with mip level + dimensions that are not integer multiples of the corresponding dimensions + of the sparse image block may: be placed in the mip tail. If this property + is not reported, only mip levels with dimensions smaller than the + pname:imageGranularity member of the sname:VkSparseImageFormatProperties + structure will be placed in the mip tail. If this property is reported the + implementation is allowed to return + ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT in the pname:flags + member of sname:VkSparseImageFormatProperties, indicating that mip level + dimensions that are not integer multiples of the corresponding dimensions + of the sparse image block will be placed in the mip tail. + * pname:residencyNonResidentStrict specifies whether the physical device + can: consistently access non-resident regions of a resource. If this + property is ename:VK_TRUE, access to non-resident regions of resources + will be guaranteed to return values as if the resource were populated + with 0; writes to non-resident regions will be discarded. + Description ----------- include::../validity/structs/VkPhysicalDeviceSparseProperties.txt[] + + See Also -------- +basetypes:VkBool32, slink:VkPhysicalDeviceProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceSparseProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPhysicalDeviceType.txt b/doc/specs/vulkan/man/VkPhysicalDeviceType.txt index d6993fdc38..41f22e3282 100644 --- a/doc/specs/vulkan/man/VkPhysicalDeviceType.txt +++ b/doc/specs/vulkan/man/VkPhysicalDeviceType.txt @@ -1,26 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPhysicalDeviceType(3) ======================= Name ---- -VkPhysicalDeviceType - Stub page (not yet written) +VkPhysicalDeviceType - supported physical device types C Specification --------------- -include::../enums/VkPhysicalDeviceType.txt[] +// refBegin VkPhysicalDeviceType supported physical device types -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The physical devices types are: + +include::../enums/VkPhysicalDeviceType.txt[] -Constants ---------- Description ----------- + * ename:VK_PHYSICAL_DEVICE_TYPE_OTHER The device does not match any + other available types. + * ename:VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU The device is typically + one embedded in or tightly coupled with the host. + * ename:VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU The device is typically + a separate processor connected to the host via an interlink. + * ename:VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU The device is typically + a virtual node in a virtualization environment. + * ename:VK_PHYSICAL_DEVICE_TYPE_CPU The device is typically running on the + same processors as the host. + +The physical device type is advertised for informational purposes only, and +does not directly affect the operation of the system. However, the device +type may: correlate with other advertised properties or capabilities of the +system, such as how many memory heaps there are. + +// refEnd VkPhysicalDeviceType + + See Also -------- +slink:VkPhysicalDeviceProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPhysicalDeviceType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipeline.txt b/doc/specs/vulkan/man/VkPipeline.txt new file mode 100644 index 0000000000..412a812638 --- /dev/null +++ b/doc/specs/vulkan/man/VkPipeline.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkPipeline(3) +============= + +Name +---- +VkPipeline - Opaque handle to a pipeline object + +C Specification +--------------- + +// refBegin VkPipeline - Opaque handle to a pipeline object + +Compute and graphics pipelines are each represented by sname:VkPipeline +handles: + +include::../handles/VkPipeline.txt[] + + +Description +----------- + +// refEnd VkPipeline + + +See Also +-------- + +slink:VkComputePipelineCreateInfo, slink:VkGraphicsPipelineCreateInfo, flink:vkCmdBindPipeline, flink:vkCreateComputePipelines, flink:vkCreateGraphicsPipelines, flink:vkDestroyPipeline + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipeline + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineBindPoint.txt b/doc/specs/vulkan/man/VkPipelineBindPoint.txt index 5227f7e2ad..8b2ad4bc29 100644 --- a/doc/specs/vulkan/man/VkPipelineBindPoint.txt +++ b/doc/specs/vulkan/man/VkPipelineBindPoint.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineBindPoint(3) ====================== Name ---- -VkPipelineBindPoint - Stub page (not yet written) +VkPipelineBindPoint - specify the bind point of a pipeline object to a command buffer C Specification --------------- +// refBegin VkPipelineBindPoint - specify the bind point of a pipeline object to a command buffer include::../enums/VkPipelineBindPoint.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkCmdBindPipeline, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkSubpassDescription, flink:vkCmdBindDescriptorSets, flink:vkCmdBindPipeline + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineBindPoint + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCache.txt b/doc/specs/vulkan/man/VkPipelineCache.txt new file mode 100644 index 0000000000..2636ccbcb5 --- /dev/null +++ b/doc/specs/vulkan/man/VkPipelineCache.txt @@ -0,0 +1,56 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkPipelineCache(3) +================== + +Name +---- +VkPipelineCache - Opaque handle to a pipeline cache object + +C Specification +--------------- + +// refBegin VkPipelineCache - Opaque handle to a pipeline cache object + +Pipeline cache objects allow the result of pipeline construction to be +reused between pipelines and between runs of an application. Reuse between +pipelines is achieved by passing the same pipeline cache object when +creating multiple related pipelines. Reuse across runs of an application is +achieved by retrieving pipeline cache contents in one run of an application, +saving the contents, and using them to preinitialize a pipeline cache on a +subsequent run. The contents of the pipeline cache objects are +managed by the implementation. Applications can: manage the host memory +consumed by a pipeline cache object and control the amount of data +retrieved from a pipeline cache object. + +Pipeline cache objects are represented by sname:VkPipelineCache handles: + +include::../handles/VkPipelineCache.txt[] + + +Description +----------- + +// refEnd VkPipelineCache + + +See Also +-------- + +flink:vkCreateComputePipelines, flink:vkCreateGraphicsPipelines, flink:vkCreatePipelineCache, flink:vkDestroyPipelineCache, flink:vkGetPipelineCacheData, flink:vkMergePipelineCaches + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCache + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCacheCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineCacheCreateFlags.txt index 3d510dbbc0..70beb05f70 100644 --- a/doc/specs/vulkan/man/VkPipelineCacheCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineCacheCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineCacheCreateFlags(3) ============================= Name ---- -VkPipelineCacheCreateFlags - Stub page (not yet written) +VkPipelineCacheCreateFlags - Bitmask of VkPipelineCacheCreateFlagBits C Specification --------------- include::../flags/VkPipelineCacheCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineCacheCreateFlags is a mask of zero or more elink:VkPipelineCacheCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineCacheCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCacheCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCacheCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineCacheCreateInfo.txt index 05ac456455..b8102bbb84 100644 --- a/doc/specs/vulkan/man/VkPipelineCacheCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineCacheCreateInfo.txt @@ -1,27 +1,60 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineCacheCreateInfo(3) ============================ Name ---- -VkPipelineCacheCreateInfo - Stub page (not yet written) +VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache C Specification --------------- +// refBegin VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache + +The sname:VkPipelineCacheCreateInfo structure is defined as: + include::../structs/VkPipelineCacheCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:initialDataSize is the number of bytes in pname:pInitialData. If + pname:initialDataSize is zero, the pipeline cache will initially be + empty. + * pname:pInitialData is a pointer to previously retrieved pipeline + cache data. If the pipeline cache data is incompatible (as defined + below) with the device, the pipeline cache will be initially empty. If + pname:initialDataSize is zero, pname:pInitialData is ignored. + Description ----------- include::../validity/structs/VkPipelineCacheCreateInfo.txt[] + + See Also -------- +elink:VkPipelineCacheCreateFlags, elink:VkStructureType, flink:vkCreatePipelineCache + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCacheCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCacheHeaderVersion.txt b/doc/specs/vulkan/man/VkPipelineCacheHeaderVersion.txt index 7539a5c68f..52f1471459 100644 --- a/doc/specs/vulkan/man/VkPipelineCacheHeaderVersion.txt +++ b/doc/specs/vulkan/man/VkPipelineCacheHeaderVersion.txt @@ -1,26 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineCacheHeaderVersion(3) =============================== Name ---- -VkPipelineCacheHeaderVersion - Stub page (not yet written) +VkPipelineCacheHeaderVersion - Encode pipeline cache version C Specification --------------- -include::../enums/VkPipelineCacheHeaderVersion.txt[] +// refBegin VkPipelineCacheHeaderVersion Encode pipeline cache version -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The next four bytes encode the pipeline cache version. This field is +interpreted as a elink:VkPipelineCacheHeaderVersion value, and must: +have one of the following values: + +include::../enums/VkPipelineCacheHeaderVersion.txt[] -Constants ---------- Description ----------- +A consumer of the pipeline cache should use the cache version to interpret +the remainder of the cache header. + +// refEnd VkPipelineCacheHeaderVersion vkCreatePipelineCache vkGetPipelineCacheData + + See Also -------- +flink:vkCreatePipelineCache, flink:vkGetPipelineCacheData + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCacheHeaderVersion + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineColorBlendAttachmentState.txt b/doc/specs/vulkan/man/VkPipelineColorBlendAttachmentState.txt index 6cacd546b9..5601c8de6d 100644 --- a/doc/specs/vulkan/man/VkPipelineColorBlendAttachmentState.txt +++ b/doc/specs/vulkan/man/VkPipelineColorBlendAttachmentState.txt @@ -1,27 +1,68 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineColorBlendAttachmentState(3) ====================================== Name ---- -VkPipelineColorBlendAttachmentState - Stub page (not yet written) +VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state C Specification --------------- +// refBegin VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state + +The sname:VkPipelineColorBlendAttachmentState structure is defined as: + include::../structs/VkPipelineColorBlendAttachmentState.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:blendEnable controls whether blending is enabled for the + corresponding color attachment. If blending is not enabled, the source + fragment's color for that attachment is passed through unmodified. + * pname:srcColorBlendFactor selects which blend factor is used to + determine the source factors latexmath:[$S_r,S_g,S_b$]. + * pname:dstColorBlendFactor selects which blend factor is used to + determine the destination factors latexmath:[$D_r,D_g,D_b$]. + * pname:colorBlendOp selects which blend operation is used to calculate + the RGB values to write to the color attachment. + * pname:srcAlphaBlendFactor selects which blend factor is used to + determine the source factor latexmath:[$S_a$]. + * pname:dstAlphaBlendFactor selects which blend factor is used to + determine the destination factor latexmath:[$D_a$]. + * pname:alphaBlendOp selects which blend operation is use to calculate the + alpha values to write to the color attachment. + * pname:colorWriteMask is a bitmask selecting which of the R, G, B, + and/or A components are enabled for writing, as described later in this + chapter. + Description ----------- include::../validity/structs/VkPipelineColorBlendAttachmentState.txt[] + + See Also -------- +elink:VkBlendFactor, elink:VkBlendOp, basetypes:VkBool32, elink:VkColorComponentFlags, slink:VkPipelineColorBlendStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineColorBlendAttachmentState + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateFlags.txt index 114ba3ae67..a8a8c55689 100644 --- a/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineColorBlendStateCreateFlags(3) ======================================= Name ---- -VkPipelineColorBlendStateCreateFlags - Stub page (not yet written) +VkPipelineColorBlendStateCreateFlags - Bitmask of VkPipelineColorBlendStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineColorBlendStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineColorBlendStateCreateFlags is a mask of zero or more elink:VkPipelineColorBlendStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineColorBlendStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineColorBlendStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateInfo.txt index 8d930df8b0..01a464b5c9 100644 --- a/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineColorBlendStateCreateInfo.txt @@ -1,27 +1,72 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineColorBlendStateCreateInfo(3) ====================================== Name ---- -VkPipelineColorBlendStateCreateInfo - Stub page (not yet written) +VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state C Specification --------------- +// refBegin VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state + +The sname:VkPipelineColorBlendStateCreateInfo structure is defined as: + include::../structs/VkPipelineColorBlendStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:logicOpEnable controls whether to apply <>. + * pname:logicOp selects which logical operation to apply. + * pname:attachmentCount is the number of + sname:VkPipelineColorBlendAttachmentState elements in + pname:pAttachments. This value must: equal the + pname:colorAttachmentCount for the subpass in which this pipeline is + used. + * pname:pAttachments: is a pointer to array of per target attachment states. + * pname:blendConstants is an array of four values used as the R, G, B, and + A components of the blend constant that are used in blending, depending + on the <>. + Description ----------- +Each element of the pname:pAttachments array is a +slink:VkPipelineColorBlendAttachmentState structure specifying per-target +blending state for each individual color attachment. If the +<> feature is not +enabled on the device, all slink:VkPipelineColorBlendAttachmentState +elements in the pname:pAttachments array must: be identical. + include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, slink:VkGraphicsPipelineCreateInfo, elink:VkLogicOp, slink:VkPipelineColorBlendAttachmentState, elink:VkPipelineColorBlendStateCreateFlags, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCreateFlagBits.txt b/doc/specs/vulkan/man/VkPipelineCreateFlagBits.txt index 3d452224f8..eeab98d9cc 100644 --- a/doc/specs/vulkan/man/VkPipelineCreateFlagBits.txt +++ b/doc/specs/vulkan/man/VkPipelineCreateFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineCreateFlagBits(3) =========================== Name ---- -VkPipelineCreateFlagBits - Stub page (not yet written) +VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is generated C Specification --------------- +// refBegin VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is generated include::../enums/VkPipelineCreateFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkGraphicsPipelineCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkPipelineCreateFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCreateFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineCreateFlags.txt index c535fa7011..85827e9b8e 100644 --- a/doc/specs/vulkan/man/VkPipelineCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineCreateFlags(3) ======================== Name ---- -VkPipelineCreateFlags - Stub page (not yet written) +VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits C Specification --------------- include::../flags/VkPipelineCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineCreateFlags is a mask of zero or more elink:VkPipelineCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkComputePipelineCreateInfo, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineCreateFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateFlags.txt index 88f5d73f1c..d33bfd204e 100644 --- a/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineDepthStencilStateCreateFlags(3) ========================================= Name ---- -VkPipelineDepthStencilStateCreateFlags - Stub page (not yet written) +VkPipelineDepthStencilStateCreateFlags - Bitmask of VkPipelineDepthStencilStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineDepthStencilStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineDepthStencilStateCreateFlags is a mask of zero or more elink:VkPipelineDepthStencilStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineDepthStencilStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineDepthStencilStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateInfo.txt index 6aaf2f96f6..8f3b865057 100644 --- a/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineDepthStencilStateCreateInfo.txt @@ -1,27 +1,67 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineDepthStencilStateCreateInfo(3) ======================================== Name ---- -VkPipelineDepthStencilStateCreateInfo - Stub page (not yet written) +VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state C Specification --------------- +// refBegin VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state + +The sname:VkPipelineDepthStencilStateCreateInfo structure is defined as: + include::../structs/VkPipelineDepthStencilStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:depthTestEnable controls whether <> + is enabled. + * pname:depthWriteEnable controls whether + <> are enabled. + * pname:depthCompareOp is the comparison operator used in the + <>. + * pname:depthBoundsTestEnable controls whether <> is enabled. + * pname:stencilTestEnable controls whether <> is enabled. + * pname:front and pname:back control the parameters of the + <>. + * pname:minDepthBounds and pname:maxDepthBounds define the range of values + used in the <>. + Description ----------- include::../validity/structs/VkPipelineDepthStencilStateCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, elink:VkCompareOp, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineDepthStencilStateCreateFlags, slink:VkStencilOpState, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineDepthStencilStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineDynamicStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineDynamicStateCreateFlags.txt index a78a0bf620..340a64aa95 100644 --- a/doc/specs/vulkan/man/VkPipelineDynamicStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineDynamicStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineDynamicStateCreateFlags(3) ==================================== Name ---- -VkPipelineDynamicStateCreateFlags - Stub page (not yet written) +VkPipelineDynamicStateCreateFlags - Bitmask of VkPipelineDynamicStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineDynamicStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineDynamicStateCreateFlags is a mask of zero or more elink:VkPipelineDynamicStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineDynamicStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineDynamicStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineDynamicStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineDynamicStateCreateInfo.txt index dd38061499..c5bdba0956 100644 --- a/doc/specs/vulkan/man/VkPipelineDynamicStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineDynamicStateCreateInfo.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineDynamicStateCreateInfo(3) =================================== Name ---- -VkPipelineDynamicStateCreateInfo - Stub page (not yet written) +VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state C Specification --------------- +// refBegin VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state + +The sname:VkPipelineDynamicStateCreateInfo structure is defined as: + include::../structs/VkPipelineDynamicStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:dynamicStateCount is the number of elements in the + pname:pDynamicStates array. + * pname:pDynamicStates is an array of elink:VkDynamicState enums which + indicate which pieces of pipeline state will use the values from dynamic + state commands rather than from the pipeline state creation info. + Description ----------- include::../validity/structs/VkPipelineDynamicStateCreateInfo.txt[] + + See Also -------- +elink:VkDynamicState, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineDynamicStateCreateFlags, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineDynamicStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateFlags.txt index a585693ddb..baad13c48d 100644 --- a/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineInputAssemblyStateCreateFlags(3) ========================================== Name ---- -VkPipelineInputAssemblyStateCreateFlags - Stub page (not yet written) +VkPipelineInputAssemblyStateCreateFlags - Bitmask of VkPipelineInputAssemblyStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineInputAssemblyStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineInputAssemblyStateCreateFlags is a mask of zero or more elink:VkPipelineInputAssemblyStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineInputAssemblyStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineInputAssemblyStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateInfo.txt index 3f0c9a5791..4264914cc3 100644 --- a/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineInputAssemblyStateCreateInfo.txt @@ -1,27 +1,74 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineInputAssemblyStateCreateInfo(3) ========================================= Name ---- -VkPipelineInputAssemblyStateCreateInfo - Stub page (not yet written) +VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state C Specification --------------- +// refBegin VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state + +Each draw is made up of zero or more vertices and zero or more instances, +which are processed by the device and result in the assembly of +primitives. Primitives are assembled according to the +pname:pInputAssemblyState member of the sname:VkGraphicsPipelineCreateInfo +structure, which is of type sname:VkPipelineInputAssemblyStateCreateInfo: + include::../structs/VkPipelineInputAssemblyStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:primitiveRestartEnable controls whether a special vertex index + value is treated as restarting the assembly of primitives. This enable + only applies to indexed draws (flink:vkCmdDrawIndexed and + flink:vkCmdDrawIndexedIndirect), and the special index value is either + 0xFFFFFFFF when the pname:indexType parameter of + fname:vkCmdBindIndexBuffer is equal to ename:VK_INDEX_TYPE_UINT32, or + 0xFFFF when pname:indexType is equal to ename:VK_INDEX_TYPE_UINT16. + Primitive restart is not allowed for ``list'' topologies. + * pname:topology is a elink:VkPrimitiveTopology defining the primitive + topology, as described below. + Description ----------- +Restarting the assembly of primitives discards the most recent index values +if those elements formed an incomplete primitive, and restarts the primitive +assembly using the subsequent indices, but only assembling the immediately +following element through the end of the originally specified elements. The +primitive restart index value comparison is performed before adding the +pname:vertexOffset value to the index value. + include::../validity/structs/VkPipelineInputAssemblyStateCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineInputAssemblyStateCreateFlags, elink:VkPrimitiveTopology, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineInputAssemblyStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineLayout.txt b/doc/specs/vulkan/man/VkPipelineLayout.txt new file mode 100644 index 0000000000..1c31054f0d --- /dev/null +++ b/doc/specs/vulkan/man/VkPipelineLayout.txt @@ -0,0 +1,54 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkPipelineLayout(3) +=================== + +Name +---- +VkPipelineLayout - Opaque handle to a pipeline layout object + +C Specification +--------------- + +// refBegin VkPipelineLayout - Opaque handle to a pipeline layout object + +Access to descriptor sets from a pipeline is accomplished through a +_pipeline layout_. Zero or more descriptor set layouts and zero or more push +constant ranges are combined to form a +pipeline layout object which describes the complete set of resources that +can: be accessed by a pipeline. The pipeline layout represents a sequence of +descriptor sets with each having a specific layout. This sequence of layouts +is used to determine the interface between shader stages and shader +resources. Each pipeline is created using a pipeline layout. + +Pipeline layout objects are represented by sname:VkPipelineLayout handles: + +include::../handles/VkPipelineLayout.txt[] + + +Description +----------- + +// refEnd VkPipelineLayout + + +See Also +-------- + +slink:VkComputePipelineCreateInfo, slink:VkGraphicsPipelineCreateInfo, flink:vkCmdBindDescriptorSets, flink:vkCmdPushConstants, flink:vkCreatePipelineLayout, flink:vkDestroyPipelineLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineLayoutCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineLayoutCreateFlags.txt index 34b798ee67..76c0c7e9dc 100644 --- a/doc/specs/vulkan/man/VkPipelineLayoutCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineLayoutCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineLayoutCreateFlags(3) ============================== Name ---- -VkPipelineLayoutCreateFlags - Stub page (not yet written) +VkPipelineLayoutCreateFlags - Bitmask of VkPipelineLayoutCreateFlagBits C Specification --------------- include::../flags/VkPipelineLayoutCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineLayoutCreateFlags is a mask of zero or more elink:VkPipelineLayoutCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineLayoutCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineLayoutCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineLayoutCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineLayoutCreateInfo.txt index b2b82fe8ad..a178088876 100644 --- a/doc/specs/vulkan/man/VkPipelineLayoutCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineLayoutCreateInfo.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineLayoutCreateInfo(3) ============================= @@ -8,36 +12,60 @@ VkPipelineLayoutCreateInfo - Structure specifying the parameters of a newly crea C Specification --------------- -include::../structs/VkPipelineLayoutCreateInfo.txt[] +// refBegin VkPipelineLayoutCreateInfo Structure specifying the parameters of a newly created pipeline layout object. + +The slink:VkPipelineLayoutCreateInfo structure is defined as: -Fields ------- +include::../structs/VkPipelineLayoutCreateInfo.txt[] -sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO. -pNext:: - Pointer to next structure in the structure chain when applicable. +Members +------- -setLayoutCount:: - Number of descriptor sets interfaced by the pipeline. + * 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:setLayoutCount is the number of descriptor sets included in + the pipeline layout. + * pname:pSetLayouts is a pointer to an array of + sname:VkDescriptorSetLayout objects. + * pname:pushConstantRangeCount is the number of push constant ranges + included in the pipeline layout. + * pname:pPushConstantRanges is a pointer to an array of + sname:VkPushConstantRange structures defining a set of push constant + ranges for use in a single pipeline layout. In addition to descriptor + set layouts, a pipeline layout also describes how many push constants + can: be accessed by each stage of the pipeline. ++ +[NOTE] +.Note +==== +Push constants represent a high speed path to modify constant data in +pipelines that is expected to outperform memory-backed resource updates. +==== -pSetLayouts:: - Pointer to an array of pname:setLayoutCount number of descriptor set - layout objects defining the layout of the descriptor set at the - corresponding index. Description ----------- -This structure is used to specify the parameters of pipeline layout objects created using -flink:vkCreatePipelineLayout. - include::../validity/structs/VkPipelineLayoutCreateInfo.txt[] + See Also -------- -flink:vkCreatePipelineLayout +slink:VkDescriptorSetLayout, elink:VkPipelineLayoutCreateFlags, slink:VkPushConstantRange, elink:VkStructureType, flink:vkCreatePipelineLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineLayoutCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateFlags.txt index 3d16999ddb..833db17cb0 100644 --- a/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineMultisampleStateCreateFlags(3) ======================================== Name ---- -VkPipelineMultisampleStateCreateFlags - Stub page (not yet written) +VkPipelineMultisampleStateCreateFlags - Bitmask of VkPipelineMultisampleStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineMultisampleStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineMultisampleStateCreateFlags is a mask of zero or more elink:VkPipelineMultisampleStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineMultisampleStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineMultisampleStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateInfo.txt index b4208340b0..d04cac6ce3 100644 --- a/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineMultisampleStateCreateInfo.txt @@ -1,27 +1,70 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineMultisampleStateCreateInfo(3) ======================================= Name ---- -VkPipelineMultisampleStateCreateInfo - Stub page (not yet written) +VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state C Specification --------------- +// refBegin VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state + +The sname:VkPipelineMultisampleStateCreateInfo structure is defined as: + include::../structs/VkPipelineMultisampleStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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 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 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 <>. + * pname:alphaToCoverageEnable controls whether a temporary coverage value + is generated based on the alpha component of the fragment's + first color output as specified in the <> section. + * pname:alphaToOneEnable controls whether the alpha component of the + fragment's first color output is replaced with one as described in + <>. + Description ----------- include::../validity/structs/VkPipelineMultisampleStateCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineMultisampleStateCreateFlags, elink:VkSampleCountFlagBits, basetypes:VkSampleMask, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineMultisampleStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateFlags.txt index 741f521b1b..05a609adbb 100644 --- a/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineRasterizationStateCreateFlags(3) ========================================== Name ---- -VkPipelineRasterizationStateCreateFlags - Stub page (not yet written) +VkPipelineRasterizationStateCreateFlags - Bitmask of VkPipelineRasterizationStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineRasterizationStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineRasterizationStateCreateFlags is a mask of zero or more elink:VkPipelineRasterizationStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineRasterizationStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineRasterizationStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateInfo.txt index 9d259c56fa..873e89de9e 100644 --- a/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineRasterizationStateCreateInfo.txt @@ -1,27 +1,72 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineRasterizationStateCreateInfo(3) ========================================= Name ---- -VkPipelineRasterizationStateCreateInfo - Stub page (not yet written) +VkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state C Specification --------------- +// refBegin VkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state + +The sname:VkPipelineRasterizationStateCreateInfo structure is defined as: + include::../structs/VkPipelineRasterizationStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:depthClampEnable controls whether to clamp the fragment's depth + values instead of clipping primitives to the z planes of the frustum, as + described in <>. + * pname:rasterizerDiscardEnable controls whether primitives are discarded + immediately before the rasterization stage. + * pname:polygonMode is the triangle rendering mode. See + elink:VkPolygonMode. + * pname:cullMode is the triangle facing direction used for primitive + culling. See elink:VkCullModeFlagBits. + * pname:frontFace is the front-facing triangle orientation to be used for + culling. See elink:VkFrontFace. + * pname:depthBiasEnable controls whether to bias fragment depth values. + * pname:depthBiasConstantFactor is a scalar factor controlling the + constant depth value added to each fragment. + * pname:depthBiasClamp is the maximum (or minimum) depth bias of a + fragment. + * pname:depthBiasSlopeFactor is a scalar factor applied to a fragment's + slope in depth bias calculations. + * pname:lineWidth is the width of rasterized line segments. + Description ----------- include::../validity/structs/VkPipelineRasterizationStateCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, elink:VkCullModeFlags, elink:VkFrontFace, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineRasterizationStateCreateFlags, elink:VkPolygonMode, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineRasterizationStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineShaderStageCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineShaderStageCreateFlags.txt index a6c8bb4083..7513b14123 100644 --- a/doc/specs/vulkan/man/VkPipelineShaderStageCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineShaderStageCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineShaderStageCreateFlags(3) =================================== Name ---- -VkPipelineShaderStageCreateFlags - Stub page (not yet written) +VkPipelineShaderStageCreateFlags - Bitmask of VkPipelineShaderStageCreateFlagBits C Specification --------------- include::../flags/VkPipelineShaderStageCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineShaderStageCreateFlags is a mask of zero or more elink:VkPipelineShaderStageCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineShaderStageCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineShaderStageCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineShaderStageCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineShaderStageCreateInfo.txt index 0906c88e5d..baaaefc918 100644 --- a/doc/specs/vulkan/man/VkPipelineShaderStageCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineShaderStageCreateInfo.txt @@ -1,27 +1,67 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineShaderStageCreateInfo(3) ================================== Name ---- -VkPipelineShaderStageCreateInfo - Stub page (not yet written) +VkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage C Specification --------------- +// refBegin VkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage + +The sname:VkPipelineShaderStageCreateInfo structure is defined as: + include::../structs/VkPipelineShaderStageCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:stage names a single pipeline stage. Bits which can: + be set include: ++ +-- +// refBegin VkShaderStageFlagBits - Bitmask specifying a pipeline stage +include::../enums/VkShaderStageFlagBits.txt[] +-- + * pname:module is a sname:VkShaderModule object that contains the + shader for this stage. + * pname:pName is a pointer to a null-terminated UTF-8 string specifying + the entry point name of the shader for this stage. + * pname:pSpecializationInfo is a pointer to slink:VkSpecializationInfo, as + described in <>, and can: be `NULL`. + Description ----------- include::../validity/structs/VkPipelineShaderStageCreateInfo.txt[] + + See Also -------- +slink:VkComputePipelineCreateInfo, slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineShaderStageCreateFlags, slink:VkShaderModule, elink:VkShaderStageFlagBits, slink:VkSpecializationInfo, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineShaderStageCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineStageFlagBits.txt b/doc/specs/vulkan/man/VkPipelineStageFlagBits.txt index 139057e687..0e65aae938 100644 --- a/doc/specs/vulkan/man/VkPipelineStageFlagBits.txt +++ b/doc/specs/vulkan/man/VkPipelineStageFlagBits.txt @@ -1,26 +1,122 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineStageFlagBits(3) ========================== Name ---- -VkPipelineStageFlagBits - Stub page (not yet written) +VkPipelineStageFlagBits - Bitmask specifying pipeline stages C Specification --------------- -include::../enums/VkPipelineStageFlagBits.txt[] +// refBegin VkPipelineStageFlagBits - Bitmask specifying pipeline stages -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Several of the event commands, fname:vkCmdPipelineBarrier, and +sname:VkSubpassDependency depend on being able to specify where in the +logical pipeline events can: be signaled, or the source and destination of an +execution dependency. These pipeline stages are specified using a bitmask: + +include::../enums/VkPipelineStageFlagBits.txt[] -Constants ---------- Description ----------- +The meaning of each bit is: + + * ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT: + Stage of the pipeline where commands are initially received by the + queue. + * ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT: + Stage of the pipeline where Draw/DispatchIndirect data structures are + consumed. + * ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT: + Stage of the pipeline where vertex and index buffers are consumed. + * ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT: + Vertex shader stage. + * ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT: + Tessellation control shader stage. + * ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT: + Tessellation evaluation shader stage. + * ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT: + Geometry shader stage. + * ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT: + Fragment shader stage. + * ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT: + Stage of the pipeline where early fragment tests (depth and stencil + tests before fragment shading) are performed. + * ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT: + Stage of the pipeline where late fragment tests (depth and stencil tests + after fragment shading) are performed. + * ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT: + Stage of the pipeline after blending where the final color values are + output from the pipeline. This stage also includes resolve operations + that occur at the end of a subpass. Note that this does not necessarily + indicate that the values have been committed to memory. + * [[synchronization-transfer]]ename:VK_PIPELINE_STAGE_TRANSFER_BIT: + Execution of copy commands. This includes the operations resulting from + all transfer commands. The set of transfer commands comprises + fname:vkCmdCopyBuffer, fname:vkCmdCopyImage, fname:vkCmdBlitImage, + fname:vkCmdCopyBufferToImage, fname:vkCmdCopyImageToBuffer, + fname:vkCmdUpdateBuffer, fname:vkCmdFillBuffer, + fname:vkCmdClearColorImage, fname:vkCmdClearDepthStencilImage, + fname:vkCmdResolveImage, and fname:vkCmdCopyQueryPoolResults. + * ename:VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT: + Execution of a compute shader. + * ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT: + Final stage in the pipeline where commands complete execution. + * ename:VK_PIPELINE_STAGE_HOST_BIT: + A pseudo-stage indicating execution on the host of reads/writes of + device memory. + * ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT: + Execution of all graphics pipeline stages. + * ename:VK_PIPELINE_STAGE_ALL_COMMANDS_BIT: + Execution of all stages supported on the queue. + +[NOTE] +.Note +==== +The ename:VK_PIPELINE_STAGE_ALL_COMMANDS_BIT and +ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT differ from +ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT in that they correspond to all +(or all graphics) stages, rather than to a specific stage at the end of the +pipeline. An execution dependency with only +ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT in pname:dstStageMask will not +delay subsequent commands, while including either of the other two bits +will. Similarly, when defining a memory dependency, if the stage mask(s) +refer to all stages, then the indicated access types from all stages will be +made available and/or visible, but using only +ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT would not make any accesses +available and/or visible because this stage does not access memory. The +ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT is useful for accomplishing +memory barriers and layout transitions when the next accesses will be done +in a different queue or by a presentation engine; in these cases subsequent +commands in the same queue do not need to wait, but the barrier or +transition must: complete before semaphores associated with the batch +signal. +==== + +// refEnd VkPipelineStageFlagBits + + See Also -------- +elink:VkPipelineStageFlags, flink:vkCmdWriteTimestamp + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineStageFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineStageFlags.txt b/doc/specs/vulkan/man/VkPipelineStageFlags.txt index ee1b57909e..af4bbcbe5f 100644 --- a/doc/specs/vulkan/man/VkPipelineStageFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineStageFlags.txt @@ -1,100 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineStageFlags(3) ======================= Name ---- -VkPipelineStageFlags - Pipeline stage identifiers. +VkPipelineStageFlags - Bitmask of VkPipelineStageFlagBits C Specification --------------- -include::../enums/VkPipelineStageFlagBits.txt[] - -Constants ---------- - -ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT:: - Stage of the pipeline where commands are initially received by the queue. - -ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT:: - Stage of the pipeline where Draw/DispatchIndirect data structures are - consumed. - -ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT:: - Stage of the pipeline where vertex and index buffers are consumed. +include::../flags/VkPipelineStageFlags.txt[] -ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT:: - Vertex shader stage. -ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT:: - Tessellation control shader stage. - -ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT:: - Tessellation evaluation shader stage. - -ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT:: - Geometry shader stage. - -ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT:: - Fragment shader stage. +Description +----------- -ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT:: - Stage of the pipeline where early fragment tests (depth/stencil test before - fragment shading) are performed. +etext:VkPipelineStageFlags is a mask of zero or more elink:VkPipelineStageFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT:: - Stage of the pipeline where late fragment tests (depth/stencil test after - fragment shading) are performed. -ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT:: - Stage of the pipeline after blending where the final color values are output - from the pipeline. Note that this does not necessarily indicate that the - values have been committed to memory. +See Also +-------- -ename:VK_PIPELINE_STAGE_TRANSFER_BIT:: - Execution of copy commands. This includes the operations resulting from all - transfer commands, e.g. fname:vkCmdCopyImage, fname:vkCmdCopyBuffer, - fname:vkCmdBlitImage, fname:vkCmdResolveImage, fname:vkCmdClearColorImage, - etc. +elink:VkPipelineStageFlagBits, slink:VkSubmitInfo, slink:VkSubpassDependency, flink:vkCmdPipelineBarrier, flink:vkCmdResetEvent, flink:vkCmdSetEvent, flink:vkCmdWaitEvents -ename:VK_PIPELINE_STAGE_HOST_BIT:: - Indicates execution on the Host of reads/writes of device memory. -Description ------------ +Document Notes +-------------- -The pipeline stages are used to describe which operations must be synchronized -for the purposes of execution dependencies in pipeline barriers, event -signal/wait, and subpass dependencies. Many of the bits describe stages of the -graphics pipeline, but there are also pseudo-stages for compute work, -copy commands, and CPU production/consumption of data. - -For the commands flink:vkCmdSetEvent and flink:vkCmdResetEvent the event object is -set and reset, respectively, after the specified pipeline stages have completed -executing prior commands. Some implementations may not be able to signal at as -fine a grain as the bits in the bitfield, in which case the signaling may occur -after additional stages have completed executing prior commands. - -For the command flink:vkCmdWaitEvents, the ptext:srcStageMask should be a -bitwise OR of all ptext:stageMasks used to signal the events, as described -above. If some events were signaled with flink:vkSetEvent, then this should -include ename:VK_PIPELINE_STAGE_HOST_BIT. ptext:dstStageMask indicates the set of -pipeline stages that should not begin executing subsequent commands until the -events are signaled. Some implementations may not be able to wait at as fine -a grain as the bits in the bitfield, in which case the waiting may occur at an -earlier stage in the pipeline. - -For the command flink:vkCmdPipelineBarrier, writes as described by -ptext:outputMask that were written by pipeline stages in ptext:srcStageMask -prior to the barrier are made visible to reads as described by ptext:inputMask -in pipeline stages in ptext:dstStageMask subsequent to the barrier. - -ename:VK_PIPELINE_STAGE_HOST_BIT cannot be used for fname:vkCmdSetEvent, -fname:vkCmdResetEvent, or fname:vkCmdPipelineBarrier. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineStageFlags -flink:vkCmdSetEvent, flink:vkCmdResetEvent, flink:vkCmdWaitEvents, flink:vkCmdPipelineBarrier +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineTessellationStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineTessellationStateCreateFlags.txt index 881ca2b613..4ac3af9efd 100644 --- a/doc/specs/vulkan/man/VkPipelineTessellationStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineTessellationStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineTessellationStateCreateFlags(3) ========================================= Name ---- -VkPipelineTessellationStateCreateFlags - Stub page (not yet written) +VkPipelineTessellationStateCreateFlags - Bitmask of VkPipelineTessellationStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineTessellationStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineTessellationStateCreateFlags is a mask of zero or more elink:VkPipelineTessellationStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineTessellationStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineTessellationStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineTessellationStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineTessellationStateCreateInfo.txt index c8813a551e..f5b00260ae 100644 --- a/doc/specs/vulkan/man/VkPipelineTessellationStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineTessellationStateCreateInfo.txt @@ -1,27 +1,54 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineTessellationStateCreateInfo(3) ======================================== Name ---- -VkPipelineTessellationStateCreateInfo - Stub page (not yet written) +VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state C Specification --------------- +// refBegin VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state + +The sname:VkPipelineTessellationStateCreateInfo structure is defined as: + include::../structs/VkPipelineTessellationStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:patchControlPoints number of control points per patch. + Description ----------- include::../validity/structs/VkPipelineTessellationStateCreateInfo.txt[] + + See Also -------- +slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineTessellationStateCreateFlags, elink:VkStructureType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateFlags.txt index 6f4213a17b..881056fdcd 100644 --- a/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineVertexInputStateCreateFlags(3) ======================================== Name ---- -VkPipelineVertexInputStateCreateFlags - Stub page (not yet written) +VkPipelineVertexInputStateCreateFlags - Bitmask of VkPipelineVertexInputStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineVertexInputStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineVertexInputStateCreateFlags is a mask of zero or more elink:VkPipelineVertexInputStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineVertexInputStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineVertexInputStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateInfo.txt index 813641f630..25815d1120 100644 --- a/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineVertexInputStateCreateInfo.txt @@ -1,27 +1,61 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineVertexInputStateCreateInfo(3) ======================================= Name ---- -VkPipelineVertexInputStateCreateInfo - Stub page (not yet written) +VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state C Specification --------------- +// refBegin VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state + +The sname:VkPipelineVertexInputStateCreateInfo structure is defined as: + include::../structs/VkPipelineVertexInputStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:vertexBindingDescriptionCount is the number of vertex binding + descriptions provided in pname:pVertexBindingDescriptions. + * pname:pVertexBindingDescriptions is a pointer to an array of + sname:VkVertexInputBindingDescription structures. + * pname:vertexAttributeDescriptionCount is the number of vertex attribute + descriptions provided in pname:pVertexAttributeDescriptions. + * pname:pVertexAttributeDescriptions is a pointer to an array of + sname:VkVertexInputAttributeDescription structures. + Description ----------- include::../validity/structs/VkPipelineVertexInputStateCreateInfo.txt[] + + See Also -------- +slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineVertexInputStateCreateFlags, elink:VkStructureType, slink:VkVertexInputAttributeDescription, slink:VkVertexInputBindingDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineVertexInputStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineViewportStateCreateFlags.txt b/doc/specs/vulkan/man/VkPipelineViewportStateCreateFlags.txt index fbfda3549f..b6cfa7e0f4 100644 --- a/doc/specs/vulkan/man/VkPipelineViewportStateCreateFlags.txt +++ b/doc/specs/vulkan/man/VkPipelineViewportStateCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineViewportStateCreateFlags(3) ===================================== Name ---- -VkPipelineViewportStateCreateFlags - Stub page (not yet written) +VkPipelineViewportStateCreateFlags - Bitmask of VkPipelineViewportStateCreateFlagBits C Specification --------------- include::../flags/VkPipelineViewportStateCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkPipelineViewportStateCreateFlags is a mask of zero or more elink:VkPipelineViewportStateCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkPipelineViewportStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineViewportStateCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPipelineViewportStateCreateInfo.txt b/doc/specs/vulkan/man/VkPipelineViewportStateCreateInfo.txt index cc24a15130..9de69015e9 100644 --- a/doc/specs/vulkan/man/VkPipelineViewportStateCreateInfo.txt +++ b/doc/specs/vulkan/man/VkPipelineViewportStateCreateInfo.txt @@ -1,27 +1,62 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPipelineViewportStateCreateInfo(3) ==================================== Name ---- -VkPipelineViewportStateCreateInfo - Stub page (not yet written) +VkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state C Specification --------------- +// refBegin VkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state + +The sname:VkPipelineViewportStateCreateInfo structure is defined as: + include::../structs/VkPipelineViewportStateCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:viewportCount is the number of viewports used by the pipeline. + * pname:pViewports is a pointer to an array of slink:VkViewport + structures, defining the viewport transforms. If the viewport state is + dynamic, this member is ignored. + * pname:scissorCount is the number of <> and + must: match the number of viewports. + * pname:pScissors is a pointer to an array of sname:VkRect2D structures + which define the rectangular bounds of the scissor for the corresponding + viewport. If the scissor state is dynamic, this member is ignored. + Description ----------- include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[] + + See Also -------- +slink:VkGraphicsPipelineCreateInfo, elink:VkPipelineViewportStateCreateFlags, slink:VkRect2D, elink:VkStructureType, slink:VkViewport + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPipelineViewportStateCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPolygonMode.txt b/doc/specs/vulkan/man/VkPolygonMode.txt index c53061e3e6..8342f7e1c0 100644 --- a/doc/specs/vulkan/man/VkPolygonMode.txt +++ b/doc/specs/vulkan/man/VkPolygonMode.txt @@ -1,26 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPolygonMode(3) ================ Name ---- -VkPolygonMode - Stub page (not yet written) +VkPolygonMode - control polygon rasterization mode C Specification --------------- -include::../enums/VkPolygonMode.txt[] +// refBegin VkPolygonMode control polygon rasterization mode -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +The method of rasterization for polygons is determined by the +slink:VkPipelineRasterizationStateCreateInfo::pname:polygonMode property of +the currently active pipeline, which takes the following values: + +include::../enums/VkPolygonMode.txt[] -Constants ---------- Description ----------- +The pname:polygonMode selects which method of rasterization is used for +polygons. If pname:polygonMode is ename:VK_POLYGON_MODE_POINT, then the +vertices of polygons are treated, for rasterization purposes, as if they had +been drawn as points. ename:VK_POLYGON_MODE_LINE causes polygon edges to be +drawn as line segments. ename:VK_POLYGON_MODE_FILL causes polygons to render +using the polygon rasterization rules in this section. + +Note that these modes affect only the final rasterization of polygons: in +particular, a polygon's vertices are shaded and the polygon is clipped and +possibly culled before these modes are applied. + +// refEnd VkPolygonMode + + See Also -------- +slink:VkPipelineRasterizationStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPolygonMode + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPresentInfoKHR.txt b/doc/specs/vulkan/man/VkPresentInfoKHR.txt deleted file mode 100644 index a3b59db5be..0000000000 --- a/doc/specs/vulkan/man/VkPresentInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkPresentInfoKHR(3) -=================== - -Name ----- -VkPresentInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkPresentInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkPresentInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkPresentModeKHR.txt b/doc/specs/vulkan/man/VkPresentModeKHR.txt deleted file mode 100644 index a28db2a933..0000000000 --- a/doc/specs/vulkan/man/VkPresentModeKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkPresentModeKHR(3) -=================== - -Name ----- -VkPresentModeKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkPresentModeKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkPrimitiveTopology.txt b/doc/specs/vulkan/man/VkPrimitiveTopology.txt index d7de8bce9c..fb29ff339f 100644 --- a/doc/specs/vulkan/man/VkPrimitiveTopology.txt +++ b/doc/specs/vulkan/man/VkPrimitiveTopology.txt @@ -1,26 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPrimitiveTopology(3) ====================== Name ---- -VkPrimitiveTopology - Stub page (not yet written) +VkPrimitiveTopology - supported primitive topologies C Specification --------------- -include::../enums/VkPrimitiveTopology.txt[] +// refBegin VkPrimitiveTopology supported primitive topologies -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +_Primitive topology_ determines how consecutive vertices are organized into +primitives, and determines the type of primitive that is used at the +beginning of the graphics pipeline. The effective topology for later stages +of the pipeline is altered by tessellation or geometry shading (if either is +in use) and depends on the execution modes of those shaders. Supported +topologies are defined by elink:VkPrimitiveTopology and include: + +include::../enums/VkPrimitiveTopology.txt[] -Constants ---------- Description ----------- +// refEnd VkPrimitiveTopology + + See Also -------- +slink:VkPipelineInputAssemblyStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPrimitiveTopology + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkPushConstantRange.txt b/doc/specs/vulkan/man/VkPushConstantRange.txt index 93752ac30e..296e44c787 100644 --- a/doc/specs/vulkan/man/VkPushConstantRange.txt +++ b/doc/specs/vulkan/man/VkPushConstantRange.txt @@ -1,27 +1,59 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkPushConstantRange(3) ====================== Name ---- -VkPushConstantRange - Stub page (not yet written) +VkPushConstantRange - Structure specifying a push constant range C Specification --------------- +// refBegin VkPushConstantRange - Structure specifying a push constant range + +The sname:VkPushConstantRange structure is defined as: + include::../structs/VkPushConstantRange.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:stageFlags is a set of stage flags describing the shader + stages that will access a range of push constants. If a particular stage + is not included in the range, then accessing members of that range of + push constants from the corresponding shader stage will result in + undefined data being read. + * pname:offset and pname:size are the start offset and size, + respectively, consumed by the range. Both pname:offset and pname:size + are in units of bytes and must: be a multiple of 4. The layout of + the push constant variables is specified in the shader. + Description ----------- include::../validity/structs/VkPushConstantRange.txt[] + + See Also -------- +slink:VkPipelineLayoutCreateInfo, elink:VkShaderStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkPushConstantRange + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryControlFlagBits.txt b/doc/specs/vulkan/man/VkQueryControlFlagBits.txt index c7160befea..f14c94db4a 100644 --- a/doc/specs/vulkan/man/VkQueryControlFlagBits.txt +++ b/doc/specs/vulkan/man/VkQueryControlFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryControlFlagBits(3) ========================= Name ---- -VkQueryControlFlagBits - Stub page (not yet written) +VkQueryControlFlagBits - Bitmask specifying constraints on a query C Specification --------------- +// refBegin VkQueryControlFlagBits - Bitmask specifying constraints on a query include::../enums/VkQueryControlFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkCmdBeginQuery, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkQueryControlFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryControlFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryControlFlags.txt b/doc/specs/vulkan/man/VkQueryControlFlags.txt index 48450e6517..7095636611 100644 --- a/doc/specs/vulkan/man/VkQueryControlFlags.txt +++ b/doc/specs/vulkan/man/VkQueryControlFlags.txt @@ -1,31 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryControlFlags(3) ====================== Name ---- -VkQueryControlFlags - Query control flags. +VkQueryControlFlags - Bitmask of VkQueryControlFlagBits C Specification --------------- include::../flags/VkQueryControlFlags.txt[] -Constants ---------- - -VK_QUERY_CONTROL_PRECISE_BIT:: - When this flag is used the query must collect precise results. Without this flag - the actual result of occlusion queries may be less than the result of the same query - when using this flag. Description ----------- -These flags are used to control the behavior of queries started with the flink:vkCmdBeginQuery command. +etext:VkQueryControlFlags is a mask of zero or more elink:VkQueryControlFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + See Also -------- -flink:vkCmdBeginQuery +slink:VkCommandBufferInheritanceInfo, elink:VkQueryControlFlagBits, flink:vkCmdBeginQuery + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryControlFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryPipelineStatisticFlagBits.txt b/doc/specs/vulkan/man/VkQueryPipelineStatisticFlagBits.txt index 9cbd3b734e..c3bc6c6ece 100644 --- a/doc/specs/vulkan/man/VkQueryPipelineStatisticFlagBits.txt +++ b/doc/specs/vulkan/man/VkQueryPipelineStatisticFlagBits.txt @@ -1,26 +1,135 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryPipelineStatisticFlagBits(3) =================================== Name ---- -VkQueryPipelineStatisticFlagBits - Stub page (not yet written) +VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline statistics C Specification --------------- -include::../enums/VkQueryPipelineStatisticFlagBits.txt[] +// refBegin VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline statistics -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Bits which can: be set in pname:pipelineStatistics include: + +include::../enums/VkQueryPipelineStatisticFlagBits.txt[] -Constants ---------- Description ----------- +These bits have the following meanings: + + * If ename:VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT is set, + queries managed by the pool will count the number of vertices processed + by the <> stage. Vertices corresponding to + incomplete primitives may: contribute to the count. + * If ename:VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT is + set, queries managed by the pool will count the number of primitives + processed by the <> stage. If primitive restart + is enabled, restarting the primitive topology has no effect on the + count. Incomplete primitives may: be counted. + * If ename:VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT is + set, queries managed by the pool will count the number of vertex shader + invocations. This counter's value is incremented each time a vertex + shader is <>. + * 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 the case + of <>, the geometry + shader invocations count is incremented for each separate instanced + invocation. + * If ename:VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT is + set, queries managed by the pool will count the number of primitives + generated by geometry shader invocations. The counter's value is + incremented each time the geometry shader emits a primitive. Restarting + primitive topology using the SPIR-V instructions code:OpEndPrimitive or + code:OpEndStreamPrimitive has no effect on the geometry shader output + primitives count. + * If ename:VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT is set, + queries managed by the pool will count the number of primitives + processed by the <> stage of + the pipeline. The counter's value is incremented each time a primitive + reaches the primitive clipping stage. + * If ename:VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT is set, + queries managed by the pool will count the number of primitives output + by the <> stage of the + pipeline. The counter's value is incremented each time a primitive + passes the primitive clipping stage. The actual number of primitives + output by the primitive clipping stage for a particular input primitive + is implementation-dependent but must: satisfy the following conditions: + ** If at least one vertex of the input primitive lies inside the clipping + volume, the counter is incremented by one or more. + ** Otherwise, the counter is incremented by zero or more. + * If ename:VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT is + set, queries managed by the pool will count the number of fragment + shader invocations. The counter's value is incremented each time the + fragment shader is <>. + * If + ename:VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT + is set, queries managed by the pool will count the number of patches + processed by the tessellation control shader. The counter's value is + incremented once for each patch for which a tessellation control shader + is <>. + * If + ename:VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT + is set, queries managed by the pool will count the number of invocations + of the tessellation evaluation shader. The counter's value is + incremented each time the tessellation evaluation shader is + <>. + * If ename:VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT is + set, queries managed by the pool will count the number of compute shader + invocations. The counter's value is incremented every time the compute + shader is invoked. Implementations may: skip the execution of certain + compute shader invocations or execute additional compute shader + invocations for implementation-dependent reasons as long as the results + of rendering otherwise remain unchanged. + +These values are intended to measure relative statistics on one +implementation. Various device architectures will count these values +differently. Any or all counters may: be affected by the issues described in +<>. + +[NOTE] +.Note +==== +For example, tile-based rendering devices may: need to replay the scene +multiple times, affecting some of the counts. +==== + +If a pipeline has pname:rasterizerDiscardEnable enabled, implementations +may: discard primitives after the final vertex processing stage. As a +result, if pname:rasterizerDiscardEnable is enabled, the clipping input and +output primitives counters may: not be incremented. + +When a pipeline statistics query finishes, the result for that query is +marked as available. The application can: copy the result to a +buffer (via fname:vkCmdCopyQueryPoolResults), or request it be put into host +memory (via fname:vkGetQueryPoolResults). + +// refEnd VkQueryPipelineStatisticFlagBits + + See Also -------- +elink:VkQueryPipelineStatisticFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryPipelineStatisticFlagBits + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryPipelineStatisticFlags.txt b/doc/specs/vulkan/man/VkQueryPipelineStatisticFlags.txt index a5b1a66b3c..9162165362 100644 --- a/doc/specs/vulkan/man/VkQueryPipelineStatisticFlags.txt +++ b/doc/specs/vulkan/man/VkQueryPipelineStatisticFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryPipelineStatisticFlags(3) ================================ Name ---- -VkQueryPipelineStatisticFlags - Stub page (not yet written) +VkQueryPipelineStatisticFlags - Bitmask of VkQueryPipelineStatisticFlagBits C Specification --------------- include::../flags/VkQueryPipelineStatisticFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkQueryPipelineStatisticFlags is a mask of zero or more elink:VkQueryPipelineStatisticFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkCommandBufferInheritanceInfo, elink:VkQueryPipelineStatisticFlagBits, slink:VkQueryPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryPipelineStatisticFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryPool.txt b/doc/specs/vulkan/man/VkQueryPool.txt new file mode 100644 index 0000000000..8cd6d53c96 --- /dev/null +++ b/doc/specs/vulkan/man/VkQueryPool.txt @@ -0,0 +1,48 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkQueryPool(3) +============== + +Name +---- +VkQueryPool - Opaque handle to a query pool object + +C Specification +--------------- + +// refBegin VkQueryPool - Opaque handle to a query pool object + +Queries are managed using _query pool_ objects. Each query pool is a +collection of a specific number of queries of a particular type. + +Query pools are represented by sname:VkQueryPool handles: + +include::../handles/VkQueryPool.txt[] + + +Description +----------- + +// refEnd VkQueryPool + + +See Also +-------- + +flink:vkCmdBeginQuery, flink:vkCmdCopyQueryPoolResults, flink:vkCmdEndQuery, flink:vkCmdResetQueryPool, flink:vkCmdWriteTimestamp, flink:vkCreateQueryPool, flink:vkDestroyQueryPool, flink:vkGetQueryPoolResults + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryPoolCreateFlags.txt b/doc/specs/vulkan/man/VkQueryPoolCreateFlags.txt index 66a2656880..6fdf04e35f 100644 --- a/doc/specs/vulkan/man/VkQueryPoolCreateFlags.txt +++ b/doc/specs/vulkan/man/VkQueryPoolCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryPoolCreateFlags(3) ========================= Name ---- -VkQueryPoolCreateFlags - Stub page (not yet written) +VkQueryPoolCreateFlags - Bitmask of VkQueryPoolCreateFlagBits C Specification --------------- include::../flags/VkQueryPoolCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkQueryPoolCreateFlags is a mask of zero or more elink:VkQueryPoolCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkQueryPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryPoolCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryPoolCreateInfo.txt b/doc/specs/vulkan/man/VkQueryPoolCreateInfo.txt index 1dadffd0c2..5108bd30c6 100644 --- a/doc/specs/vulkan/man/VkQueryPoolCreateInfo.txt +++ b/doc/specs/vulkan/man/VkQueryPoolCreateInfo.txt @@ -1,27 +1,65 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryPoolCreateInfo(3) ======================== Name ---- -VkQueryPoolCreateInfo - Stub page (not yet written) +VkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool C Specification --------------- +// refBegin VkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool + +The sname:VkQueryPoolCreateInfo structure is defined as: + include::../structs/VkQueryPoolCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:queryType is the type of queries managed by the pool, + and must: be one of the values ++ +-- +// refBegin VkQueryType - specify the type of queries managed by a query pool +include::../enums/VkQueryType.txt[] +-- + * pname:queryCount is the number of queries managed by the pool. + * pname:pipelineStatistics is a bitmask indicating which counters will + be returned in queries on the new pool, as described below in + <>. pname:pipelineStatistics is ignored if + pname:queryType is not ename:VK_QUERY_TYPE_PIPELINE_STATISTICS. + Description ----------- include::../validity/structs/VkQueryPoolCreateInfo.txt[] + + See Also -------- +elink:VkQueryPipelineStatisticFlags, elink:VkQueryPoolCreateFlags, elink:VkQueryType, elink:VkStructureType, flink:vkCreateQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryPoolCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryResultFlagBits.txt b/doc/specs/vulkan/man/VkQueryResultFlagBits.txt index 6be0a4c6b8..bfbf8068f7 100644 --- a/doc/specs/vulkan/man/VkQueryResultFlagBits.txt +++ b/doc/specs/vulkan/man/VkQueryResultFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryResultFlagBits(3) ======================== Name ---- -VkQueryResultFlagBits - Stub page (not yet written) +VkQueryResultFlagBits - Bitmask specifying how and when query results are returned C Specification --------------- +// refBegin VkQueryResultFlagBits - Bitmask specifying how and when query results are returned include::../enums/VkQueryResultFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkGetQueryPoolResults, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkQueryResultFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryResultFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryResultFlags.txt b/doc/specs/vulkan/man/VkQueryResultFlags.txt index 1ffc847539..a8d2bb7267 100644 --- a/doc/specs/vulkan/man/VkQueryResultFlags.txt +++ b/doc/specs/vulkan/man/VkQueryResultFlags.txt @@ -1,52 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryResultFlags(3) ===================== Name ---- -VkQueryResultFlags - Query result flags. +VkQueryResultFlags - Bitmask of VkQueryResultFlagBits C Specification --------------- include::../flags/VkQueryResultFlags.txt[] -Constants ---------- -VK_QUERY_RESULT_32_BIT:: - When this flag is used the results of the queries are written to the destination buffer as one or more - 32-bit values. +Description +----------- -VK_QUERY_RESULT_64_BIT:: - When this flag is used the results of the queries are written to the destination buffer as one or more - 64-bit values. +etext:VkQueryResultFlags is a mask of zero or more elink:VkQueryResultFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. -VK_QUERY_RESULT_NO_WAIT_BIT:: - When this flag is used the results of the queries aren't waited on before proceeding with the result copy. -VK_QUERY_RESULT_WAIT_BIT:: - When this flag is used the results of the queries are waited on before proceeding with the result copy. +See Also +-------- -VK_QUERY_RESULT_WITH_AVAILABILITY_BIT:: - When this flag is used the availability of the results is also written to the destination buffer as a - separate value after the actual results. If the results of the query were available at the time of the - result copy the integer value 1 is written, otherwise the integer value 0 is written to the destination buffer. +elink:VkQueryResultFlagBits, flink:vkCmdCopyQueryPoolResults, flink:vkGetQueryPoolResults -VK_QUERY_RESULT_PARTIAL_BIT:: - When this flag is used the partial results of the queries are written to the destination buffer even if the - final results aren't available. If this flag isn't used then the locations in the destination buffer - corresponding to result values of queries whose result isn't available at the time of the result copy will - be left untouched. -Description ------------ +Document Notes +-------------- -These flags are used to control the behavior of the query result copy commands flink:vkGetQueryPoolResults and -flink:vkCmdCopyQueryPoolResults. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryResultFlags -flink:vkGetQueryPoolResults, flink:vkCmdCopyQueryPoolResults +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueryType.txt b/doc/specs/vulkan/man/VkQueryType.txt index 86f4f347cc..91d0689412 100644 --- a/doc/specs/vulkan/man/VkQueryType.txt +++ b/doc/specs/vulkan/man/VkQueryType.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueryType(3) ============== Name ---- -VkQueryType - Stub page (not yet written) +VkQueryType - specify the type of queries managed by a query pool C Specification --------------- +// refBegin VkQueryType - specify the type of queries managed by a query pool include::../enums/VkQueryType.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkQueryPoolCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkQueryPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueryType + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueue.txt b/doc/specs/vulkan/man/VkQueue.txt new file mode 100644 index 0000000000..99c40758e5 --- /dev/null +++ b/doc/specs/vulkan/man/VkQueue.txt @@ -0,0 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkQueue(3) +========== + +Name +---- +VkQueue - Opaque handle to a queue object + +C Specification +--------------- + +// refBegin VkQueue - Opaque handle to a queue object + +Creating a logical device also creates the queues associated with that +device. The queues to create are described by a set of +slink:VkDeviceQueueCreateInfo structures that are passed to +flink:vkCreateDevice in pname:pQueueCreateInfos. + +Queues are represented by sname:VkQueue handles: + +include::../handles/VkQueue.txt[] + + +Description +----------- + +// refEnd VkQueue + + +See Also +-------- + +flink:vkGetDeviceQueue, flink:vkQueueBindSparse, flink:vkQueueSubmit, flink:vkQueueWaitIdle + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueue + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueueFamilyProperties.txt b/doc/specs/vulkan/man/VkQueueFamilyProperties.txt index 620fd6255d..73b503a064 100644 --- a/doc/specs/vulkan/man/VkQueueFamilyProperties.txt +++ b/doc/specs/vulkan/man/VkQueueFamilyProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueueFamilyProperties(3) ========================== @@ -8,31 +12,136 @@ VkQueueFamilyProperties - Structure providing information about a queue family. C Specification --------------- +// refBegin VkQueueFamilyProperties Structure providing information about a queue family. + +The sname:VkQueueFamilyProperties structure is defined as: + include::../structs/VkQueueFamilyProperties.txt[] -Fields ------- -queueFlags:: - Capabilities of the queues in this queue family (see elink:VkQueueFlags for more detail). +Members +------- -queueCount:: - Number of queues in this queue family. + * pname:queueFlags contains flags indicating the capabilities of the + queues in this queue family. + * pname:queueCount is the unsigned integer count of queues in this + queue family. + * pname:timestampValidBits is the unsigned integer count of meaningful + bits in the timestamps written via fname:vkCmdWriteTimestamp. The valid + range for the count is 36..64 bits, or a value of 0, indicating no + support for timestamps. Bits outside the valid range are guaranteed to + be zeros. + * pname:minImageTransferGranularity is the minimum granularity + supported for image transfer operations on the queues in this queue + family. -supportsTimestamps:: - Tells whether queues in this queue family support timestamps. Description ----------- -The properties of queue families available in this structure can be retrieved using -flink:vkGetPhysicalDeviceQueueFamilyProperties. +The bits specified in pname:queueFlags are: + +// refBegin VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family +include::../enums/VkQueueFlagBits.txt[] + + * if ename:VK_QUEUE_GRAPHICS_BIT is set, then the queues in this queue + family support graphics operations. + * if ename:VK_QUEUE_COMPUTE_BIT is set, then the queues in this queue + family support compute operations. + * if ename:VK_QUEUE_TRANSFER_BIT is set, then the queues in this queue + family support transfer operations. + * if ename:VK_QUEUE_SPARSE_BINDING_BIT is set, then the queues in this + queue family support sparse memory management operations (see + <>). If any of the sparse resource + features are enabled, then at least one queue family must: support this + bit. + +If an implementation exposes any queue family that supports graphics +operations, at least one queue family of at least one physical device +exposed by the implementation must: support both graphics and compute +operations. + +[NOTE] +.Note +==== +All commands that are allowed on a queue that supports transfer operations +are also allowed on a queue that supports either graphics or compute +operations thus if the capabilities of a queue family include +ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT then +reporting the ename:VK_QUEUE_TRANSFER_BIT capability separately for that +queue family is optional:. +==== + +For further details see <>. + +The value returned in pname:minImageTransferGranularity has a unit of +compressed texel blocks for images having a block-compressed format, and a +unit of texels otherwise. + +Possible values of pname:minImageTransferGranularity are: + + * latexmath:[$(0,0,0)$] which indicates that only whole mip levels must: + be transferred using the image transfer operations on the corresponding + queues. In this case, the following restrictions apply to all offset and + extent parameters of image transfer operations: + + ** The pname:x, pname:y, and pname:z members of a slink:VkOffset3D + parameter must: always be zero. + ** The pname:width, pname:height, and pname:depth members of a + slink:VkExtent3D parameter must: always match the width, height, and + depth of the image subresource corresponding to the parameter, + respectively. + + * latexmath:[$(Ax, Ay, Az)$] where latexmath:[$Ax$], latexmath:[$Ay$], + and latexmath:[$Az$] are all integer powers of two. In this case the + following restrictions apply to all image transfer operations: + + ** pname:x, pname:y, and pname:z of a slink:VkOffset3D parameter must: be + integer multiples of latexmath:[$Ax$], latexmath:[$Ay$], and + latexmath:[$Az$], respectively. + ** pname:width of a slink:VkExtent3D parameter must: be an integer + multiple of latexmath:[$Ax$], or else latexmath:[$(x + width)$] must: + equal the width of the image subresource corresponding to the + parameter. + ** pname:height of a slink:VkExtent3D parameter must: be an integer + multiple of latexmath:[$Ay$], or else latexmath:[$(y + height)$] must: + equal the height of the image subresource corresponding to the + parameter. + ** pname:depth of a slink:VkExtent3D parameter must: be an integer + multiple of latexmath:[$Az$], or else latexmath:[$(z + depth)$] must: + equal the depth of the image subresource corresponding to the + parameter. + ** If the format of the image corresponding to the parameters is one of + the block-compressed formats then for the purposes of the above + calculations the granularity must: be scaled up by the compressed + texel block dimensions. + +Queues supporting graphics and/or compute operations must: report +latexmath:[$(1,1,1)$] in pname:minImageTransferGranularity, meaning that +there are no additional restrictions on the granularity of image +transfer operations for these queues. Other queues supporting image +transfer operations are only required: to support whole mip level +transfers, thus pname:minImageTransferGranularity for +queues belonging to such queue families may: be latexmath:[$(0,0,0)$]. include::../validity/structs/VkQueueFamilyProperties.txt[] + See Also -------- -flink:vkGetPhysicalDeviceQueueFamilyProperties, elink:VkQueueFlags +slink:VkExtent3D, elink:VkQueueFlags, flink:vkGetPhysicalDeviceQueueFamilyProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueueFamilyProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueueFlagBits.txt b/doc/specs/vulkan/man/VkQueueFlagBits.txt index 6465e84254..2321ed5f7b 100644 --- a/doc/specs/vulkan/man/VkQueueFlagBits.txt +++ b/doc/specs/vulkan/man/VkQueueFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueueFlagBits(3) ================== Name ---- -VkQueueFlagBits - Stub page (not yet written) +VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family C Specification --------------- +// refBegin VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family include::../enums/VkQueueFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkQueueFamilyProperties, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkQueueFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueueFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkQueueFlags.txt b/doc/specs/vulkan/man/VkQueueFlags.txt index 96ed140f9d..fbf1c8b531 100644 --- a/doc/specs/vulkan/man/VkQueueFlags.txt +++ b/doc/specs/vulkan/man/VkQueueFlags.txt @@ -1,44 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkQueueFlags(3) =============== Name ---- -VkQueueFlags - Queue capability flags. +VkQueueFlags - Bitmask of VkQueueFlagBits C Specification --------------- include::../flags/VkQueueFlags.txt[] -Constants ---------- - -ename:VK_QUEUE_GRAPHICS_BIT:: - Queues which have this capability flag support graphics operations. - These operations include support using a graphics pipeline and issuing draw commands. - -ename:VK_QUEUE_COMPUTE_BIT:: - Queues which have this capability flag support compute operations. - These operations include support using a compute pipeline and issuing dispatch commands. - -ename:VK_QUEUE_TRANSFER_BIT:: - Queues which have this capability flag support transfer operations. - These operations include all of the copy commands. - -ename:VK_QUEUE_SPARSE_BINDING_BIT:: - Queues which have this capability flag support memory management operations. - These operations are affected by calling flink:vkQueueBindSparse. Description ----------- -These flags are returned in the slink:VkQueueFamilyProperties structure together with other -capabilities of a queue from a particular queue family as result of calling -flink:vkGetPhysicalDeviceQueueFamilyProperties. +etext:VkQueueFlags is a mask of zero or more elink:VkQueueFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + See Also -------- -slink:VkQueueFamilyProperties, flink:vkGetPhysicalDeviceQueueFamilyProperties +slink:VkQueueFamilyProperties, elink:VkQueueFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueueFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkRect2D.txt b/doc/specs/vulkan/man/VkRect2D.txt index f8af627178..8ab727b518 100644 --- a/doc/specs/vulkan/man/VkRect2D.txt +++ b/doc/specs/vulkan/man/VkRect2D.txt @@ -1,27 +1,52 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkRect2D(3) =========== Name ---- -VkRect2D - Stub page (not yet written) +VkRect2D - Structure specifying a two-dimensional subregion C Specification --------------- +// refBegin VkRect2D - Structure specifying a two-dimensional subregion + +Rectangles are used to describe a specified rectangular region of pixels +within an image or framebuffer. Rectangles include both an offset and an +extent of the same dimensionality, as described above. Two-dimensional +rectangles are defined by the structure + include::../structs/VkRect2D.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + Description ----------- include::../validity/structs/VkRect2D.txt[] + + See Also -------- +slink:VkClearRect, slink:VkExtent2D, slink:VkOffset2D, slink:VkPipelineViewportStateCreateInfo, slink:VkRenderPassBeginInfo, flink:vkCmdSetScissor + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkRect2D + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkRenderPass.txt b/doc/specs/vulkan/man/VkRenderPass.txt new file mode 100644 index 0000000000..124e82067a --- /dev/null +++ b/doc/specs/vulkan/man/VkRenderPass.txt @@ -0,0 +1,50 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkRenderPass(3) +=============== + +Name +---- +VkRenderPass - Opaque handle to a render pass object + +C Specification +--------------- + +// refBegin VkRenderPass - Opaque handle to a render pass object + +A _render pass_ represents a collection of attachments, subpasses, and +dependencies between the subpasses, and describes how the attachments +are used over the course of the subpasses. The use of a render pass +in a command buffer is a _render pass instance_. + +Render passes are represented by sname:VkRenderPass handles: + +include::../handles/VkRenderPass.txt[] + + +Description +----------- + +// refEnd VkRenderPass + + +See Also +-------- + +slink:VkCommandBufferInheritanceInfo, slink:VkFramebufferCreateInfo, slink:VkGraphicsPipelineCreateInfo, slink:VkRenderPassBeginInfo, flink:vkCreateRenderPass, flink:vkDestroyRenderPass, flink:vkGetRenderAreaGranularity + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkRenderPass + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkRenderPassBeginInfo.txt b/doc/specs/vulkan/man/VkRenderPassBeginInfo.txt index b5b298fa11..3087f28644 100644 --- a/doc/specs/vulkan/man/VkRenderPassBeginInfo.txt +++ b/doc/specs/vulkan/man/VkRenderPassBeginInfo.txt @@ -1,27 +1,81 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkRenderPassBeginInfo(3) ======================== Name ---- -VkRenderPassBeginInfo - Stub page (not yet written) +VkRenderPassBeginInfo - Structure specifying render pass begin info C Specification --------------- +// refBegin VkRenderPassBeginInfo - Structure specifying render pass begin info + +The sname:VkRenderPassBeginInfo structure is defined as: + include::../structs/VkRenderPassBeginInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:renderPass is the render pass to begin an instance of. + * pname:framebuffer is the framebuffer containing the attachments that are + used with the render pass. + * pname:renderArea is the render area that is affected by the render pass + instance, and is described in more detail below. + * pname:clearValueCount is the number of elements in pname:pClearValues. + * pname:pClearValues is an array of slink:VkClearValue structures that + contains clear values for each attachment, if the attachment uses a + pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is + indexed by attachment number. Only elements corresponding to cleared + attachments are used. Other elements of pname:pClearValues are ignored. + Description ----------- +pname:renderArea is the render area that is affected by the render pass +instance. The effects of attachment load, store and resolve operations are +restricted to the pixels whose x and y coordinates fall within the render +area on all attachments. The render area extends to all layers of +pname:framebuffer. The application must: ensure (using scissor if necessary) +that all rendering is contained within the render area, otherwise the pixels +outside of the render area become undefined and shader side effects may: +occur for fragments outside the render area. The render area must: be +contained within the framebuffer dimensions. + +[NOTE] +.Note +==== +There may: be a performance cost for using a render area smaller than the +framebuffer, unless it matches the render area granularity for the render +pass. +==== + include::../validity/structs/VkRenderPassBeginInfo.txt[] + + See Also -------- +slink:VkClearValue, slink:VkFramebuffer, slink:VkRect2D, slink:VkRenderPass, elink:VkStructureType, flink:vkCmdBeginRenderPass + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkRenderPassBeginInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkRenderPassCreateFlags.txt b/doc/specs/vulkan/man/VkRenderPassCreateFlags.txt index dc1e812a76..98a0cbeef1 100644 --- a/doc/specs/vulkan/man/VkRenderPassCreateFlags.txt +++ b/doc/specs/vulkan/man/VkRenderPassCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkRenderPassCreateFlags(3) ========================== Name ---- -VkRenderPassCreateFlags - Stub page (not yet written) +VkRenderPassCreateFlags - Bitmask of VkRenderPassCreateFlagBits C Specification --------------- include::../flags/VkRenderPassCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkRenderPassCreateFlags is a mask of zero or more elink:VkRenderPassCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkRenderPassCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkRenderPassCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkRenderPassCreateInfo.txt b/doc/specs/vulkan/man/VkRenderPassCreateInfo.txt index 15347d2773..3922b7ba75 100644 --- a/doc/specs/vulkan/man/VkRenderPassCreateInfo.txt +++ b/doc/specs/vulkan/man/VkRenderPassCreateInfo.txt @@ -1,27 +1,70 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkRenderPassCreateInfo(3) ========================= Name ---- -VkRenderPassCreateInfo - Stub page (not yet written) +VkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass C Specification --------------- +// refBegin VkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass + +The sname:VkRenderPassCreateInfo structure is defined as: + include::../structs/VkRenderPassCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:attachmentCount is the number of attachments used by this + render pass, or zero indicating no attachments. Attachments are referred + to by zero-based indices in the range [0,pname:attachmentCount). + * pname:pAttachments points to an array of pname:attachmentCount number of + slink:VkAttachmentDescription structures describing properties of the + attachments, or `NULL` if pname:attachmentCount is zero. + * pname:subpassCount is the number of subpasses to create for this render + pass. Subpasses are referred to by zero-based indices in the range + [0,pname:subpassCount). A render pass must: have at least one subpass. + * pname:pSubpasses points to an array of pname:subpassCount number of + slink:VkSubpassDescription structures describing properties of the + subpasses. + * pname:dependencyCount is the number of dependencies between pairs of + subpasses, or zero indicating no dependencies. + * pname:pDependencies points to an array of pname:dependencyCount number + of slink:VkSubpassDependency structures describing dependencies + between pairs of subpasses, or `NULL` if pname:dependencyCount is zero. + Description ----------- include::../validity/structs/VkRenderPassCreateInfo.txt[] + + See Also -------- +slink:VkAttachmentDescription, elink:VkRenderPassCreateFlags, elink:VkStructureType, slink:VkSubpassDependency, slink:VkSubpassDescription, flink:vkCreateRenderPass + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkRenderPassCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkResult.txt b/doc/specs/vulkan/man/VkResult.txt index 146cef9de0..703e59b13d 100644 --- a/doc/specs/vulkan/man/VkResult.txt +++ b/doc/specs/vulkan/man/VkResult.txt @@ -1,26 +1,113 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkResult(3) =========== Name ---- -VkResult - Stub page (not yet written) +VkResult - Vulkan command return codes C Specification --------------- -include::../enums/VkResult.txt[] +// refBegin VkResult Vulkan command return codes + +While the core Vulkan API is not designed to capture incorrect usage, +some circumstances still require return codes. Commands in Vulkan return +their status via return codes that are in one of two categories: + + * Successful completion codes are returned when a command needs to + communicate success or status information. All successful completion + codes are non-negative values. + * Run time error codes are returned when a command needs to communicate a + failure that could only be detected at run time. All run time error + codes are negative values. + +All return codes in Vulkan are reported via basetype:VkResult return +values. The possible codes are: -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +include::../enums/VkResult.txt[] -Constants ---------- Description ----------- +[[fundamentals-successcodes]] +.Success codes +* ename:VK_SUCCESS + Command successfully completed +* ename:VK_NOT_READY + A fence or query has not yet completed +* ename:VK_TIMEOUT + A wait operation has not completed in the specified time +* ename:VK_EVENT_SET + An event is signaled +* ename:VK_EVENT_RESET + An event is unsignaled +* ename:VK_INCOMPLETE + A return array was too small for the result + +[[fundamentals-errorcodes]] +.Error codes +* ename:VK_ERROR_OUT_OF_HOST_MEMORY + A host memory allocation has failed. +* ename:VK_ERROR_OUT_OF_DEVICE_MEMORY + A device memory allocation has failed. +* ename:VK_ERROR_INITIALIZATION_FAILED + Initialization of an object could not be completed for + implementation-specific reasons. +* ename:VK_ERROR_DEVICE_LOST + The logical or physical device has been lost. See + <> +* ename:VK_ERROR_MEMORY_MAP_FAILED + Mapping of a memory object has failed. +* ename:VK_ERROR_LAYER_NOT_PRESENT + A requested layer is not present or could not be loaded. +* ename:VK_ERROR_EXTENSION_NOT_PRESENT + A requested extension is not supported. +* ename:VK_ERROR_FEATURE_NOT_PRESENT + A requested feature is not supported. +* ename:VK_ERROR_INCOMPATIBLE_DRIVER + The requested version of Vulkan is not supported by the driver or + is otherwise incompatible for implementation-specific reasons. +* ename:VK_ERROR_TOO_MANY_OBJECTS + Too many objects of the type have already been created. +* ename:VK_ERROR_FORMAT_NOT_SUPPORTED + A requested format is not supported on this device. + +If a command returns a run time error, it will leave any result pointers +unmodified, unless other behavior is explicitly defined in the specification. + +Out of memory errors do not damage any currently existing Vulkan objects. +Objects that have already been successfully created can: still be used by +the application. + +Performance-critical commands generally do not have return codes. If a run +time error occurs in such commands, the implementation will defer reporting +the error until a specified point. For commands that record into +command buffers (ftext:vkCmd*) run time errors are reported by +fname:vkEndCommandBuffer. + +// refEnd VkResult TBD + + See Also -------- +No cross-references are available + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkResult + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSampleCountFlagBits.txt b/doc/specs/vulkan/man/VkSampleCountFlagBits.txt index 9712e635dd..35150a6da5 100644 --- a/doc/specs/vulkan/man/VkSampleCountFlagBits.txt +++ b/doc/specs/vulkan/man/VkSampleCountFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSampleCountFlagBits(3) ======================== Name ---- -VkSampleCountFlagBits - Stub page (not yet written) +VkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operations C Specification --------------- +// refBegin VkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operations include::../enums/VkSampleCountFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkPhysicalDeviceLimits, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkAttachmentDescription, slink:VkImageCreateInfo, slink:VkPipelineMultisampleStateCreateInfo, elink:VkSampleCountFlags, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSampleCountFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSampleCountFlags.txt b/doc/specs/vulkan/man/VkSampleCountFlags.txt index e1547f0303..fa6bfb7cad 100644 --- a/doc/specs/vulkan/man/VkSampleCountFlags.txt +++ b/doc/specs/vulkan/man/VkSampleCountFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSampleCountFlags(3) ===================== Name ---- -VkSampleCountFlags - Stub page (not yet written) +VkSampleCountFlags - Bitmask of VkSampleCountFlagBits C Specification --------------- include::../flags/VkSampleCountFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSampleCountFlags is a mask of zero or more elink:VkSampleCountFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkImageFormatProperties, slink:VkPhysicalDeviceLimits, elink:VkSampleCountFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSampleCountFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSampleMask.txt b/doc/specs/vulkan/man/VkSampleMask.txt new file mode 100644 index 0000000000..66f6eb4c7f --- /dev/null +++ b/doc/specs/vulkan/man/VkSampleMask.txt @@ -0,0 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkSampleMask(3) +=============== + +Name +---- +VkSampleMask - Mask of sample coverage information + +C Specification +--------------- + +// refBegin VkSampleMask - Mask of sample coverage information + +The elements of the sample mask array are of type basetype:VkSampleMask, +each representing 32 bits of coverage information: + +include::../basetypes/VkSampleMask.txt[] + + +Description +----------- + +// refEnd VkSampleMask VkPipelineMultisampleStateCreateInfo + + +See Also +-------- + +slink:VkPipelineMultisampleStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSampleMask + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSampler.txt b/doc/specs/vulkan/man/VkSampler.txt new file mode 100644 index 0000000000..8b69ee25e2 --- /dev/null +++ b/doc/specs/vulkan/man/VkSampler.txt @@ -0,0 +1,49 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkSampler(3) +============ + +Name +---- +VkSampler - Opaque handle to a sampler object + +C Specification +--------------- + +// refBegin VkSampler - Opaque handle to a sampler object + +sname:VkSampler objects represent the state of an image sampler which is +used by the implementation to read image data and apply filtering and other +transformations for the shader. + +Samplers are represented by sname:VkSampler handles: + +include::../handles/VkSampler.txt[] + + +Description +----------- + +// refEnd VkSampler + + +See Also +-------- + +slink:VkDescriptorImageInfo, slink:VkDescriptorSetLayoutBinding, flink:vkCreateSampler, flink:vkDestroySampler + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSampler + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSamplerAddressMode.txt b/doc/specs/vulkan/man/VkSamplerAddressMode.txt index daf13b837e..3cf292ac0d 100644 --- a/doc/specs/vulkan/man/VkSamplerAddressMode.txt +++ b/doc/specs/vulkan/man/VkSamplerAddressMode.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSamplerAddressMode(3) ======================= Name ---- -VkSamplerAddressMode - Stub page (not yet written) +VkSamplerAddressMode - specify behavior of sampling with texture coordinates outside an image C Specification --------------- +// refBegin VkSamplerAddressMode - specify behavior of sampling with texture coordinates outside an image include::../enums/VkSamplerAddressMode.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSamplerCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkSamplerCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSamplerAddressMode + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSamplerCreateFlags.txt b/doc/specs/vulkan/man/VkSamplerCreateFlags.txt index 5ed4ca8c7e..ed91f9d831 100644 --- a/doc/specs/vulkan/man/VkSamplerCreateFlags.txt +++ b/doc/specs/vulkan/man/VkSamplerCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSamplerCreateFlags(3) ======================= Name ---- -VkSamplerCreateFlags - Stub page (not yet written) +VkSamplerCreateFlags - Bitmask of VkSamplerCreateFlagBits C Specification --------------- include::../flags/VkSamplerCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSamplerCreateFlags is a mask of zero or more elink:VkSamplerCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkSamplerCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSamplerCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSamplerCreateInfo.txt b/doc/specs/vulkan/man/VkSamplerCreateInfo.txt index 81fe3951c0..620dc9a8e4 100644 --- a/doc/specs/vulkan/man/VkSamplerCreateInfo.txt +++ b/doc/specs/vulkan/man/VkSamplerCreateInfo.txt @@ -1,27 +1,194 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSamplerCreateInfo(3) ====================== Name ---- -VkSamplerCreateInfo - Stub page (not yet written) +VkSamplerCreateInfo - Structure specifying parameters of a newly created sampler C Specification --------------- +// refBegin VkSamplerCreateInfo - Structure specifying parameters of a newly created sampler + +The sname:VkSamplerCreateInfo structure is defined as: + include::../structs/VkSamplerCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:magFilter is the magnification filter to apply to lookups, and + is of type: ++ +-- +// refBegin VkFilter - specify filters used for texture lookups +include::../enums/VkFilter.txt[] +-- ++ + * pname:minFilter is the minification filter to apply to lookups, and is + of type elink:VkFilter. + * pname:mipmapMode is the mipmap filter to apply to lookups as described + in the <> section, and is of + type: ++ +-- +// refBegin VkSamplerMipmapMode - specify mipmap mode used for texture lookups +include::../enums/VkSamplerMipmapMode.txt[] +-- ++ + * pname:addressModeU is the addressing mode for outside [0..1] range for U + coordinate. See elink:VkSamplerAddressMode. + * pname:addressModeV is the addressing mode for outside [0..1] range for V + coordinate. See elink:VkSamplerAddressMode. + * pname:addressModeW is the addressing mode for outside [0..1] range for W + coordinate. See elink:VkSamplerAddressMode. + * [[samplers-mipLodBias]] pname:mipLodBias is the bias to be added to + mipmap LOD calculation and bias provided by image sampling functions in + SPIR-V, as described in the <> section. + * [[samplers-maxAnisotropy]] pname:anisotropyEnable is ename:VK_TRUE to + enable anisotropic filtering, as described in the + <> + section, or ename:VK_FALSE otherwise. + * pname:maxAnisotropy is the anisotropy value clamp. + * pname:compareEnable is ename:VK_TRUE to enable comparison against a + reference value during lookups, or ename:VK_FALSE otherwise. + ** Note: Some implementations will default to shader state if this member + does not match. + * pname:compareOp is the comparison function to apply to fetched data + before filtering as described in the <> section. See elink:VkCompareOp. + * pname:minLod and pname:maxLod are the values used to clamp the computed + level-of-detail value, as described in the + <> + section. pname:maxLod must: be greater than or equal to pname:minLod. + * pname:borderColor is the predefined border color to use, as described + in the <> + section, and is of type: ++ +-- +// refBegin VkBorderColor - specify border color used for texture lookups +include::../enums/VkBorderColor.txt[] +-- ++ + * [[samplers-unnormalizedCoordinates]] pname:unnormalizedCoordinates + controls whether to use unnormalized or normalized texel coordinates to + address texels of the image. When set to ename:VK_TRUE, the range of the + image coordinates used to lookup the texel is in the range of zero to + the image dimensions for x, y and z. When set to ename:VK_FALSE the + range of image coordinates is zero to one. When + pname:unnormalizedCoordinates is ename:VK_TRUE, samplers have the + following requirements: + ** pname:minFilter and pname:magFilter must: be equal. + ** pname:mipmapMode must: be ename:VK_SAMPLER_MIPMAP_MODE_NEAREST. + ** pname:minLod and pname:maxLod must: be zero. + ** pname:addressModeU and pname:addressModeV must: each + be either ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE or + ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER. + ** pname:anisotropyEnable must: be ename:VK_FALSE. + ** pname:compareEnable must: be ename:VK_FALSE. + * When pname:unnormalizedCoordinates is ename:VK_TRUE, images the sampler + is used with in the shader have the following requirements: + ** The pname:viewType must: be either ename:VK_IMAGE_VIEW_TYPE_1D or + ename:VK_IMAGE_VIEW_TYPE_2D. + ** The image view must: have a single layer and a single mip level. + * When pname:unnormalizedCoordinates is ename:VK_TRUE, image built-in + functions in the shader that use the sampler have the following + requirements: + ** The functions mustnot: use projection. + ** The functions mustnot: use offsets. + Description ----------- +[NOTE] +.Mapping of OpenGL to Vulkan filter modes +================== +pname:magFilter values of ename:VK_FILTER_NEAREST and ename:VK_FILTER_LINEAR +directly correspond to code:GL_NEAREST and code:GL_LINEAR magnification +filters. pname:minFilter and pname:mipmapMode combine to correspond to the +similarly named OpenGL minification filter of +code:GL_minFilter_MIPMAP_mipmapMode (e.g. pname:minFilter of +ename:VK_FILTER_LINEAR and pname:mipmapMode of +ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to +code:GL_LINEAR_MIPMAP_NEAREST). + +There are no Vulkan filter modes that directly correspond to OpenGL +minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be +emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and +pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or +pname:minFilter = ename:VK_FILTER_NEAREST, respectively. + +Note that using a pname:maxLod of zero would cause +<> to always be performed, and the +pname:magFilter to always be used. This is valid, just not an exact match +for OpenGL behavior. Clamping the maximum lod to 0.25 allows the +latexmath:[$\lambda$] value to be non-zero and minification to be performed, +while still always rounding down to the base level. If the pname:minFilter +and pname:magFilter are equal, then using a pname:maxLod of zero also works. +================== + +pname:addressModeU, pname:addressModeV, and pname:addressModeW must: each +have one of the following values: + +// refBegin VkSamplerAddressMode - specify behavior of sampling with texture coordinates outside an image +include::../enums/VkSamplerAddressMode.txt[] + +These values control the behavior of sampling with coordinates outside the +range latexmath:[$[0,1\]$] for the respective u, v, or w coordinate as defined in the +<> section. + + * ename:VK_SAMPLER_ADDRESS_MODE_REPEAT indicates that the repeat wrap mode + will be used. + * ename:VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT indicates that the + mirrored repeat wrap mode will be used. + * ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE indicates that the clamp to + edge wrap mode will be used. + * ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER indicates that the clamp + to border wrap mode will be used. + * ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE indicates that + the mirror clamp to edge wrap mode will be used. This is only valid + if the VK_KHR_mirror_clamp_to_edge extension is enabled. + +The maximum number of sampler objects which can: be simultaneously created +on a device is implementation-dependent and specified by the +<> +member of the sname:VkPhysicalDeviceLimits structure. If +pname:maxSamplerAllocationCount is exceeded, fname:vkCreateSampler will +return ename:VK_ERROR_TOO_MANY_OBJECTS. + +Since sname:VkSampler is a non-dispatchable handle type, implementations +may: return the same handle for sampler state vectors that are identical. In +such cases, all such objects would only count once against the +pname:maxSamplerAllocationCount limit. + include::../validity/structs/VkSamplerCreateInfo.txt[] + + See Also -------- +basetypes:VkBool32, elink:VkBorderColor, elink:VkCompareOp, elink:VkFilter, elink:VkSamplerAddressMode, elink:VkSamplerCreateFlags, elink:VkSamplerMipmapMode, elink:VkStructureType, flink:vkCreateSampler + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSamplerCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSamplerMipmapMode.txt b/doc/specs/vulkan/man/VkSamplerMipmapMode.txt index 2bbc539ae2..4242af6609 100644 --- a/doc/specs/vulkan/man/VkSamplerMipmapMode.txt +++ b/doc/specs/vulkan/man/VkSamplerMipmapMode.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSamplerMipmapMode(3) ====================== Name ---- -VkSamplerMipmapMode - Stub page (not yet written) +VkSamplerMipmapMode - specify mipmap mode used for texture lookups C Specification --------------- +// refBegin VkSamplerMipmapMode - specify mipmap mode used for texture lookups include::../enums/VkSamplerMipmapMode.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSamplerCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkSamplerCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSamplerMipmapMode + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSemaphore.txt b/doc/specs/vulkan/man/VkSemaphore.txt new file mode 100644 index 0000000000..26fda44521 --- /dev/null +++ b/doc/specs/vulkan/man/VkSemaphore.txt @@ -0,0 +1,49 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkSemaphore(3) +============== + +Name +---- +VkSemaphore - Opaque handle to a semaphore object + +C Specification +--------------- + +// refBegin VkSemaphore - Opaque handle to a semaphore object + +Semaphores are used to coordinate queue operations both within a queue and +between different queues. A semaphore's status is always either _signaled_ +or _unsignaled_. + +Semaphores are represented by sname:VkSemaphore handles: + +include::../handles/VkSemaphore.txt[] + + +Description +----------- + +// refEnd VkSemaphore + + +See Also +-------- + +slink:VkBindSparseInfo, slink:VkSubmitInfo, flink:vkCreateSemaphore, flink:vkDestroySemaphore + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSemaphore + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSemaphoreCreateFlags.txt b/doc/specs/vulkan/man/VkSemaphoreCreateFlags.txt index 9dca388789..b2bbaa201e 100644 --- a/doc/specs/vulkan/man/VkSemaphoreCreateFlags.txt +++ b/doc/specs/vulkan/man/VkSemaphoreCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSemaphoreCreateFlags(3) ========================= Name ---- -VkSemaphoreCreateFlags - Stub page (not yet written) +VkSemaphoreCreateFlags - Bitmask of VkSemaphoreCreateFlagBits C Specification --------------- include::../flags/VkSemaphoreCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSemaphoreCreateFlags is a mask of zero or more elink:VkSemaphoreCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkSemaphoreCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSemaphoreCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSemaphoreCreateInfo.txt b/doc/specs/vulkan/man/VkSemaphoreCreateInfo.txt index 9d02379b36..90b59717fa 100644 --- a/doc/specs/vulkan/man/VkSemaphoreCreateInfo.txt +++ b/doc/specs/vulkan/man/VkSemaphoreCreateInfo.txt @@ -1,27 +1,53 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSemaphoreCreateInfo(3) ======================== Name ---- -VkSemaphoreCreateInfo - Stub page (not yet written) +VkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphore C Specification --------------- +// refBegin VkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphore + +The sname:VkSemaphoreCreateInfo structure is defined as: + include::../structs/VkSemaphoreCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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. + Description ----------- include::../validity/structs/VkSemaphoreCreateInfo.txt[] + + See Also -------- +elink:VkSemaphoreCreateFlags, elink:VkStructureType, flink:vkCreateSemaphore + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSemaphoreCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkShaderModule.txt b/doc/specs/vulkan/man/VkShaderModule.txt new file mode 100644 index 0000000000..5f317c6b4b --- /dev/null +++ b/doc/specs/vulkan/man/VkShaderModule.txt @@ -0,0 +1,52 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +VkShaderModule(3) +================= + +Name +---- +VkShaderModule - Opaque handle to a shader module object + +C Specification +--------------- + +// refBegin VkShaderModule - Opaque handle to a shader module object + +_Shader modules_ contain _shader code_ and one or more entry points. Shaders +are selected from a shader module by specifying an entry point as part of +<> creation. The stages of a pipeline can: use shaders +that come from different modules. The shader code defining a shader module +must: be in the SPIR-V format, as described by the <> appendix. + +Shader modules are represented by sname:VkShaderModule handles: + +include::../handles/VkShaderModule.txt[] + + +Description +----------- + +// refEnd VkShaderModule + + +See Also +-------- + +slink:VkPipelineShaderStageCreateInfo, flink:vkCreateShaderModule, flink:vkDestroyShaderModule + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkShaderModule + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkShaderModuleCreateFlags.txt b/doc/specs/vulkan/man/VkShaderModuleCreateFlags.txt index 7b1c5f0044..906c363071 100644 --- a/doc/specs/vulkan/man/VkShaderModuleCreateFlags.txt +++ b/doc/specs/vulkan/man/VkShaderModuleCreateFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkShaderModuleCreateFlags(3) ============================ Name ---- -VkShaderModuleCreateFlags - Stub page (not yet written) +VkShaderModuleCreateFlags - Bitmask of VkShaderModuleCreateFlagBits C Specification --------------- include::../flags/VkShaderModuleCreateFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkShaderModuleCreateFlags is a mask of zero or more elink:VkShaderModuleCreateFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkShaderModuleCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkShaderModuleCreateFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkShaderModuleCreateInfo.txt b/doc/specs/vulkan/man/VkShaderModuleCreateInfo.txt index 563e127377..cbb0c70e2c 100644 --- a/doc/specs/vulkan/man/VkShaderModuleCreateInfo.txt +++ b/doc/specs/vulkan/man/VkShaderModuleCreateInfo.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkShaderModuleCreateInfo(3) =========================== Name ---- -VkShaderModuleCreateInfo - Stub page (not yet written) +VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module C Specification --------------- +// refBegin VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module + +The sname:VkShaderModuleCreateInfo structure is defined as: + include::../structs/VkShaderModuleCreateInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * 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:codeSize is the size, in bytes, of the code pointed to by + pname:pCode. + * pname:pCode points to code that is used to create the shader + module. The type and format of the code is determined from the content + of the memory addressed by pname:pCode. + Description ----------- include::../validity/structs/VkShaderModuleCreateInfo.txt[] + + See Also -------- +elink:VkShaderModuleCreateFlags, elink:VkStructureType, flink:vkCreateShaderModule + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkShaderModuleCreateInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkShaderStageFlagBits.txt b/doc/specs/vulkan/man/VkShaderStageFlagBits.txt index e8c95c2bd3..b2a80cd8f4 100644 --- a/doc/specs/vulkan/man/VkShaderStageFlagBits.txt +++ b/doc/specs/vulkan/man/VkShaderStageFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkShaderStageFlagBits(3) ======================== Name ---- -VkShaderStageFlagBits - Stub page (not yet written) +VkShaderStageFlagBits - Bitmask specifying a pipeline stage C Specification --------------- +// refBegin VkShaderStageFlagBits - Bitmask specifying a pipeline stage include::../enums/VkShaderStageFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkPipelineShaderStageCreateInfo, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkPipelineShaderStageCreateInfo, elink:VkShaderStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkShaderStageFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkShaderStageFlags.txt b/doc/specs/vulkan/man/VkShaderStageFlags.txt index 20d473f307..eac2710fcc 100644 --- a/doc/specs/vulkan/man/VkShaderStageFlags.txt +++ b/doc/specs/vulkan/man/VkShaderStageFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkShaderStageFlags(3) ===================== Name ---- -VkShaderStageFlags - Stub page (not yet written) +VkShaderStageFlags - Bitmask of VkShaderStageFlagBits C Specification --------------- include::../flags/VkShaderStageFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkShaderStageFlags is a mask of zero or more elink:VkShaderStageFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkDescriptorSetLayoutBinding, slink:VkPushConstantRange, elink:VkShaderStageFlagBits, flink:vkCmdPushConstants + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkShaderStageFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSharingMode.txt b/doc/specs/vulkan/man/VkSharingMode.txt index a1bbd04c09..fc038914c9 100644 --- a/doc/specs/vulkan/man/VkSharingMode.txt +++ b/doc/specs/vulkan/man/VkSharingMode.txt @@ -1,63 +1,105 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSharingMode(3) ================ Name ---- -VkSharingMode - Specifies the mode of resource sharing. +VkSharingMode - Buffer and image sharing modes C Specification --------------- -include::../enums/VkSharingMode.txt[] +// refBegin VkSharingMode - Buffer and image sharing modes -Constants ---------- +Buffer and image objects are created with a _sharing mode_ controlling how +they can: be accessed from queues. The supported sharing modes are: -ename:VK_SHARING_MODE_EXCLUSIVE:: - Objects created using this sharing mode can only be accessed by queues - of the same queue family at any given time. +include::../enums/VkSharingMode.txt[] -ename:VK_SHARING_MODE_CONCURRENT:: - Objects created using this sharing mode can be accessed by queues from - different queue families simultaneously. Description ----------- -The constants of this enumeration are used to specify the intended resource -sharing mode used by a buffer or image object. + * ename:VK_SHARING_MODE_EXCLUSIVE specifies that access to any range or + image subresource of the object will be exclusive to a single queue + family at a time. + * ename:VK_SHARING_MODE_CONCURRENT specifies that concurrent access to any + range or image subresource of the object from multiple queue families is + supported. + +[NOTE] +.Note +==== +ename:VK_SHARING_MODE_CONCURRENT may: result in lower performance access to +the buffer or image than ename:VK_SHARING_MODE_EXCLUSIVE. +==== + +Ranges of buffers and image subresources of image objects created using +ename:VK_SHARING_MODE_EXCLUSIVE must: only be accessed by queues in the same +queue family at any given time. In order for a different queue family to be +able to interpret the memory contents of a range or image subresource, the +application must: transfer exclusive ownership of the range or image +subresource between the source and destination queue families with the +following sequence of operations: + +1. Release exclusive ownership from the source queue family to the + destination queue family. +2. Use semaphores to ensure proper execution control for the ownership + transfer. +3. Acquire exclusive ownership for the destination queue family from the + source queue family. + +To release exclusive ownership of a range of a buffer or image subresource +of an image object, the application must: execute a buffer or image memory +barrier, respectively (see slink:VkBufferMemoryBarrier and +slink:VkImageMemoryBarrier) on a queue from the source queue family. The +pname:srcQueueFamilyIndex parameter of the barrier must: be set to the +source queue family index, and the pname:dstQueueFamilyIndex parameter to +the destination queue family index. + +To acquire exclusive ownership, the application must: execute the same +buffer or image memory barrier on a queue from the destination queue family. + +Upon creation, resources using ename:VK_SHARING_MODE_EXCLUSIVE are not owned +by any queue family. A buffer or image memory barrier is not required to +acquire ownership when no queue family owns the resource - it is implicitly +acquired upon first use within a queue. However, images still require a +<> from +ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED +before being used on the first queue. This layout transition can: either be +accomplished by an image memory barrier or by use in a render pass instance. + +Once a queue family has used a range or image subresource of an +ename:VK_SHARING_MODE_EXCLUSIVE resource, its contents are undefined to +other queue families unless ownership is transferred. The contents may: also +become undefined for other reasons, e.g. as a result of writes to an image +subresource that aliases the same memory. A queue family can: take ownership +of a range or image subresource without an ownership transfer in the same +way as for a resource that was just created, however doing so means any +contents written by other queue families or via incompatible aliases are +undefined. + +// refEnd VkSharingMode -Buffers and images created using ename:VK_SHARING_MODE_EXCLUSIVE can only -be accessed by queues of the same queue family at any given time. Before -being able to access the object using a queue from a different queue family -the application has to transfer exclusive ownership of the object between -the source and destination queue families. In order to do that the -application has to perform the following operations: -1. Release exclusive ownership from the source queue family to the destination queue family. - -2. Use semaphores to ensure proper execution control for the ownership transfer. +See Also +-------- -3. Acquire exclusive ownership for the destination queue family from the source queue family. +slink:VkBufferCreateInfo, slink:VkImageCreateInfo -To release exclusive ownership the application should execute an image -memory barrier (see slink:VkImageMemoryBarrier) on a queue from the source -queue family where it must set the ptext:srcQueueFamilyIndex parameter of -the barrier to the source queue family's index, and the -ptext:dstQueueFamilyIndex parameter of the barrier to the destination queue -family's index. -To acquire exclusive ownership the application should execute the same image -memory barrier on a queue from the destination queue family. +Document Notes +-------------- -Buffers and images created using ename:VK_SHARING_MODE_CONCURRENT can be -simultaneously accessed by queues from different queue families. Accesses of -buffers and images created using this sharing mode may have lower performance -characteristics. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSharingMode -slink:VkImageCreateInfo, slink:VkBufferCreateInfo +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseBufferMemoryBindInfo.txt b/doc/specs/vulkan/man/VkSparseBufferMemoryBindInfo.txt index dd4597396c..74a69bca78 100644 --- a/doc/specs/vulkan/man/VkSparseBufferMemoryBindInfo.txt +++ b/doc/specs/vulkan/man/VkSparseBufferMemoryBindInfo.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseBufferMemoryBindInfo(3) =============================== Name ---- -VkSparseBufferMemoryBindInfo - Stub page (not yet written) +VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operation C Specification --------------- +// refBegin VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operation + +Memory is bound to sname:VkBuffer objects created with the +ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag using the following +structure: + include::../structs/VkSparseBufferMemoryBindInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:buffer is the sname:VkBuffer object to be bound. + * pname:bindCount is the number of sname:VkSparseMemoryBind structures in + the pname:pBinds array. + * pname:pBinds is a pointer to array of sname:VkSparseMemoryBind + structures. + Description ----------- include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[] + + See Also -------- +slink:VkBindSparseInfo, slink:VkBuffer, slink:VkSparseMemoryBind + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseBufferMemoryBindInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageFormatFlagBits.txt b/doc/specs/vulkan/man/VkSparseImageFormatFlagBits.txt index 67565613a3..9510344f4c 100644 --- a/doc/specs/vulkan/man/VkSparseImageFormatFlagBits.txt +++ b/doc/specs/vulkan/man/VkSparseImageFormatFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageFormatFlagBits(3) ============================== Name ---- -VkSparseImageFormatFlagBits - Stub page (not yet written) +VkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resource C Specification --------------- +// refBegin VkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resource include::../enums/VkSparseImageFormatFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSparseImageFormatProperties, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkSparseImageFormatFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageFormatFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageFormatFlags.txt b/doc/specs/vulkan/man/VkSparseImageFormatFlags.txt index 2e2836ac89..ecfd0a9cc2 100644 --- a/doc/specs/vulkan/man/VkSparseImageFormatFlags.txt +++ b/doc/specs/vulkan/man/VkSparseImageFormatFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageFormatFlags(3) =========================== Name ---- -VkSparseImageFormatFlags - Stub page (not yet written) +VkSparseImageFormatFlags - Bitmask of VkSparseImageFormatFlagBits C Specification --------------- include::../flags/VkSparseImageFormatFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSparseImageFormatFlags is a mask of zero or more elink:VkSparseImageFormatFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkSparseImageFormatFlagBits, slink:VkSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageFormatFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageFormatProperties.txt b/doc/specs/vulkan/man/VkSparseImageFormatProperties.txt index e36dc52256..1ee24458a0 100644 --- a/doc/specs/vulkan/man/VkSparseImageFormatProperties.txt +++ b/doc/specs/vulkan/man/VkSparseImageFormatProperties.txt @@ -1,27 +1,70 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageFormatProperties(3) ================================ Name ---- -VkSparseImageFormatProperties - Stub page (not yet written) +VkSparseImageFormatProperties - Structure specifying sparse image format properties C Specification --------------- +// refBegin VkSparseImageFormatProperties - Structure specifying sparse image format properties + +The sname:VkSparseImageFormatProperties structure is defined as: + include::../structs/VkSparseImageFormatProperties.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:aspectMask is a bitmask of elink:VkImageAspectFlagBits specifying + which aspects of the image the properties apply to. + * pname:imageGranularity is the width, height, and depth of the + sparse image block in texels or compressed texel blocks. + * pname:flags is a bitmask specifying additional information about the + sparse resource. Bits which can: be set include: ++ +-- +// refBegin VkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resource +include::../enums/VkSparseImageFormatFlagBits.txt[] +-- + ** If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set, the image + uses a single mip tail region for all array layers. + ** If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set, the first + mip level whose dimensions are not integer multiples of the corresponding + dimensions of the sparse image block begins the mip tail region. + ** If ename:VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT is set, the + image uses non-standard sparse image block dimensions, and the + pname:imageGranularity values do not match the standard sparse image + block dimensions for the given pixel format. + Description ----------- include::../validity/structs/VkSparseImageFormatProperties.txt[] + + See Also -------- +slink:VkExtent3D, elink:VkImageAspectFlags, elink:VkSparseImageFormatFlags, slink:VkSparseImageMemoryRequirements, flink:vkGetPhysicalDeviceSparseImageFormatProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageFormatProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageMemoryBind.txt b/doc/specs/vulkan/man/VkSparseImageMemoryBind.txt index fe4a6d08aa..8657e4848d 100644 --- a/doc/specs/vulkan/man/VkSparseImageMemoryBind.txt +++ b/doc/specs/vulkan/man/VkSparseImageMemoryBind.txt @@ -1,27 +1,65 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageMemoryBind(3) ========================== Name ---- -VkSparseImageMemoryBind - Stub page (not yet written) +VkSparseImageMemoryBind - Structure specifying sparse image memory bind C Specification --------------- +// refBegin VkSparseImageMemoryBind - Structure specifying sparse image memory bind + +The sname:VkSparseImageMemoryBind structure is defined as: + include::../structs/VkSparseImageMemoryBind.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:subresource is the aspectMask and region of interest in the image. + * pname:offset are the coordinates of the first texel within the image + subresource to bind. + * pname:extent is the size in texels of the region within the image + subresource to bind. The extent must: be a multiple of the sparse image + block dimensions, except when binding sparse image blocks along the edge + of an image subresource it can: instead be such that any coordinate of + latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding + dimensions of the image subresource. + * pname:memory is the sname:VkDeviceMemory object that the sparse image + blocks of the image are bound to. If pname:memory is dlink:VK_NULL_HANDLE, + the sparse image blocks are unbound. + * pname:memoryOffset is an offset into sname:VkDeviceMemory object. If + pname:memory is dlink:VK_NULL_HANDLE, this value is ignored. + * pname:flags are sparse memory binding flags. + Description ----------- include::../validity/structs/VkSparseImageMemoryBind.txt[] + + See Also -------- +slink:VkDeviceMemory, basetypes:VkDeviceSize, slink:VkExtent3D, slink:VkImageSubresource, slink:VkOffset3D, slink:VkSparseImageMemoryBindInfo, elink:VkSparseMemoryBindFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageMemoryBind + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageMemoryBindInfo.txt b/doc/specs/vulkan/man/VkSparseImageMemoryBindInfo.txt index 88c3e1cd69..4f6f7c86b7 100644 --- a/doc/specs/vulkan/man/VkSparseImageMemoryBindInfo.txt +++ b/doc/specs/vulkan/man/VkSparseImageMemoryBindInfo.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageMemoryBindInfo(3) ============================== Name ---- -VkSparseImageMemoryBindInfo - Stub page (not yet written) +VkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info C Specification --------------- +// refBegin VkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info + +Memory can: be bound to sparse image blocks of sname:VkImage objects created +with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag using the following +structure: + include::../structs/VkSparseImageMemoryBindInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:image is the sname:VkImage object to be bound + * pname:bindCount is the number of sname:VkSparseImageMemoryBind + structures in pBinds array + * pname:pBinds is a pointer to array of sname:VkSparseImageMemoryBind + structures + Description ----------- include::../validity/structs/VkSparseImageMemoryBindInfo.txt[] + + See Also -------- +slink:VkBindSparseInfo, slink:VkImage, slink:VkSparseImageMemoryBind + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageMemoryBindInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageMemoryRequirements.txt b/doc/specs/vulkan/man/VkSparseImageMemoryRequirements.txt index 8567d89f94..a37692c55f 100644 --- a/doc/specs/vulkan/man/VkSparseImageMemoryRequirements.txt +++ b/doc/specs/vulkan/man/VkSparseImageMemoryRequirements.txt @@ -1,27 +1,87 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageMemoryRequirements(3) ================================== Name ---- -VkSparseImageMemoryRequirements - Stub page (not yet written) +VkSparseImageMemoryRequirements - Structure specifying sparse image memory requirements C Specification --------------- +// refBegin VkSparseImageMemoryRequirements - Structure specifying sparse image memory requirements + +The sname:VkSparseImageMemoryRequirements structure is defined as: + include::../structs/VkSparseImageMemoryRequirements.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:formatProperties.aspectMask is the set of aspects of the image + that this sparse memory requirement applies to. This will usually have a + single aspect specified. However, depth/stencil images may: have depth + and stencil data interleaved in the same sparse block, in which case + both ename:VK_IMAGE_ASPECT_DEPTH_BIT and + ename:VK_IMAGE_ASPECT_STENCIL_BIT would be present. + * pname:formatProperties.imageGranularity describes the dimensions of a + single bindable sparse image block in pixel units. For aspect + ename:VK_IMAGE_ASPECT_METADATA_BIT, all dimensions will be zero + pixels. All metadata is located in the mip tail region. + * pname:formatProperties.flags is a bitmask of + elink:VkSparseImageFormatFlagBits: + ** If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set the image + uses a single mip tail region for all array layers. + ** If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set the + dimensions of mip levels must: be integer multiples of the corresponding + dimensions of the sparse image block for levels not located in the mip + tail. + ** If ename:VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT is set the + image uses non-standard sparse image block dimensions. The + pname:formatProperties.imageGranularity values do not match the + standard sparse image block dimension corresponding to the image's + pixel format. + * pname:imageMipTailFirstLod is the first mip level at which image + subresources are included in the mip tail region. + * pname:imageMipTailSize is the memory size (in bytes) of the mip tail + region. If pname:formatProperties.flags contains + ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, this is the size of the + whole mip tail, otherwise this is the size of the mip tail of a single + array layer. This value is guaranteed to be a multiple of the sparse block + size in bytes. + * pname:imageMipTailOffset is the opaque memory offset used with + slink:VkSparseImageOpaqueMemoryBindInfo to bind the mip tail region(s). + * pname:imageMipTailStride is the offset stride between each array-layer's + mip tail, if pname:formatProperties.flags does not contain + ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT (otherwise the value is + undefined). + Description ----------- include::../validity/structs/VkSparseImageMemoryRequirements.txt[] + + See Also -------- +basetypes:VkDeviceSize, slink:VkSparseImageFormatProperties, flink:vkGetImageSparseMemoryRequirements + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageMemoryRequirements + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseImageOpaqueMemoryBindInfo.txt b/doc/specs/vulkan/man/VkSparseImageOpaqueMemoryBindInfo.txt index 48688a6420..842aeea5e1 100644 --- a/doc/specs/vulkan/man/VkSparseImageOpaqueMemoryBindInfo.txt +++ b/doc/specs/vulkan/man/VkSparseImageOpaqueMemoryBindInfo.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseImageOpaqueMemoryBindInfo(3) ==================================== Name ---- -VkSparseImageOpaqueMemoryBindInfo - Stub page (not yet written) +VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info C Specification --------------- +// refBegin VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info + +Memory is bound to opaque regions of sname:VkImage objects created with the +ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag using the following +structure: + include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:image is the sname:VkImage object to be bound. + * pname:bindCount is the number of sname:VkSparseMemoryBind structures in + the pname:pBinds array. + * pname:pBinds is a pointer to array of sname:VkSparseMemoryBind + structures. + Description ----------- include::../validity/structs/VkSparseImageOpaqueMemoryBindInfo.txt[] + + See Also -------- +slink:VkBindSparseInfo, slink:VkImage, slink:VkSparseMemoryBind + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseImageOpaqueMemoryBindInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseMemoryBind.txt b/doc/specs/vulkan/man/VkSparseMemoryBind.txt index f6c0a26bfb..8e2fd45265 100644 --- a/doc/specs/vulkan/man/VkSparseMemoryBind.txt +++ b/doc/specs/vulkan/man/VkSparseMemoryBind.txt @@ -1,27 +1,99 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseMemoryBind(3) ===================== Name ---- -VkSparseMemoryBind - Stub page (not yet written) +VkSparseMemoryBind - Structure specifying a sparse memory bind operation C Specification --------------- +// refBegin VkSparseMemoryBind - Structure specifying a sparse memory bind operation + +The sname:VkSparseMemoryBind structure is defined as: + include::../structs/VkSparseMemoryBind.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:resourceOffset is the offset into the resource. + * pname:size is the size of the memory region to be bound. + * pname:memory is the sname:VkDeviceMemory object that the range of the + resource is bound to. If pname:memory is dlink:VK_NULL_HANDLE, the range + is unbound. + * pname:memoryOffset is the offset into the sname:VkDeviceMemory object to + bind the resource range to. If pname:memory is dlink:VK_NULL_HANDLE, + this value is ignored. + * pname:flags is a bitmask specifying usage of the binding operation. Bits + which can: be set include: ++ +-- +// refBegin VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operation +include::../enums/VkSparseMemoryBindFlagBits.txt[] +-- ++ + ** ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT indicates that the memory + being bound is only for the metadata aspect. + Description ----------- +The _binding range_ latexmath:[$[\mathit{resourceOffset}, +\mathit{resourceOffset} + \mathit{size})$] has different constraints based +on pname:flags. If pname:flags contains +ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range must: be within +the mip tail region of the metadata aspect. This metadata region is defined +by: + +[latexmath] +++++++++++++++++++++++++++ +\begin{align*} +\mathit{metadataRegion} = [& + \mathit{imageMipTailOffset} + \mathit{imageMipTailStride} \times n,\\ + &\mathit{imageMipTailOffset} + + \mathit{imageMipTailStride} \times n + \mathit{imageMipTailSize}) +\end{align*} +++++++++++++++++++++++++++ + +Where pname:imageMipTailOffset, pname:imageMipTailSize, and +pname:imageMipTailStride values are from the +slink:VkSparseImageMemoryRequirements that correspond to the metadata aspect +of the image. The term latexmath:[$n$] is a valid array layer index for the +image. + +pname:imageMipTailStride is considered to be zero for aspects where +sname:VkSparseImageMemoryRequirements::pname:formatProperties.flags contains +ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT. + +If pname:flags does not contain ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, +the binding range must: be within the range +latexmath:[$[0, {\mathit{VkMemoryRequirements}::\mathit{size}})$]. + include::../validity/structs/VkSparseMemoryBind.txt[] + + See Also -------- +slink:VkDeviceMemory, basetypes:VkDeviceSize, slink:VkSparseBufferMemoryBindInfo, slink:VkSparseImageOpaqueMemoryBindInfo, elink:VkSparseMemoryBindFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseMemoryBind + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseMemoryBindFlagBits.txt b/doc/specs/vulkan/man/VkSparseMemoryBindFlagBits.txt index 063a45e95f..6cf668ec8c 100644 --- a/doc/specs/vulkan/man/VkSparseMemoryBindFlagBits.txt +++ b/doc/specs/vulkan/man/VkSparseMemoryBindFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseMemoryBindFlagBits(3) ============================= Name ---- -VkSparseMemoryBindFlagBits - Stub page (not yet written) +VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operation C Specification --------------- +// refBegin VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operation include::../enums/VkSparseMemoryBindFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkSparseMemoryBind, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkSparseMemoryBindFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseMemoryBindFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSparseMemoryBindFlags.txt b/doc/specs/vulkan/man/VkSparseMemoryBindFlags.txt index dea4b845d3..6cf7e7487f 100644 --- a/doc/specs/vulkan/man/VkSparseMemoryBindFlags.txt +++ b/doc/specs/vulkan/man/VkSparseMemoryBindFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSparseMemoryBindFlags(3) ========================== Name ---- -VkSparseMemoryBindFlags - Stub page (not yet written) +VkSparseMemoryBindFlags - Bitmask of VkSparseMemoryBindFlagBits C Specification --------------- include::../flags/VkSparseMemoryBindFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSparseMemoryBindFlags is a mask of zero or more elink:VkSparseMemoryBindFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkSparseImageMemoryBind, slink:VkSparseMemoryBind, elink:VkSparseMemoryBindFlagBits + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSparseMemoryBindFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSpecializationInfo.txt b/doc/specs/vulkan/man/VkSpecializationInfo.txt index 40bc56133a..df09af9c6f 100644 --- a/doc/specs/vulkan/man/VkSpecializationInfo.txt +++ b/doc/specs/vulkan/man/VkSpecializationInfo.txt @@ -1,27 +1,60 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSpecializationInfo(3) ======================= Name ---- -VkSpecializationInfo - Stub page (not yet written) +VkSpecializationInfo - Structure specifying specialization info C Specification --------------- +// refBegin VkSpecializationInfo - Structure specifying specialization info + +The sname:VkSpecializationInfo structure is defined as: + include::../structs/VkSpecializationInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:mapEntryCount is the number of entries in the pname:pMapEntries + array. + * pname:pMapEntries is a pointer to an array of + sname:VkSpecializationMapEntry which maps constant IDs to offsets in + pname:pData. + * pname:dataSize is the byte size of the pname:pData buffer. + * pname:pData contains the actual constant values to specialize with. + Description ----------- +pname:pMapEntries points to a structure of type +slink:VkSpecializationMapEntry. + include::../validity/structs/VkSpecializationInfo.txt[] + + See Also -------- +slink:VkPipelineShaderStageCreateInfo, slink:VkSpecializationMapEntry + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSpecializationInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSpecializationMapEntry.txt b/doc/specs/vulkan/man/VkSpecializationMapEntry.txt index 5b55f36aa0..fa04c05c72 100644 --- a/doc/specs/vulkan/man/VkSpecializationMapEntry.txt +++ b/doc/specs/vulkan/man/VkSpecializationMapEntry.txt @@ -1,27 +1,58 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSpecializationMapEntry(3) =========================== Name ---- -VkSpecializationMapEntry - Stub page (not yet written) +VkSpecializationMapEntry - Structure specifying a specialization map entry C Specification --------------- +// refBegin VkSpecializationMapEntry - Structure specifying a specialization map entry + +The sname:VkSpecializationMapEntry structure is defined as: + include::../structs/VkSpecializationMapEntry.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:constantID is the ID of the specialization constant in SPIR-V. + * pname:offset is the byte offset of the specialization constant value within the + supplied data buffer. + * pname:size is the byte size of the specialization constant value within the + supplied data buffer. + Description ----------- +If a pname:constantID value is not a specialization constant ID used in the +shader, that map entry does not affect the behavior of the pipeline. + include::../validity/structs/VkSpecializationMapEntry.txt[] + + See Also -------- +slink:VkSpecializationInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSpecializationMapEntry + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkStencilFaceFlagBits.txt b/doc/specs/vulkan/man/VkStencilFaceFlagBits.txt index ca2dc78e60..fdc7e71ca7 100644 --- a/doc/specs/vulkan/man/VkStencilFaceFlagBits.txt +++ b/doc/specs/vulkan/man/VkStencilFaceFlagBits.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkStencilFaceFlagBits(3) ======================== Name ---- -VkStencilFaceFlagBits - Stub page (not yet written) +VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare mask C Specification --------------- +// refBegin VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare mask include::../enums/VkStencilFaceFlagBits.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkCmdSetStencilCompareMask, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +elink:VkStencilFaceFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkStencilFaceFlagBits + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkStencilFaceFlags.txt b/doc/specs/vulkan/man/VkStencilFaceFlags.txt index c758c9accb..54c511e597 100644 --- a/doc/specs/vulkan/man/VkStencilFaceFlags.txt +++ b/doc/specs/vulkan/man/VkStencilFaceFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkStencilFaceFlags(3) ===================== Name ---- -VkStencilFaceFlags - Stub page (not yet written) +VkStencilFaceFlags - Bitmask of VkStencilFaceFlagBits C Specification --------------- include::../flags/VkStencilFaceFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkStencilFaceFlags is a mask of zero or more elink:VkStencilFaceFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +elink:VkStencilFaceFlagBits, flink:vkCmdSetStencilCompareMask, flink:vkCmdSetStencilReference, flink:vkCmdSetStencilWriteMask + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkStencilFaceFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkStencilOp.txt b/doc/specs/vulkan/man/VkStencilOp.txt index 57e86c9c32..b9f82ab410 100644 --- a/doc/specs/vulkan/man/VkStencilOp.txt +++ b/doc/specs/vulkan/man/VkStencilOp.txt @@ -1,26 +1,84 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkStencilOp(3) ============== Name ---- -VkStencilOp - Stub page (not yet written) +VkStencilOp - stencil comparison function C Specification --------------- -include::../enums/VkStencilOp.txt[] +// refBegin VkStencilOp stencil comparison function -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp +members of slink:VkStencilOpState indicate what happens to the stored +stencil value if this or certain subsequent tests fail or pass. Each enum is +of type elink:VkStencilOp, which is defined as: + +include::../enums/VkStencilOp.txt[] -Constants ---------- Description ----------- +The possible values are: + + * ename:VK_STENCIL_OP_KEEP keeps the current value. + * ename:VK_STENCIL_OP_ZERO sets the value to 0. + * ename:VK_STENCIL_OP_REPLACE sets the value to pname:reference. + * ename:VK_STENCIL_OP_INCREMENT_AND_CLAMP increments the current value and + clamps to the maximum representable unsigned value. + * ename:VK_STENCIL_OP_DECREMENT_AND_CLAMP decrements the current value and + clamps to 0. + * ename:VK_STENCIL_OP_INVERT bitwise-inverts the current value. + * ename:VK_STENCIL_OP_INCREMENT_AND_WRAP increments the current value and + wraps to 0 when the maximum value would have been exceeded. + * ename:VK_STENCIL_OP_DECREMENT_AND_WRAP decrements the current value and + wraps to the maximum possible value when the value would go below 0. + +For purposes of increment and decrement, the stencil bits are considered as +an unsigned integer. + +If the stencil test fails, the sample's coverage bit is cleared in the +fragment. If there is no stencil framebuffer attachment, stencil +modification cannot: occur, and it is as if the stencil tests always pass. + +If the stencil test passes, the pname:writeMask member of the +slink:VkStencilOpState structures controls how the updated stencil value is +written to the stencil framebuffer attachment. + +The least significant latexmath:[$s$] bits of pname:writeMask, where +latexmath:[$s$] is the number of bits in the stencil framebuffer attachment, +specify an integer mask. Where a latexmath:[$1$] appears in this mask, the +corresponding bit in the stencil value in the depth/stencil attachment is +written; where a latexmath:[$0$] appears, the bit is not written. The +pname:writeMask value uses either the front-facing or back-facing state +based on the facing-ness of the fragment. Fragments generated by +front-facing primitives use the front mask and fragments generated by +back-facing primitives use the back mask. + +// refEnd VkStencilOp + + See Also -------- +slink:VkStencilOpState + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkStencilOp + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkStencilOpState.txt b/doc/specs/vulkan/man/VkStencilOpState.txt index adc2efbbf3..32148d5194 100644 --- a/doc/specs/vulkan/man/VkStencilOpState.txt +++ b/doc/specs/vulkan/man/VkStencilOpState.txt @@ -1,27 +1,63 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkStencilOpState(3) =================== Name ---- -VkStencilOpState - Stub page (not yet written) +VkStencilOpState - Structure specifying stencil operation state C Specification --------------- +// refBegin VkStencilOpState - Structure specifying stencil operation state + +The sname:VkStencilOpState structure is defined as: + include::../structs/VkStencilOpState.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:failOp is the action performed on samples that fail the stencil + test. + * pname:passOp is the action performed on samples that pass both the depth + and stencil tests. + * pname:depthFailOp is the action performed on samples that pass the + stencil test and fail the depth test. + * pname:compareOp is the comparison operator used in the stencil test. + * pname:compareMask selects the bits of the unsigned integer stencil + values participating in the stencil test. + * pname:writeMask selects the bits of the unsigned integer stencil values + updated by the stencil test in the stencil framebuffer attachment. + * pname:reference is an integer reference value that is used in the + unsigned stencil comparison. + Description ----------- include::../validity/structs/VkStencilOpState.txt[] + + See Also -------- +elink:VkCompareOp, slink:VkPipelineDepthStencilStateCreateInfo, elink:VkStencilOp + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkStencilOpState + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkStructureType.txt b/doc/specs/vulkan/man/VkStructureType.txt index e674c6db0c..75323d7d4f 100644 --- a/doc/specs/vulkan/man/VkStructureType.txt +++ b/doc/specs/vulkan/man/VkStructureType.txt @@ -1,26 +1,48 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkStructureType(3) ================== Name ---- -VkStructureType - Stub page (not yet written) +VkStructureType - Vulkan structure types (pname:stype) C Specification --------------- -include::../enums/VkStructureType.txt[] +// refBegin VkStructureType Vulkan structure types (pname:stype) -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +Vulkan structures containing elink:VkStructureType::pname:sType members +must: have a value of pname:sType matching the type of the structure, as +described more fully in <>. Structure types supported by the Vulkan API include: + +include::../enums/VkStructureType.txt[] -Constants ---------- Description ----------- +// refEnd VkStructureType + + See Also -------- +slink:VkApplicationInfo, slink:VkBindSparseInfo, slink:VkBufferCreateInfo, slink:VkBufferMemoryBarrier, slink:VkBufferViewCreateInfo, slink:VkCommandBufferAllocateInfo, slink:VkCommandBufferBeginInfo, slink:VkCommandBufferInheritanceInfo, slink:VkCommandPoolCreateInfo, slink:VkComputePipelineCreateInfo, slink:VkCopyDescriptorSet, slink:VkDescriptorPoolCreateInfo, slink:VkDescriptorSetAllocateInfo, slink:VkDescriptorSetLayoutCreateInfo, slink:VkDeviceCreateInfo, slink:VkDeviceQueueCreateInfo, slink:VkEventCreateInfo, slink:VkFenceCreateInfo, slink:VkFramebufferCreateInfo, slink:VkGraphicsPipelineCreateInfo, slink:VkImageCreateInfo, slink:VkImageMemoryBarrier, slink:VkImageViewCreateInfo, slink:VkInstanceCreateInfo, slink:VkMappedMemoryRange, slink:VkMemoryAllocateInfo, slink:VkMemoryBarrier, slink:VkPipelineCacheCreateInfo, slink:VkPipelineColorBlendStateCreateInfo, slink:VkPipelineDepthStencilStateCreateInfo, slink:VkPipelineDynamicStateCreateInfo, slink:VkPipelineInputAssemblyStateCreateInfo, slink:VkPipelineLayoutCreateInfo, slink:VkPipelineMultisampleStateCreateInfo, slink:VkPipelineRasterizationStateCreateInfo, slink:VkPipelineShaderStageCreateInfo, slink:VkPipelineTessellationStateCreateInfo, slink:VkPipelineVertexInputStateCreateInfo, slink:VkPipelineViewportStateCreateInfo, slink:VkQueryPoolCreateInfo, slink:VkRenderPassBeginInfo, slink:VkRenderPassCreateInfo, slink:VkSamplerCreateInfo, slink:VkSemaphoreCreateInfo, slink:VkShaderModuleCreateInfo, slink:VkSubmitInfo, slink:VkWriteDescriptorSet + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkStructureType + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubmitInfo.txt b/doc/specs/vulkan/man/VkSubmitInfo.txt index 694ad6c63f..d5036327cd 100644 --- a/doc/specs/vulkan/man/VkSubmitInfo.txt +++ b/doc/specs/vulkan/man/VkSubmitInfo.txt @@ -1,27 +1,73 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubmitInfo(3) =============== Name ---- -VkSubmitInfo - Stub page (not yet written) +VkSubmitInfo - Structure specifying a queue submit operation C Specification --------------- +// refBegin VkSubmitInfo - Structure specifying a queue submit operation + +The sname:VkSubmitInfo structure is defined as: + include::../structs/VkSubmitInfo.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:waitSemaphoreCount is the number of semaphores upon which + to wait before executing the command buffers for the batch. + * pname:pWaitSemaphores is a pointer to an array of semaphores upon which + to wait before the command buffers for this batch begin execution. If + semaphores to wait on are provided, they define a + <>. + * pname:pWaitDstStageMask is a pointer to an array of pipeline stages at + which each corresponding semaphore wait will occur. + * pname:commandBufferCount is the number of command buffers to + execute in the batch. + * pname:pCommandBuffers is a pointer to an array of command buffers to + execute in the batch. The command buffers submitted in a batch begin + execution in the order they appear in pname:pCommandBuffers, but may: + complete out of order. + * pname:signalSemaphoreCount is the number of semaphores to be + signaled once the commands specified in pname:pCommandBuffers have + completed execution. + * pname:pSignalSemaphores is a pointer to an array of semaphores which + will be signaled when the command buffers for this batch have completed + execution. If semaphores to be signaled are provided, they define a + <>. + Description ----------- include::../validity/structs/VkSubmitInfo.txt[] + + See Also -------- +slink:VkCommandBuffer, elink:VkPipelineStageFlags, slink:VkSemaphore, elink:VkStructureType, flink:vkQueueSubmit + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubmitInfo + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubpassContents.txt b/doc/specs/vulkan/man/VkSubpassContents.txt index 7e97a831f0..75aedafd56 100644 --- a/doc/specs/vulkan/man/VkSubpassContents.txt +++ b/doc/specs/vulkan/man/VkSubpassContents.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubpassContents(3) ==================== Name ---- -VkSubpassContents - Stub page (not yet written) +VkSubpassContents - specify how commands in the first subpass of a render pass are provided C Specification --------------- +// refBegin VkSubpassContents - specify how commands in the first subpass of a render pass are provided include::../enums/VkSubpassContents.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for flink:vkCmdBeginRenderPass, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +flink:vkCmdBeginRenderPass, flink:vkCmdNextSubpass + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubpassContents + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubpassDependency.txt b/doc/specs/vulkan/man/VkSubpassDependency.txt index 34131d5cb5..fa12bbbac2 100644 --- a/doc/specs/vulkan/man/VkSubpassDependency.txt +++ b/doc/specs/vulkan/man/VkSubpassDependency.txt @@ -1,27 +1,102 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubpassDependency(3) ====================== Name ---- -VkSubpassDependency - Stub page (not yet written) +VkSubpassDependency - Structure specifying a subpass dependency C Specification --------------- +// refBegin VkSubpassDependency - Structure specifying a subpass dependency + +The sname:VkSubpassDependency structure is defined as: + include::../structs/VkSubpassDependency.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:srcSubpass and pname:dstSubpass are the subpass indices of the + producer and consumer subpasses, respectively. pname:srcSubpass and + pname:dstSubpass can: also have the special value + ename:VK_SUBPASS_EXTERNAL. The source subpass must: always be a lower + numbered subpass than the destination subpass (excluding external + subpasses and + <>), so that the order of subpass descriptions is a + valid execution ordering, avoiding cycles in the dependency graph. + * pname:srcStageMask, pname:dstStageMask, pname:srcAccessMask, + pname:dstAccessMask, and pname:dependencyFlags describe an + <> between subpasses. The bits that can: be included in + pname:dependencyFlags are: ++ +-- +// refBegin VkDependencyFlagBits - Bitmask specifying dependencies between subpasses +include::../enums/VkDependencyFlagBits.txt[] +-- + ** If pname:dependencyFlags contains ename:VK_DEPENDENCY_BY_REGION_BIT, + then the dependency is by-region as defined in + <>. + Description ----------- +Each subpass dependency defines an execution and memory dependency +between two sets of commands, with the second set depending on the first +set. When pname:srcSubpass does not equal pname:dstSubpass then the first +set of commands is: + + * All commands in the subpass indicated by pname:srcSubpass, if + pname:srcSubpass is not ename:VK_SUBPASS_EXTERNAL. + * All commands before the render pass instance, if pname:srcSubpass is + ename:VK_SUBPASS_EXTERNAL. + +While the corresponding second set of commands is: + + * All commands in the subpass indicated by pname:dstSubpass, if + pname:dstSubpass is not ename:VK_SUBPASS_EXTERNAL. + * All commands after the render pass instance, if pname:dstSubpass is + ename:VK_SUBPASS_EXTERNAL. + +When pname:srcSubpass equals pname:dstSubpass then the first set consists of +commands in the subpass before a call to flink:vkCmdPipelineBarrier and the +second set consists of commands in the subpass following that same call as +described in the +<> section. + +The pname:srcStageMask, pname:dstStageMask, pname:srcAccessMask, +pname:dstAccessMask, and pname:dependencyFlags parameters of the dependency +are interpreted the same way as for other dependencies, as described in +<>. + include::../validity/structs/VkSubpassDependency.txt[] + + See Also -------- +elink:VkAccessFlags, elink:VkDependencyFlags, elink:VkPipelineStageFlags, slink:VkRenderPassCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubpassDependency + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubpassDescription.txt b/doc/specs/vulkan/man/VkSubpassDescription.txt index 13a6bb752c..30be0350d9 100644 --- a/doc/specs/vulkan/man/VkSubpassDescription.txt +++ b/doc/specs/vulkan/man/VkSubpassDescription.txt @@ -1,27 +1,109 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubpassDescription(3) ======================= Name ---- -VkSubpassDescription - Stub page (not yet written) +VkSubpassDescription - Structure specifying a subpass description C Specification --------------- +// refBegin VkSubpassDescription - Structure specifying a subpass description + +The sname:VkSubpassDescription structure is defined as: + include::../structs/VkSubpassDescription.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:flags is reserved for future use. + * pname:pipelineBindPoint is a elink:VkPipelineBindPoint value specifying + whether this is a compute or graphics subpass. Currently, only graphics + subpasses are supported. + * pname:inputAttachmentCount is the number of input attachments. + * pname:pInputAttachments is an array of slink:VkAttachmentReference + structures (defined below) that lists which of the render pass's + attachments can: be read in the shader during the subpass, and what + layout the attachment images will be in during the subpass. Each element + of the array corresponds to an input attachment unit number in the + shader, i.e. if the shader declares an input variable + `layout(input_attachment_index=X, set=Y, binding=Z)` then it uses the + attachment provided in pname:pInputAttachments[X]. Input attachments + must: also be bound to the pipeline with a descriptor set, with the + input attachment descriptor written in the location (set=Y, binding=Z). + * pname:colorAttachmentCount is the number of color attachments. + * pname:pColorAttachments is an array of pname:colorAttachmentCount + slink:VkAttachmentReference structures that lists which of the render + pass's attachments will be used as color attachments in the subpass, and + what layout the attachment images will be in during the subpass. Each + element of the array corresponds to a fragment shader output location, + i.e. if the shader declared an output variable `layout(location=X)` then + it uses the attachment provided in pname:pColorAttachments[X]. + * pname:pResolveAttachments is `NULL` or a pointer to an array of + slink:VkAttachmentReference structures. If pname:pResolveAttachments is + not `NULL`, each of its elements corresponds to a color attachment (the + element in pname:pColorAttachments at the same index). At the end of + each subpass, the subpass's color attachments are resolved to + corresponding resolve attachments, unless the resolve attachment index + is ename:VK_ATTACHMENT_UNUSED or pname:pResolveAttachments is `NULL`. If + the first use of an attachment in a render pass is as a resolve + attachment, then the pname:loadOp is effectively ignored as the resolve + is guaranteed to overwrite all pixels in the render area. + * pname:pDepthStencilAttachment is a pointer to a + slink:VkAttachmentReference specifying which attachment will be used for + depth/stencil data and the layout it will be in during the subpass. + Setting the attachment index to ename:VK_ATTACHMENT_UNUSED or leaving + this pointer as `NULL` indicates that no depth/stencil attachment will + be used in the subpass. + * pname:preserveAttachmentCount is the number of preserved attachments. + * pname:pPreserveAttachments is an array of pname:preserveAttachmentCount + render pass attachment indices describing the attachments that + are not used by a subpass, but whose contents must: be preserved + throughout the subpass. + Description ----------- +The contents of an attachment within the render area become undefined at +the start of a subpass S if all of the following conditions are true: + + * The attachment is used as a color, depth/stencil, or resolve attachment + in any subpass in the render pass. + * There is a subpass S1 that uses or preserves the attachment, and a + subpass dependency from S1 to S. + * The attachment is not used or preserved in subpass S. + +Once the contents of an attachment become undefined in subpass S, they +remain undefined for subpasses in subpass dependency chains starting with +subpass S until they are written again. However, they remain valid for +subpasses in other subpass dependency chains starting with subpass S1 if +those subpasses use or preserve the attachment. + include::../validity/structs/VkSubpassDescription.txt[] + + See Also -------- +slink:VkAttachmentReference, elink:VkPipelineBindPoint, slink:VkRenderPassCreateInfo, elink:VkSubpassDescriptionFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubpassDescription + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubpassDescriptionFlags.txt b/doc/specs/vulkan/man/VkSubpassDescriptionFlags.txt index a3aee7206e..2f43751b40 100644 --- a/doc/specs/vulkan/man/VkSubpassDescriptionFlags.txt +++ b/doc/specs/vulkan/man/VkSubpassDescriptionFlags.txt @@ -1,26 +1,43 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubpassDescriptionFlags(3) ============================ Name ---- -VkSubpassDescriptionFlags - Stub page (not yet written) +VkSubpassDescriptionFlags - Bitmask of VkSubpassDescriptionFlagBits C Specification --------------- include::../flags/VkSubpassDescriptionFlags.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +etext:VkSubpassDescriptionFlags is a mask of zero or more elink:VkSubpassDescriptionFlagBits. +It is used as a member and/or parameter of the structures and commands +in the See Also section below. + + See Also -------- +slink:VkSubpassDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubpassDescriptionFlags + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSubresourceLayout.txt b/doc/specs/vulkan/man/VkSubresourceLayout.txt index ef4bc1bbfd..ca755ee76d 100644 --- a/doc/specs/vulkan/man/VkSubresourceLayout.txt +++ b/doc/specs/vulkan/man/VkSubresourceLayout.txt @@ -1,27 +1,103 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSubresourceLayout(3) ====================== Name ---- -VkSubresourceLayout - Stub page (not yet written) +VkSubresourceLayout - Structure specifying subresource layout C Specification --------------- +// refBegin VkSubresourceLayout - Structure specifying subresource layout + +Information about the layout of the image subresource is returned in a +sname:VkSubresourceLayout structure: + include::../structs/VkSubresourceLayout.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:offset is the byte offset from the start of the image where the + image subresource begins. + * pname:size is the size in bytes of the image subresource. pname:size + includes any extra memory that is required based on pname:rowPitch. + * pname:rowPitch describes the number of bytes between each row of texels + in an image. + * pname:arrayPitch describes the number of bytes between each array layer + of an image. + * pname:depthPitch describes the number of bytes between each slice of 3D + image. + Description ----------- +For images created with linear tiling, pname:rowPitch, pname:arrayPitch and +pname:depthPitch describe the layout of the image subresource in linear +memory. For uncompressed formats, pname:rowPitch is the number of bytes +between texels with the same x coordinate in adjacent rows (y coordinates +differ by one). pname:arrayPitch is the number of bytes between texels with +the same x and y coordinate in adjacent array layers of the image (array +layer values differ by one). pname:depthPitch is the number of bytes between +texels with the same x and y coordinate in adjacent slices of a 3D image (z +coordinates differ by one). Expressed as an addressing formula, the starting +byte of a texel in the image subresource has address: + +[source,c] +--------------------------------------------------- +// (x,y,z,layer) are in texel coordinates +address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*texelSize + offset +--------------------------------------------------- + +For compressed formats, the pname:rowPitch is the number of bytes between +compressed texel blocks in adjacent rows. pname:arrayPitch is the number of +bytes between compressed texel blocks in adjacent array layers. +pname:depthPitch is the number of bytes between compressed texel blocks in +adjacent slices of a 3D image. + +[source,c] +--------------------------------------------------- +// (x,y,z,layer) are in compressed texel block coordinates +address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset; +--------------------------------------------------- + +pname:arrayPitch is undefined for images that were not created as arrays. +pname:depthPitch is defined only for 3D images. + +For color formats, the pname:aspectMask member of sname:VkImageSubresource +must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats, +pname:aspectMask must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or +ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and +stencil aspects separately, querying each of these image subresource layouts +will return a different pname:offset and pname:size representing the region +of memory used for that aspect. On implementations that store depth and +stencil aspects interleaved, the same pname:offset and pname:size are +returned and represent the interleaved memory allocation. + include::../validity/structs/VkSubresourceLayout.txt[] + + See Also -------- +basetypes:VkDeviceSize, flink:vkGetImageSubresourceLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSubresourceLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkSurfaceCapabilitiesKHR.txt b/doc/specs/vulkan/man/VkSurfaceCapabilitiesKHR.txt deleted file mode 100644 index b5e2fd6caf..0000000000 --- a/doc/specs/vulkan/man/VkSurfaceCapabilitiesKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkSurfaceCapabilitiesKHR(3) -=========================== - -Name ----- -VkSurfaceCapabilitiesKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkSurfaceCapabilitiesKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkSurfaceCapabilitiesKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSurfaceFormatKHR.txt b/doc/specs/vulkan/man/VkSurfaceFormatKHR.txt deleted file mode 100644 index b122fdde82..0000000000 --- a/doc/specs/vulkan/man/VkSurfaceFormatKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkSurfaceFormatKHR(3) -===================== - -Name ----- -VkSurfaceFormatKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkSurfaceFormatKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkSurfaceFormatKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSurfaceTransformFlagBitsKHR.txt b/doc/specs/vulkan/man/VkSurfaceTransformFlagBitsKHR.txt deleted file mode 100644 index ac77af6815..0000000000 --- a/doc/specs/vulkan/man/VkSurfaceTransformFlagBitsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkSurfaceTransformFlagBitsKHR(3) -================================ - -Name ----- -VkSurfaceTransformFlagBitsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../enums/VkSurfaceTransformFlagBitsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSurfaceTransformFlagsKHR.txt b/doc/specs/vulkan/man/VkSurfaceTransformFlagsKHR.txt deleted file mode 100644 index bbcf8844bd..0000000000 --- a/doc/specs/vulkan/man/VkSurfaceTransformFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkSurfaceTransformFlagsKHR(3) -============================= - -Name ----- -VkSurfaceTransformFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkSurfaceTransformFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSwapchainCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkSwapchainCreateFlagsKHR.txt deleted file mode 100644 index ffc32639ab..0000000000 --- a/doc/specs/vulkan/man/VkSwapchainCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkSwapchainCreateFlagsKHR(3) -============================ - -Name ----- -VkSwapchainCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkSwapchainCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSwapchainCreateInfoKHR.txt b/doc/specs/vulkan/man/VkSwapchainCreateInfoKHR.txt deleted file mode 100644 index dfea851d22..0000000000 --- a/doc/specs/vulkan/man/VkSwapchainCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkSwapchainCreateInfoKHR(3) -=========================== - -Name ----- -VkSwapchainCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkSwapchainCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkSwapchainCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkSystemAllocationScope.txt b/doc/specs/vulkan/man/VkSystemAllocationScope.txt index 3df37eeb26..cce757d190 100644 --- a/doc/specs/vulkan/man/VkSystemAllocationScope.txt +++ b/doc/specs/vulkan/man/VkSystemAllocationScope.txt @@ -1,26 +1,95 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkSystemAllocationScope(3) ========================== Name ---- -VkSystemAllocationScope - Stub page (not yet written) +VkSystemAllocationScope - allocation scope C Specification --------------- -include::../enums/VkSystemAllocationScope.txt[] +// refBegin VkSystemAllocationScope allocation scope -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. +[[memory-host-allocation-scope]] +Each allocation has a _scope_ which defines its lifetime and which object it +is associated with. The scope is provided in the pname:allocationScope +parameter passed to callbacks defined in slink:VkAllocationCallbacks. +Possible values for this parameter are defined by +elink:VkSystemAllocationScope: + +include::../enums/VkSystemAllocationScope.txt[] -Constants ---------- Description ----------- + * ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND - The allocation is scoped to + the duration of the Vulkan command. + * ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT - The allocation is scoped to + the lifetime of the Vulkan object that is being created or used. + * ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE - The allocation is scoped to the + lifetime of a sname:VkPipelineCache object. + * ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE - The allocation is scoped to + the lifetime of the Vulkan device. + * ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - The allocation is scoped to + the lifetime of the Vulkan instance. + +Most Vulkan commands operate on a single object, or there is a sole +object that is being created or manipulated. When an allocation uses a scope +of ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT or +ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE, the allocation is scoped to the +object being created or manipulated. + +When an implementation requires host memory, it will make callbacks to the +application using the most specific allocator and scope available: + + * If an allocation is scoped to the duration of a command, the allocator + will use the ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND scope. The most + specific allocator available is used: if the object being created or + manipulated has an allocator, that object's allocator will be used, else + if the parent sname:VkDevice has an allocator it will be used, else if + the parent sname:VkInstance has an allocator it will be used. Else, + * If an allocation is associated with an object of type + sname:VkPipelineCache, the allocator will use the + ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE scope. The most specific + allocator available is used (pipeline cache, else device, else + instance). Else, + * If an allocation is scoped to the lifetime of an object, that object is + being created or manipulated by the command, and that object's type is + not sname:VkDevice or sname:VkInstance, the allocator will use a scope + of ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT. The most specific allocator + available is used (object, else device, else instance). Else, + * If an allocation is scoped to the lifetime of a device, the allocator + will use scope of ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE. The most + specific allocator available is used (device, else instance). Else, + * If the allocation is scoped to the lifetime of an instance and the + instance has an allocator, its allocator will be used with a scope of + ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE. + * Otherwise an implementation will allocate memory through an alternative + mechanism that is unspecified. + +// refEnd VkSystemAllocationScope VkAllocationCallbacks + + See Also -------- +slink:VkAllocationCallbacks + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkSystemAllocationScope + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkVertexInputAttributeDescription.txt b/doc/specs/vulkan/man/VkVertexInputAttributeDescription.txt index 1ad946db16..296bf33cfd 100644 --- a/doc/specs/vulkan/man/VkVertexInputAttributeDescription.txt +++ b/doc/specs/vulkan/man/VkVertexInputAttributeDescription.txt @@ -1,27 +1,57 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkVertexInputAttributeDescription(3) ==================================== Name ---- -VkVertexInputAttributeDescription - Stub page (not yet written) +VkVertexInputAttributeDescription - Structure specifying vertex input attribute description C Specification --------------- +// refBegin VkVertexInputAttributeDescription - Structure specifying vertex input attribute description + +The sname:VkVertexInputAttributeDescription structure is defined as: + include::../structs/VkVertexInputAttributeDescription.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:location is the shader binding location number for this + attribute. + * pname:binding is the binding number which this attribute takes + its data from. + * pname:format is the size and type of the vertex attribute data. + * pname:offset is a byte offset of this attribute relative + to the start of an element in the vertex input binding. + Description ----------- include::../validity/structs/VkVertexInputAttributeDescription.txt[] + + See Also -------- +elink:VkFormat, slink:VkPipelineVertexInputStateCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkVertexInputAttributeDescription + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkVertexInputBindingDescription.txt b/doc/specs/vulkan/man/VkVertexInputBindingDescription.txt index e3b37424c7..0a0c9915cc 100644 --- a/doc/specs/vulkan/man/VkVertexInputBindingDescription.txt +++ b/doc/specs/vulkan/man/VkVertexInputBindingDescription.txt @@ -1,27 +1,66 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkVertexInputBindingDescription(3) ================================== Name ---- -VkVertexInputBindingDescription - Stub page (not yet written) +VkVertexInputBindingDescription - Structure specifying vertex input binding description C Specification --------------- +// refBegin VkVertexInputBindingDescription - Structure specifying vertex input binding description + +The sname:VkVertexInputBindingDescription structure is defined as: + include::../structs/VkVertexInputBindingDescription.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:binding is the binding number that this structure + describes. + * pname:stride is the distance in bytes between two + consecutive elements within the buffer. + * pname:inputRate specifies + whether vertex attribute addressing is a function of the vertex index or + of the instance index. Possible values include: ++ +-- +// refBegin VkVertexInputRate - specify rate at which vertex attributes are pulled from buffers +include::../enums/VkVertexInputRate.txt[] +-- + ** ename:VK_VERTEX_INPUT_RATE_VERTEX indicates that vertex attribute + addressing is a function of the vertex index. + ** ename:VK_VERTEX_INPUT_RATE_INSTANCE indicates that vertex attribute + addressing is a function of the instance index. + Description ----------- include::../validity/structs/VkVertexInputBindingDescription.txt[] + + See Also -------- +slink:VkPipelineVertexInputStateCreateInfo, elink:VkVertexInputRate + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkVertexInputBindingDescription + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkVertexInputRate.txt b/doc/specs/vulkan/man/VkVertexInputRate.txt index aabce4c160..1bb470838d 100644 --- a/doc/specs/vulkan/man/VkVertexInputRate.txt +++ b/doc/specs/vulkan/man/VkVertexInputRate.txt @@ -1,26 +1,46 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkVertexInputRate(3) ==================== Name ---- -VkVertexInputRate - Stub page (not yet written) +VkVertexInputRate - specify rate at which vertex attributes are pulled from buffers C Specification --------------- +// refBegin VkVertexInputRate - specify rate at which vertex attributes are pulled from buffers include::../enums/VkVertexInputRate.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- Description ----------- +For more information, see: + + * The reference page for slink:VkVertexInputBindingDescription, where this interface is defined. + * The See Also section for other reference pages using this type. + * The Vulkan Specification. + + See Also -------- +slink:VkVertexInputBindingDescription + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkVertexInputRate + +This page is a generated document. +Fixes and changes should be made to the generator scripts,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkViewport.txt b/doc/specs/vulkan/man/VkViewport.txt index e72b1a4ab7..f9a978cf35 100644 --- a/doc/specs/vulkan/man/VkViewport.txt +++ b/doc/specs/vulkan/man/VkViewport.txt @@ -1,27 +1,89 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkViewport(3) ============= Name ---- -VkViewport - Stub page (not yet written) +VkViewport - Structure specifying a viewport C Specification --------------- +// refBegin VkViewport - Structure specifying a viewport + +The sname:VkViewport structure is defined as: + include::../structs/VkViewport.txt[] -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. -Fields ------- +Members +------- + + * pname:x and pname:y are the viewport's upper left corner + latexmath:[$(x,y)$]. + * pname:width and pname:height are the viewport's width and height, + respectively. + * pname:minDepth and pname:maxDepth are the depth range for the viewport. + It is valid for pname:minDepth to be greater than or equal to + pname:maxDepth. + Description ----------- +The framebuffer depth coordinate latexmath:[$z_f$] may: be represented using +either a fixed-point or floating-point representation. However, a +floating-point representation must: be used if the depth/stencil attachment +has a floating-point depth component. If an latexmath:[$m$]-bit fixed-point +representation is used, we assume that it represents each value +latexmath:[$\frac{k}{2^m - 1}$], where latexmath:[$k \in \{ 0,1, \ldots, +2^m-1 \}$], as latexmath:[$k$] (e.g. 1.0 is represented in binary as a +string of all ones). + +The viewport parameters shown in the above equations are found from these +values as + +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\begin{align*} + o_x & = x + \frac{width}{2} \\ + o_y & = y + \frac{height}{2} \\ + o_z & = minDepth \\ + p_x & = width \\ + p_y & = height \\ + p_z & = maxDepth - minDepth. +\end{align*} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +The width and height of the <> must: be greater +than or equal to the width and height of the largest image which can: be +created and attached to a framebuffer. + +The floating-point viewport bounds are represented with an +<>. + include::../validity/structs/VkViewport.txt[] + + See Also -------- +slink:VkPipelineViewportStateCreateInfo, flink:vkCmdSetViewport + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkViewport + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkWaylandSurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkWaylandSurfaceCreateFlagsKHR.txt deleted file mode 100644 index 0a6f727e2f..0000000000 --- a/doc/specs/vulkan/man/VkWaylandSurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkWaylandSurfaceCreateFlagsKHR(3) -================================= - -Name ----- -VkWaylandSurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkWaylandSurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkWaylandSurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkWaylandSurfaceCreateInfoKHR.txt deleted file mode 100644 index a378095f33..0000000000 --- a/doc/specs/vulkan/man/VkWaylandSurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkWaylandSurfaceCreateInfoKHR(3) -================================ - -Name ----- -VkWaylandSurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkWaylandSurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkWaylandSurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkWin32SurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkWin32SurfaceCreateFlagsKHR.txt deleted file mode 100644 index 4911e64fb0..0000000000 --- a/doc/specs/vulkan/man/VkWin32SurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkWin32SurfaceCreateFlagsKHR(3) -=============================== - -Name ----- -VkWin32SurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkWin32SurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkWin32SurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkWin32SurfaceCreateInfoKHR.txt deleted file mode 100644 index 9c3d1c54e5..0000000000 --- a/doc/specs/vulkan/man/VkWin32SurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkWin32SurfaceCreateInfoKHR(3) -============================== - -Name ----- -VkWin32SurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkWin32SurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkWin32SurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkWriteDescriptorSet.txt b/doc/specs/vulkan/man/VkWriteDescriptorSet.txt index 6f87839960..a4699977b2 100644 --- a/doc/specs/vulkan/man/VkWriteDescriptorSet.txt +++ b/doc/specs/vulkan/man/VkWriteDescriptorSet.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + VkWriteDescriptorSet(3) ======================= @@ -8,78 +12,77 @@ VkWriteDescriptorSet - Structure specifying the parameters of a descriptor set w C Specification --------------- -include::../structs/VkWriteDescriptorSet.txt[] - -Fields ------- - -pname:sType:: - Structure type. Must be ename:VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET. - -pname:pNext:: - Pointer to next structure in the structure chain when applicable. +// refBegin VkWriteDescriptorSet Structure specifying the parameters of a descriptor set write operation. -pname:dstSet:: - Destination descriptor set to write the descriptor data to. +The sname:VkWriteDescriptorSet structure is defined as: -pname:dstBinding:: - Binding within the descriptor set to start the update from. - -pname:dstArrayElement:: - Array element of the binding to start the update from. - -pname:descriptorCount:: - Number of descriptors to write to the descriptor set. - -pname:descriptorType:: - Type of descriptors to write to the descriptor set. +include::../structs/VkWriteDescriptorSet.txt[] -pname:pImageInfo:: - A pointer to an array of pname:descriptorCount slink:VkDescriptorImageInfo - structures specifying the source of the descriptor data to write to the - descriptor set for images. -pname:pBufferInfo:: - A pointer to an array of pname:descriptorCount slink:VkDescriptorBufferInfo - structures specifying the source of the descriptor data to write to the - descriptor set for buffers. +Members +------- + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:dstSet is the destination descriptor set to update. + * pname:dstBinding is the descriptor binding within that set. + * pname:dstArrayElement is the starting element in that array. + * pname:descriptorCount is the number of descriptors to update (the + number of elements in pname:pImageInfo, pname:pBufferInfo, or + pname:pTexelBufferView). + * pname:descriptorType is a elink:VkDescriptorType + specifying the type of each descriptor in pname:pImageInfo, + pname:pBufferInfo, or pname:pTexelBufferView, as described below. + It must: be the same type + as that specified in sname:VkDescriptorSetLayoutBinding for + pname:dstSet at pname:dstBinding. The type of the descriptor also + controls which array the descriptors are taken from. + * pname:pImageInfo points to an array of slink:VkDescriptorImageInfo + structures or is ignored, as described below. + * pname:pBufferInfo points to an array of slink:VkDescriptorBufferInfo + structures or is ignored, as described below. + * pname:pTexelBufferView points to an array of slink:VkBufferView handles + as described in the <> section or + is ignored, as described below. -pname:pTexelBufferView:: - A pointer to an array of basetype:VkBufferView handles used when binding - texel buffers into a the descriptor set. Description ----------- -This structure specifies information about the descriptors to be written to -a descriptor set using the fname:vkUpdateDescriptorSets command. +Only one of pname:pImageInfo, pname:pBufferInfo, or pname:pTexelBufferView +members is used according to the descriptor type specified in the +pname:descriptorType member of the containing sname:VkWriteDescriptorSet +structure, as specified below. + +[[descriptorsets-updates-consecutive, consecutive binding updates]] +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. 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. -When writing data to descriptor sets, the pname:pImageInfo, pname:pBufferInfo -or pname:pTexelBufferView parameters of fname:vkUpdateDescriptorSets point -to pname:descriptorCount instances of data structures, each instance -specifying the source of the descriptor data to be written. Which of these -parameters is used depends on the value of pname:descriptorType. +include::../validity/structs/VkWriteDescriptorSet.txt[] -Each instance of the selected array allows writing pname:descriptorCount -descriptors of type pname:descriptorType to the destination descriptor -set specified by pname:dstSet starting from the array element index -pname:dstArrayElement of the pname:dstBinding binding. -If pname:descriptorCount is greater than the number of descriptors in the -specified binding starting from the specified array element index then -subsequent descriptors are written to the next binding starting from its -first array element. This allows updating multiple subsequent bindings with -a single instance of this structure as long as the descriptor type of those -bindings match. +See Also +-------- -Attempting to write descriptors of incompatible type to any binding of a -descriptor set may result in undefined behavior. +slink:VkBufferView, slink:VkDescriptorBufferInfo, slink:VkDescriptorImageInfo, slink:VkDescriptorSet, elink:VkDescriptorType, elink:VkStructureType, flink:vkUpdateDescriptorSets -include::../validity/structs/VkWriteDescriptorSet.txt[] -See Also --------- +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL -flink:vkUpdateDescriptorSets, slink:VkDescriptorImageInfo, slink:VkDescriptorBufferInfo, elink:VkDescriptorType +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkWriteDescriptorSet + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/VkXcbSurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkXcbSurfaceCreateFlagsKHR.txt deleted file mode 100644 index 7c4555d0ef..0000000000 --- a/doc/specs/vulkan/man/VkXcbSurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkXcbSurfaceCreateFlagsKHR(3) -============================= - -Name ----- -VkXcbSurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkXcbSurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkXcbSurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkXcbSurfaceCreateInfoKHR.txt deleted file mode 100644 index fe6375e65d..0000000000 --- a/doc/specs/vulkan/man/VkXcbSurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkXcbSurfaceCreateInfoKHR(3) -============================ - -Name ----- -VkXcbSurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkXcbSurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkXcbSurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkXlibSurfaceCreateFlagsKHR.txt b/doc/specs/vulkan/man/VkXlibSurfaceCreateFlagsKHR.txt deleted file mode 100644 index c923ca9c74..0000000000 --- a/doc/specs/vulkan/man/VkXlibSurfaceCreateFlagsKHR.txt +++ /dev/null @@ -1,26 +0,0 @@ -VkXlibSurfaceCreateFlagsKHR(3) -============================== - -Name ----- -VkXlibSurfaceCreateFlagsKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../flags/VkXlibSurfaceCreateFlagsKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Constants ---------- - -Description ------------ - -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/VkXlibSurfaceCreateInfoKHR.txt b/doc/specs/vulkan/man/VkXlibSurfaceCreateInfoKHR.txt deleted file mode 100644 index 5f28eece96..0000000000 --- a/doc/specs/vulkan/man/VkXlibSurfaceCreateInfoKHR.txt +++ /dev/null @@ -1,27 +0,0 @@ -VkXlibSurfaceCreateInfoKHR(3) -============================= - -Name ----- -VkXlibSurfaceCreateInfoKHR - Stub page (not yet written) - -C Specification ---------------- - -include::../structs/VkXlibSurfaceCreateInfoKHR.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Fields ------- - -Description ------------ - -include::../validity/structs/VkXlibSurfaceCreateInfoKHR.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/apispec.txt b/doc/specs/vulkan/man/apispec.txt index 2bec73b8a4..385fb6879a 100644 --- a/doc/specs/vulkan/man/apispec.txt +++ b/doc/specs/vulkan/man/apispec.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + Vulkan API Reference Pages ========================== include::../specversion.txt[] @@ -10,7 +14,20 @@ include::../specversion.txt[] :doctype: book :data-uri: :asciimath: -:toclevels: 2 +:toclevels: 4 + +include::khronoscopyright.txt[] + +Table of Contents +----------------- + * <> + * <> + * <> + * <> + * <> + * <> + * <> + * <> Vulkan Commands --------------- @@ -157,16 +174,224 @@ include::vkWaitForFences.txt[] :leveloffset: 0 +Object Handles +-------------- + +:leveloffset: 2 + +include::VkBuffer.txt[] +include::VkBufferView.txt[] +include::VkCommandBuffer.txt[] +include::VkCommandPool.txt[] +include::VkDescriptorPool.txt[] +include::VkDescriptorSet.txt[] +include::VkDescriptorSetLayout.txt[] +include::VkDevice.txt[] +include::VkDeviceMemory.txt[] +include::VkEvent.txt[] +include::VkFence.txt[] +include::VkFramebuffer.txt[] +include::VkImage.txt[] +include::VkImageView.txt[] +include::VkInstance.txt[] +include::VkPhysicalDevice.txt[] +include::VkPipeline.txt[] +include::VkPipelineCache.txt[] +include::VkPipelineLayout.txt[] +include::VkQueryPool.txt[] +include::VkQueue.txt[] +include::VkRenderPass.txt[] +include::VkSampler.txt[] +include::VkSemaphore.txt[] +include::VkShaderModule.txt[] + +:leveloffset: 0 + +Structures +---------- + +:leveloffset: 2 + +include::VkAllocationCallbacks.txt[] +include::VkApplicationInfo.txt[] +include::VkAttachmentDescription.txt[] +include::VkAttachmentReference.txt[] +include::VkBindSparseInfo.txt[] +include::VkBufferCopy.txt[] +include::VkBufferCreateInfo.txt[] +include::VkBufferImageCopy.txt[] +include::VkBufferMemoryBarrier.txt[] +include::VkBufferViewCreateInfo.txt[] +include::VkClearAttachment.txt[] +include::VkClearColorValue.txt[] +include::VkClearDepthStencilValue.txt[] +include::VkClearRect.txt[] +include::VkClearValue.txt[] +include::VkCommandBufferAllocateInfo.txt[] +include::VkCommandBufferBeginInfo.txt[] +include::VkCommandBufferInheritanceInfo.txt[] +include::VkCommandPoolCreateInfo.txt[] +include::VkComponentMapping.txt[] +include::VkComputePipelineCreateInfo.txt[] +include::VkCopyDescriptorSet.txt[] +include::VkDescriptorBufferInfo.txt[] +include::VkDescriptorImageInfo.txt[] +include::VkDescriptorPoolCreateInfo.txt[] +include::VkDescriptorPoolSize.txt[] +include::VkDescriptorSetAllocateInfo.txt[] +include::VkDescriptorSetLayoutBinding.txt[] +include::VkDescriptorSetLayoutCreateInfo.txt[] +include::VkDeviceCreateInfo.txt[] +include::VkDeviceQueueCreateInfo.txt[] +include::VkDispatchIndirectCommand.txt[] +include::VkDrawIndexedIndirectCommand.txt[] +include::VkDrawIndirectCommand.txt[] +include::VkEventCreateInfo.txt[] +include::VkExtensionProperties.txt[] +include::VkExtent2D.txt[] +include::VkExtent3D.txt[] +include::VkFenceCreateInfo.txt[] +include::VkFormatProperties.txt[] +include::VkFramebufferCreateInfo.txt[] +include::VkGraphicsPipelineCreateInfo.txt[] +include::VkImageBlit.txt[] +include::VkImageCopy.txt[] +include::VkImageCreateInfo.txt[] +include::VkImageFormatProperties.txt[] +include::VkImageMemoryBarrier.txt[] +include::VkImageResolve.txt[] +include::VkImageSubresource.txt[] +include::VkImageSubresourceLayers.txt[] +include::VkImageSubresourceRange.txt[] +include::VkImageViewCreateInfo.txt[] +include::VkInstanceCreateInfo.txt[] +include::VkLayerProperties.txt[] +include::VkMappedMemoryRange.txt[] +include::VkMemoryAllocateInfo.txt[] +include::VkMemoryBarrier.txt[] +include::VkMemoryHeap.txt[] +include::VkMemoryRequirements.txt[] +include::VkMemoryType.txt[] +include::VkOffset2D.txt[] +include::VkOffset3D.txt[] +include::VkPhysicalDeviceFeatures.txt[] +include::VkPhysicalDeviceLimits.txt[] +include::VkPhysicalDeviceMemoryProperties.txt[] +include::VkPhysicalDeviceProperties.txt[] +include::VkPhysicalDeviceSparseProperties.txt[] +include::VkPipelineCacheCreateInfo.txt[] +include::VkPipelineColorBlendAttachmentState.txt[] +include::VkPipelineColorBlendStateCreateInfo.txt[] +include::VkPipelineDepthStencilStateCreateInfo.txt[] +include::VkPipelineDynamicStateCreateInfo.txt[] +include::VkPipelineInputAssemblyStateCreateInfo.txt[] +include::VkPipelineLayoutCreateInfo.txt[] +include::VkPipelineMultisampleStateCreateInfo.txt[] +include::VkPipelineRasterizationStateCreateInfo.txt[] +include::VkPipelineShaderStageCreateInfo.txt[] +include::VkPipelineTessellationStateCreateInfo.txt[] +include::VkPipelineVertexInputStateCreateInfo.txt[] +include::VkPipelineViewportStateCreateInfo.txt[] +include::VkPushConstantRange.txt[] +include::VkQueryPoolCreateInfo.txt[] +include::VkQueueFamilyProperties.txt[] +include::VkRect2D.txt[] +include::VkRenderPassBeginInfo.txt[] +include::VkRenderPassCreateInfo.txt[] +include::VkSamplerCreateInfo.txt[] +include::VkSemaphoreCreateInfo.txt[] +include::VkShaderModuleCreateInfo.txt[] +include::VkSparseBufferMemoryBindInfo.txt[] +include::VkSparseImageFormatProperties.txt[] +include::VkSparseImageMemoryBind.txt[] +include::VkSparseImageMemoryBindInfo.txt[] +include::VkSparseImageMemoryRequirements.txt[] +include::VkSparseImageOpaqueMemoryBindInfo.txt[] +include::VkSparseMemoryBind.txt[] +include::VkSpecializationInfo.txt[] +include::VkSpecializationMapEntry.txt[] +include::VkStencilOpState.txt[] +include::VkSubmitInfo.txt[] +include::VkSubpassDependency.txt[] +include::VkSubpassDescription.txt[] +include::VkSubresourceLayout.txt[] +include::VkVertexInputAttributeDescription.txt[] +include::VkVertexInputBindingDescription.txt[] +include::VkViewport.txt[] +include::VkWriteDescriptorSet.txt[] + +:leveloffset: 0 + Enumerations ------------ :leveloffset: 2 +include::VkAccessFlagBits.txt[] +include::VkAttachmentDescriptionFlagBits.txt[] +include::VkAttachmentLoadOp.txt[] +include::VkAttachmentStoreOp.txt[] +include::VkBlendFactor.txt[] +include::VkBlendOp.txt[] +include::VkBorderColor.txt[] +include::VkBufferCreateFlagBits.txt[] +include::VkBufferUsageFlagBits.txt[] +include::VkColorComponentFlagBits.txt[] +include::VkCommandBufferLevel.txt[] +include::VkCommandBufferResetFlagBits.txt[] +include::VkCommandBufferUsageFlagBits.txt[] +include::VkCommandPoolCreateFlagBits.txt[] +include::VkCommandPoolResetFlagBits.txt[] +include::VkCompareOp.txt[] +include::VkComponentSwizzle.txt[] +include::VkCullModeFlagBits.txt[] +include::VkDependencyFlagBits.txt[] +include::VkDescriptorPoolCreateFlagBits.txt[] include::VkDescriptorType.txt[] +include::VkDynamicState.txt[] +include::VkFenceCreateFlagBits.txt[] +include::VkFilter.txt[] +include::VkFormat.txt[] +include::VkFormatFeatureFlagBits.txt[] +include::VkFrontFace.txt[] +include::VkImageAspectFlagBits.txt[] +include::VkImageCreateFlagBits.txt[] include::VkImageLayout.txt[] +include::VkImageTiling.txt[] include::VkImageType.txt[] +include::VkImageUsageFlagBits.txt[] include::VkImageViewType.txt[] +include::VkIndexType.txt[] +include::VkInternalAllocationType.txt[] +include::VkLogicOp.txt[] +include::VkMemoryHeapFlagBits.txt[] +include::VkMemoryPropertyFlagBits.txt[] +include::VkPhysicalDeviceType.txt[] +include::VkPipelineBindPoint.txt[] +include::VkPipelineCacheHeaderVersion.txt[] +include::VkPipelineCreateFlagBits.txt[] +include::VkPipelineStageFlagBits.txt[] +include::VkPolygonMode.txt[] +include::VkPrimitiveTopology.txt[] +include::VkQueryControlFlagBits.txt[] +include::VkQueryPipelineStatisticFlagBits.txt[] +include::VkQueryResultFlagBits.txt[] +include::VkQueryType.txt[] +include::VkQueueFlagBits.txt[] +include::VkResult.txt[] +include::VkSampleCountFlagBits.txt[] +include::VkSamplerAddressMode.txt[] +include::VkSamplerMipmapMode.txt[] +include::VkShaderStageFlagBits.txt[] include::VkSharingMode.txt[] +include::VkSparseImageFormatFlagBits.txt[] +include::VkSparseMemoryBindFlagBits.txt[] +include::VkStencilFaceFlagBits.txt[] +include::VkStencilOp.txt[] +include::VkStructureType.txt[] +include::VkSubpassContents.txt[] +include::VkSystemAllocationScope.txt[] +include::VkVertexInputRate.txt[] :leveloffset: 0 @@ -175,40 +400,108 @@ Flags :leveloffset: 2 +include::VkAccessFlags.txt[] +include::VkAttachmentDescriptionFlags.txt[] include::VkBufferCreateFlags.txt[] include::VkBufferUsageFlags.txt[] +include::VkBufferViewCreateFlags.txt[] +include::VkColorComponentFlags.txt[] +include::VkCommandBufferResetFlags.txt[] +include::VkCommandBufferUsageFlags.txt[] +include::VkCommandPoolCreateFlags.txt[] +include::VkCommandPoolResetFlags.txt[] +include::VkCullModeFlags.txt[] +include::VkDependencyFlags.txt[] +include::VkDescriptorPoolCreateFlags.txt[] +include::VkDescriptorPoolResetFlags.txt[] +include::VkDescriptorSetLayoutCreateFlags.txt[] +include::VkDeviceCreateFlags.txt[] +include::VkDeviceQueueCreateFlags.txt[] +include::VkEventCreateFlags.txt[] +include::VkFenceCreateFlags.txt[] include::VkFormatFeatureFlags.txt[] +include::VkFramebufferCreateFlags.txt[] +include::VkImageAspectFlags.txt[] include::VkImageCreateFlags.txt[] include::VkImageUsageFlags.txt[] +include::VkImageViewCreateFlags.txt[] +include::VkInstanceCreateFlags.txt[] +include::VkMemoryHeapFlags.txt[] +include::VkMemoryMapFlags.txt[] include::VkMemoryPropertyFlags.txt[] +include::VkPipelineCacheCreateFlags.txt[] +include::VkPipelineColorBlendStateCreateFlags.txt[] +include::VkPipelineCreateFlags.txt[] +include::VkPipelineDepthStencilStateCreateFlags.txt[] +include::VkPipelineDynamicStateCreateFlags.txt[] +include::VkPipelineInputAssemblyStateCreateFlags.txt[] +include::VkPipelineLayoutCreateFlags.txt[] +include::VkPipelineMultisampleStateCreateFlags.txt[] +include::VkPipelineRasterizationStateCreateFlags.txt[] +include::VkPipelineShaderStageCreateFlags.txt[] include::VkPipelineStageFlags.txt[] +include::VkPipelineTessellationStateCreateFlags.txt[] +include::VkPipelineVertexInputStateCreateFlags.txt[] +include::VkPipelineViewportStateCreateFlags.txt[] include::VkQueryControlFlags.txt[] +include::VkQueryPipelineStatisticFlags.txt[] +include::VkQueryPoolCreateFlags.txt[] include::VkQueryResultFlags.txt[] include::VkQueueFlags.txt[] +include::VkRenderPassCreateFlags.txt[] +include::VkSampleCountFlags.txt[] +include::VkSamplerCreateFlags.txt[] +include::VkSemaphoreCreateFlags.txt[] +include::VkShaderModuleCreateFlags.txt[] +include::VkShaderStageFlags.txt[] +include::VkSparseImageFormatFlags.txt[] +include::VkSparseMemoryBindFlags.txt[] +include::VkStencilFaceFlags.txt[] +include::VkSubpassDescriptionFlags.txt[] :leveloffset: 0 -Structures ----------- +Function Pointer Types +---------------------- :leveloffset: 2 -include::VkAllocationCallbacks.txt[] -include::VkBufferCreateInfo.txt[] -include::VkBufferMemoryBarrier.txt[] -include::VkCommandBufferAllocateInfo.txt[] -include::VkDescriptorSetAllocateInfo.txt[] -include::VkImageCreateInfo.txt[] -include::VkImageMemoryBarrier.txt[] -include::VkMemoryAllocateInfo.txt[] -include::VkPhysicalDeviceFeatures.txt[] -include::VkPhysicalDeviceLimits.txt[] -include::VkPipelineLayoutCreateInfo.txt[] -include::VkQueueFamilyProperties.txt[] -include::VkWriteDescriptorSet.txt[] +include::PFN_vkAllocationFunction.txt[] +include::PFN_vkFreeFunction.txt[] +include::PFN_vkInternalAllocationNotification.txt[] +include::PFN_vkInternalFreeNotification.txt[] +include::PFN_vkReallocationFunction.txt[] +include::PFN_vkVoidFunction.txt[] + +:leveloffset: 0 + +Vulkan Scalar types +------------------- + +:leveloffset: 2 + +include::VkBool32.txt[] +include::VkDeviceSize.txt[] +include::VkFlags.txt[] +include::VkSampleMask.txt[] + +:leveloffset: 0 + +C Macro Definitions +------------------- + +:leveloffset: 2 + +include::VK_API_VERSION.txt[] +include::VK_API_VERSION_1_0.txt[] +include::VK_DEFINE_HANDLE.txt[] +include::VK_DEFINE_NON_DISPATCHABLE_HANDLE.txt[] +include::VK_HEADER_VERSION.txt[] +include::VK_MAKE_VERSION.txt[] +include::VK_NULL_HANDLE.txt[] +include::VK_VERSION_MAJOR.txt[] +include::VK_VERSION_MINOR.txt[] +include::VK_VERSION_PATCH.txt[] :leveloffset: 0 -[index] -Index ------ diff --git a/doc/specs/vulkan/man/images/icons/note.png b/doc/specs/vulkan/man/images/icons/note.png new file mode 100644 index 0000000000..7c1f3e2fa7 Binary files /dev/null and b/doc/specs/vulkan/man/images/icons/note.png differ diff --git a/doc/specs/vulkan/man/khronoscopyright.txt b/doc/specs/vulkan/man/khronoscopyright.txt index 3c48008d5a..91c0aed41a 100644 --- a/doc/specs/vulkan/man/khronoscopyright.txt +++ b/doc/specs/vulkan/man/khronoscopyright.txt @@ -1,6 +1,7 @@ Copyright --------- -Copyright (C) 2014-2016 Khronos Group. This material may be distributed subject to -the terms and conditions set forth in the Open Publication License, v 1.0, 8 -June 1999. http://opencontent.org/openpub/. +Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +http://creativecommons.org/licenses/by/4.0/[Creative Commons +Attribution 4.0 International License]. + diff --git a/doc/specs/vulkan/man/manpages.mak b/doc/specs/vulkan/man/manpages.mak deleted file mode 100644 index a6ac2745aa..0000000000 --- a/doc/specs/vulkan/man/manpages.mak +++ /dev/null @@ -1,508 +0,0 @@ -MANDIR?=. -MANSECTION:=3 - -WSIFLAGSSOURCES=\ - $(MANDIR)/VkAndroidSurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkCompositeAlphaFlagsKHR.txt \ - $(MANDIR)/VkDisplayModeCreateFlagsKHR.txt \ - $(MANDIR)/VkDisplayPlaneAlphaFlagsKHR.txt \ - $(MANDIR)/VkDisplaySurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkMirSurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkSurfaceTransformFlagsKHR.txt \ - $(MANDIR)/VkSwapchainCreateFlagsKHR.txt \ - $(MANDIR)/VkWaylandSurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkWin32SurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkXcbSurfaceCreateFlagsKHR.txt \ - $(MANDIR)/VkXlibSurfaceCreateFlagsKHR.txt - -WSISTRUCTSOURCES=\ - $(MANDIR)/VkAndroidSurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkDisplayModeCreateInfoKHR.txt \ - $(MANDIR)/VkDisplayModeParametersKHR.txt \ - $(MANDIR)/VkDisplayModePropertiesKHR.txt \ - $(MANDIR)/VkDisplayPlaneCapabilitiesKHR.txt \ - $(MANDIR)/VkDisplayPlanePropertiesKHR.txt \ - $(MANDIR)/VkDisplayPresentInfoKHR.txt \ - $(MANDIR)/VkDisplayPropertiesKHR.txt \ - $(MANDIR)/VkDisplaySurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkMirSurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkPresentInfoKHR.txt \ - $(MANDIR)/VkSurfaceCapabilitiesKHR.txt \ - $(MANDIR)/VkSurfaceFormatKHR.txt \ - $(MANDIR)/VkSwapchainCreateInfoKHR.txt \ - $(MANDIR)/VkWaylandSurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkWin32SurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkXcbSurfaceCreateInfoKHR.txt \ - $(MANDIR)/VkXlibSurfaceCreateInfoKHR.txt - -WSIFUNCSOURCES=\ - $(MANDIR)/vkAcquireNextImageKHR.txt \ - $(MANDIR)/vkCreateAndroidSurfaceKHR.txt \ - $(MANDIR)/vkCreateDisplayModeKHR.txt \ - $(MANDIR)/vkCreateDisplayPlaneSurfaceKHR.txt \ - $(MANDIR)/vkCreateMirSurfaceKHR.txt \ - $(MANDIR)/vkCreateSharedSwapchainsKHR.txt \ - $(MANDIR)/vkCreateSwapchainKHR.txt \ - $(MANDIR)/vkCreateWaylandSurfaceKHR.txt \ - $(MANDIR)/vkCreateWin32SurfaceKHR.txt \ - $(MANDIR)/vkCreateXcbSurfaceKHR.txt \ - $(MANDIR)/vkCreateXlibSurfaceKHR.txt \ - $(MANDIR)/vkDestroySurfaceKHR.txt \ - $(MANDIR)/vkDestroySwapchainKHR.txt \ - $(MANDIR)/vkGetDisplayModePropertiesKHR.txt \ - $(MANDIR)/vkGetDisplayPlaneCapabilitiesKHR.txt \ - $(MANDIR)/vkGetDisplayPlaneSupportedDisplaysKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceDisplayPropertiesKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceMirPresentationSupportKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceSurfaceFormatsKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceSurfacePresentModesKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceSurfaceSupportKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt \ - $(MANDIR)/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt \ - $(MANDIR)/vkGetSwapchainImagesKHR.txt \ - $(MANDIR)/vkQueuePresentKHR.txt \ - -WSIENUMSOURCES=\ - $(MANDIR)/VkColorSpaceKHR.txt \ - $(MANDIR)/VkCompositeAlphaFlagBitsKHR.txt \ - $(MANDIR)/VkDisplayPlaneAlphaFlagBitsKHR.txt \ - $(MANDIR)/VkPresentModeKHR.txt \ - $(MANDIR)/VkSurfaceTransformFlagBitsKHR.txt - -WSISOURCES = $(WSIENUMSOURCES) $(WSLFLAGSSOURCES) $(WSIFUNCSOURCES) $(WSISTRUCTSOURCES) - -EXTSOURCES=\ - $(MANDIR)/VkDebugReportFlagsEXT.txt \ - $(MANDIR)/VkDebugReportErrorEXT.txt \ - $(MANDIR)/VkDebugReportFlagBitsEXT.txt \ - $(MANDIR)/VkDebugReportObjectTypeEXT.txt \ - $(MANDIR)/VkDebugReportCallbackCreateInfoEXT.txt \ - $(MANDIR)/vkCreateDebugReportCallbackEXT.txt \ - $(MANDIR)/vkDebugReportMessageEXT.txt \ - $(MANDIR)/vkDestroyDebugReportCallbackEXT.txt - -FUNCSOURCES=\ - $(MANDIR)/vkAllocateCommandBuffers.txt \ - $(MANDIR)/vkAllocateDescriptorSets.txt \ - $(MANDIR)/vkAllocateMemory.txt \ - $(MANDIR)/vkBeginCommandBuffer.txt \ - $(MANDIR)/vkBindBufferMemory.txt \ - $(MANDIR)/vkBindImageMemory.txt \ - $(MANDIR)/vkCmdBeginQuery.txt \ - $(MANDIR)/vkCmdBeginRenderPass.txt \ - $(MANDIR)/vkCmdBindDescriptorSets.txt \ - $(MANDIR)/vkCmdBindIndexBuffer.txt \ - $(MANDIR)/vkCmdBindPipeline.txt \ - $(MANDIR)/vkCmdBindVertexBuffers.txt \ - $(MANDIR)/vkCmdBlitImage.txt \ - $(MANDIR)/vkCmdClearAttachments.txt \ - $(MANDIR)/vkCmdClearColorImage.txt \ - $(MANDIR)/vkCmdClearDepthStencilImage.txt \ - $(MANDIR)/vkCmdCopyBuffer.txt \ - $(MANDIR)/vkCmdCopyBufferToImage.txt \ - $(MANDIR)/vkCmdCopyImage.txt \ - $(MANDIR)/vkCmdCopyImageToBuffer.txt \ - $(MANDIR)/vkCmdCopyQueryPoolResults.txt \ - $(MANDIR)/vkCmdDispatch.txt \ - $(MANDIR)/vkCmdDispatchIndirect.txt \ - $(MANDIR)/vkCmdDraw.txt \ - $(MANDIR)/vkCmdDrawIndexed.txt \ - $(MANDIR)/vkCmdDrawIndexedIndirect.txt \ - $(MANDIR)/vkCmdDrawIndirect.txt \ - $(MANDIR)/vkCmdEndQuery.txt \ - $(MANDIR)/vkCmdEndRenderPass.txt \ - $(MANDIR)/vkCmdExecuteCommands.txt \ - $(MANDIR)/vkCmdFillBuffer.txt \ - $(MANDIR)/vkCmdNextSubpass.txt \ - $(MANDIR)/vkCmdPipelineBarrier.txt \ - $(MANDIR)/vkCmdPushConstants.txt \ - $(MANDIR)/vkCmdResetEvent.txt \ - $(MANDIR)/vkCmdResetQueryPool.txt \ - $(MANDIR)/vkCmdResolveImage.txt \ - $(MANDIR)/vkCmdSetBlendConstants.txt \ - $(MANDIR)/vkCmdSetDepthBias.txt \ - $(MANDIR)/vkCmdSetDepthBounds.txt \ - $(MANDIR)/vkCmdSetEvent.txt \ - $(MANDIR)/vkCmdSetLineWidth.txt \ - $(MANDIR)/vkCmdSetScissor.txt \ - $(MANDIR)/vkCmdSetStencilCompareMask.txt \ - $(MANDIR)/vkCmdSetStencilReference.txt \ - $(MANDIR)/vkCmdSetStencilWriteMask.txt \ - $(MANDIR)/vkCmdSetViewport.txt \ - $(MANDIR)/vkCmdUpdateBuffer.txt \ - $(MANDIR)/vkCmdWaitEvents.txt \ - $(MANDIR)/vkCmdWriteTimestamp.txt \ - $(MANDIR)/vkCreateBuffer.txt \ - $(MANDIR)/vkCreateBufferView.txt \ - $(MANDIR)/vkCreateCommandPool.txt \ - $(MANDIR)/vkCreateComputePipelines.txt \ - $(MANDIR)/vkCreateDescriptorPool.txt \ - $(MANDIR)/vkCreateDescriptorSetLayout.txt \ - $(MANDIR)/vkCreateDevice.txt \ - $(MANDIR)/vkCreateEvent.txt \ - $(MANDIR)/vkCreateFence.txt \ - $(MANDIR)/vkCreateFramebuffer.txt \ - $(MANDIR)/vkCreateGraphicsPipelines.txt \ - $(MANDIR)/vkCreateImage.txt \ - $(MANDIR)/vkCreateImageView.txt \ - $(MANDIR)/vkCreateInstance.txt \ - $(MANDIR)/vkCreatePipelineCache.txt \ - $(MANDIR)/vkCreatePipelineLayout.txt \ - $(MANDIR)/vkCreateQueryPool.txt \ - $(MANDIR)/vkCreateRenderPass.txt \ - $(MANDIR)/vkCreateSampler.txt \ - $(MANDIR)/vkCreateSemaphore.txt \ - $(MANDIR)/vkCreateShaderModule.txt \ - $(MANDIR)/vkDestroyBuffer.txt \ - $(MANDIR)/vkDestroyBufferView.txt \ - $(MANDIR)/vkDestroyCommandPool.txt \ - $(MANDIR)/vkDestroyDescriptorPool.txt \ - $(MANDIR)/vkDestroyDescriptorSetLayout.txt \ - $(MANDIR)/vkDestroyDevice.txt \ - $(MANDIR)/vkDestroyEvent.txt \ - $(MANDIR)/vkDestroyFence.txt \ - $(MANDIR)/vkDestroyFramebuffer.txt \ - $(MANDIR)/vkDestroyImage.txt \ - $(MANDIR)/vkDestroyImageView.txt \ - $(MANDIR)/vkDestroyInstance.txt \ - $(MANDIR)/vkDestroyPipeline.txt \ - $(MANDIR)/vkDestroyPipelineCache.txt \ - $(MANDIR)/vkDestroyPipelineLayout.txt \ - $(MANDIR)/vkDestroyQueryPool.txt \ - $(MANDIR)/vkDestroyRenderPass.txt \ - $(MANDIR)/vkDestroySampler.txt \ - $(MANDIR)/vkDestroySemaphore.txt \ - $(MANDIR)/vkDestroyShaderModule.txt \ - $(MANDIR)/vkDeviceWaitIdle.txt \ - $(MANDIR)/vkEndCommandBuffer.txt \ - $(MANDIR)/vkEnumerateDeviceExtensionProperties.txt \ - $(MANDIR)/vkEnumerateDeviceLayerProperties.txt \ - $(MANDIR)/vkEnumerateInstanceExtensionProperties.txt \ - $(MANDIR)/vkEnumerateInstanceLayerProperties.txt \ - $(MANDIR)/vkEnumeratePhysicalDevices.txt \ - $(MANDIR)/vkFlushMappedMemoryRanges.txt \ - $(MANDIR)/vkFreeCommandBuffers.txt \ - $(MANDIR)/vkFreeDescriptorSets.txt \ - $(MANDIR)/vkFreeMemory.txt \ - $(MANDIR)/vkGetBufferMemoryRequirements.txt \ - $(MANDIR)/vkGetDeviceMemoryCommitment.txt \ - $(MANDIR)/vkGetDeviceProcAddr.txt \ - $(MANDIR)/vkGetDeviceQueue.txt \ - $(MANDIR)/vkGetEventStatus.txt \ - $(MANDIR)/vkGetFenceStatus.txt \ - $(MANDIR)/vkGetImageMemoryRequirements.txt \ - $(MANDIR)/vkGetImageSparseMemoryRequirements.txt \ - $(MANDIR)/vkGetImageSubresourceLayout.txt \ - $(MANDIR)/vkGetInstanceProcAddr.txt \ - $(MANDIR)/vkGetPhysicalDeviceFeatures.txt \ - $(MANDIR)/vkGetPhysicalDeviceFormatProperties.txt \ - $(MANDIR)/vkGetPhysicalDeviceImageFormatProperties.txt \ - $(MANDIR)/vkGetPhysicalDeviceMemoryProperties.txt \ - $(MANDIR)/vkGetPhysicalDeviceProperties.txt \ - $(MANDIR)/vkGetPhysicalDeviceQueueFamilyProperties.txt \ - $(MANDIR)/vkGetPhysicalDeviceSparseImageFormatProperties.txt \ - $(MANDIR)/vkGetPipelineCacheData.txt \ - $(MANDIR)/vkGetQueryPoolResults.txt \ - $(MANDIR)/vkGetRenderAreaGranularity.txt \ - $(MANDIR)/vkInvalidateMappedMemoryRanges.txt \ - $(MANDIR)/vkMapMemory.txt \ - $(MANDIR)/vkMergePipelineCaches.txt \ - $(MANDIR)/vkQueueBindSparse.txt \ - $(MANDIR)/vkQueueSubmit.txt \ - $(MANDIR)/vkQueueWaitIdle.txt \ - $(MANDIR)/vkResetCommandBuffer.txt \ - $(MANDIR)/vkResetCommandPool.txt \ - $(MANDIR)/vkResetDescriptorPool.txt \ - $(MANDIR)/vkResetEvent.txt \ - $(MANDIR)/vkResetFences.txt \ - $(MANDIR)/vkSetEvent.txt \ - $(MANDIR)/vkUnmapMemory.txt \ - $(MANDIR)/vkUpdateDescriptorSets.txt \ - $(MANDIR)/vkWaitForFences.txt - -STRUCTSOURCES=\ - $(MANDIR)/VkAllocationCallbacks.txt \ - $(MANDIR)/VkCommandBufferAllocateInfo.txt \ - $(MANDIR)/VkDescriptorSetAllocateInfo.txt \ - $(MANDIR)/VkBufferCreateInfo.txt \ - $(MANDIR)/VkBufferMemoryBarrier.txt \ - $(MANDIR)/VkImageCreateInfo.txt \ - $(MANDIR)/VkImageMemoryBarrier.txt \ - $(MANDIR)/VkPhysicalDeviceFeatures.txt \ - $(MANDIR)/VkPhysicalDeviceLimits.txt \ - $(MANDIR)/VkPipelineLayoutCreateInfo.txt \ - $(MANDIR)/VkQueueFamilyProperties.txt \ - $(MANDIR)/VkWriteDescriptorSet.txt \ - $(MANDIR)/VkApplicationInfo.txt \ - $(MANDIR)/VkAttachmentDescription.txt \ - $(MANDIR)/VkAttachmentReference.txt \ - $(MANDIR)/VkBindSparseInfo.txt \ - $(MANDIR)/VkBufferCopy.txt \ - $(MANDIR)/VkBufferImageCopy.txt \ - $(MANDIR)/VkBufferViewCreateInfo.txt \ - $(MANDIR)/VkClearAttachment.txt \ - $(MANDIR)/VkClearColorValue.txt \ - $(MANDIR)/VkClearDepthStencilValue.txt \ - $(MANDIR)/VkClearRect.txt \ - $(MANDIR)/VkClearValue.txt \ - $(MANDIR)/VkCommandBufferBeginInfo.txt \ - $(MANDIR)/VkCommandBufferInheritanceInfo.txt \ - $(MANDIR)/VkCommandPoolCreateInfo.txt \ - $(MANDIR)/VkComponentMapping.txt \ - $(MANDIR)/VkComputePipelineCreateInfo.txt \ - $(MANDIR)/VkCopyDescriptorSet.txt \ - $(MANDIR)/VkDescriptorBufferInfo.txt \ - $(MANDIR)/VkDescriptorImageInfo.txt \ - $(MANDIR)/VkDescriptorPoolCreateInfo.txt \ - $(MANDIR)/VkDescriptorPoolSize.txt \ - $(MANDIR)/VkDescriptorSetLayoutBinding.txt \ - $(MANDIR)/VkDescriptorSetLayoutCreateInfo.txt \ - $(MANDIR)/VkDeviceCreateInfo.txt \ - $(MANDIR)/VkDeviceQueueCreateInfo.txt \ - $(MANDIR)/VkDispatchIndirectCommand.txt \ - $(MANDIR)/VkDrawIndexedIndirectCommand.txt \ - $(MANDIR)/VkDrawIndirectCommand.txt \ - $(MANDIR)/VkEventCreateInfo.txt \ - $(MANDIR)/VkExtensionProperties.txt \ - $(MANDIR)/VkExtent2D.txt \ - $(MANDIR)/VkExtent3D.txt \ - $(MANDIR)/VkFenceCreateInfo.txt \ - $(MANDIR)/VkFormatProperties.txt \ - $(MANDIR)/VkFramebufferCreateInfo.txt \ - $(MANDIR)/VkGraphicsPipelineCreateInfo.txt \ - $(MANDIR)/VkImageBlit.txt \ - $(MANDIR)/VkImageCopy.txt \ - $(MANDIR)/VkImageFormatProperties.txt \ - $(MANDIR)/VkImageResolve.txt \ - $(MANDIR)/VkImageSubresourceLayers.txt \ - $(MANDIR)/VkImageSubresourceRange.txt \ - $(MANDIR)/VkImageSubresource.txt \ - $(MANDIR)/VkImageViewCreateInfo.txt \ - $(MANDIR)/VkInstanceCreateInfo.txt \ - $(MANDIR)/VkLayerProperties.txt \ - $(MANDIR)/VkMappedMemoryRange.txt \ - $(MANDIR)/VkMemoryAllocateInfo.txt \ - $(MANDIR)/VkMemoryBarrier.txt \ - $(MANDIR)/VkMemoryHeap.txt \ - $(MANDIR)/VkMemoryRequirements.txt \ - $(MANDIR)/VkMemoryType.txt \ - $(MANDIR)/VkOffset2D.txt \ - $(MANDIR)/VkOffset3D.txt \ - $(MANDIR)/VkPhysicalDeviceMemoryProperties.txt \ - $(MANDIR)/VkPhysicalDeviceProperties.txt \ - $(MANDIR)/VkPhysicalDeviceSparseProperties.txt \ - $(MANDIR)/VkPipelineCacheCreateInfo.txt \ - $(MANDIR)/VkPipelineColorBlendAttachmentState.txt \ - $(MANDIR)/VkPipelineColorBlendStateCreateInfo.txt \ - $(MANDIR)/VkPipelineDepthStencilStateCreateInfo.txt \ - $(MANDIR)/VkPipelineDynamicStateCreateInfo.txt \ - $(MANDIR)/VkPipelineInputAssemblyStateCreateInfo.txt \ - $(MANDIR)/VkPipelineMultisampleStateCreateInfo.txt \ - $(MANDIR)/VkPipelineRasterizationStateCreateInfo.txt \ - $(MANDIR)/VkPipelineShaderStageCreateInfo.txt \ - $(MANDIR)/VkPipelineTessellationStateCreateInfo.txt \ - $(MANDIR)/VkPipelineVertexInputStateCreateInfo.txt \ - $(MANDIR)/VkPipelineViewportStateCreateInfo.txt \ - $(MANDIR)/VkPushConstantRange.txt \ - $(MANDIR)/VkQueryPoolCreateInfo.txt \ - $(MANDIR)/VkRect2D.txt \ - $(MANDIR)/VkRenderPassBeginInfo.txt \ - $(MANDIR)/VkRenderPassCreateInfo.txt \ - $(MANDIR)/VkSamplerCreateInfo.txt \ - $(MANDIR)/VkSemaphoreCreateInfo.txt \ - $(MANDIR)/VkShaderModuleCreateInfo.txt \ - $(MANDIR)/VkSparseBufferMemoryBindInfo.txt \ - $(MANDIR)/VkSparseImageFormatProperties.txt \ - $(MANDIR)/VkSparseImageMemoryBindInfo.txt \ - $(MANDIR)/VkSparseImageMemoryBind.txt \ - $(MANDIR)/VkSparseImageMemoryRequirements.txt \ - $(MANDIR)/VkSparseImageOpaqueMemoryBindInfo.txt \ - $(MANDIR)/VkSparseMemoryBind.txt \ - $(MANDIR)/VkSpecializationInfo.txt \ - $(MANDIR)/VkSpecializationMapEntry.txt \ - $(MANDIR)/VkStencilOpState.txt \ - $(MANDIR)/VkSubmitInfo.txt \ - $(MANDIR)/VkSubpassDependency.txt \ - $(MANDIR)/VkSubpassDescription.txt \ - $(MANDIR)/VkSubresourceLayout.txt \ - $(MANDIR)/VkVertexInputAttributeDescription.txt \ - $(MANDIR)/VkVertexInputBindingDescription.txt \ - $(MANDIR)/VkViewport.txt - -FLAGSSOURCES=\ - $(MANDIR)/VkBufferCreateFlags.txt \ - $(MANDIR)/VkBufferUsageFlags.txt \ - $(MANDIR)/VkFormatFeatureFlags.txt \ - $(MANDIR)/VkImageCreateFlags.txt \ - $(MANDIR)/VkImageUsageFlags.txt \ - $(MANDIR)/VkMemoryPropertyFlags.txt \ - $(MANDIR)/VkPipelineStageFlags.txt \ - $(MANDIR)/VkQueryControlFlags.txt \ - $(MANDIR)/VkQueryResultFlags.txt \ - $(MANDIR)/VkQueueFlags.txt \ - $(MANDIR)/VkAccessFlags.txt \ - $(MANDIR)/VkAttachmentDescriptionFlags.txt \ - $(MANDIR)/VkBufferViewCreateFlags.txt \ - $(MANDIR)/VkColorComponentFlags.txt \ - $(MANDIR)/VkCommandBufferResetFlags.txt \ - $(MANDIR)/VkCommandBufferUsageFlags.txt \ - $(MANDIR)/VkCommandPoolCreateFlags.txt \ - $(MANDIR)/VkCommandPoolResetFlags.txt \ - $(MANDIR)/VkCullModeFlags.txt \ - $(MANDIR)/VkDependencyFlags.txt \ - $(MANDIR)/VkDescriptorPoolCreateFlags.txt \ - $(MANDIR)/VkDescriptorPoolResetFlags.txt \ - $(MANDIR)/VkDescriptorSetLayoutCreateFlags.txt \ - $(MANDIR)/VkDeviceCreateFlags.txt \ - $(MANDIR)/VkDeviceQueueCreateFlags.txt \ - $(MANDIR)/VkEventCreateFlags.txt \ - $(MANDIR)/VkFenceCreateFlags.txt \ - $(MANDIR)/VkFramebufferCreateFlags.txt \ - $(MANDIR)/VkImageAspectFlags.txt \ - $(MANDIR)/VkImageViewCreateFlags.txt \ - $(MANDIR)/VkInstanceCreateFlags.txt \ - $(MANDIR)/VkMemoryHeapFlags.txt \ - $(MANDIR)/VkMemoryMapFlags.txt \ - $(MANDIR)/VkPipelineCacheCreateFlags.txt \ - $(MANDIR)/VkPipelineColorBlendStateCreateFlags.txt \ - $(MANDIR)/VkPipelineCreateFlags.txt \ - $(MANDIR)/VkPipelineDepthStencilStateCreateFlags.txt \ - $(MANDIR)/VkPipelineDynamicStateCreateFlags.txt \ - $(MANDIR)/VkPipelineInputAssemblyStateCreateFlags.txt \ - $(MANDIR)/VkPipelineLayoutCreateFlags.txt \ - $(MANDIR)/VkPipelineMultisampleStateCreateFlags.txt \ - $(MANDIR)/VkPipelineRasterizationStateCreateFlags.txt \ - $(MANDIR)/VkPipelineShaderStageCreateFlags.txt \ - $(MANDIR)/VkPipelineTessellationStateCreateFlags.txt \ - $(MANDIR)/VkPipelineVertexInputStateCreateFlags.txt \ - $(MANDIR)/VkPipelineViewportStateCreateFlags.txt \ - $(MANDIR)/VkQueryPipelineStatisticFlags.txt \ - $(MANDIR)/VkQueryPoolCreateFlags.txt \ - $(MANDIR)/VkRenderPassCreateFlags.txt \ - $(MANDIR)/VkSampleCountFlags.txt \ - $(MANDIR)/VkSamplerCreateFlags.txt \ - $(MANDIR)/VkSemaphoreCreateFlags.txt \ - $(MANDIR)/VkShaderModuleCreateFlags.txt \ - $(MANDIR)/VkShaderStageFlags.txt \ - $(MANDIR)/VkSparseImageFormatFlags.txt \ - $(MANDIR)/VkSparseMemoryBindFlags.txt \ - $(MANDIR)/VkStencilFaceFlags.txt \ - $(MANDIR)/VkSubpassDescriptionFlags.txt - -ENUMSOURCES=\ - $(MANDIR)/VkDescriptorType.txt \ - $(MANDIR)/VkImageLayout.txt \ - $(MANDIR)/VkImageType.txt \ - $(MANDIR)/VkImageViewType.txt \ - $(MANDIR)/VkSharingMode.txt \ - $(MANDIR)/VkAccessFlagBits.txt \ - $(MANDIR)/VkAttachmentDescriptionFlagBits.txt \ - $(MANDIR)/VkAttachmentLoadOp.txt \ - $(MANDIR)/VkAttachmentStoreOp.txt \ - $(MANDIR)/VkBlendFactor.txt \ - $(MANDIR)/VkBlendOp.txt \ - $(MANDIR)/VkBorderColor.txt \ - $(MANDIR)/VkBufferCreateFlagBits.txt \ - $(MANDIR)/VkBufferUsageFlagBits.txt \ - $(MANDIR)/VkColorComponentFlagBits.txt \ - $(MANDIR)/VkCommandBufferLevel.txt \ - $(MANDIR)/VkCommandBufferResetFlagBits.txt \ - $(MANDIR)/VkCommandBufferUsageFlagBits.txt \ - $(MANDIR)/VkCommandPoolCreateFlagBits.txt \ - $(MANDIR)/VkCommandPoolResetFlagBits.txt \ - $(MANDIR)/VkCompareOp.txt \ - $(MANDIR)/VkComponentSwizzle.txt \ - $(MANDIR)/VkCullModeFlagBits.txt \ - $(MANDIR)/VkDependencyFlagBits.txt \ - $(MANDIR)/VkDescriptorPoolCreateFlagBits.txt \ - $(MANDIR)/VkDynamicState.txt \ - $(MANDIR)/VkFenceCreateFlagBits.txt \ - $(MANDIR)/VkFilter.txt \ - $(MANDIR)/VkFormatFeatureFlagBits.txt \ - $(MANDIR)/VkFormat.txt \ - $(MANDIR)/VkFrontFace.txt \ - $(MANDIR)/VkImageAspectFlagBits.txt \ - $(MANDIR)/VkImageCreateFlagBits.txt \ - $(MANDIR)/VkImageTiling.txt \ - $(MANDIR)/VkImageUsageFlagBits.txt \ - $(MANDIR)/VkIndexType.txt \ - $(MANDIR)/VkInternalAllocationType.txt \ - $(MANDIR)/VkLogicOp.txt \ - $(MANDIR)/VkMemoryHeapFlagBits.txt \ - $(MANDIR)/VkMemoryPropertyFlagBits.txt \ - $(MANDIR)/VkPhysicalDeviceType.txt \ - $(MANDIR)/VkPipelineBindPoint.txt \ - $(MANDIR)/VkPipelineCacheHeaderVersion.txt \ - $(MANDIR)/VkPipelineCreateFlagBits.txt \ - $(MANDIR)/VkPipelineStageFlagBits.txt \ - $(MANDIR)/VkPolygonMode.txt \ - $(MANDIR)/VkPrimitiveTopology.txt \ - $(MANDIR)/VkQueryControlFlagBits.txt \ - $(MANDIR)/VkQueryPipelineStatisticFlagBits.txt \ - $(MANDIR)/VkQueryResultFlagBits.txt \ - $(MANDIR)/VkQueryType.txt \ - $(MANDIR)/VkQueueFlagBits.txt \ - $(MANDIR)/VkResult.txt \ - $(MANDIR)/VkSampleCountFlagBits.txt \ - $(MANDIR)/VkSamplerAddressMode.txt \ - $(MANDIR)/VkSamplerMipmapMode.txt \ - $(MANDIR)/VkShaderStageFlagBits.txt \ - $(MANDIR)/VkSparseImageFormatFlagBits.txt \ - $(MANDIR)/VkSparseMemoryBindFlagBits.txt \ - $(MANDIR)/VkStencilFaceFlagBits.txt \ - $(MANDIR)/VkStencilOp.txt \ - $(MANDIR)/VkStructureType.txt \ - $(MANDIR)/VkSubpassContents.txt \ - $(MANDIR)/VkSystemAllocationScope.txt \ - $(MANDIR)/VkVertexInputRate.txt - -MANSOURCES=$(FUNCSOURCES) $(STRUCTSOURCES) $(FLAGSSOURCES) $(ENUMSOURCES) $(WSISOURCES) $(EXTSOURCES) - -MANPAGEDIR=$(OUTDIR)/man/$(MANSECTION) -MANPAGES=$(MANSOURCES:$(MANDIR)/%.txt=$(MANPAGEDIR)/%.$(MANSECTION)) -MANHTMLDIR=$(OUTDIR)/man/html -MANHTML=$(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html) - -manpagesall: manpages manhtmlpages - -manpages: $(MANPAGEDIR) $(MANPAGES) - -manhtmlpages: $(MANHTMLDIR) $(MANHTML) - -manhtmlpages: VKCONF=config/manpages.conf - -# These dependencies don't take into account include directives - -$(MANPAGEDIR)/%.$(MANSECTION): $(MANDIR)/%.$(MANSECTION) - $(QUIET)mv $< $@ - -$(MANDIR)/%.$(MANSECTION): $(MANDIR)/%.txt $(MANDIR)/footer.txt config/manpages.conf - $(QUIET)$(ECHO) Building $@ - $(QUIET)$(A2X) -d manpage -f manpage --asciidoc-opts "-f config/manpages.conf" $(A2XOPTS) $< - -$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANDIR)/footer.txt config/manpages.conf - $(QUIET)$(ECHO) Building $@ - $(QUIET)$(A2X) -d manpage -f xhtml --asciidoc-opts "-f config/manpages.conf" --stylesheet=vkman.css $(A2XOPTS) --destination-dir=$(@D) $< - -$(MANHTMLDIR): - $(QUIET)$(MKDIR) $@ - -$(MANPAGEDIR): - $(QUIET)$(MKDIR) $@ - -clean: cleanmanhtmlpages cleanmanpages - -cleanmanhtmlpages: - $(RM) $(MANHTML) - $(RMRF) $(MANHTMLDIR) - -cleanmanpages: - $(RM) $(MANPAGES) - $(RMRF) $(MANPAGEDIR) - -.PHONY: $(MANHTMLDIR) $(MANPAGEDIR) - diff --git a/doc/specs/vulkan/man/vkAcquireNextImageKHR.txt b/doc/specs/vulkan/man/vkAcquireNextImageKHR.txt deleted file mode 100644 index 3822f439a8..0000000000 --- a/doc/specs/vulkan/man/vkAcquireNextImageKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkAcquireNextImageKHR(3) -======================= - -Name ----- -vkAcquireNextImageKHR - retrieve the index of the next available presentable image. - -C Specification ---------------- - -include::../protos/vkAcquireNextImageKHR.txt[] - -Parameters ----------- - -pname:device:: - The VkDevice associated with the swapchain. - -pname:swapchain:: - The swapchain from which an image is being acquired. - -pname:timeout:: - Indicates how long the function waits, in nanoseconds. - -pname:semaphore:: - A VkSemaphore that will become signaled when the presentation engine has released ownership of the image. - -pname:fence:: - A VkFence that will become signaled when the presentation engine has released ownership of the image. - -pname:pImageIndex:: - A pointer to an integer that is set to the index of the next image to use. - -Description ------------ - -fname:vkAcquireNextImageKHR acquires the next image from the swapchain. - -include::../validity/protos/vkAcquireNextImageKHR.txt[] - -See Also --------- - -flink:vkGetSwapchainImagesKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt index 948b238659..9bf9dc6da4 100644 --- a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt +++ b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkAllocateCommandBuffers(3) =========================== @@ -8,45 +12,48 @@ vkAllocateCommandBuffers - Allocate command buffers from an existing command poo C Specification --------------- +// refBegin vkAllocateCommandBuffers Allocate command buffers from an existing command pool + +To allocate command buffers, call: + include::../protos/vkAllocateCommandBuffers.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the pool from which the command buffers are to be allocated. + * pname:device is the logical device that owns the command pool. + * pname:pAllocateInfo is a pointer to an instance of the + sname:VkCommandBufferAllocateInfo structure describing parameters of the + allocation. + * pname:pCommandBuffers is a pointer to an array of sname:VkCommandBuffer + handles in which the resulting command buffer objects are returned. The + array must: be at least the length specified by the + pname:commandBufferCount member of pname:pAllocateInfo. Each allocated + command buffer begins in the initial state. -pname:pAllocateInfo:: - A pointer to a structure containing information about the command buffers to be allocated. - -pname:pCommandBuffers:: - A pointer to an array of sname:VkCommandBuffer handles that will be filled with the newly allocated command buffers. Description ----------- -fname:vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo -is a pointer to an instance of the slink:VkCommandBufferAllocateInfo structure which -describes the command buffer allocation. The definition of slink:VkCommandBufferAllocateInfo is: +include::../validity/protos/vkAllocateCommandBuffers.txt[] + -include::../structs/VkCommandBufferAllocateInfo.txt[] +See Also +-------- -In pname:pAllocateInfo, pname:sType must be ename:VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO -and, unless an extension is in use, pname:pNext must be code:NULL. pname:commandPool is a handle to the command -pool from which the command buffer should be allocated, and this must be a command pool that is owned -by the device whose handle is passed in pname:device. The pname:level field indicates the level of the -command buffer (primary or secondary) and must be a member of the elink:VkCommandBufferLevel enumeration. -The number of command buffers to allocate is given by pname:commandBufferCount. +slink:VkCommandBuffer, slink:VkCommandBufferAllocateInfo, slink:VkDevice -On success, pname:commandBufferCount new command buffers are returned in the array pointed to -by pname:pCommandBuffers. Command buffers allocated with fname:vkAllocateCommandBuffers must: be freed -using flink:vkFreeCommandBuffers. -include::../validity/protos/vkAllocateCommandBuffers.txt[] +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkAllocateCommandBuffers -flink:vkCreateCommandPool, flink:vkDestroyCommandPool, flink:vkFreeCommandBuffers +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkAllocateDescriptorSets.txt b/doc/specs/vulkan/man/vkAllocateDescriptorSets.txt index bd4b658178..1480a67fa1 100644 --- a/doc/specs/vulkan/man/vkAllocateDescriptorSets.txt +++ b/doc/specs/vulkan/man/vkAllocateDescriptorSets.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkAllocateDescriptorSets(3) =========================== @@ -8,48 +12,61 @@ vkAllocateDescriptorSets - Allocate one or more descriptor sets. C Specification --------------- +// refBegin vkAllocateDescriptorSets Allocate one or more descriptor sets. + +To allocate descriptor sets from a descriptor pool, call: + include::../protos/vkAllocateDescriptorSets.txt[] + Parameters ---------- -pname:device:: - The device that will create the descriptor sets. + * pname:device is the logical device that owns the descriptor pool. + * pname:pAllocateInfo is a pointer to an instance of the + slink:VkDescriptorSetAllocateInfo structure describing parameters of the + allocation. + * pname:pDescriptorSets is a pointer to an array of sname:VkDescriptorSet + handles in which the resulting descriptor set objects are returned. The + array must: be at least the length specified by the + pname:descriptorSetCount member of pname:pAllocateInfo. -pname:pAllocateInfo:: - A pointer to a structure containing information about the sets to allocate. - -pname:pDescriptorSets:: - An array of variables that will receive the handles to the newly created descriptor sets. Description ----------- -fname:vkAllocateDescriptorSets allocates one or more descriptor sets using -information contained in the structure pointed to by pname:pAllocateInfo. -pname:pAllocateInfo is an instance of the slink:VkDescriptorSetAllocateInfo -structure, the definition of which is: - -include::../structs/VkDescriptorSetAllocateInfo.txt[] - -The pname:sType member of slink:VkDescriptorSetAllocateInfo must be set to -ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO. The pname:pNext member -is reserved for use by extensions and should be set to code:NULL. - -The requested sets are allocated from the descriptor pool specified by -pname:descriptorPool. pname:descriptorPool and the resulting descriptor sets -must be owned by the device specified in pname:device. +The allocated descriptor sets are returned in pname:pDescriptorSets. -pname:setLayoutCount specifies the number of sets to allocate. pname:pSetLayouts is -an array of pname:setLayoutCount sname:VkDescriptorSetLayout object handles which -describe the layouts of each of the sets. On success, pname:setLayoutCount descriptor -set handles will be allocated and placed in the pname:pDescriptorSets array. +When a descriptor set is allocated, the initial state is largely +uninitialized and all descriptors are undefined. However, +the descriptor set can: be bound +in a command buffer without causing errors or exceptions. All entries that +are statically used by a pipeline in a drawing or dispatching command must: +have been populated before the descriptor set is bound for use by that command. +Entries that are not statically used by a pipeline can: have uninitialized +descriptors or descriptors of resources that have been destroyed, and executing +a draw or dispatch with such a descriptor set bound does not cause undefined +behavior. This means applications need not populate unused entries with dummy +descriptors. include::../validity/protos/vkAllocateDescriptorSets.txt[] + See Also -------- -flink:vkFreeDescriptorSets, flink:vkUpdateDescriptorSets, flink:vkCreateDescriptorPool, flink:vkCreateDescriptorSetLayout +slink:VkDescriptorSet, slink:VkDescriptorSetAllocateInfo, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkAllocateDescriptorSets + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkAllocateMemory.txt b/doc/specs/vulkan/man/vkAllocateMemory.txt index a58e8753c9..aaefae026a 100644 --- a/doc/specs/vulkan/man/vkAllocateMemory.txt +++ b/doc/specs/vulkan/man/vkAllocateMemory.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkAllocateMemory(3) =================== @@ -8,52 +12,75 @@ vkAllocateMemory - Allocate GPU memory. C Specification --------------- +// refBegin vkAllocateMemory Allocate GPU memory. + +To allocate memory objects, call: + include::../protos/vkAllocateMemory.txt[] + Parameters ---------- -pname:device:: - The device from which to allocate memory. + * pname:device is the logical device that owns the memory. + * pname:pAllocateInfo is a pointer to an instance of the + slink:VkMemoryAllocateInfo structure describing parameters of the + allocation. A successful returned allocation must: use the requested + parameters -- no substitution is permitted by the implementation. + * pname:pAllocator controls host memory allocation as described in + the <> chapter. + * pname:pMemory is a pointer to a sname:VkDeviceMemory handle in which + information about the allocated memory is returned. -pname:pAllocateInfo:: - Pointer to a slink:VkMemoryAllocateInfo structure containing a description of the desired memory allocation. - -pname:pAllocator:: - A pointer to a slink:VkAllocationCallbacks structure containing the allocation callbacks to be used when allocating the object. - -pname:pMemory:: - Pointer to a variable which will receive the newly allocated sname:VkDeviceMemory object. Description ----------- -fname:vkAllocateMemory allocates memory using the device specified in pname:device. The properties of the -new allocation are specified in the structure pointed to by pname:pAllocateInfo, which is an instance -of slink:VkMemoryAllocateInfo. The definition of slink:VkMemoryAllocateInfo is: +Allocations returned by fname:vkAllocateMemory are guaranteed to meet any +alignment requirement by the implementation. For example, if an +implementation requires 128 byte alignment for images and 64 byte alignment +for buffers, the device memory returned through this mechanism would be +128-byte aligned. This ensures that applications can: correctly suballocate +objects of different types (with potentially different alignment +requirements) in the same memory object. + +When memory is allocated, its contents are undefined. + +There is an implementation-dependent maximum number of memory allocations +which can: be simultaneously created on a device. This is specified by the +<> +member of the sname:VkPhysicalDeviceLimits structure. If +pname:maxMemoryAllocationCount is exceeded, fname:vkAllocateMemory will +return ename:VK_ERROR_TOO_MANY_OBJECTS. + +[NOTE] +.Note +==== +Some platforms may: have a limit on the maximum size of a single allocation. +For example, certain systems may: fail to create allocations with a size +greater than or equal to 4GB. Such a limit is implementation-dependent, and +if such a failure occurs then the error ename:VK_ERROR_OUT_OF_DEVICE_MEMORY +should: be returned. +==== + +include::../validity/protos/vkAllocateMemory.txt[] -include::../structs/VkMemoryAllocateInfo.txt[] -The pname:sType member of the slink:VkMemoryAllocateInfo structure must be set to -ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO and the pname:pNext member of the structure is reserved -for use by extensions and should be set to code:NULL if none are in use. +See Also +-------- -The pname:allocationSize member specifies the size in bytes of the requested allocation -and the pname:memoryTypeIndex member specifies the type of memory to allocate. The number of -available memory types and their properties is a feature of the physical device and may -be obtained by calling flink:vkGetPhysicalDeviceMemoryProperties. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkDeviceMemory, slink:VkMemoryAllocateInfo -include::../validity/protos/vkAllocateMemory.txt[] -If any host memory is required to create the memory object, the allocators passed in the -structure pointed to by the pname:pAllocator parameter are used and will be used to free the object -when flink:vkFreeMemory is called. +Document Notes +-------------- -On success, a handle to the new memory object is placed in the variable pointed to by pname:pMemory. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkAllocateMemory -flink:vkFreeMemory +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkBeginCommandBuffer.txt b/doc/specs/vulkan/man/vkBeginCommandBuffer.txt index 46b5d179cf..ee41e7b5cf 100644 --- a/doc/specs/vulkan/man/vkBeginCommandBuffer.txt +++ b/doc/specs/vulkan/man/vkBeginCommandBuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkBeginCommandBuffer(3) ======================= @@ -8,87 +12,44 @@ vkBeginCommandBuffer - Start recording a command buffer C Specification --------------- +// refBegin vkBeginCommandBuffer Start recording a command buffer + +To begin recording a command buffer, call: + include::../protos/vkBeginCommandBuffer.txt[] + Parameters ---------- -pname:commandBuffer:: - A handle to the command buffer that is to be recorded. + * pname:commandBuffer is the handle of the command buffer which is to be + put in the recording state. + * pname:pBeginInfo is an instance of the sname:VkCommandBufferBeginInfo + structure, which defines additional information about how the command + buffer begins recording. -pname:pBeginInfo:: - A pointer to an instance of slink:VkCommandBufferBeginInfo containing information about the command buffer. Description ----------- -fname:vkBeginCommandBuffer begins recording the command buffer whose handle is -specified in pname:commandBuffer. pname:pBeginInfo is a pointer to an instance of the slink:VkCommandBufferBeginInfo -structure whose definition is: - -include::../structs/VkCommandBufferBeginInfo.txt[] - -The ptext:sType member of slink:VkCommandBufferBeginInfo should be set to -ename:VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO and the ptext:pNext member of the structure -is reserved for extensions and should be set to code:NULL if none are in use. - -The pname:flags member of pname:pBeginInfo may be used to indicate the type of workload -expected to be placed in the command buffer, which may allow implementations -to optimize command buffer contents more appropriately. The available flags for use -in this member are: - -include::../enums/VkCommandBufferUsageFlagBits.txt[] - -If the pname:flags member contains ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, -then the command buffer may only be submitted to a queue for execution once, -after which time it must be reset or destroyed. If this flag is not included, -then it is legal to submit the command buffer many times. - -If the pname:flags member contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT -then the command buffer must be a secondary command buffer (see flink:vkAllocateCommandBuffers -for more information) and is considered to be entirely contained inside a renderpass -that is begun in the calling primary command buffer. In such a case, the pname:renderPass, -pname:subpass and pname:framebuffer members refer to the renderpass, subpass and framebuffer -that will be active when the command buffer is referenced with a call to flink:vkCmdExecuteCommands. +include::../validity/protos/vkBeginCommandBuffer.txt[] -If ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT is not set, then the pname:renderPass, -pname:subpass and pname:framebuffer members are ignored. If the command buffer is a primary -command buffer, then new renderpasses may be initiated by calls to flink:vkCmdBeginRenderPass. -If the command buffer is a secondary command buffer, then it may not contain commands that -are legal only inside a renderpass, and may not be called from a primary command buffer -while a renderpass is active. -If the pname:flags member contains ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, -then multiple submissions of the command buffer may be in flight simultaneously. +See Also +-------- -* A primary command buffer is considered to be in flight from the time it is submitted -to a queue by a call to flink:vkQueueSubmit until the time it is retired (signaling -the fence passed to the call to flink:vkQueueSubmit). +slink:VkCommandBuffer, slink:VkCommandBufferBeginInfo -* A secondary command buffer is considered to be in flight from a reference to it -it is made from a primary command buffer using a call to flink:vkCmdExecuteCommands -until that primary command buffer is retired. -If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set, -then only one invocation of the command buffer may be in flight at any time. +Document Notes +-------------- -It should be noted that for primary command buffers, -ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT implies possible multiple submission -of the command buffer, suggesting that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT -should be clear. Secondary command buffers may be referenced at most once from -a primary command buffer (even the same primary command buffer) unless -ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is set. +For more information, see the Vulkan Specification at URL -The pname:renderPass and pname:framebuffer members must be code:VK_NULL_HANDLE -for primary command buffers. For secondary command buffers, they must refer to -the render pass and framebuffer that will be active when the secondary command -buffer is called. +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkBeginCommandBuffer -include::../validity/protos/vkBeginCommandBuffer.txt[] - -See Also --------- - -flink:vkAllocateCommandBuffers, flink:vkFreeCommandBuffers, flink:vkEndCommandBuffer, flink:vkResetCommandBuffer +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkBindBufferMemory.txt b/doc/specs/vulkan/man/vkBindBufferMemory.txt index 0e65460aa5..a819032e5f 100644 --- a/doc/specs/vulkan/man/vkBindBufferMemory.txt +++ b/doc/specs/vulkan/man/vkBindBufferMemory.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkBindBufferMemory(3) ===================== @@ -8,44 +12,47 @@ vkBindBufferMemory - Bind device memory to a buffer object C Specification --------------- +// refBegin vkBindBufferMemory Bind device memory to a buffer object + +To attach memory to a buffer object, call: + include::../protos/vkBindBufferMemory.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the object to which memory will be bound. + * pname:device is the logical device that owns the buffer and memory. + * pname:buffer is the buffer. + * pname:memory is a sname:VkDeviceMemory object describing the device + memory to attach. + * pname:memoryOffset is the start offset of the region of pname:memory + which is to be bound to the buffer. The number of bytes returned in the + sname:VkMemoryRequirements::pname:size member in pname:memory, starting + from pname:memoryOffset bytes, will be bound to the specified buffer. -pname:buffer:: - A handle to the object to which to bind memory. - -pname:memory:: - A handle to the device memory object. - -pname:memoryOffset:: - The offset within the device memory object at which the binding should begin. Description ----------- -fname:vkBindBufferMemory binds a region of the device memory object specified by pname:memory -to the resource buffer specified by pname:buffer. pname:buffer must be the handle of a buffer -resource. - -pname:memoryOffset specifies the offset within pname:memory, in bytes, from which the binding -will begin. The value of pname:memoryOffset must satisfy the alignment requirments of the -object specified in pname:buffer. This value is returned in the ptext:alignment member of the -sname:VkMemoryRequirements retrieved by calling flink:vkGetBufferMemoryRequirements with with pname:buffer -as specified. - -fname:vkBindBufferMemory should be used only for non-sparse resources. Memory is bound to sparse -buffers by calling flink:vkQueueBindSparse. - include::../validity/protos/vkBindBufferMemory.txt[] + See Also -------- -flink:vkQueueBindSparse +slink:VkBuffer, slink:VkDevice, slink:VkDeviceMemory, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkBindBufferMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkBindImageMemory.txt b/doc/specs/vulkan/man/vkBindImageMemory.txt index 23385f32c0..cddd2fef76 100644 --- a/doc/specs/vulkan/man/vkBindImageMemory.txt +++ b/doc/specs/vulkan/man/vkBindImageMemory.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkBindImageMemory(3) ==================== @@ -8,44 +12,47 @@ vkBindImageMemory - Bind device memory to an image object C Specification --------------- +// refBegin vkBindImageMemory Bind device memory to an image object + +To attach memory to an image object, call: + include::../protos/vkBindImageMemory.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the object to which memory will be bound. + * pname:device is the logical device that owns the image and memory. + * pname:image is the image. + * pname:memory is the a sname:VkDeviceMemory object describing the device + memory to attach. + * pname:memoryOffset is the start offset of the region of pname:memory + which is to be bound to the image. The number of bytes returned in the + sname:VkMemoryRequirements::pname:size member in pname:memory, starting + from pname:memoryOffset bytes, will be bound to the specified image. -pname:image:: - A handle to the object to which to bind memory. - -pname:memory:: - A handle to the device memory object. - -pname:memoryOffset:: - The offset within the device memory object at which the binding should begin. Description ----------- -fname:vkBindImageMemory binds a region of the device memory object specified by pname:memory -to the resource image specified by pname:image. pname:image must be the handle of an image -resource. - -pname:memoryOffset specifies the offset within pname:memory, in bytes, from which the binding -will begin. The value of pname:memoryOffset must satisfy the alignment requirments of the -image specified in pname:image. This value is returned in the ptext:alignment member of the -sname:VkMemoryRequirements retrieved by calling flink:vkGetImageMemoryRequirements with with pname:image -as specified. - -fname:vkBindImageMemory should be used only for non-sparse resources. Memory -is bound to sparse imagesby calling flink:vkQueueBindSparse. - include::../validity/protos/vkBindImageMemory.txt[] + See Also -------- -flink:vkQueueBindSparse +slink:VkDevice, slink:VkDeviceMemory, basetypes:VkDeviceSize, slink:VkImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkBindImageMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBeginQuery.txt b/doc/specs/vulkan/man/vkCmdBeginQuery.txt index b9388c7c2c..3262391c9b 100644 --- a/doc/specs/vulkan/man/vkCmdBeginQuery.txt +++ b/doc/specs/vulkan/man/vkCmdBeginQuery.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBeginQuery(3) -=================== +================== Name ---- @@ -8,42 +12,61 @@ vkCmdBeginQuery - Begin a query. C Specification --------------- +// refBegin vkCmdBeginQuery Begin a query. + +To begin a query, call: + include::../protos/vkCmdBeginQuery.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer upon which to execute the query. + * pname:commandBuffer is the command buffer into which this command will + be recorded. + * pname:queryPool is the query pool that will manage the results of the + query. + * pname:query is the query index within the query pool that will contain + the results. + * pname:flags is a bitmask indicating constraints on the types of queries + that can: be performed. Bits which can: be set include: ++ +// refBegin VkQueryControlFlagBits - Bitmask specifying constraints on a query +include::../enums/VkQueryControlFlagBits.txt[] -pname:queryPool:: - The query pool which contains the requested query. - -pname:entry:: - The index of the entry within pname:queryPool at which the query resides. - -pname:flags:: - A set of flags controlling how the query should be executed (see elink:VkQueryControlFlags). Description ----------- -fname:vkCmdBeginQuery begins the query located at the entry indicated by pname:entry in -the pool specified in pname:queryPool. The pname:flags parameter specifies how the query -should be executed and must be one of the flags defined in elink:VkQueryControlFlags. +If the pname:queryType of the pool is ename:VK_QUERY_TYPE_OCCLUSION and +pname:flags contains ename:VK_QUERY_CONTROL_PRECISE_BIT, an implementation +must: return a result that matches the actual number of samples passed. This +is described in more detail in <>. -include::../validity/protos/vkCmdBeginQuery.txt[] +[[queries-operation-active]] +After beginning a query, that query is considered _active_ within the command +buffer it was called in until that same query is ended. Queries active in a +primary command buffer when secondary command buffers are executed are +considered active for those secondary command buffers. -Notes ------ +include::../validity/protos/vkCmdBeginQuery.txt[] -Although fname:vkCmdBeginQuery does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdEndQuery, flink:vkCreateQueryPool, flink:vkCmdResetQueryPool, flink:vkCmdCopyQueryPoolResults, flink:vkGetQueryPoolResults, flink:vkDestroyQueryPool +slink:VkCommandBuffer, elink:VkQueryControlFlags, slink:VkQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBeginQuery + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBeginRenderPass.txt b/doc/specs/vulkan/man/vkCmdBeginRenderPass.txt index eb67b7a34d..6f2b059ccc 100644 --- a/doc/specs/vulkan/man/vkCmdBeginRenderPass.txt +++ b/doc/specs/vulkan/man/vkCmdBeginRenderPass.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBeginRenderPass(3) -======================== +======================= Name ---- @@ -8,56 +12,62 @@ vkCmdBeginRenderPass - Begin a new render pass. C Specification --------------- +// refBegin vkCmdBeginRenderPass Begin a new render pass. + +To begin a render pass instance, call: + include::../protos/vkCmdBeginRenderPass.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer in which to begin the render pass. - -pname:pRenderPassBegin:: - A pointer to a structure describing how to begin the render pass. + * pname:commandBuffer is the command buffer in which to record the + command. + * pname:pRenderPassBegin is a pointer to a slink:VkRenderPassBeginInfo + structure (defined below) which indicates the render pass to begin an + instance of, and the framebuffer the instance uses. + * pname:contents specifies how the commands in the first subpass will be + provided, and is one of the values: ++ +-- +// refBegin VkSubpassContents - specify how commands in the first subpass of a render pass are provided +include::../enums/VkSubpassContents.txt[] +-- ++ +If pname:contents is ename:VK_SUBPASS_CONTENTS_INLINE, the contents of the +subpass will be recorded inline in the primary command buffer, and secondary +command buffers mustnot: be executed within the subpass. If pname:contents +is ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, the contents are +recorded in secondary command buffers that will be called from the primary +command buffer, and fname:vkCmdExecuteCommands is the only valid command on +the command buffer until fname:vkCmdNextSubpass or fname:vkCmdEndRenderPass. -pname:contents:: - A description of how the commands for the first subpass of the render pass - will be issued. Description ----------- -fname:vkCmdBeginRenderPass begins the first subpass of a new render pass in the command buffer specified by -pname:commandBuffer. Information about how to begin the render pass is given in an instance of -the slink:VkRenderPassBeginInfo structure, a pointer to which is specified in pname:pRenderPassBegin. -The definition of slink:VkRenderPassBeginInfo is: +After beginning a render pass instance, the command buffer is ready to +record the commands for the first subpass of that render pass. -include::../structs/VkRenderPassBeginInfo.txt[] +include::../validity/protos/vkCmdBeginRenderPass.txt[] -The pname:contents parameter describes how the commands in the first subpass will be -provided. If it is ename:VK_SUBPASS_CONTENTS_INLINE, the contents of the -subpass will be recorded inline in the primary command buffer, and calling a -secondary command buffer within the subpass is an error. If pname:contents -is ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, the contents are -recorded in secondary command buffers that will be called from the primary -command buffer, and fname:vkCmdExecuteCommands is the only valid command on -the command buffer until fname:vkCmdNextSubpass or fname:vkCmdEndRenderPass. -fname:vkCmdBeginRenderPass is only allowed in primary command buffers. A render -pass must end in the same command buffer in which it was begun. +See Also +-------- + +slink:VkCommandBuffer, slink:VkRenderPassBeginInfo, elink:VkSubpassContents -include::../validity/protos/vkCmdBeginRenderPass.txt[] -Notes ------ +Document Notes +-------------- -Although fname:vkCmdBeginRenderPass does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBeginRenderPass -flink:vkCmdEndRenderPass, flink:vkCreateRenderPass, flink:vkDestroyRenderPass, -flink:vkCmdNextSubpass, flink:vkCmdEndRenderPass +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBindDescriptorSets.txt b/doc/specs/vulkan/man/vkCmdBindDescriptorSets.txt index a1257cbbfb..974ecbc21c 100644 --- a/doc/specs/vulkan/man/vkCmdBindDescriptorSets.txt +++ b/doc/specs/vulkan/man/vkCmdBindDescriptorSets.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBindDescriptorSets(3) ========================== @@ -8,63 +12,107 @@ vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer. C Specification --------------- +// refBegin vkCmdBindDescriptorSets Binds descriptor sets to a command buffer. + +To bind one or more descriptor sets to a command buffer, call: + include::../protos/vkCmdBindDescriptorSets.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which the command is to be placed. + * pname:commandBuffer is the command buffer that the descriptor sets will + be bound to. + * pname:pipelineBindPoint is a elink:VkPipelineBindPoint indicating + whether the descriptors will be used by graphics pipelines or compute + pipelines. There is a separate set of bind points for each of graphics + and compute, so binding one does not disturb the other. + * pname:layout is a sname:VkPipelineLayout object used to program the + bindings. + * pname:firstSet is the set number of the first descriptor set to be + bound. + * pname:descriptorSetCount is the number of elements in the + pname:pDescriptorSets array. + * pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet + objects describing the descriptor sets to write to. + * pname:dynamicOffsetCount is the number of dynamic offsets + in the pname:pDynamicOffsets array. + * pname:pDynamicOffsets is a pointer to an array of basetype:uint32_t + values specifying dynamic offsets. -pname:pipelineBindPoint:: - The pipeline bind point the descriptor sets should be bound to. -pname:layout:: - A handle to the layout used to create the descriptor sets. +Description +----------- -pname:firstSet:: - The first descriptor set index of the pipeline bind point updated by the - command. +fname:vkCmdBindDescriptorSets causes the sets numbered [pname:firstSet.. +pname:firstSet+pname:descriptorSetCount-1] to use the bindings stored in +pname:pDescriptorSets[0..pname:descriptorSetCount-1] for subsequent +rendering commands (either compute or graphics, according to the +pname:pipelineBindPoint). Any bindings that were previously applied via +these sets are no longer valid. + +Once bound, a descriptor set affects rendering of subsequent graphics or +compute commands in the command buffer until a different set is bound to the +same set number, or else until the set is disturbed as described in +<>. + +A compatible descriptor set must: be bound for all set numbers that any +shaders in a pipeline access, at the time that a draw or dispatch command is +recorded to execute using that pipeline. However, if none of the shaders in +a pipeline statically use any bindings with a particular set number, then no +descriptor set need be bound for that set number, even if the pipeline +layout includes a non-trivial descriptor set layout for that set number. + +If any of the sets being bound include dynamic uniform or storage buffers, +then pname:pDynamicOffsets includes one element for each array element +in each dynamic descriptor type binding in each set. Values are taken from +pname:pDynamicOffsets in an order such that all entries for set N come +before set N+1; within a set, entries are ordered by the binding numbers in +the descriptor set layouts; and within a binding array, elements are in +order. pname:dynamicOffsetCount must: equal the total number of dynamic +descriptors in the sets being bound. + +The effective offset used for dynamic uniform and storage buffer bindings is +the sum of the relative offset taken from pname:pDynamicOffsets, and the +base address of the buffer plus base offset in the descriptor set. The +length of the dynamic uniform and storage buffer bindings is the buffer +range as specified in the descriptor set. + +Each of the pname:pDescriptorSets must: be compatible with the pipeline +layout specified by pname:layout. The layout used to program the bindings +must: also be compatible with the pipeline used in subsequent graphics or +compute commands, as defined in the <> section. + +The descriptor set contents bound by a call to fname:vkCmdBindDescriptorSets +may: be consumed during host execution of the command, or during +shader execution of the resulting draws, or any time in between. Thus, the +contents mustnot: be altered (overwritten by an update command, or freed) +between when the command is recorded and when the command completes +executing on the queue. The contents of pname:pDynamicOffsets are consumed +immediately during execution of fname:vkCmdBindDescriptorSets. Once all +pending uses have completed, it is legal to update and reuse a descriptor +set. -pname:descriptorSetCount:: - The number of descriptor set index of the pipeline bind point updated by - the command. +include::../validity/protos/vkCmdBindDescriptorSets.txt[] -pname:pDescriptorSets:: - An array of pname:descriptorSetCount number of descriptor set objects to - bind. -pname:dynamicOffsetCount:: - The number of dynamic offsets to be applied to the descriptor sets. +See Also +-------- -pname:pDynamicOffsets:: - An array of pname:dynamicOffsetCount number of offsets, each corresponding to a dynamic buffer descriptor - in the specified descriptor sets. +slink:VkCommandBuffer, slink:VkDescriptorSet, elink:VkPipelineBindPoint, slink:VkPipelineLayout -Description ------------ -fname:vkCmdBindDescriptorSets updates pname:descriptorSetCount number of -descriptor set bindings of the pipeline bind point specified by -pname:pipelineBindPoint starting from descriptor set index specified by -pname:firstSet. The parameter pname:pDescriptorSets specifies an array of -pname:descriptorSetCount number of descriptor set objects to bind. - -pname:pDynamicOffsets provides pname:dynamicOffsetCount number of offsets -used for the dynamic buffer descriptors in the specified descriptor sets. -Each offset corresponds to one dynamic buffer descriptor entry in the set -index range. The order the offsets should be specified so that offsets -corresponding to lower indexed sets appear before offsets corresponding to -higher indexed sets, while offsets of the same set index should be specified -so that offsets corresponding to lower indexed bindings appear before -offsets corresponding to higher indexed bindings. +Document Notes +-------------- -include::../validity/protos/vkCmdBindDescriptorSets.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBindDescriptorSets -flink:vkAllocateDescriptorSets, flink:vkFreeDescriptorSets, -flink:vkCreateDescriptorPool, flink:vkCreateDescriptorSetLayout +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBindIndexBuffer.txt b/doc/specs/vulkan/man/vkCmdBindIndexBuffer.txt index 736bb2220d..aac18abf7a 100644 --- a/doc/specs/vulkan/man/vkCmdBindIndexBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdBindIndexBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBindIndexBuffer(3) -======================== +======================= Name ---- @@ -8,46 +12,51 @@ vkCmdBindIndexBuffer - Bind an index buffer to a command buffer. C Specification --------------- +// refBegin vkCmdBindIndexBuffer Bind an index buffer to a command buffer. + +To bind an index buffer to a command buffer, call: + include::../protos/vkCmdBindIndexBuffer.txt[] + Parameters ---------- -pname:commandBuffer:: - Specifies the command buffer to which to bind the index buffer. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:buffer is the buffer being bound. + * pname:offset is the starting offset in bytes within pname:buffer used in + index buffer address calculations. + * pname:indexType selects whether indices are treated as 16 bits or 32 + bits. Possible values include: ++ +-- +// refBegin VkIndexType - type of index buffer indices +include::../enums/VkIndexType.txt[] +-- -pname:buffer:: - The buffer object to bind. - -pname:offset:: - The offset from the start of the buffer object where index data begins. - -pname:indexType:: - The type of the index data stored in the buffer. Description ----------- -fname:vkCmdBindIndexBuffer binds the buffer object specified by pname:buffer, starting -at the byte offset specified in pname:offset as an index buffer on the graphics pipeline bind point -on pname:commandBuffer. pname:indexType specifies the type of the index data and must be one of -ename:VK_INDEX_TYPE_UINT16 or ename:VK_INDEX_TYPE_UINT32, to indicate 16- or 32-bit unsigned data, respectively. - -If pname:indexType is ename:VK_INDEX_TYPE_UINT16, then pname:offset must be a multiple of two. If pname:indexType -is ename:VK_INDEX_TYPE_UINT32, then offset must be a multiple of four. - include::../validity/protos/vkCmdBindIndexBuffer.txt[] -Notes ------ - -Although fname:vkCmdBindIndexBuffer does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDrawIndexed +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize, elink:VkIndexType + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBindIndexBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBindPipeline.txt b/doc/specs/vulkan/man/vkCmdBindPipeline.txt index 52a46a7b87..b08f437a50 100644 --- a/doc/specs/vulkan/man/vkCmdBindPipeline.txt +++ b/doc/specs/vulkan/man/vkCmdBindPipeline.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBindPipeline(3) -===================== +==================== Name ---- @@ -8,43 +12,67 @@ vkCmdBindPipeline - Bind a pipeline object to a command buffer. C Specification --------------- +// refBegin vkCmdBindPipeline Bind a pipeline object to a command buffer. + +Once a pipeline has been created, it can: be bound to the command buffer +using the command: + include::../protos/vkCmdBindPipeline.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer to which to bind the pipeline. - -pname:pipelineBindPoint:: - The pipeline bind point on the command buffer to which to bind the pipeline. + * pname:commandBuffer is the command buffer that the pipeline will be + bound to. + * pname:pipelineBindPoint specifies the bind point, and must: have one of + the values ++ +-- +// refBegin VkPipelineBindPoint - specify the bind point of a pipeline object to a command buffer +include::../enums/VkPipelineBindPoint.txt[] +-- ++ +specifying whether pname:pipeline will be bound as a compute +(ename:VK_PIPELINE_BIND_POINT_COMPUTE) or graphics +(ename:VK_PIPELINE_BIND_POINT_GRAPHICS) pipeline. There are separate bind +points for each of graphics and compute, so binding one does not disturb the +other. ++ + * pname:pipeline is the pipeline to be bound. -pname:pipeline:: - The pipeline object to bind to pname:commandBuffer. Description ----------- -fname:vkCmdBindPipeline binds the pipeline object specified in pname:pipeline to the command buffer -specified in pname:commandBuffer at the bind point specified by pname:pipelineBindPoint. The value of -pname:pipelineBindPoint must be supported by the command buffer, and be valid for the specified -pipeline object. pname:pipelineBindPoint may be one of ename:VK_PIPELINE_BIND_POINT_COMPUTE or -ename:VK_PIPELINE_BIND_POINT_GRAPHICS, assuming the command buffer supports the corresponding -bind point. All work subsequently issued in pname:commandBuffer will use the pipeline bound to the -corresponding pipeline bind point. +Once bound, a pipeline binding affects subsequent graphics or compute +commands in the command buffer until a different pipeline is bound to the +bind point. The pipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE +controls the behavior of flink:vkCmdDispatch and +flink:vkCmdDispatchIndirect. The pipeline bound to +ename:VK_PIPELINE_BIND_POINT_GRAPHICS controls the behavior of +flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndirect, and +flink:vkCmdDrawIndexedIndirect. No other commands are affected by the +pipeline state. include::../validity/protos/vkCmdBindPipeline.txt[] -Notes ------ - -Although fname:vkCmdBindPipeline does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCreateGraphicsPipelines, flink:vkCreateComputePipelines +slink:VkCommandBuffer, slink:VkPipeline, elink:VkPipelineBindPoint + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBindPipeline + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBindVertexBuffers.txt b/doc/specs/vulkan/man/vkCmdBindVertexBuffers.txt index a2d9214fa3..a32de3b363 100644 --- a/doc/specs/vulkan/man/vkCmdBindVertexBuffers.txt +++ b/doc/specs/vulkan/man/vkCmdBindVertexBuffers.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBindVertexBuffers(3) ========================= @@ -8,48 +12,57 @@ vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer C Specification --------------- -include::../protos/vkCmdBindVertexBuffers.txt[] +// refBegin vkCmdBindVertexBuffers Bind vertex buffers to a command buffer -Parameters ----------- +To bind vertex buffers to a command buffer for use in subsequent draw +commands, call: -pname:commandBuffer:: - The first parameter. +include::../protos/vkCmdBindVertexBuffers.txt[] -pname:startBinding:: - The index of the first vertex buffer binding to which to bind a vertex buffer. -pname:bindingCount:: - The number of consecutive vertex buffer bindings to update. +Parameters +---------- -pname:pBuffers:: - A pointer to an array of sname:VkBuffer handles representing the buffers to be bound. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:firstBinding is the index of the first vertex input binding whose + state is updated by the command. + * pname:bindingCount is the number of vertex input bindings whose state is + updated by the command. + * pname:pBuffers is a pointer to an array of buffer handles. + * pname:pOffsets is a pointer to an array of buffer offsets. -pname:pOffsets:: - A pointer to an array of basetype:VkDeviceSize values containing the offsets, in bytes, of each binding within its respective buffer. Description ----------- -fname:vkCmdBindVertexBuffers binds one or more vertex buffers to the command -buffer specified by pname:commandBuffer. The first binding to update is specified -in pname:startBinding and the number of bindings to update is specified in -pname:bindingCount. - -pname:pBuffers points to an array of pname:bindingCount buffer object handles -representing the buffers to bind. The same buffer may be referenced multiple -times. pname:pOffsets points to an array of pname:bindingCount values containing -the offsets, in bytes of the start of each binding within the current buffer. - -Vertex data consumed by drawing commands such as flink:vkCmdDraw -or flink:vkCmdDrawIndexed subsequently issued in pname:commandBuffer is drawn -from the buffers bound to that command buffer. +The values taken from elements latexmath:[$i$] of pname:pBuffers and +pname:pOffsets replace the current state for the vertex input binding +latexmath:[$\mathit{firstBinding}+i$], for latexmath:[$i$] in +latexmath:[$[0, bindingCount)$]. The vertex input binding is updated to +start at the offset indicated by pname:pOffsets[i] from the start of the +buffer pname:pBuffers[i]. All vertex input attributes that use each of these +bindings will use these updated addresses in their address calculations for +subsequent draw commands. include::../validity/protos/vkCmdBindVertexBuffers.txt[] + See Also -------- -flink:vkCmdBindIndexBuffer, flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndirect, flink:vkCmdDrawIndexedIndirect +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBindVertexBuffers + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdBlitImage.txt b/doc/specs/vulkan/man/vkCmdBlitImage.txt index 1ac856f5ca..afde7606c2 100644 --- a/doc/specs/vulkan/man/vkCmdBlitImage.txt +++ b/doc/specs/vulkan/man/vkCmdBlitImage.txt @@ -1,115 +1,119 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdBlitImage(3) ================= Name ---- -vkCmdBlitImage - copies regions of an image, potentially performing format conversion, -arbitrary scaling, and filtering (but does not allow MSAA resolve). +vkCmdBlitImage - Copy regions of an image, potentially performing format conversion, C Specification --------------- -include::../protos/vkCmdBlitImage.txt[] - -Parameters ----------- - -pname:commandBuffer:: - The command buffer into which the command is to be placed. - -pname:srcImage:: - The image that is the source of the blit operation. +// refBegin vkCmdBlitImage - Copy regions of an image, potentially performing format conversion, -pname:srcImageLayout:: - The layout of the source image at the time of the blit. +To copy regions of a source image into a destination image, potentially +performing format conversion, arbitrary scaling, and filtering, call: -pname:dstImage:: - The image into which image data is to be copied. +include::../protos/vkCmdBlitImage.txt[] -pname:dstImageLayout:: - The layout of the destination image at the time of the blit. -pname:regionCount:: - The number of regions to blit. +Parameters +---------- -pname:pRegions:: - An array of image regions to blit. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcImage is the source image. + * pname:srcImageLayout is the layout of the source image subresources for + the blit. + * 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. + * pname:pRegions is a pointer to an array of slink:VkImageBlit structures + specifying the regions to blit. + * pname:filter is a elink:VkFilter specifying the filter to apply if the + blits require scaling. -pname:filter:: - Filtering operation to perform on the image while performing the blit. Description ----------- -fname:vkCmdBlitImage copies regions of a source image into a destination image, potentially performing -format conversion, arbitrary scaling, and filtering (but does not allow MSAA resolve). -The source and destination images are specified in pname:srcImage and pname:dstImage, -respectively. The layout of the source and destination images must be provided -in pname:srcImageLayout and pname:dstImageLayout, respectively. -The pname:srcImageLayout must be either ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL -or ename:VK_IMAGE_LAYOUT_GENERAL. The pname:dstImageLayout must be either -ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL. - -The pname:srcImage must support the elink:VkFormatFeatureFlags bit -ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and the pname:dstImage must support -the elink:VkFormatFeatureFlags bit ename:VK_FORMAT_FEATURE_BLIT_DST_BIT. -pname:srcImage and pname:dstImage may reference the same image but results are -undefined if source and destination regions overlap. pname:srcImage or -pname:dstImage may not refer to multi-sampled images. Use fname:vkCmdResolveImage -to resolve multi-sampled images. - -pname:pRegions is a pointer to an array of pname:regionCount slink:VkImageBlit -structures, the definition of each is: - -include::../structs/VkImageBlit.txt[] +fname:vkCmdBlitImage mustnot: be used for multisampled source or destination +images. Use flink:vkCmdResolveImage for this purpose. + +If sizes of source and destination extents do not match, scaling is +performed by applying the filtering mode specified by pname:filter +parameter. ename:VK_FILTER_LINEAR uses bilinear interpolation, and +ename:VK_FILTER_NEAREST uses point sampling. When using +ename:VK_FILTER_LINEAR, magnifying blits may: generate texel coordinates +outside of the source region. If those coordinates are outside the bounds of +the image level, the coordinates are clamped as in +ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE address mode. However, if the +coordinates are outside the source region but inside the image level, the +implementation may: clamp coordinates to the source region. + +If source and destination extents are identical, no filtering is performed. +Pixels in the axis-aligned region bounded by srcOffsets[0] and srcOffsets[1] +will be copied to the destination region bound by dstOffsets[0] and +dstOffsets[1]. In the case where dstOffsets[0].x > dstOffsets[1].x the +copied pixels are reversed in that direction. Likewise for y and z. + +Blits are done layer by layer starting with the pname:baseArrayLayer member +of pname:srcSubresource for the source and pname:dstSubresource for the +destination. pname:layerCount layers are blitted to the destination image. + +3D textures are blitted slice by slice. Slices in the source region bounded +by pname:srcOffsets[0].z and pname:srcOffsets[1].z are copied to slices in +the destination region bounded by pname:dstOffsets[0].z and +pname:dstOffsets[1].z. For each destination slice, a source z coordinate is +linearly interpolated between pname:srcOffsets[0].z and +pname:srcOffsets[1].z. If the pname:filter parameter is +ename:VK_FILTER_LINEAR then the value sampled from the source image is taken +by doing linear filtering using the interpolated z coordinate. If +pname:filter parameter is ename:VK_FILTER_NEAREST then value sampled from +the source image is taken from the single nearest slice (with undefined +rounding mode). + +The following filtering and conversion rules apply: + + * Integer formats can: only be converted to other integer formats with the + same signedness. + * No format conversion is supported between depth/stencil images - the + formats must: match. + * Format conversions on unorm, snorm, unscaled and packed float formats of + the copied aspect of the image are performed by first converting the + pixels to float values. + * In case of sRGB source format, nonlinear RGB values are converted to + linear representation prior to filtering. + * After filtering, the float values are first clamped and then cast to the + destination image format. In case of sRGB destination format, linear RGB + values are converted to nonlinear representation before writing the + pixel to the image. + +Signed and unsigned integers are converted by first clamping to the +representable range of the destination format, then casting the value. -The pname:srcSubresource and pname:dstSubresource members of slink:VkImageBlit -specify the source and destination sub-resources, respectively. Each is -a instance of the slink:VkImageSubresourceLayers structure, the definition of -which is: - -include::../structs/VkImageSubresourceLayers.txt[] - -The ptext:srcOffset[0] and ptext:srcOffset[1] members of slink:VkImageBlit -define the region of the source image to copy from, and the ptext:dstOffset[0] -and ptext:dstOffset[1] members define the region of the destination image to -copy to. The offset members are instances of the slink:VkOffset3D structure. The -definition of slink:VkOffset3D is: - -include::../structs/VkOffset3D.txt[] - -The size of the two regions need not match. If they are different, then -the pname:filter parameter determines the filtering mode used to expand or -shrink the source region to fit the destination region. This is a member of -the elink:VkFilter enumeration, the definition of which is: - -include::../enums/VkFilter.txt[] - -If the format of pname:srcImage is an integer-based format then pname:filter -must be ename:VK_FILTER_NEAREST. +include::../validity/protos/vkCmdBlitImage.txt[] -Pixels are copied from the regions bound by srcOffset[0], srcOffset[1] to the -region bound by destOffset[0], destOffset[1], scaling the result if the regions -are different sizes. -fname:vkCmdBlitImage does not perform any implicit barriers. Therefore, if any -region in the array of pname:pRegions a references updates from a prior -region, then results are undefined. +See Also +-------- -This command may not be used within a renderpass. +slink:VkCommandBuffer, elink:VkFilter, slink:VkImage, slink:VkImageBlit, elink:VkImageLayout -include::../validity/protos/vkCmdBlitImage.txt[] -Notes ------ +Document Notes +-------------- -Although fname:vkCmdBlitImage does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdBlitImage -flink:vkCmdResolveImage, flink:vkCmdCopyImage +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdClearAttachments.txt b/doc/specs/vulkan/man/vkCmdClearAttachments.txt index ded402b76f..e43acf1288 100644 --- a/doc/specs/vulkan/man/vkCmdClearAttachments.txt +++ b/doc/specs/vulkan/man/vkCmdClearAttachments.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdClearAttachments(3) ======================== @@ -8,80 +12,56 @@ vkCmdClearAttachments - Clear regions within currently bound framebuffer attachm C Specification --------------- -include::../protos/vkCmdClearAttachments.txt[] +// refBegin vkCmdClearAttachments Clear regions within currently bound framebuffer attachments. -Parameters ----------- +To clear one or more regions of color and depth/stencil attachments inside a +render pass instance, call: -pname:commandBuffer:: - The command buffer into which to insert the command. +include::../protos/vkCmdClearAttachments.txt[] -pname:attachmentCount:: - The number of attachments to clear. -pname:pAttachments:: - A pointer to an array of structures describing the attachments to clear - and the values to clear them to. +Parameters +---------- -pname:rectCount:: - The number of regions within the attachments to clear. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:attachmentCount is the number of entries in the pname:pAttachments + array. + * pname:pAttachments is a pointer to an array of slink:VkClearAttachment + structures defining the attachments to clear and the clear values to + use. + * pname:rectCount is the number of entries in the pname:pRects array. + * pname:pRects points to an array of slink:VkClearRect structures defining + regions within each selected attachment to clear. -pname:pRects:: - A pointer to an array of rectangles defining the regions to clear. Description ----------- -fname:vkCmdClearAttachments clears regions within the attachments associated -with the current renderpass. pname:commandBuffer is a handle to the command -buffer into which to insert the command. A renderpass must be active on -pname:commandBuffer. pname:attachmentCount specifies the number of attachments -to clear and pname:pAttachments is a pointer to an array of pname:attachmentCount -slink:VkClearAttachment structures, each containing the aspect(s), attachment -index and the clear value for each attachment. The definition of -slink:VkClearAttachment is: - -include::../structs/VkClearAttachment.txt[] - -pname:aspectMask is a bitfield specifying the aspect or aspects to clear -on the referenced attachment. It is constructed from a bitwise combination -of the members of the elink:VkImageAspectFlagBits enumeration, the -definition of which is: +fname:vkCmdClearAttachments can: clear multiple regions of each attachment +used in the current subpass of a render pass instance. This command must: be +called only inside a render pass instance, and implicitly selects the images +to clear based on the current framebuffer attachments and the command +parameters. -include::../enums/VkImageAspectFlagBits.txt[] - -The pname:colorAttachment member of slink:VkClearAttachment specifies the -index of the color attachment within the current framebuffer. The pname:clearValue -member contains the value to which to clear the attachment. It is an instance -of the slink:VkClearValue union, the definition of which is: +include::../validity/protos/vkCmdClearAttachments.txt[] -include::../structs/VkClearValue.txt[] -If the attachment and aspect referenced by ptext:aspectMask and -ptext:colorAttachment is a color attachment, the values contained in the -pname:color field of slink:VkClearValue is used to clear the attachment -regions. If the attachment and aspect referenced by ptext:aspectMask and -ptext:colorAttachment is a depth, stencil or depth-stencil attachment, then -the pname:depthStencil field of slink:VkClearValue is used to clear the -attachment. +See Also +-------- -The pname:rectCount parameter to fname:vkCmdClearAttachments specifies the -number of regions of the attachments to clear. pname:pRects is a pointer -to an array of pname:rectCount slink:VkClearRect structures defining -those regions. The definition of slink:VkClearRect is: +slink:VkClearAttachment, slink:VkClearRect, slink:VkCommandBuffer -include::../structs/VkClearRect.txt[] -The pname:rect member of slink:VkClearRect specifies the rectangle, measured -in pixels, of the rectangle to clear. pname:baseArrayLayer and -pname:layerCount specify the first layer and number of layers to clear -and should be used to clear multiple layers in layered attachments. +Document Notes +-------------- -include::../validity/protos/vkCmdClearAttachments.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdClearAttachments -slink:VkClearAttachment, flink:vkCmdBeginRenderPass +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdClearColorImage.txt b/doc/specs/vulkan/man/vkCmdClearColorImage.txt index 848e8b6884..3d4e20311f 100644 --- a/doc/specs/vulkan/man/vkCmdClearColorImage.txt +++ b/doc/specs/vulkan/man/vkCmdClearColorImage.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdClearColorImage(3) -======================== +======================= Name ---- @@ -8,65 +12,58 @@ vkCmdClearColorImage - Clear regions of a color image. C Specification --------------- -include::../protos/vkCmdClearColorImage.txt[] - -Parameters ----------- +// refBegin vkCmdClearColorImage Clear regions of a color image. -pname:commandBuffer:: - The command buffer into which the clear command is to be placed. +To clear one or more subranges of a color image, call: -pname:image:: - The image that contains the regions to be cleared. +include::../protos/vkCmdClearColorImage.txt[] -pname:imageLayout:: - The layout of the image at the time of the clear operation. -pname:pColor:: - A pointer to a structure containing the color with which to clear the image. +Parameters +---------- -pname:rangeCount:: - The number of ranges to clear. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:image is the image to be cleared. + * pname:imageLayout specifies the current layout of the image subresource + ranges to be cleared, and must: be ename:VK_IMAGE_LAYOUT_GENERAL or + ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL. + * pname:pColor is a pointer to a slink:VkClearColorValue structure that + contains the values the image subresource ranges will be cleared to (see + <> below). + * pname:rangeCount is the number of image subresource range structures in + pname:pRanges. + * pname:pRanges points to an array of slink:VkImageSubresourceRange + structures that describe a range of mipmap levels, array layers, and + aspects to be cleared, as described in <>. The pname:aspectMask of all image subresource ranges must: only + include ename:VK_IMAGE_ASPECT_COLOR_BIT. -pname:pRanges:: - A pointer to an array of structures defining the regions to be cleared. Description ----------- -fname:vkCmdClearColorImage clears pname:rangeCount regions of an image. The color -with which to clear the image is specified an instance of the -slink:VkClearColorValue union pointed to by pname:pColor. The definition -of slink:VkClearColorValue is: +Each specified range in pname:pRanges is cleared to the value specified by +pname:pColor. -include::../structs/VkClearColorValue.txt[] +include::../validity/protos/vkCmdClearColorImage.txt[] -The ptext:float32, ptext:int32 and ptext:uint32 members of pname:pColor are -arrays of four 32-bit floating point, signed integer or unsigned integer -values, respectively. Which is used is determined from the format of the -image specified in pname:image. -The first element of the selected array is written to the first component of -the target image, the second element to the second component, the third to -the third and the fourth to the fourth, if those components exist. -pname:pRanges describes the regions to be cleared and points to an array -of pname:rangeCount slink:VkImageSubresourceRange structures, the definition -of which is: +See Also +-------- -include::../structs/VkImageSubresourceRange.txt[] +slink:VkClearColorValue, slink:VkCommandBuffer, slink:VkImage, elink:VkImageLayout, slink:VkImageSubresourceRange -include::../validity/protos/vkCmdClearColorImage.txt[] -Notes ------ +Document Notes +-------------- -Although fname:vkCmdClearColorImage does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdClearColorImage -flink:vkCmdClearDepthStencilImage +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdClearDepthStencilImage.txt b/doc/specs/vulkan/man/vkCmdClearDepthStencilImage.txt index bef55be22a..5196e1f220 100644 --- a/doc/specs/vulkan/man/vkCmdClearDepthStencilImage.txt +++ b/doc/specs/vulkan/man/vkCmdClearDepthStencilImage.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdClearDepthStencilImage(3) ============================== @@ -8,60 +12,60 @@ vkCmdClearDepthStencilImage - Fill regions of a combined depth-stencil image. C Specification --------------- -include::../protos/vkCmdClearDepthStencilImage.txt[] - -Parameters ----------- +// refBegin vkCmdClearDepthStencilImage Fill regions of a combined depth-stencil image. -pname:commandBuffer:: - The command buffer into which the command is to be placed. +To clear one or more subranges of a depth/stencil image, call: -pname:image:: - The image containing the regions to be cleared. +include::../protos/vkCmdClearDepthStencilImage.txt[] -pname:imageLayout:: - The layout of the image to be cleared. -pname:pDepthStencil:: - A pointer to a structure containing the values to clear the image with. +Parameters +---------- -pname:rangeCount:: - The number of image regions to clear. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:image is the image to be cleared. + * pname:imageLayout specifies the current layout of the image subresource + ranges to be cleared, and must: be ename:VK_IMAGE_LAYOUT_GENERAL or + ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL. + * pname:pDepthStencil is a pointer to a slink:VkClearDepthStencilValue + structure that contains the values the depth and stencil image + subresource ranges will be cleared to (see <> below). + * pname:rangeCount is the number of image subresource range structures in + pname:pRanges. + * pname:pRanges points to an array of slink:VkImageSubresourceRange + structures that describe a range of mipmap levels, array layers, and + aspects to be cleared, as described in <>. The pname:aspectMask of each image subresource range in + pname:pRanges can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image + format has a depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if + the image format has a stencil component. pname:pDepthStencil is a + pointer to a sname:VkClearDepthStencilValue structure that contains the + values the image subresource ranges will be cleared to (see + <> below). -pname:pRanges:: - A pointer to an array of pname:rangeCount regions to clear. Description ----------- -fname:vkCmdClearDepthStencilImage clears pname:rangeCount regions of a combined -depth-stencil image to the values specified in the structure whose address is -given in pname:pDepthStencil. This is a pointer to an instance of the -slink:VkClearDepthStencilValue structure, the definition of which is: +include::../validity/protos/vkCmdClearDepthStencilImage.txt[] -include::../structs/VkClearDepthStencilValue.txt[] -The pname:depth and pname:stencil members contain the value to clear the -depth and stencil aspects of the image to, respectively. pname:imageLayout -specifies the layout of the image being cleared. pname:pRanges points to an -array pname:rangeCount regions of the image are cleared, each of which is described -by an instance of the slink:VkImageSubresourceRange structure, the definition -of which is: +See Also +-------- -include::../structs/VkImageSubresourceRange.txt[] +slink:VkClearDepthStencilValue, slink:VkCommandBuffer, slink:VkImage, elink:VkImageLayout, slink:VkImageSubresourceRange -include::../validity/protos/vkCmdClearDepthStencilImage.txt[] -Notes ------ +Document Notes +-------------- -Although fname:vkCmdClearDepthStencilImage does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdClearDepthStencilImage -flink:vkCmdClearColorImage +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt index e8ca4bf1f3..28723f6576 100644 --- a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdCopyBuffer(3) -=================== +================== Name ---- @@ -8,52 +12,51 @@ vkCmdCopyBuffer - Copy data between buffer regions. C Specification --------------- -include::../protos/vkCmdCopyBuffer.txt[] +// refBegin vkCmdCopyBuffer Copy data between buffer regions. -Parameters ----------- +To copy data between buffer objects, call: -pname:commandBuffer:: - The command buffer into which the copy command is to be placed. +include::../protos/vkCmdCopyBuffer.txt[] -pname:srcBuffer:: - The buffer containing the data to be copied. -pname:dstBuffer:: - The buffer into which data will be copied. +Parameters +---------- -pname:regionCount:: - The number of regions of data to copy. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcBuffer is the source buffer. + * pname:dstBuffer is the destination buffer. + * pname:regionCount is the number of regions to copy. + * pname:pRegions is a pointer to an array of slink:VkBufferCopy structures + specifying the regions to copy. -pname:pRegions:: - An array of pname:regionCount regions of data to be copied. Description ----------- -fname:vkCmdCopyBuffer copies regions of data from a source buffer to a destination -buffer. pname:regionCount regions are copied from pname:srcBuffer to pname:dstBuffer. Each -region is represented by a member of the pname:pRegions array, which is an array of -the slink:VkBufferCopy structure, whose definition is: - -include::../structs/VkBufferCopy.txt[] - -If any two or more regions within pname:pRegions overlap, the resulting data will be -undefined. It is recommended, but not required, that the regions given in pname:pRegions -start on multiples of four bytes and have a length which is a multiple of four bytes. +Each region in pname:pRegions is copied from the source buffer to the same +region of the destination buffer. pname:srcBuffer and pname:dstBuffer can: +be the same buffer or alias the same memory, but the result is undefined if +the copy regions overlap in memory. include::../validity/protos/vkCmdCopyBuffer.txt[] -Notes ------ - -Although fname:vkCmdCopyBuffer does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImageToBuffer +slink:VkBuffer, slink:VkBufferCopy, slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdCopyBufferToImage.txt b/doc/specs/vulkan/man/vkCmdCopyBufferToImage.txt index 594c5e52f9..bf7d2f212d 100644 --- a/doc/specs/vulkan/man/vkCmdCopyBufferToImage.txt +++ b/doc/specs/vulkan/man/vkCmdCopyBufferToImage.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdCopyBufferToImage(3) -========================== +========================= Name ---- @@ -8,50 +12,51 @@ vkCmdCopyBufferToImage - Copy data from a buffer into an image. C Specification --------------- -include::../protos/vkCmdCopyBufferToImage.txt[] - -Parameters ----------- +// refBegin vkCmdCopyBufferToImage Copy data from a buffer into an image. -pname:commandBuffer:: - The command buffer into which the copy command is to be placed. +To copy data from a buffer object to an image object, call: -pname:srcBuffer:: - The buffer from which data is to be sourced. +include::../protos/vkCmdCopyBufferToImage.txt[] -pname:dstImage:: - The image that is to be the destination for the copy. -pname:dstImageLayout:: - The image layout of the destination image at the time of the copy operation. +Parameters +---------- -pname:regionCount:: - The number of image regions to update. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcBuffer is the source buffer. + * pname:dstImage is the destination image. + * pname:dstImageLayout is the layout of the destination image subresources + for the copy. + * pname:regionCount is the number of regions to copy. + * pname:pRegions is a pointer to an array of slink:VkBufferImageCopy + structures specifying the regions to copy. -pname:pRegions:: - An array of pname:regionCount regions to update. Description ----------- -fname:vkCmdCopyBufferToImage copies pname:regionCount regions of data from pname:srcBuffer -into pname:dstImage. pname:pRegions points to an array of slink:VkBufferImageCopy structures -which describe the regions to be copied. The definition of slink:VkBufferImageCopy is: - -include::../structs/VkBufferImageCopy.txt[] +Each region in pname:pRegions is copied from the specified region of the +source buffer to the specified region of the destination image. include::../validity/protos/vkCmdCopyBufferToImage.txt[] -Notes ------ - -Although fname:vkCmdCopyBufferToImage does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdCopyBuffer, flink:vkCmdCopyImageToBuffer +slink:VkBuffer, slink:VkBufferImageCopy, slink:VkCommandBuffer, slink:VkImage, elink:VkImageLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyBufferToImage + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdCopyImage.txt b/doc/specs/vulkan/man/vkCmdCopyImage.txt index 8d7bc95c6a..3bdee2d140 100644 --- a/doc/specs/vulkan/man/vkCmdCopyImage.txt +++ b/doc/specs/vulkan/man/vkCmdCopyImage.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdCopyImage(3) -================== +================= Name ---- @@ -8,53 +12,117 @@ vkCmdCopyImage - Copy data between images. C Specification --------------- -include::../protos/vkCmdCopyImage.txt[] - -Parameters ----------- +// refBegin vkCmdCopyImage Copy data between images. -pname:commandBuffer:: - The command buffer into which the copy command is to be placed. +To copy data between image objects, call: -pname:srcImage:: - The image that is the source for the data. - -pname:srcImageLayout:: - The layout of the source image at the time of the copy operation. +include::../protos/vkCmdCopyImage.txt[] -pname:dstImage:: - The image that is to be the destination for the copy. -pname:dstImageLayout:: - The layout of the destination image at the time of the copy operation. +Parameters +---------- -pname:regionCount:: - The number of regions to copy. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcImage is the source image. + * pname:srcImageLayout is the current layout of the source image + subresource. + * pname:dstImage is the destination image. + * pname:dstImageLayout is the current layout of the destination image + subresource. + * pname:regionCount is the number of regions to copy. + * pname:pRegions is a pointer to an array of slink:VkImageCopy structures + specifying the regions to copy. -pname:pRegions:: - An array of pname:regionCount regions to copy. Description ----------- -fname:vkCmdCopyImage copies pname:regionCount regions of image data between pname:srcImage and -pname:dstImage. Each region is described by an element of the array pointed to by -pname:pRegions, which is an array of slink:VkImageCopy, the definition of which is: - -include::../structs/VkImageCopy.txt[] +Each region in pname:pRegions is copied from the source image to the same +region of the destination image. pname:srcImage and pname:dstImage can: be +the same image or alias the same memory. + +Copies 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 copied to the destination image. + +[[copies-images-format-compatibility]] +The formats of pname:srcImage and pname:dstImage must: be compatible. +Formats are considered compatible if their texel size in bytes is the same +between both formats. For example, ename:VK_FORMAT_R8G8B8A8_UNORM is +compatible with ename:VK_FORMAT_R32_UINT because both texels are 4 +bytes in size. Depth/stencil formats must: match exactly. + +fname:vkCmdCopyImage allows copying between size-compatible compressed +and uncompressed internal formats. Formats are size-compatible if the texel +size of the uncompressed format is equal to the compressed texel block size in +bytes of the compressed format. Such a copy does not perform on-the-fly +compression or decompression. When copying from an uncompressed format to a +compressed format, each texel of uncompressed data of the source image is +copied as a raw value to the corresponding compressed texel block of the +destination image. When copying from a compressed format to an uncompressed +format, each compressed texel block of the source image is copied as a raw +value to the corresponding texel of uncompressed data in the destination +image. Thus, for example, it is legal to copy between a 128-bit uncompressed +format and a compressed format which has a 128-bit sized compressed texel +block representing 4x4 texels (using 8 bits per texel), or between a 64-bit +uncompressed format and a compressed format which has a 64-bit sized +compressed texel block representing 4x4 texels (using 4 bits per texel). + +When copying between compressed and uncompressed formats the pname:extent +members represent the texel dimensions of the source image and not the +destination. When copying from a compressed image to an uncompressed image +the image texel dimensions written to the uncompressed image will be source +extent divided by the compressed texel block dimensions. When copying from an +uncompressed image to a compressed image the image texel dimensions written +to the compressed image will be the source extent multiplied by the +compressed texel block dimensions. In both cases the number of bytes read and +the number of bytes written will be identical. + +Copying to or from block-compressed images is typically done in multiples of +the compressed texel block. For this reason the pname:extent must: be a +multiple of the compressed texel block dimension. There is one exception to +this rule which is required: to handle compressed images created with +dimensions that are not a multiple of the compressed texel block dimensions. +If the pname:srcImage is compressed and if pname:extent.width is not a +multiple of the compressed texel block width then (pname:extent.width + +pname:srcOffset.x) must: equal the image subresource width, if +pname:extent.height is not a multiple of the compressed texel block height +then (pname:extent.height + pname:srcOffset.y) must: equal the image +subresource height and if pname:extent.depth is not a multiple of the +compressed texel block depth then (pname:extent.depth + pname:srcOffset.z) +must: equal the image subresource depth. Similarly, if the pname:dstImage is +compressed and if pname:extent.width is not a multiple of the compressed +texel block width then (pname:extent.width + pname:dstOffset.x) must: equal +the image subresource width, if pname:extent.height is not a multiple of the +compressed texel block height then (pname:extent.height + pname:dstOffset.y) +must: equal the image subresource height and if pname:extent.depth is not a +multiple of the compressed texel block depth then (pname:extent.depth + +pname:dstOffset.z) must: equal the image subresource depth. This allows the +last compressed texel block of the image in each non-multiple dimension to +be included as a source or destination of the copy. + +fname:vkCmdCopyImage can: be used to copy image data between multisample +images, but both images must: have the same number of samples. include::../validity/protos/vkCmdCopyImage.txt[] -Notes ------ - -Although fname:vkCmdCopyBufferToImage does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdCopyBuffer, flink:vkCmdCopyImageToBuffer, flink:vkCmdCopyBufferToImage +slink:VkCommandBuffer, slink:VkImage, slink:VkImageCopy, elink:VkImageLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyImage + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdCopyImageToBuffer.txt b/doc/specs/vulkan/man/vkCmdCopyImageToBuffer.txt index 7741f893ba..0936acfcc8 100644 --- a/doc/specs/vulkan/man/vkCmdCopyImageToBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdCopyImageToBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdCopyImageToBuffer(3) -========================== +========================= Name ---- @@ -8,51 +12,51 @@ vkCmdCopyImageToBuffer - Copy image data into a buffer. C Specification --------------- -include::../protos/vkCmdCopyImageToBuffer.txt[] - -Parameters ----------- +// refBegin vkCmdCopyImageToBuffer Copy image data into a buffer. -pname:commandBuffer:: - The command buffer into which the copy command is to be placed. +To copy data from an image object to a buffer object, call: -pname:srcImage:: - The image that is the source for the data. +include::../protos/vkCmdCopyImageToBuffer.txt[] -pname:srcImageLayout:: - The layout of the source image at the time of the copy operation. -pname:dstBuffer:: - The buffer that is to receive the copied data. +Parameters +---------- -pname:regionCount:: - The number of regions to copy. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcImage is the source image. + * pname:srcImageLayout is the layout of the source image subresources for + the copy. + * pname:dstBuffer is the destination buffer. + * pname:regionCount is the number of regions to copy. + * pname:pRegions is a pointer to an array of slink:VkBufferImageCopy + structures specifying the regions to copy. -pname:pRegions:: - An array of pname:regionCount regions to copy. Description ----------- -fname:vkCmdCopyImageToBuffer copies image data into a buffer object. pname:srcImage specifies -the image that is to be the source of the data. pname:dstBuffer is the buffer into which -the data is to be copied. pname:pRegions points to an array of pname:regionCount -slink:VkBufferImageCopy structures, the definition of which is: - -include::../structs/VkBufferImageCopy.txt[] +Each region in pname:pRegions is copied from the specified region of the +source image to the specified region of the destination buffer. include::../validity/protos/vkCmdCopyImageToBuffer.txt[] -Notes ------ - -Although fname:vkCmdCopyImageToBuffer does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdCopyBufferToImage, flink:vkCmdCopyImage +slink:VkBuffer, slink:VkBufferImageCopy, slink:VkCommandBuffer, slink:VkImage, elink:VkImageLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyImageToBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdCopyQueryPoolResults.txt b/doc/specs/vulkan/man/vkCmdCopyQueryPoolResults.txt index 0c0b221d89..dd7e728146 100644 --- a/doc/specs/vulkan/man/vkCmdCopyQueryPoolResults.txt +++ b/doc/specs/vulkan/man/vkCmdCopyQueryPoolResults.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdCopyQueryPoolResults(3) ============================ @@ -8,59 +12,104 @@ vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buf C Specification --------------- -include::../protos/vkCmdCopyQueryPoolResults.txt[] - -Parameters ----------- +// refBegin vkCmdCopyQueryPoolResults Copy the results of queries in a query pool to a buffer object. -pname:commandBuffer:: - The command buffer into which the command is to be placed. +To copy query statuses and numerical results directly to buffer memory, +call: -pname:queryPool:: - The query pool whose results should be copied to the buffer object. - -pname:startQuery:: - The index of the first query in the query pool whose results should be copied to the buffer object. - -pname:queryCount:: - The number of queries in the query pool whose results should be copied to the buffer object. +include::../protos/vkCmdCopyQueryPoolResults.txt[] -pname:dstBuffer:: - The buffer object the results should be written to. -pname:dstOffset:: - The offset within the buffer object the results should be written to. +Parameters +---------- -pname:stride:: - The stride between subsequent query result writes. + * pname:commandBuffer is the command buffer into which this command will + be recorded. + * pname:queryPool is the query pool managing the queries containing the + desired results. + * pname:firstQuery is the initial query index. + * pname:queryCount is the number of queries. pname:firstQuery and + pname:queryCount together define a range of queries. + * pname:dstBuffer is a sname:VkBuffer object that will receive the results + of the copy command. + * pname:dstOffset is an offset into pname:dstBuffer. + * pname:stride is the stride in bytes between results for individual + queries within pname:dstBuffer. The required size of the backing memory + for pname:dstBuffer is determined as described above for + flink:vkGetQueryPoolResults. + * pname:flags is a bitmask of elink:VkQueryResultFlagBits specifying how + and when results are returned. -pname:flags:: - The flags controlling the behavior of the query result copy command (see elink:VkQueryResultFlags). Description ----------- -fname:vkCmdCopyQueryPoolResults copies the results of pname:queryCount number of -queries in the query pool specified by pname:queryPool starting from index -pname:startQuery. The results are written to the buffer object specified by -pname:dstBuffer starting from pname:dstOffset with each subsequent query's -result being written pname:stride number of bytes after the previous one. The -semantics of when and what values written to the destination buffer are defined -by the type of the queries in the query pool, the query control flags passed -to flink:vkCmdBeginQuery, and the query result control flags specified by pname:flags. +fname:vkCmdCopyQueryPoolResults is guaranteed to see the effect of previous +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 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 +query commands, there is less ambiguity about which use of a query is being +requested. + +If no bits are set in pname:flags, results for all requested queries in the +available state are written as 32-bit unsigned integer values, and nothing +is written for queries in the unavailable state. + +If ename:VK_QUERY_RESULT_64_BIT is set, the results are written as an array +of 64-bit unsigned integer values as described for +flink:vkGetQueryPoolResults. + +If ename:VK_QUERY_RESULT_WAIT_BIT is set, the implementation will wait for +each query's status to be in the available state before retrieving the +numerical results for that query. This is guaranteed to reflect the most +recent use of the query on the same queue, assuming that the query is +not being simultaneously used by other queues. If the query does not become +available in a finite amount of time (e.g. due to not issuing a query +since the last reset), a ename:VK_ERROR_DEVICE_LOST error may: occur. + +Similarly, if ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is set and +ename:VK_QUERY_RESULT_WAIT_BIT is not set, the availability is guaranteed to +reflect the most recent use of the query on the same queue, assuming +that the query is not being simultaneously used by other queues. As with +fname:vkGetQueryPoolResults, implementations must: guarantee that if they +return a non-zero availability value, then the numerical results are valid. + +If ename:VK_QUERY_RESULT_PARTIAL_BIT is set, ename:VK_QUERY_RESULT_WAIT_BIT +is not set, and the query's status is unavailable, an intermediate +result value between zero and the final result value is written for that +query. + +ename:VK_QUERY_RESULT_PARTIAL_BIT mustnot: be used if the pool's +pname:queryType is ename:VK_QUERY_TYPE_TIMESTAMP. + +fname:vkCmdCopyQueryPoolResults is considered to be a transfer operation, +and its writes to buffer memory must: be synchronized using +ename:VK_PIPELINE_STAGE_TRANSFER_BIT and +ename:VK_ACCESS_TRANSFER_WRITE_BIT before using the results. include::../validity/protos/vkCmdCopyQueryPoolResults.txt[] -Notes ------ - -Although fname:vkCmdCopyQueryPoolResults does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkGetQueryPoolResults, flink:vkCmdBeginQuery, flink:vkCmdEndQuery, flink:vkCmdResetQueryPool, flink:vkDestroyQueryPool, flink:vkCreateQueryPool +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize, slink:VkQueryPool, elink:VkQueryResultFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyQueryPoolResults + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDispatch.txt b/doc/specs/vulkan/man/vkCmdDispatch.txt index 8caf6dff1f..edf7583ac6 100644 --- a/doc/specs/vulkan/man/vkCmdDispatch.txt +++ b/doc/specs/vulkan/man/vkCmdDispatch.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDispatch(3) -================= +================ Name ---- @@ -8,44 +12,47 @@ vkCmdDispatch - Dispatch compute work items. C Specification --------------- +// refBegin vkCmdDispatch Dispatch compute work items. + +To record a dispatch, call: + include::../protos/vkCmdDispatch.txt[] + Parameters ---------- -pname:commandBuffer:: - Command buffer upon which to execute the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:x is the number of local workgroups to dispatch in the X dimension. + * pname:y is the number of local workgroups to dispatch in the Y dimension. + * pname:z is the number of local workgroups to dispatch in the Z dimension. -pname:x:: - Number of workgroups to dispatch in the X dimension. - -pname:y:: - Number of workgroups to dispatch in the Y dimension. - -pname:z:: - Number of workgroups to dispatch in the Z dimension. Description ----------- -fname:vkCmdDispatch dispatches a pname:x by pname:y by pname:z group of compute workgroups. -Two- and one-dimensional work groups can be dispatched by setting the pname:z, or -pname:y and pname:z parameters to 1, respectively. The size of each workgroup is -determined by the pipeline bound to the ename:VK_PIPELINE_BIND_POINT_COMPUTE bind point -on the command buffer specified by pname:commandBuffer. +When the command is executed, a global workgroup consisting of +latexmath:[$x \times y \times z$] local workgroups is assembled. include::../validity/protos/vkCmdDispatch.txt[] -Notes ------ - -Although fname:vkCmdDispatch does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDispatchIndirect +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDispatch + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDispatchIndirect.txt b/doc/specs/vulkan/man/vkCmdDispatchIndirect.txt index ca822d927b..4b327654b1 100644 --- a/doc/specs/vulkan/man/vkCmdDispatchIndirect.txt +++ b/doc/specs/vulkan/man/vkCmdDispatchIndirect.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDispatchIndirect(3) -========================= +======================== Name ---- @@ -8,46 +12,50 @@ vkCmdDispatchIndirect - Dispatch compute work items using indirect parameters. C Specification --------------- +// refBegin vkCmdDispatchIndirect Dispatch compute work items using indirect parameters. + +To record an indirect command dispatch, call: + include::../protos/vkCmdDispatchIndirect.txt[] + Parameters ---------- -pname:commandBuffer:: - Command buffer upon which to execute the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:buffer is the buffer containing dispatch parameters. + * pname:offset is the byte offset into pname:buffer where parameters + begin. -pname:buffer:: - The buffer object containing the parameters to dispatch. - -pname:offset:: - The offset within pname:buffer at which the parameters are located. Description ----------- -fname:vkCmdDispatchIndirect dispatches a group of ptext:x by ptext:y by ptext:z compute workgroups -where the values of ptext:x, ptext:y, and ptext:z are taken from pname:offset bytes into the -buffer object specified by pname:buffer. At this location in the buffer, there is assumed -to be an instance of the slink:VkDispatchIndirectCommand structure, whose definition is: - -include::../structs/VkDispatchIndirectCommand.txt[] - -pname:offset must be a multiple of four. If any of the pname:x, pname:y or pname:z members of -slink:VkDispatchIndirectCommand are zero, then no work is initiated. Two- and one-dimensional -work may be initiated by setting pname:z or pname:y and pname:z to 1, respectively. +fname:vkCmdDispatchIndirect behaves similarly to flink:vkCmdDispatch except +that the parameters are read by the device from a buffer during execution. +The parameters of the dispatch are encoded in a +slink:VkDispatchIndirectCommand structure taken from pname:buffer starting +at pname:offset. include::../validity/protos/vkCmdDispatchIndirect.txt[] -Notes ------ - -Although fname:vkCmdDispatchIndirect does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDispatch, flink:vkCmdDrawIndirect, flink:vkCmdDrawIndexedIndirect +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDispatchIndirect + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDraw.txt b/doc/specs/vulkan/man/vkCmdDraw.txt index b92d59e79e..970a260434 100644 --- a/doc/specs/vulkan/man/vkCmdDraw.txt +++ b/doc/specs/vulkan/man/vkCmdDraw.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDraw(3) -============= +============ Name ---- @@ -8,48 +12,52 @@ vkCmdDraw - Draw primitives. C Specification --------------- -include::../protos/vkCmdDraw.txt[] +// refBegin vkCmdDraw Draw primitives. -Parameters ----------- +To record a non-indexed draw, call: -pname:commandBuffer:: - The command buffer into which the drawing command is to be placed. +include::../protos/vkCmdDraw.txt[] -pname:firstVertex:: - The first vertex to be passed to the graphics pipeline. -pname:vertexCount:: - The number of vertices passed to the graphics pipeline. +Parameters +---------- -pname:firstInstance:: - The first instance of data to be passed to the graphics pipeline. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:vertexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstVertex is the index of the first vertex to draw. + * pname:firstInstance is the instance ID of the first instance to draw. -pname:instanceCount:: - The number of instances to be passed to the graphics pipeline. Description ----------- -fname:vkCmdDraw invokes a draw in the bound graphics pipeline. pname:instanceCount instances -of pname:vertexCount vertices are produced. The vertex index presented to the pipeline -is automatically generated, starting from pname:firstVertex and counting forwards. For -each instance, the instance index is generated automaticall, starting from pname:firstInstance -and counting forwards. If pname:vertexCount or pname:vertexCount is zero, then no vertices are -generated. +When the command is executed, primitives are assembled using the current +primitive topology and pname:vertexCount consecutive vertex indices with the +first code:vertexIndex value equal to pname:firstVertex. The primitives are +drawn pname:instanceCount times with code:instanceIndex starting with +pname:firstInstance and increasing sequentially for each instance. The +assembled primitives execute the currently bound graphics pipeline. include::../validity/protos/vkCmdDraw.txt[] -Notes ------ - -Although fname:vkCmdDraw does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDrawIndexed +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDraw + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDrawIndexed.txt b/doc/specs/vulkan/man/vkCmdDrawIndexed.txt index 5659667251..5ec8e4dac0 100644 --- a/doc/specs/vulkan/man/vkCmdDrawIndexed.txt +++ b/doc/specs/vulkan/man/vkCmdDrawIndexed.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDrawIndexed(3) -==================== +=================== Name ---- @@ -8,51 +12,69 @@ vkCmdDrawIndexed - Issue an indexed draw into a command buffer. C Specification --------------- -include::../protos/vkCmdDrawIndexed.txt[] - -Parameters ----------- +// refBegin vkCmdDrawIndexed Issue an indexed draw into a command buffer. -pname:commandBuffer:: - Specifies the command buffer into which to insert the draw command. +To record an indexed draw, call: -pname:firstIndex:: - Specifies the first element from the index buffer to be consumed by the command. +include::../protos/vkCmdDrawIndexed.txt[] -pname:indexCount:: - Specifies the number of elements from the index buffer to be consumed by the command. -pname:vertexOffset:: - Specifies a constant offset to be added to the value retrieved from the index buffer. +Parameters +---------- -pname:firstInstance:: - Specifies the starting value of the internally generated instance count. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:indexCount is the number of vertices to draw. + * pname:instanceCount is the number of instances to draw. + * pname:firstIndex is the base index within the index buffer. + * pname:vertexOffset is the value added to the vertex index before indexing + into the vertex buffer. + * pname:firstInstance is the instance ID of the first instance to draw. -pname:instanceCount:: - Specifies the number of instances of the geometry to consume. Description ----------- -fname:vkCmdDrawIndexed issues an indexed draw into a command bufer. The command -consumes pname:indexCount elements from the bound index buffer, starting from -pname:firstIndex, and inserts them into graphics pipeline. Before insertion to the -pipeline, pname:vertexOffset is added to each index value. pname:instanceCount instances -of the index buffer range are inserted into the pipeline. The first shader in -the pipeline is presented with the instance index, which begins at pname:firstInstance. +When the command is executed, primitives are assembled using the current +primitive topology and pname:indexCount vertices whose indices are retrieved +from the index buffer. The index buffer is treated as an array of tightly +packed unsigned integers of size defined by the +flink:vkCmdBindIndexBuffer::pname:indexType parameter with which the buffer +was bound. + +The first vertex index is at an offset of pname:firstIndex * code:indexSize ++ pname:offset within the currently bound index buffer, where pname:offset +is the offset specified by fname:vkCmdBindIndexBuffer and code:indexSize is +the byte size of the type specified by pname:indexType. Subsequent index +values are retrieved from consecutive locations in the index buffer. Indices +are first compared to the primitive restart value, then zero extended to 32 +bits (if the code:indexType is ename:VK_INDEX_TYPE_UINT16) and have +pname:vertexOffset added to them, before being supplied as the +code:vertexIndex value. + +The primitives are drawn pname:instanceCount times with code:instanceIndex +starting with pname:firstInstance and increasing sequentially for each +instance. The assembled primitives execute the currently bound graphics +pipeline. include::../validity/protos/vkCmdDrawIndexed.txt[] -Notes ------ - -Although fname:vkCmdDrawIndexed does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDraw, flink:vkCmdDrawIndirect, flink:vkCmdDrawIndexedIndirect +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDrawIndexed + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDrawIndexedIndirect.txt b/doc/specs/vulkan/man/vkCmdDrawIndexedIndirect.txt index 0d00f902bf..aa15d6820e 100644 --- a/doc/specs/vulkan/man/vkCmdDrawIndexedIndirect.txt +++ b/doc/specs/vulkan/man/vkCmdDrawIndexedIndirect.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDrawIndexedIndirect(3) -============================ +=========================== Name ---- @@ -8,56 +12,55 @@ vkCmdDrawIndexedIndirect - Perform an indexed indirect draw. C Specification --------------- -include::../protos/vkCmdDrawIndexedIndirect.txt[] +// refBegin vkCmdDrawIndexedIndirect Perform an indexed indirect draw. -Parameters ----------- +To record an indexed indirect draw, call: -pname:commandBuffer:: - The command buffer upon which to execute the command. +include::../protos/vkCmdDrawIndexedIndirect.txt[] -pname:buffer:: - The buffer from which to source the indirect draw parameters. -pname:offset:: - The offset within the buffer where the draw parameters are located. +Parameters +---------- -pname:drawCount:: - The number of draws to issue. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:buffer is the buffer containing draw parameters. + * pname:offset is the byte offset into pname:buffer where parameters + begin. + * pname:drawCount is the number of draws to execute, and can: be zero. + * pname:stride is the byte stride between successive sets of draw + parameters. -pname:stride:: - The stride between each structure member. Description ----------- -fname:vkCmdDrawIndexedIndirect issues an indirect indexed draw list -containing pname:drawCount draws into the command buffer specified in -pname:commandBuffer. pname:buffer is the buffer containing the drawing -parameters, which begin at pname:offset bytes into the buffer. Each command -is an instance of a slink:VkDrawIndexedIndirectCommand structure, separated by -pname:stride bytes in memory. If pname:stride is zero, then the array is -assumed to be tightly packed. The definition of -slink:VkDrawIndexedIndirectCommand is as follows. - -include::../structs/VkDrawIndexedIndirectCommand.txt[] - -The members of sname:VkDrawIndexedIndirectCommand are interpreted in the -same fashion as the similarly named parameters of flink:vkCmdDrawIndexed. -pname:offset and pname:stride should be multiples of four. +fname:vkCmdDrawIndexedIndirect behaves similarly to flink:vkCmdDrawIndirect +except that the parameters are read by the device from a buffer during +execution. pname:drawCount draws are executed by the command, with +parameters taken from pname:buffer starting at pname:offset and increasing +by pname:stride bytes for each successive draw. The parameters of each draw +are encoded in an array of slink:VkDrawIndexedIndirectCommand structures. If +pname:drawCount is less than or equal to one, pname:stride is ignored. include::../validity/protos/vkCmdDrawIndexedIndirect.txt[] -Notes ------ - -Although fname:vkCmdDrawIndexedIndirect does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDrawIndirect, flink:vkCmdDrawIndexed, flink:vkCmdDraw, flink:vkCmdDispatchIndirect +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDrawIndexedIndirect + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdDrawIndirect.txt b/doc/specs/vulkan/man/vkCmdDrawIndirect.txt index 320d5e33b1..efaa6516cf 100644 --- a/doc/specs/vulkan/man/vkCmdDrawIndirect.txt +++ b/doc/specs/vulkan/man/vkCmdDrawIndirect.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdDrawIndirect(3) ==================== @@ -8,55 +12,55 @@ vkCmdDrawIndirect - Issue an indirect draw into a command buffer. C Specification --------------- -include::../protos/vkCmdDrawIndirect.txt[] +// refBegin vkCmdDrawIndirect Issue an indirect draw into a command buffer. -Parameters ----------- +To record a non-indexed indirect draw, call: -pname:commandBuffer:: - Specifies the command buffer into which to insert the draw command. +include::../protos/vkCmdDrawIndirect.txt[] -pname:buffer:: - Specifies a handle of a buffer object containing parameters forming individual draw commands. -pname:offset:: - Specifies offset, in bytes, within the buffer object represented by pname:buffer at which the drawing command parameters begin. +Parameters +---------- -pname:drawCount:: - Specifies the number of indirect draws to consume from the specified - memory object. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:buffer is the buffer containing draw parameters. + * pname:offset is the byte offset into pname:buffer where parameters + begin. + * pname:drawCount is the number of draws to execute, and can: be zero. + * pname:stride is the byte stride between successive sets of draw + parameters. -pname:stride:: - Specifies the distance, in bytes, between the start of each indirect draw in the memory object. This parameter - may be zero to indicate that the array of indirect draw commands is tightly packed. Description ----------- -fname:vkCmdDrawIndirect issues an indirect draw into a command bufer. Each -indirect command consumes pname:drawCount structures, stored at pname:offset -bytes into the buffer object whose handle is specified in pname:buffer. -The beginning of each structure is pname:stride bytes from the previous. -The data structures have the a layout in memory which may be represented by -the slink:VkDrawIndirectCommand structure, the definition of which is: - -include::../structs/VkDrawIndirectCommand.txt[] - -If pname:stride is zero, the array of slink:VkDrawIndirectCommand structures is -assumed to be tightly packed. +fname:vkCmdDrawIndirect behaves similarly to flink:vkCmdDraw except that the +parameters are read by the device from a buffer during execution. +pname:drawCount draws are executed by the command, with parameters taken +from pname:buffer starting at pname:offset and increasing by pname:stride +bytes for each successive draw. The parameters of each draw are encoded in +an array of slink:VkDrawIndirectCommand structures. If pname:drawCount is +less than or equal to one, pname:stride is ignored. include::../validity/protos/vkCmdDrawIndirect.txt[] -Notes ------ - -Although fname:vkCmdDrawIndirect does not generate errors or return a value, enabled -validation layers may detect possible error conditions or potentially undefined -behavior and report this via some other means. See Also -------- -flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndexedIndirect +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdDrawIndirect + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdEndQuery.txt b/doc/specs/vulkan/man/vkCmdEndQuery.txt index 2a10c11a9c..02ad142621 100644 --- a/doc/specs/vulkan/man/vkCmdEndQuery.txt +++ b/doc/specs/vulkan/man/vkCmdEndQuery.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdEndQuery(3) ================ @@ -8,33 +12,57 @@ vkCmdEndQuery - Ends a query. C Specification --------------- +// refBegin vkCmdEndQuery Ends a query. + +To end a query after the set of desired draw or dispatch commands is +executed, call: + include::../protos/vkCmdEndQuery.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer upon which to execute the command. + * pname:commandBuffer is the command buffer into which this command will + be recorded. + * pname:queryPool is the query pool that is managing the results of the + query. + * pname:query is the query index within the query pool where the result is + stored. -pname:queryPool:: - The pool in which the query to be stopped resides. - -pname:entry:: - The entry within pname:queryPool at which the query to be stopped resides. Description ----------- -fname:vkCmdEndQuery ends the query at the entry specified by pname:entry in the query pool -specified by pname:queryPool. The command is executed in the command buffer specified -by pname:commandBuffer. The query referenced by pname:queryPool and pname:entry should be an active -query for which fname:vkCmdBeginQuery has been called in the past. +[[queries-operation-finished]] +As queries operate asynchronously, ending a query does not immediately set +the query's status to available. A query is considered _finished_ +when the final results of the query are ready to be retrieved by +flink:vkGetQueryPoolResults and flink:vkCmdCopyQueryPoolResults, and this +is when the query's status is set to available. + +Once a query is ended the query must: finish in finite time, unless the +state of the query is changed using other commands, e.g. by issuing a reset +of the query. include::../validity/protos/vkCmdEndQuery.txt[] + See Also -------- -flink:vkCmdBeginQuery, flink:vkCmdResetQueryPool, flink:vkCreateQueryPool, flink:vkDestroyQueryPool, flink:vkGetQueryPoolResults, flink:vkCmdCopyQueryPoolResults +slink:VkCommandBuffer, slink:VkQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdEndQuery + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdEndRenderPass.txt b/doc/specs/vulkan/man/vkCmdEndRenderPass.txt index 3ff7d10bcd..e52fea7a25 100644 --- a/doc/specs/vulkan/man/vkCmdEndRenderPass.txt +++ b/doc/specs/vulkan/man/vkCmdEndRenderPass.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdEndRenderPass(3) -====================== +===================== Name ---- @@ -8,30 +12,45 @@ vkCmdEndRenderPass - End the current render pass. C Specification --------------- +// refBegin vkCmdEndRenderPass End the current render pass. + +To record a command to end a render pass instance after recording the +commands for the last subpass, call: + include::../protos/vkCmdEndRenderPass.txt[] + Parameters ---------- -pname:commandBuffer:: - A handle to the command buffer in which the render pass is to be ended. + * pname:commandBuffer is the command buffer in which to end the current + render pass instance. + Description ----------- -fname:vkCmdEndRenderPass ends the current render pass in the command buffer specified by -pname:commandBuffer. A render pass must begin and end in the same command buffer. - -fname:vkCmdEndRenderPass is only allowed in primary command buffers. - -When fname:vkCmdEndRenderPass executes, the store op for all attachments in the render pass -is performed, and the attachment images are transitioned to their final layout. +Ending a render pass instance performs any multisample resolve operations on +the final subpass. include::../validity/protos/vkCmdEndRenderPass.txt[] + See Also -------- -flink:vkCmdBeginRenderPass, flink:vkCreateRenderPass +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdEndRenderPass + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdExecuteCommands.txt b/doc/specs/vulkan/man/vkCmdExecuteCommands.txt index d94c01db03..d413dcd59c 100644 --- a/doc/specs/vulkan/man/vkCmdExecuteCommands.txt +++ b/doc/specs/vulkan/man/vkCmdExecuteCommands.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdExecuteCommands(3) ======================= @@ -8,57 +12,55 @@ vkCmdExecuteCommands - Execute a secondary command buffer from a primary command C Specification --------------- +// refBegin vkCmdExecuteCommands Execute a secondary command buffer from a primary command buffer. + +A secondary command buffer mustnot: be directly submitted to a queue. +Instead, secondary command buffers are recorded to execute as part of a +primary command buffer with the command: + include::../protos/vkCmdExecuteCommands.txt[] + Parameters ---------- -pname:commandBuffer:: - The primary command buffer from which to call the secondary command buffers. - -pname:commandBuffersCount:: - Length of the pCommandBuffers array. + * pname:commandBuffer is a handle to a primary command buffer that the + secondary command buffers are submitted to, and must: be in the + recording state. + * pname:commandBufferCount is the length of the pname:pCommandBuffers + array. + * pname:pCommandBuffers is an array of secondary command buffer handles, + which are recorded to execute in the primary command buffer in the order + they are listed in the array. -pname:pCommandBuffers:: - An array of secondary command buffer handles. Description ----------- -fname:vkCmdExecuteCommands executes the contents of the secondary command buffers, -in the order they appear in the pname:pCommandBuffers array. - -If any of the secondary command buffers contains commands that may only be -executed inside a renderpass, then they may only be executed between calls -to flink:vkCmdBeginRenderPass and flink:vkCmdEndRenderPass and the active -renderpass must have a elink:VkSubpassContents property of -ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS. The pname:commandBuffer -argument must be a primary command buffer. The renderpass and -framebuffer provided when beginning the secondary command buffer must -match the sname:VkRenderPass and sname:VkFramebuffer provided to -fname:vkCmdBeginRenderPass. - -If a secondary command buffer was not recorded with the -ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT usage, then only a single -call to the secondary command buffer may exist in any primary command buffer -at one time. If this usage bit is clear, then the secondary command buffer -may be called multiple times from the same or multiple primary command buffers. - -A secondary command buffer must be finished recording, via -fname:vkEndCommandBuffer, before it can be referenced in a call to -fname:vkCmdExecuteCommands. It must not be reset or destroyed before primary -command buffers referencing it have completed executing. - -A secondary command buffer can safely be passed to multiple -fname:vkCmdExecuteCommands (affecting different primary command buffers) -simultaneously, only if it was recorded with the -ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag. +Once fname:vkCmdExecuteCommands has been called, any prior executions of the +secondary command buffers specified by pname:pCommandBuffers in any other +primary command buffer become invalidated, unless those secondary command +buffers were recorded with +ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT. include::../validity/protos/vkCmdExecuteCommands.txt[] + See Also -------- -flink:vkAllocateCommandBuffers, flink:vkFreeCommandBuffers, flink:vkCmdBeginRenderPass, flink:vkCmdEndRenderPass +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdExecuteCommands + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdFillBuffer.txt b/doc/specs/vulkan/man/vkCmdFillBuffer.txt index fd1e5a2c20..1660ccaad6 100644 --- a/doc/specs/vulkan/man/vkCmdFillBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdFillBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdFillBuffer(3) -=================== +================== Name ---- @@ -8,40 +12,57 @@ vkCmdFillBuffer - Fill a region of a buffer with a fixed value. C Specification --------------- -include::../protos/vkCmdFillBuffer.txt[] +// refBegin vkCmdFillBuffer Fill a region of a buffer with a fixed value. -Parameters ----------- +To clear buffer data, call: -pname:commandBuffer:: - The command buffer upon which to execute the command. +include::../protos/vkCmdFillBuffer.txt[] -pname:dstBuffer:: - The destination buffer. -pname:dstOffset:: - The offset in the buffer at which to begin filling. +Parameters +---------- -pname:size:: - The size of the region to be filled, in bytes. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:dstBuffer is the buffer to be filled. + * pname:dstOffset is the byte offset into the buffer at which to start + filling, and must: be a multiple of 4. + * pname:size is the number of bytes to fill, and must: be either a + multiple of 4, or ename:VK_WHOLE_SIZE to fill the range from + pname:offset to the end of the buffer. If ename:VK_WHOLE_SIZE is used + and the remaining size of the buffer is not a multiple of 4, then the + nearest smaller multiple is used. + * pname:data is the 4-byte word written repeatedly to the buffer to fill + pname:size bytes of data. The data word is written to memory according + to the host endianness. -pname:data:: - The data with which to fill the buffer region. Description ----------- -fname:vkCmdFillBuffer fills a region of a buffer object with the fixed, 32-bit pattern -specified in pname:data. The command is executed in pname:commandBuffer. pname:dstBuffer specifies -the destination buffer object, pname:dstOffset specifies the offset within the buffer -at which to begin filling and pname:size specifies the size of the region to be filled, -in bytes. pname:dstOffset and pname:size must be multiples of four bytes. +fname:vkCmdFillBuffer is treated as ``transfer'' operation for the purposes +of synchronization barriers. The ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT +must: be specified in pname:usage of sname:VkBufferCreateInfo in order for +the buffer to be compatible with fname:vkCmdFillBuffer. include::../validity/protos/vkCmdFillBuffer.txt[] + See Also -------- -flink:vkCreateBuffer, flink:vkCreateBufferView +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdFillBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdNextSubpass.txt b/doc/specs/vulkan/man/vkCmdNextSubpass.txt index 6defeef5b8..3a4d146e41 100644 --- a/doc/specs/vulkan/man/vkCmdNextSubpass.txt +++ b/doc/specs/vulkan/man/vkCmdNextSubpass.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdNextSubpass(3) =================== @@ -8,45 +12,64 @@ vkCmdNextSubpass - Transition to the next subpass of a render pass. C Specification --------------- +// refBegin vkCmdNextSubpass Transition to the next subpass of a render pass. + +To transition to the next subpass in the render pass instance after +recording the commands for a subpass, call: + include::../protos/vkCmdNextSubpass.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer in which to switch to the next subpass. + * pname:commandBuffer is the command buffer in which to record the + command. + * pname:contents specifies how the commands in the next subpass will be + provided, in the same fashion as the corresponding parameter of + flink:vkCmdBeginRenderPass. -pname:contents:: - A description of how the commands for the next subpass will be issued. Description ----------- -fname:vkCmdNextSubpass finalizes the previous subpass of the current render pass -and prepares for the next subpass. It may only be called in a primary command -buffer when a render pass is active. For a render pass with N subpasses, -fname:vkCmdNextSubpass must be used exactly N-1 times between -fname:vkCmdBeginRenderPass and fname:vkCmdEndRenderPass to transition through all -of the subpasses. - -The pname:contents parameter describes how the commands in the next subpass will be -provided. If it is ename:VK_SUBPASS_CONTENTS_INLINE, the contents of the -subpass will be recorded inline in the primary command buffer, and calling a -secondary command buffer within the subpass is an error. If pname:contents -is ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, the contents are -recorded in secondary command buffers that will be called from the primary -command buffer, and fname:vkCmdExecuteCommands is the only valid command on -the command buffer until fname:vkCmdNextSubpass or fname:vkCmdEndRenderPass. - -Transitioning between subpasses performs any multisample resolve operations in -the pass being ended, and transitions attachment images from their current -layout to the layout required by the next subpass. +The subpass index for a render pass begins at zero when +fname:vkCmdBeginRenderPass is recorded, and increments each time +fname:vkCmdNextSubpass is recorded. + +Moving to the next subpass automatically performs any multisample resolve +operations in the subpass being ended. End-of-subpass multisample resolves +are treated as color attachment writes for the purposes of synchronization. +That is, they are considered to execute in the +ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT pipeline stage and their +writes are synchronized with ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT. +Synchronization between rendering within a subpass and any resolve +operations at the end of the subpass occurs automatically, without need for +explicit dependencies or pipeline barriers. However, if the resolve +attachment is also used in a different subpass, an explicit dependency is +needed. + +After transitioning to the next subpass, the application can: record the +commands for that subpass. include::../validity/protos/vkCmdNextSubpass.txt[] + See Also -------- -flink:vkCmdEndRenderPass, flink:vkCreateRenderPass +slink:VkCommandBuffer, elink:VkSubpassContents + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdNextSubpass + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdPipelineBarrier.txt b/doc/specs/vulkan/man/vkCmdPipelineBarrier.txt index b26335b198..ea77c4d95e 100644 --- a/doc/specs/vulkan/man/vkCmdPipelineBarrier.txt +++ b/doc/specs/vulkan/man/vkCmdPipelineBarrier.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdPipelineBarrier(3) -======================== +======================= Name ---- @@ -8,134 +12,83 @@ vkCmdPipelineBarrier - Insert a set of execution and memory barriers. C Specification --------------- -include::../protos/vkCmdPipelineBarrier.txt[] +// refBegin vkCmdPipelineBarrier Insert a set of execution and memory barriers. -Parameters ----------- +To record a pipeline barrier, call: -pname:commandBuffer:: - The command buffer in which to wait. - -pname:srcStageMask:: - Specifies which pipeline stages must complete executing prior commands - (see elink:VkPipelineStageFlags for more detail). +include::../protos/vkCmdPipelineBarrier.txt[] -pname:dstStageMask:: - Specifies which pipeline stages do not begin executing subsequent - commands until the barrier completes (see elink:VkPipelineStageFlags for - more detail). -pname:byRegion:: - Indicates whether the barrier has screen-space locality (described below). +Parameters +---------- -pname:memoryBarrierCount:: - Number of memory barriers to insert after waiting for the pipe events. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:srcStageMask is a bitmask of elink:VkPipelineStageFlagBits + specifying a set of source pipeline stages (see + <>). + * pname:dstStageMask is a bitmask specifying a set of destination pipeline + stages. ++ +The pipeline barrier specifies an execution dependency such that all +work performed by the set of pipeline stages included in +pname:srcStageMask of the first set of commands completes before any +work performed by the set of pipeline stages included in +pname:dstStageMask of the second set of commands begins. ++ + * pname:dependencyFlags is a bitmask of elink:VkDependencyFlagBits. The + execution dependency is by-region if the mask includes + ename:VK_DEPENDENCY_BY_REGION_BIT. + * pname:memoryBarrierCount is the length of the pname:pMemoryBarriers + array. + * pname:pMemoryBarriers is a pointer to an array of slink:VkMemoryBarrier + structures. + * pname:bufferMemoryBarrierCount is the length of the + pname:pBufferMemoryBarriers array. + * pname:pBufferMemoryBarriers is a pointer to an array of + slink:VkBufferMemoryBarrier structures. + * pname:imageMemoryBarrierCount is the length of the + pname:pImageMemoryBarriers array. + * pname:pImageMemoryBarriers is a pointer to an array of + slink:VkImageMemoryBarrier structures. -pname:ppMemoryBarriers:: - Array of pointers to memory barrier structures specifying the parameters - of the memory barriers to insert as part of the pipeline barrier. Each - element of the array may point to a slink:VkMemoryBarrier, - slink:VkBufferMemoryBarrier, or slink:VkImageMemoryBarrier structure. Description ----------- -fname:vkCmdPipelineBarrier inserts a set of execution and memory barriers -into the command buffer specified by pname:commandBuffer. The number of barriers -to insert is specified in pname:memoryBarrierCount and the description of those -barriers is specified in a number instances of the slink:VkMemoryBarrier, -slink:VkBufferMemoryBarrier or slink:VkImageMemoryBarrier structures. The -definitions of these structures are: - -include::../structs/VkMemoryBarrier.txt[] - -include::../structs/VkBufferMemoryBarrier.txt[] - -include::../structs/VkImageMemoryBarrier.txt[] - -The pname:ppMemoryBarriers parameter points to an array of pointers to -these structures. Each element of pname:ppMemoryBarriers may point to a -different type of structure. The type of each structure is identified by its -pname:sType member member. This should be set to ename:VK_STRUCTURE_TYPE_MEMORY_BARRIER, -ename:VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER or -ename:VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER for slink:VkMemoryBarrier, -slink:VkBufferMemoryBarrier and slink:VkImageMemoryBarrier, respectively. - -Writes as described by pname:outputMask that were written by pipeline stages -in pname:srcStageMask prior to the barrier are made visible to reads as -described by pname:inputMask in pipeline stages in pname:dstStageMask -subsequent to the barrier. If pname:byRegion is true, then the writes are -made visible only to work in the same (implementation-dependent) -screen-space region. This effectively reqiures that the subsequent work only -reads data written by the same fragment location in the previous work. -pname:byRegion should only be set to true when the pname:srcStageMask and -pname:dstStageMask only include screen-space work (fragment shader, early -and late fragment tests, and/or attachment outputs). - -In case of global memory barriers inserted by passing an -slink:VkMemoryBarrier structure to the command prior writes in the requested -pipeline stages to any memory location corresponding to the set of memory -output coherency flags specified in the pname:outputMask member of the -structure are made coherent with subsequent reads in the requested pipeline -stages of any memory location corresponding to the set of memory input -coherency flags specified in the pname:inputMask member of the structure. - -In case of buffer memory barriers inserted by passing an -slink:VkBufferMemoryBarrier structure to the command prior writes in the -requested pipeline stages to the specified sub-range of the buffer -corresponding to the set of memory output coherency flags specified in the -pname:outputMask member of the structure are made coherent with subsequent -reads in the requested pipeline stages of the specified sub-range of the -buffer corresponding to the set of memory input coherency flags specified in -the pname:inputMask member of the structure. - -In case of image memory barriers inserted by passing an -slink:VkImageMemoryBarrier structure to the command prior writes in the -requested pipeline stages to the specified sub-range of the image -corresponding to the set of memory output coherency flags specified in the -pname:outputMask member of the structure are made coherent with subsequent -reads in the requested pipeline stages of the specified sub-range of the -image corresponding to the set of memory input coherency flags specified in -the pname:inputMask member of the structure. Additionally, if the -pname:oldLayout and pname:newLayout members of the structure don't match a -layout transition is performed on the specified sub-range of the image as -part of the memory barrier. - -In case of buffer and image memory barriers the pname:srcQueueFamilyIndex -and pname:dstQueueFamilyIndex members of the corresponding memory barrier -structures can specify the parameters of a transfer of ownership between two -distinct families of queues of a shared buffer or image object created with -the ename:VK_SHARING_MODE_EXCLUSIVE sharing mode. In case of regular -resource transitions both pname:srcQueueFamilyIndex and -pname:dstQueueFamilyIndex should be set to ename:VK_QUEUE_FAMILY_IGNORED to -indicate no transfer of ownership between queue families. In case of -resource transitions involving ownership transfer of shared buffers or -images one of these two members have to match the queue family index the -command buffer specified by pname:commandBuffer was created for, while the other -should specify the queue family index the ownership transfer is released to -or acquired from. Ownership transferring resource transitions have to be -performed both on a queue from the source queue family and on a queue from -the destination queue family (see elink:VkSharingMode for more detail). - -If the pname:inputMask member is zero in any of the memory barrier structures -then prior writes will only be coherent with any type of subsequent read -after a future resource transition command specifies a non-empty set of -memory input coherency control flags. This allows flushing device output -caches unconditionally. - -If the pname:outputMask member is zero in any of the memory barrier -structures then subsequent reads will only be coherent with any type of -prior write if an earlier resource transition command specified a non-empty -set of memory output coherency control flags. This allows invalidating -device input caches unconditionally. +Each element of the pname:pMemoryBarriers, pname:pBufferMemoryBarriers and +pname:pImageMemoryBarriers arrays specifies two halves of a memory +dependency, as defined above. Specifics of each type of memory barrier and +the memory access types are defined further in +<>. + +If fname:vkCmdPipelineBarrier is called outside a render pass instance, then +the first set of commands is all prior commands submitted to the queue and +recorded in the command buffer and the second set of commands is all +subsequent commands recorded in the command buffer and submitted to the +queue. If fname:vkCmdPipelineBarrier is called inside a render pass +instance, then the first set of commands is all prior commands in the same +subpass and the second set of commands is all subsequent commands in the +same subpass. include::../validity/protos/vkCmdPipelineBarrier.txt[] + See Also -------- -flink:vkCmdWaitEvents, slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, -slink:VkImageMemoryBarrier, elink:VkPipelineStageFlags +slink:VkBufferMemoryBarrier, slink:VkCommandBuffer, elink:VkDependencyFlags, slink:VkImageMemoryBarrier, slink:VkMemoryBarrier, elink:VkPipelineStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdPipelineBarrier + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCmdPushConstants.txt b/doc/specs/vulkan/man/vkCmdPushConstants.txt index 749d68a187..47ff8cddd1 100644 --- a/doc/specs/vulkan/man/vkCmdPushConstants.txt +++ b/doc/specs/vulkan/man/vkCmdPushConstants.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdPushConstants(3) ===================== @@ -8,55 +12,51 @@ vkCmdPushConstants - Update the values of push constants. C Specification --------------- -include::../protos/vkCmdPushConstants.txt[] - -Parameters ----------- +// refBegin vkCmdPushConstants Update the values of push constants. -pname:commandBuffer:: - A handle to the command buffer into which to insert the command. +To update push constants, call: -pname:layout:: - A handle to the pipeline layout describing the layout of the push constants. +include::../protos/vkCmdPushConstants.txt[] -pname:stageFlags:: - A bitmask specifying the pipeline stages for which to update push constants. -pname:offset:: - The offset of the first push constant to update in the layout. +Parameters +---------- -pname:size:: - The size of the push constants to update. + * pname:commandBuffer is the command buffer in which the push constant + update will be recorded. + * pname:layout is the pipeline layout used to program the push constant + updates. + * pname:stageFlags is a bitmask of elink:VkShaderStageFlagBits specifying + the shader stages that will use the push constants in the updated range. + * pname:offset is the start offset of the push constant range to update, + in units of bytes. + * pname:size is the size of the push constant range to update, in units of + bytes. + * pname:pValues is an array of pname:size bytes containing the new push + constant values. -pname:pValues:: - A pointer to a region of memory containing the new values for the push constants. Description ----------- -fname:vkCmdPushConstants updates the values of push constants for the command buffer -specified by pname:commandBuffer. Push constants become visible to the next drawing or -dispatch command appended to pname:commandBuffer. pname:layout specifies a handle to -a pipeline layout object containing the layout information for the push constants. -pname:stageFlags specifies the pipeline stages for which the push constant update -is to be applied. This parameter is a bitwise combination of members of the -elink:VkShaderStageFlagBits enumeration and must match the shader stages used -in the pipeline layout for the range specified by pname:offset and pname:size. -The definition of elink:VkShaderStageFlagBits is: +include::../validity/protos/vkCmdPushConstants.txt[] -include::../enums/VkShaderStageFlagBits.txt[] -pname:offset and pname:size specify the offset of the start of the region to be updated -and its size, respectively. Both are in units of bytes. +See Also +-------- -pname:pValues is a pointer to a region of pname:size bytes of memory containing the -new values for the specified push constants. +slink:VkCommandBuffer, slink:VkPipelineLayout, elink:VkShaderStageFlags -include::../validity/protos/vkCmdPushConstants.txt[] -See Also --------- +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL -flink:vkCreatePipelineLayout, elink:VkPipelineStageFlags +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdPushConstants + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdResetEvent.txt b/doc/specs/vulkan/man/vkCmdResetEvent.txt index 952e8fe795..2bad3d6201 100644 --- a/doc/specs/vulkan/man/vkCmdResetEvent.txt +++ b/doc/specs/vulkan/man/vkCmdResetEvent.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdResetEvent(3) ================== @@ -8,35 +12,44 @@ vkCmdResetEvent - Reset an event object to non-signaled state. C Specification --------------- +// refBegin vkCmdResetEvent Reset an event object to non-signaled state. + +To set the state of an event to unsignaled from a device, call: + include::../protos/vkCmdResetEvent.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:event is the event that will be reset. + * pname:stageMask specifies the pipeline stage at which the state of + pname:event is updated as described below. -pname:event:: - The event object to reset to non-signaled state. - -pname:stageMask:: - Specifies when to reset the event (see elink:VkPipelineStageFlags for more - detail). Description ----------- -fname:vkCmdResetEvent causes the event object specified in pname:event to be -returned to the non-signaled state when the pipeline stages specified by -pname:stageMask have completed executing prior commands. - -For definitions of the pipeline stages, see elink:VkPipelineStageFlags. - include::../validity/protos/vkCmdResetEvent.txt[] + See Also -------- -flink:vkCmdSetEvent, flink:vkSetEvent, flink:vkResetEvent, elink:VkPipelineStageFlags +slink:VkCommandBuffer, slink:VkEvent, elink:VkPipelineStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdResetEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdResetQueryPool.txt b/doc/specs/vulkan/man/vkCmdResetQueryPool.txt index 334d6a2af5..ebfd707f54 100644 --- a/doc/specs/vulkan/man/vkCmdResetQueryPool.txt +++ b/doc/specs/vulkan/man/vkCmdResetQueryPool.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdResetQueryPool(3) -======================= +====================== Name ---- @@ -8,36 +12,48 @@ vkCmdResetQueryPool - Reset queries in a query pool. C Specification --------------- +// refBegin vkCmdResetQueryPool Reset queries in a query pool. + +To reset a range of queries in a query pool, call: + include::../protos/vkCmdResetQueryPool.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which the command is to be placed. + * pname:commandBuffer is the command buffer into which this command will + be recorded. + * pname:queryPool is the handle of the query pool managing the queries + being reset. + * pname:firstQuery is the initial query index to reset. + * pname:queryCount is the number of queries to reset. -pname:queryPool:: - The query pool containing the queries to be reset. - -pname:startQuery:: - The index of the first query to be reset. - -pname:queryCount:: - The number of queries to reset. Description ----------- -fname:vkCmdResetQueryPool resets pname:queryCount starting at the entry index given -by pname:startQuery in the query pool specified by pname:queryPool. The reset command -is executed by the command buffer specified in pname:commandBuffer. After execution, all -queries are reset to inactive state and have zero values. +When executed on a queue, this command sets the status of query indices +latexmath:[$firstQuery,firstQuery+queryCount-1$] to unavailable. include::../validity/protos/vkCmdResetQueryPool.txt[] + See Also -------- -flink:vkCmdBeginQuery, flink:vkCmdEndQuery, flink:vkCreateQueryPool, flink:vkDestroyQueryPool, flink:vkGetQueryPoolResults, flink:vkCmdCopyQueryPoolResults +slink:VkCommandBuffer, slink:VkQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdResetQueryPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdResolveImage.txt b/doc/specs/vulkan/man/vkCmdResolveImage.txt index 261c065ba6..727564f6f7 100644 --- a/doc/specs/vulkan/man/vkCmdResolveImage.txt +++ b/doc/specs/vulkan/man/vkCmdResolveImage.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdResolveImage(3) -===================== +==================== Name ---- @@ -8,48 +12,69 @@ vkCmdResolveImage - Resolve regions of an image. C Specification --------------- +// refBegin vkCmdResolveImage Resolve regions of an image. + +To resolve a multisample image to a non-multisample image, call: + include::../protos/vkCmdResolveImage.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which the command is to be placed. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:srcImage is the source image. + * pname:srcImageLayout is the layout of the source image subresources for + the resolve. + * pname:dstImage is the destination image. + * pname:dstImageLayout is the layout of the destination image subresources + 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. -pname:srcImage:: - The image that is the source of the resolve operation. -pname:srcImageLayout:: - The layout of the source image at the time of the resolve. +Description +----------- -pname:dstImage:: - The image into which image data is to be resolved. +During the resolve the samples corresponding to each pixel location in the +source are converted to a single sample before being written to the +destination. If the source formats are floating-point or normalized types, +the sample values for each pixel are resolved in an implementation-dependent +manner. If the source formats are integer types, a single sample's value is +selected for each pixel. + +pname:srcOffset and pname:dstOffset select the initial x, y, and z +offsets in texels of the sub-regions of the source and destination image +data. pname:extent is the size in texels of the source +image to resolve in pname:width, pname:height and pname:depth. 1D images use +only pname:x and pname:width. 2D images use pname:x, pname:y, pname:width +and pname:height. 3D images use pname:x, pname:y, pname:z, pname:width, +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 resolved to the destination image. -pname:dstImageLayout:: - The layout of the destination image at the time of the resolve. +include::../validity/protos/vkCmdResolveImage.txt[] -pname:regionCount:: - The number of regions to resolve. -pname:pRegions:: - An array of image regions to resolve. +See Also +-------- -Description ------------ +slink:VkCommandBuffer, slink:VkImage, elink:VkImageLayout, slink:VkImageResolve -fname:vkCmdResolveImage resolves regions of a source image into a destination image. -The source and destination images are specified in pname:srcImage and pname:dstImage, respectively. -The layout of the source and destination images must be provided in pname:srcImageLayout and -pname:dstImageLayout, respectively. pname:pRegions is a pointer to an array of pname:regionCount slink:VkImageResolve -structures, the definition of each is: -include::../structs/VkImageResolve.txt[] +Document Notes +-------------- -include::../validity/protos/vkCmdResolveImage.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdResolveImage -flink:vkCmdBlitImage, flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetBlendConstants.txt b/doc/specs/vulkan/man/vkCmdSetBlendConstants.txt index 3fcb3e4b89..8d352414f4 100644 --- a/doc/specs/vulkan/man/vkCmdSetBlendConstants.txt +++ b/doc/specs/vulkan/man/vkCmdSetBlendConstants.txt @@ -1,5 +1,9 @@ -vkCmdSetBlendConstants.txt(3) -============================= +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +vkCmdSetBlendConstants(3) +========================= Name ---- @@ -8,36 +12,44 @@ vkCmdSetBlendConstants - Set the values of blend constants. C Specification --------------- +// refBegin vkCmdSetBlendConstants Set the values of blend constants. + +Otherwise, to dynamically set and change the blend constant, call: + include::../protos/vkCmdSetBlendConstants.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:blendConstants is an array of four values specifying the R, G, B, + and A components of the blend constant color used in blending, depending + on the <>. -pname:blendConstants:: - An array of values specifying the new blend constants. Description ----------- -fname:vkCmdSetBlendConstants sets the blend constants for the command buffer specified -by pname:commandBuffer to the values specified in the four element array pname:blendConstants. -Blend constants may be modified only if the current pipeline state object was created -with the ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled is -first bound, the values of the blend constants are taken from the pipeline and -attempts to change them using fname:vkCmdSetBlendConstants results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic -state enabled is first bound, the current values of the blend constants become undefined -and must be set using a call to fname:vkCmdSetBlendConstants. - include::../validity/protos/vkCmdSetBlendConstants.txt[] + See Also -------- -flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetBlendConstants + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetDepthBias.txt b/doc/specs/vulkan/man/vkCmdSetDepthBias.txt index 23a199c796..da2d2700c4 100644 --- a/doc/specs/vulkan/man/vkCmdSetDepthBias.txt +++ b/doc/specs/vulkan/man/vkCmdSetDepthBias.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetDepthBias(3) ==================== @@ -8,43 +12,142 @@ vkCmdSetDepthBias - Set the depth bias dynamic state. C Specification --------------- +// refBegin vkCmdSetDepthBias Set the depth bias dynamic state. + +The depth values of all fragments generated by the rasterization of a +polygon can: be offset by a single value that is computed for that polygon. +This behavior is controlled by the pname:depthBiasEnable, +pname:depthBiasConstantFactor, pname:depthBiasClamp, and +pname:depthBiasSlopeFactor members of +slink:VkPipelineRasterizationStateCreateInfo, or by the corresponding +parameters to the fname:vkCmdSetDepthBias command if depth bias state is +dynamic. + include::../protos/vkCmdSetDepthBias.txt[] + Parameters ---------- -pname:commandBuffer:: - A handle to the command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:depthBiasConstantFactor is a scalar factor controlling the + constant depth value added to each fragment. + * pname:depthBiasClamp is the maximum (or minimum) depth bias of a + fragment. + * pname:depthBiasSlopeFactor is a scalar factor applied to a fragment's + slope in depth bias calculations. -pname:depthBiasConstantFactor:: - The constant bias factor. - -pname:depthBiasClamp:: - The bias clamp factor. - -pname:depthBiasSlopeFactor:: - The bias slope factor. Description ----------- -fname:vkCmdSetDepthBias sets the depth bias parameters for the command buffer specified -by pname:commandBuffer. The pname:depthBiasConstantFactor, pname:depthBiasClamp -and pname:depthBiasSlopeFactor parameters specify the new values for the depth -bias calculation. The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled is -first bound, the values of the depth bias parameters are taken from the pipeline and -attempts to change them using fname:vkCmdSetBlendConstants results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic -state enabled is first bound, the current values of the depth bias parameters become undefined -and must be set using a call to fname:vkCmdSetDepthBias. +If pname:depthBiasEnable is ename:VK_FALSE, no depth bias is applied and the +fragment's depth values are unchanged. + +pname:depthBiasSlopeFactor scales the maximum depth slope of the polygon, +and pname:depthBiasConstantFactor scales an implementation-dependent +constant that relates to the usable resolution of the depth buffer. The +resulting values are summed to produce the depth bias value which is then +clamped to a minimum or maximum value specified by pname:depthBiasClamp. +pname:depthBiasSlopeFactor, pname:depthBiasConstantFactor, and +pname:depthBiasClamp can: each be positive, negative, or zero. + +The maximum depth slope latexmath:[$m$] of a triangle is + +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\begin{equation} +m = \sqrt{ \left({\partial z_f \over \partial x_f}\right)^2 + + \left({\partial z_f \over \partial y_f}\right)^2} +\end{equation} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +where latexmath:[$(x_f, y_f, z_f)$] is a point on the triangle. +latexmath:[$m$] may: be approximated as + +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\begin{equation} +m = \max( \left |{\partial z_f \over \partial x_f} \right |, +\left |{\partial z_f \over \partial y_f} \right | ). +\end{equation} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +The minimum resolvable difference latexmath:[$r$] is an +implementation-dependent parameter that depends on the depth buffer +representation. It is the smallest difference in framebuffer coordinate +latexmath:[$z$] values that is guaranteed to remain distinct throughout +polygon rasterization and in the depth buffer. All pairs of fragments +generated by the rasterization of two polygons with otherwise identical +vertices, but latexmath:[$z_f$] values that differ by $r$, will have +distinct depth values. + +For fixed-point depth buffer representations, latexmath:[$r$] is constant +throughout the range of the entire depth buffer. For floating-point depth +buffers, there is no single minimum resolvable difference. In this case, the +minimum resolvable difference for a given polygon is dependent on the +maximum exponent, latexmath:[$e$], in the range of latexmath:[$z$] values +spanned by the primitive. If latexmath:[$n$] is the number of bits in the +floating-point mantissa, the minimum resolvable difference, latexmath:[$r$], +for the given primitive is defined as + +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\begin{equation} +r = 2^{e - n} +\end{equation} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +If no depth buffer is present, latexmath:[$r$] is undefined. + +The bias value latexmath:[$o$] for a polygon is + +[latexmath] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\begin{equation} +o = +\begin{cases} + m \times depthBiasSlopeFactor + + r \times depthBiasConstantFactor & depthBiasClamp = 0\ or\ NaN \\ + \min(m \times depthBiasSlopeFactor + + r \times depthBiasConstantFactor, + depthBiasClamp) & depthBiasClamp > 0 \\ + \max(m \times depthBiasSlopeFactor + + r \times depthBiasConstantFactor, + depthBiasClamp) & depthBiasClamp < 0 \\ +\end{cases} +\end{equation} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +latexmath:[$m$] is computed as described above. If the depth buffer uses a +fixed-point representation, latexmath:[$m$] is a function of depth values in +the range latexmath:[$[0,1\]$], and latexmath:[$o$] is applied to depth +values in the same range. + +For fixed-point depth buffers, fragment depth values are always limited to +the range latexmath:[$[0,1\]$] by clamping after depth bias addition is +performed. Fragment depth values are clamped even when the depth buffer uses +a floating-point representation. include::../validity/protos/vkCmdSetDepthBias.txt[] + See Also -------- -flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetDepthBias + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetDepthBounds.txt b/doc/specs/vulkan/man/vkCmdSetDepthBounds.txt index 09092f0372..e9d37a7117 100644 --- a/doc/specs/vulkan/man/vkCmdSetDepthBounds.txt +++ b/doc/specs/vulkan/man/vkCmdSetDepthBounds.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetDepthBounds(3) ====================== @@ -8,52 +12,54 @@ vkCmdSetDepthBounds - Set the depth bounds test values for a command buffer. C Specification --------------- +// refBegin vkCmdSetDepthBounds Set the depth bounds test values for a command buffer. + +The depth bounds test conditionally disables coverage of a sample based on +the outcome of a comparison between the value latexmath:[$z_a$] in the depth +attachment at location latexmath:[$(x_f,y_f)$] (for the appropriate sample) +and a range of values. The test is enabled or disabled by the +pname:depthBoundsTestEnable member of +slink:VkPipelineDepthStencilStateCreateInfo: If the pipeline state object +is created without the ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state +enabled then the range of values used in the depth bounds test are defined +by the pname:minDepthBounds and pname:maxDepthBounds members of the +slink:VkPipelineDepthStencilStateCreateInfo structure. Otherwise, to +dynamically set the depth bounds range values call: + include::../protos/vkCmdSetDepthBounds.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:minDepthBounds is the lower bound of the range of depth values + used in the depth bounds test. + * pname:maxDepthBounds is the upper bound of the range. -pname:minDepthBounds:: - The minimum value for the depth bounds test range. - -pname:maxDepthBounds:: - The maximum value for the depth bounds test range. Description ----------- -fname:vkCmdSetDepthBounds sets the minimum and maximum values for the depth bounds -test for the command buffer specified in pname:commandBuffer. pname:minDepthBounds and -pname:maxDepthBounds specify the minimum and maximum values for the depth bounds -test respectively. A the value stored in the current depth attachment at a fragment's -location lies between pname:minDepthBounds and pname:maxDepthBounds, then the depth -bounds test passes, otherwise the test fails and the fragment's coverage bit is -cleared. - -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled is -first bound, the values of the depth bias parameters are taken from the pipeline and -attempts to change them using fname:vkCmdSetBlendConstants results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic -state enabled is first bound, the current values of the depth bias parameters become undefined -and must be set using a call to fname:vkCmdSetDepthBias. - -If the depth bounds test for the current pipeline is not enabled, then it is as -if the depth bounds test always passes and the values of pname:minDepthBounds -and pname:maxDepthBounds are ignored. - -The value of pname:maxDepthBounds must be greater than or equal to the value of -pname:minDepthBounds. - include::../validity/protos/vkCmdSetDepthBounds.txt[] + See Also -------- -flink:vkCmdSetDepthBias, flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetDepthBounds + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetEvent.txt b/doc/specs/vulkan/man/vkCmdSetEvent.txt index 9a409a623f..4d56efa6ce 100644 --- a/doc/specs/vulkan/man/vkCmdSetEvent.txt +++ b/doc/specs/vulkan/man/vkCmdSetEvent.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetEvent(3) ================ @@ -8,35 +12,46 @@ vkCmdSetEvent - Set an event object to signaled state. C Specification --------------- +// refBegin vkCmdSetEvent Set an event object to signaled state. + +The state of an event can: also be updated on the device by commands +inserted in command buffers. To set the state of an event to signaled from +a device, call: + include::../protos/vkCmdSetEvent.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:event is the event that will be signaled. + * pname:stageMask specifies the pipeline stage at which the state of + pname:event is updated as described below. -pname:event:: - The event object to set to signaled state. - -pname:stageMask:: - Specifies when the event becomes signaled (see elink:VkPipelineStageFlags for - more detail). Description ----------- -fname:vkCmdSetEvent causes the event object specified in pname:event to be -moved to the signaled state when the pipeline stages specified by -pname:stageMask have completed executing prior commands. - -For definitions of the pipeline stages, see elink:VkPipelineStageFlags. - include::../validity/protos/vkCmdSetEvent.txt[] + See Also -------- -flink:vkCmdResetEvent, flink:vkSetEvent, flink:vkResetEvent, elink:VkPipelineStageFlags +slink:VkCommandBuffer, slink:VkEvent, elink:VkPipelineStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetLineWidth.txt b/doc/specs/vulkan/man/vkCmdSetLineWidth.txt index d919bfee12..086673fe0e 100644 --- a/doc/specs/vulkan/man/vkCmdSetLineWidth.txt +++ b/doc/specs/vulkan/man/vkCmdSetLineWidth.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetLineWidth(3) ==================== @@ -8,39 +12,46 @@ vkCmdSetLineWidth - Set the dynamic line width state. C Specification --------------- +// refBegin vkCmdSetLineWidth Set the dynamic line width state. + +The line width is set by the pname:lineWidth property of +slink:VkPipelineRasterizationStateCreateInfo in the currently active +pipeline if the pipeline was not created with +ename:VK_DYNAMIC_STATE_LINE_WIDTH enabled. Otherwise, the line width is set +by calling fname:vkCmdSetLineWidth: + include::../protos/vkCmdSetLineWidth.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:lineWidth is the width of rasterized line segments. -pname:lineWidth:: - The new line width. Description ----------- -fname:vkCmdSetLineWidth sets the dymamic line width for the command buffer specified -in pname:commandBuffer to the value specified in pname:lineWidth. Line primitives drawn -subsequent to this command, either directly using line topologies or by generation of -line primitives mid-pipeline, will assume the specified width. - -Dynamic line width may be modified only if the current pipeline state object was created -with the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled is -first bound, the line width is taken from the pipeline and -attempts to change it using fname:vkCmdSetLineWidth results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic -state enabled is first bound, the current value for line width becomes undefined -and must be set using a call to fname:vkCmdSetLineWidth. - include::../validity/protos/vkCmdSetLineWidth.txt[] + See Also -------- -flink:vkCmdSetDepthBias, flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetLineWidth + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetScissor.txt b/doc/specs/vulkan/man/vkCmdSetScissor.txt index fd9dfe1ad4..96a1332078 100644 --- a/doc/specs/vulkan/man/vkCmdSetScissor.txt +++ b/doc/specs/vulkan/man/vkCmdSetScissor.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetScissor(3) ================== @@ -8,49 +12,64 @@ vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer. C Specification --------------- +// refBegin vkCmdSetScissor Set the dynamic scissor rectangles on a command buffer. + +The scissor test determines if a fragment's framebuffer coordinates +latexmath:[$(x_f,y_f)$] lie within the scissor rectangle corresponding to +the viewport index (see <>) used by the primitive that generated the fragment. If the +pipeline state object is created without ename:VK_DYNAMIC_STATE_SCISSOR +enabled then the scissor rectangles are set by the +slink:VkPipelineViewportStateCreateInfo state of the pipeline state object. +Otherwise, to dynamically set the scissor rectangles call: + include::../protos/vkCmdSetScissor.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:firstScissor is the index of the first scissor whose state is + updated by the command. + * pname:scissorCount is the number of scissors whose rectangles are + updated by the command. + * pname:pScissors is a pointer to an array of slink:VkRect2D structures + defining scissor rectangles. -pname:scissorCount:: - The number of scissor rectangles to update. - -pname:pScissors:: - A pointer to an array of structures defining the new scissor rectangles. Description ----------- -fname:vkCmdSetScissor sets the dynamic scissor state on the command buffer specified -in pname:commandBuffer. pname:scissorCount specifies the number of scissor rectangles -to update and pname;pScissors is pointer to an array of slink:VkRect2D structures -defining the new scissor rectangles. The definition of slink:VkRect2D is: - -include::../structs/VkRect2D.txt[] - -The pname:offset and pname:extent members of slink:VkRect2D specify the origin and -size of the scissor rectangle, respectively. The rectangles numbered zero through -pname:scissorCount are updated and any remaining scissor rectangles become undefined. +The scissor rectangles taken from element latexmath:[$i$] of pname:pScissors +replace the current state for the scissor index +latexmath:[$\mathit{firstScissor}+i$], for latexmath:[$i$] in +latexmath:[$[0, scissorCount)$]. -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_SCISSOR dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_SCISSOR dynamic state enabled is -first bound, the origins and extents are taken from the pipeline and -attempts to change them using fname:vkCmdSetScissor results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_SCISSOR dynamic -state enabled is first bound, the current values of the scissor rectangle -origins and extents become undefined and must be set using a call to -fname:vkCmdSetScissor. +Each scissor rectangle is described by a slink:VkRect2D structure, with the +pname:offset.x and pname:offset.y values determining the upper left corner +of the scissor rectangle, and the pname:extent.width and pname:extent.height +values determining the size in pixels. include::../validity/protos/vkCmdSetScissor.txt[] + See Also -------- -flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer, slink:VkRect2D + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetScissor + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetStencilCompareMask.txt b/doc/specs/vulkan/man/vkCmdSetStencilCompareMask.txt index 8212c209b1..d235812afb 100644 --- a/doc/specs/vulkan/man/vkCmdSetStencilCompareMask.txt +++ b/doc/specs/vulkan/man/vkCmdSetStencilCompareMask.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetStencilCompareMask(3) ============================= @@ -8,50 +12,58 @@ vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state. C Specification --------------- +// refBegin vkCmdSetStencilCompareMask Set the stencil compare mask dynamic state. + +If the pipeline state object is created with the +ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, then to +dynamically set the stencil compare mask call: + include::../protos/vkCmdSetStencilCompareMask.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. - -pname:faceMask:: - The face or faces to which the new mask is to apply. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:faceMask is a bitmask specifying the set of stencil state for + which to update the compare mask. Bits which can: be set include: ++ +-- +// refBegin VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare mask +include::../enums/VkStencilFaceFlagBits.txt[] +-- + ** ename:VK_STENCIL_FACE_FRONT_BIT indicates that only the front set of + stencil state is updated. + ** ename:VK_STENCIL_FACE_BACK_BIT indicates that only the back set of + stencil state is updated. + ** ename:VK_STENCIL_FRONT_AND_BACK is the combination of + ename:VK_STENCIL_FACE_FRONT_BIT and ename:VK_STENCIL_FACE_BACK_BIT and + indicates that both sets of stencil state are updated. + * pname:compareMask is the new value to use as the stencil compare mask. -pname:compareMask:: - The new value to use for the stencil compare mask. Description ----------- -fname:vkCmdSetStencilCompareMask sets the mask value used for stencil comparisons -on the command buffer specified by pname:commandBuffer. pname:faceMask specifies the -face or faces to which the new values are applied. It a bitmask comprised of members -of the elink:VkStencilFaceFlagBits enumeration, the definition of which is: +include::../validity/protos/vkCmdSetStencilCompareMask.txt[] -include::../enums/VkStencilFaceFlagBits.txt[] -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled is -first bound, the value if the stencil compare mask is taken from the pipeline and -attempts to change it using fname:vkCmdSetStencilCompareMask results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic -state enabled is bound, the current value of the stencil compare mask becomes undefined -and must be set using a call to fname:vkCmdSetStencilCompareMask. +See Also +-------- -If the stencil test is disabled in the current graphics pipeline, then the value of -the stencil compare mask is ignored. +slink:VkCommandBuffer, elink:VkStencilFaceFlags -include::../validity/protos/vkCmdSetStencilCompareMask.txt[] -See Also --------- +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL -flink:vkCreateGraphicsPipelines, -flink:vkCmdSetStencilWriteMask, -flink:vkCmdSetStencilReference, -slink:VkPipelineDynamicStateCreateInfo +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetStencilCompareMask + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetStencilReference.txt b/doc/specs/vulkan/man/vkCmdSetStencilReference.txt index dbf9c6edb2..9e29d334ee 100644 --- a/doc/specs/vulkan/man/vkCmdSetStencilReference.txt +++ b/doc/specs/vulkan/man/vkCmdSetStencilReference.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetStencilReference(3) =========================== @@ -8,50 +12,47 @@ vkCmdSetStencilReference - Set the stencil reference dynamic state. C Specification --------------- +// refBegin vkCmdSetStencilReference Set the stencil reference dynamic state. + +If the pipeline state object is created with the +ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, then to +dynamically set the stencil reference value call: + include::../protos/vkCmdSetStencilReference.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * 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 reference value, as + described above for flink:vkCmdSetStencilCompareMask. + * pname:reference is the new value to use as the stencil reference value. -pname:faceMask:: - The face or faces to which the command is to apply. - -pname:reference:: - The new value for the stencil reference dynamic state. Description ----------- -fname:vkCmdSetStencilReference sets the reference value used for stencil comparisons -on the command buffer specified by pname:commandBuffer. pname:faceMask specifies the -face or faces to which the new values are applied. It a bitmask comprised of members -of the elink:VkStencilFaceFlagBits enumeration, the definition of which is: +include::../validity/protos/vkCmdSetStencilReference.txt[] + -include::../enums/VkStencilFaceFlagBits.txt[] +See Also +-------- -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled is -first bound, the value if the stencil reference value is taken from the pipeline and -attempts to change it using fname:vkCmdSetStencilReference results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic -state enabled is bound, the current value of the stencil reference value becomes undefined -and must be set using a call to fname:vkCmdSetStencilReference. +slink:VkCommandBuffer, elink:VkStencilFaceFlags -If the stencil test is disabled in the current graphics pipeline, then the value of -the stencil compare mask is ignored. -include::../validity/protos/vkCmdSetStencilReference.txt[] +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetStencilReference -flink:vkCreateGraphicsPipelines, -flink:vkCmdSetStencilCompareMask, -flink:vkCmdSetStencilWriteMask, -slink:VkPipelineDynamicStateCreateInfo +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetStencilWriteMask.txt b/doc/specs/vulkan/man/vkCmdSetStencilWriteMask.txt index 6c14f33af5..cb6e6157af 100644 --- a/doc/specs/vulkan/man/vkCmdSetStencilWriteMask.txt +++ b/doc/specs/vulkan/man/vkCmdSetStencilWriteMask.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetStencilWriteMask(3) =========================== @@ -8,51 +12,47 @@ vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state. C Specification --------------- +// refBegin vkCmdSetStencilWriteMask Set the stencil write mask dynamic state. + +If the pipeline state object is created with the +ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, then to +dynamically set the stencil write mask call: + include::../protos/vkCmdSetStencilWriteMask.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. + * 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 write mask, as + described above for flink:vkCmdSetStencilCompareMask. + * pname:writeMask is the new value to use as the stencil write mask. -pname:faceMask:: - The face or faces to which the new mask is to apply. - - -pname:writeMask:: - The new value to use for the stencil compare mask. Description ----------- -fname:vkCmdSetStencilWriteMask sets the mask value used for stencil writes -on the command buffer specified by pname:commandBuffer to pname:writeMask. pname:faceMask specifies the -face or faces to which the new values are applied. It a bitmask comprised of members -of the elink:VkStencilFaceFlagBits enumeration, the definition of which is: +include::../validity/protos/vkCmdSetStencilWriteMask.txt[] -include::../enums/VkStencilFaceFlagBits.txt[] -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled is -first bound, the value of the stencil write mask is taken from the pipeline and -attempts to change it using fname:vkCmdSetStencilWriteMask results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic -state enabled is bound, the current value of the stencil write mask becomes undefined -and must be set using a call to fname:vkCmdSetStencilWriteMask. +See Also +-------- -If the stencil test is disabled in the current graphics pipeline, then the value of -the stencil write mask is ignored. +slink:VkCommandBuffer, elink:VkStencilFaceFlags -include::../validity/protos/vkCmdSetStencilWriteMask.txt[] -See Also --------- +Document Notes +-------------- -flink:vkCreateGraphicsPipelines, -flink:vkCmdSetStencilCompareMask, -flink:vkCmdSetStencilReference, -slink:VkPipelineDynamicStateCreateInfo +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetStencilWriteMask + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdSetViewport.txt b/doc/specs/vulkan/man/vkCmdSetViewport.txt index d0aab57a0d..1c843c9055 100644 --- a/doc/specs/vulkan/man/vkCmdSetViewport.txt +++ b/doc/specs/vulkan/man/vkCmdSetViewport.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdSetViewport(3) =================== @@ -8,55 +12,58 @@ vkCmdSetViewport - Set the viewport on a command buffer. C Specification --------------- +// refBegin vkCmdSetViewport Set the viewport on a command buffer. + +If the bound pipeline state object was not created with the +ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled, viewport +transformation parameters are specified using the pname:pViewports +member of sname:VkPipelineViewportStateCreateInfo in the pipeline state +object. If the pipeline state object was created with the +ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled, the viewport +transformation parameters are dynamically set and changed with the command: + include::../protos/vkCmdSetViewport.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which to insert the command. - -pname:viewportCount:: - The number of viewport rectangles to set. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:firstViewport is the index of the first viewport whose parameters + are updated by the command. + * pname:viewportCount is the number of viewports whose parameters are + updated by the command. + * pname:pViewports is a pointer to an array of slink:VkViewport structures + specifying viewport parameters. -pname:pViewports:: - A pointer to an array of structures describing the viewports. Description ----------- -fname:vkCmdSetViewport sets the dynamic viewport state for the command buffer -specified in pname:commandBuffer. pname:viewportCount is the number of viewports -to update and pname:pViewports is a pointer to an array of slink:VkViewport -structures describing the new viewport state. The definition of slink:VkViewport -is: - -include::../structs/VkViewport.txt[] - -The pname:x and pname:y members of slink:VkViewport specifies the -upper left corner of the viewport rectangle, in pixels. The pname:width -and pname:height parameters specify the size of the rectangle, and are also -expressed in pixels. The pname:minDepth and pname:maxDepth members specify the -depth range for the viewport. - -The viewports numbered zero through pname:viewportCount are updated and any -remaining viewports become undefined. - -The graphics pipeline bound to pname:commandBuffer must have the -ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled. When a pipeline -that does not have ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled is -first bound, the origins and extents of the viewports are taken from the pipeline and -attempts to change them using fname:vkCmdSetViewport results in undefined -behavior. When a pipeline does have ename:VK_DYNAMIC_STATE_VIEWPORT dynamic -state enabled is first bound, the current values of the viewport rectangle -origins and extents become undefined and must be set using a call to -fname:vkCmdSetViewport. +The viewport parameters taken from element latexmath:[$i$] of +pname:pViewports replace the current state for the viewport index +latexmath:[$\mathit{firstViewport}+i$], for latexmath:[$i$] in +latexmath:[$[0, viewportCount)$]. include::../validity/protos/vkCmdSetViewport.txt[] + See Also -------- -flink:vkCreateGraphicsPipelines, slink:VkPipelineDynamicStateCreateInfo +slink:VkCommandBuffer, slink:VkViewport + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdSetViewport + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdUpdateBuffer.txt b/doc/specs/vulkan/man/vkCmdUpdateBuffer.txt index c1139e2774..e83a7dc863 100644 --- a/doc/specs/vulkan/man/vkCmdUpdateBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdUpdateBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdUpdateBuffer(3) -===================== +==================== Name ---- @@ -8,38 +12,60 @@ vkCmdUpdateBuffer - Update a buffer's contents from host memory. C Specification --------------- -include::../protos/vkCmdUpdateBuffer.txt[] +// refBegin vkCmdUpdateBuffer Update a buffer's contents from host memory. -Parameters ----------- +To update buffer data inline in a command buffer, call: -pname:commandBuffer:: - The command buffer into which the command is to be placed. +include::../protos/vkCmdUpdateBuffer.txt[] -pname:dstBuffer:: - The destination buffer. -pname:dstOffset:: - The offset within pname:dstBuffer where the data is to be placed. +Parameters +---------- -pname:dataSize:: - The size, in bytes of the data to be tranferred into the buffer. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:dstBuffer is a handle to the buffer to be updated. + * pname:dstOffset is the byte offset into the buffer to start updating, + and must: be a multiple of 4. + * pname:dataSize is the number of bytes to update, and must: be a multiple + of 4. + * pname:pData is a pointer to the source data for the buffer update, and + must: be at least pname:dataSize bytes in size. -pname:pData:: - A pointer to the data to be transferred into the buffer. Description ----------- -fname:vkCmdUpdateBuffer updates the content of the buffer object specified in pname:dstBuffer -with the pname:dataSize bytes of host memory sourced from pname:pData. The data is placed at -the offset specified by pname:dstOffset into the buffer object. +pname:dataSize must: be less than or equal to 65536 bytes. For larger +updates, applications can: use buffer to buffer <>. + +The source data is copied from the user pointer to the command buffer when +the command is called. + +fname:vkCmdUpdateBuffer is only allowed outside of a render pass. This +command is treated as ``transfer'' operation, for the purposes of +synchronization barriers. The ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT must: +be specified in pname:usage of slink:VkBufferCreateInfo in order for the +buffer to be compatible with fname:vkCmdUpdateBuffer. include::../validity/protos/vkCmdUpdateBuffer.txt[] + See Also -------- -flink:vkCmdCopyBuffer +slink:VkBuffer, slink:VkCommandBuffer, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdUpdateBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdWaitEvents.txt b/doc/specs/vulkan/man/vkCmdWaitEvents.txt index 827c78ba2d..6a1acecd2c 100644 --- a/doc/specs/vulkan/man/vkCmdWaitEvents.txt +++ b/doc/specs/vulkan/man/vkCmdWaitEvents.txt @@ -1,138 +1,99 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdWaitEvents(3) ================== Name ---- vkCmdWaitEvents - Wait for one or more events and insert a set of memory -barriers. C Specification --------------- -include::../protos/vkCmdWaitEvents.txt[] - -Parameters ----------- - -pname:commandBuffer:: - The command buffer in which to wait. +// refBegin vkCmdWaitEvents Wait for one or more events and insert a set of memory -pname:eventCount:: - Number of event objects to wait on. +To wait for one or more events to enter the signaled state on a device, +call: -pname:pEvents:: - Array of pname:eventCount number of event objects to wait on. +include::../protos/vkCmdWaitEvents.txt[] -pname:srcStageMask:: - Mask of pipeline stages used to signal all of the events in pname:pEvents. -pname:dstStageMask:: - Specifies which pipeline stages must wait for the events to become - signaled (see elink:VkPipelineStageFlags for more detail). +Parameters +---------- -pname:memoryBarrierCount:: - Number of memory barriers to insert after waiting for the events. + * pname:commandBuffer is the command buffer into which the command is + recorded. + * pname:eventCount is the length of the pname:pEvents array. + * pname:pEvents is an array of event object handles to wait on. + * pname:srcStageMask (see <>) is the + bitwise OR of the pipeline stages used to signal the event object + handles in pname:pEvents. + * pname:dstStageMask is the pipeline stages at which the wait will occur. + * pname:pMemoryBarriers is a pointer to an array of + pname:memoryBarrierCount sname:VkMemoryBarrier structures. + * pname:pBufferMemoryBarriers is a pointer to an array of + pname:bufferMemoryBarrierCount sname:VkBufferMemoryBarrier structures. + * pname:pImageMemoryBarriers is a pointer to an array of + pname:imageMemoryBarrierCount sname:VkImageMemoryBarrier structures. See + <> for more details about memory + barriers. -pname:ppMemoryBarriers:: - Array of pointers to memory barrier structures specifying the parameters - of the memory barriers to insert after waiting for the events. Each - element of the array may point to a slink:VkMemoryBarrier, - slink:VkBufferMemoryBarrier, or slink:VkImageMemoryBarrier structure. Description ----------- -fname:vkCmdWaitEvents waits for a number of event objects to become -signaled and inserts a set of memory barriers into the command buffer -specified by pname:commandBuffer. - -fname:vkCmdWaitEvents waits for each of the pname:eventCount event object -specified by pname:pEvents to become signaled. The point at which each is -signaled must have been specified in the command that caused the object to -become signaled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must -also have the corresponding bit set in pname:srcStageMask. - -The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount -structures defining the parameters of memory barriers to insert after waiting -for each of the events. Each element of the array may be an instance of -slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, or slink:VkImageMemoryBarrier, -the definitions of each are, respectively: - -include::../structs/VkMemoryBarrier.txt[] - -include::../structs/VkBufferMemoryBarrier.txt[] - -include::../structs/VkImageMemoryBarrier.txt[] - -The memory barriers specified by pname:ppMemoryBarriers cause writes as described by -pname:outputMask that were written by pipeline stages in pname:srcStageMask -prior to the wait to be made visible to reads as described by -pname:inputMask in pipeline stages in pname:dstStageMask subsequent to the -wait. - -In case of global memory barriers inserted by passing an -slink:VkMemoryBarrier structure to the command prior writes in the requested -pipeline stages to any memory location corresponding to the set of memory -output coherency flags specified in the pname:outputMask member of the -structure are made coherent with subsequent reads in the requested pipeline -stages of any memory location corresponding to the set of memory input -coherency flags specified in the pname:inputMask member of the structure. - -In case of buffer memory barriers inserted by passing an -slink:VkBufferMemoryBarrier structure to the command prior writes in the -requested pipeline stages to the specified sub-range of the buffer -corresponding to the set of memory output coherency flags specified in the -pname:outputMask member of the structure are made coherent with subsequent -reads in the requested pipeline stages of the specified sub-range of the -buffer corresponding to the set of memory input coherency flags specified in -the pname:inputMask member of the structure. - -In case of image memory barriers inserted by passing an -slink:VkImageMemoryBarrier structure to the command prior writes in the -requested pipeline stages to the specified sub-range of the image -corresponding to the set of memory output coherency flags specified in the -pname:outputMask member of the structure are made coherent with subsequent -reads in the requested pipeline stages of the specified sub-range of the -image corresponding to the set of memory input coherency flags specified in -the pname:inputMask member of the structure. Additionally, if the -pname:oldLayout and pname:newLayout members of the structure don't match a -layout transition is performed on the specified sub-range of the image as -part of the memory barrier. - -In case of buffer and image memory barriers the pname:srcQueueFamilyIndex -and pname:dstQueueFamilyIndex members of the corresponding memory barrier -structures can specify the parameters of a transfer of ownership between two -distinct families of queues of a shared buffer or image object created with -the ename:VK_SHARING_MODE_EXCLUSIVE sharing mode. In case of regular -resource transitions both pname:srcQueueFamilyIndex and -pname:dstQueueFamilyIndex should be set to ename:VK_QUEUE_FAMILY_IGNORED to -indicate no transfer of ownership between queue families. In case of -resource transitions involving ownership transfer of shared buffers or -images one of these two members have to match the queue family index the -command buffer specified by pname:commandBuffer was created for, while the other -should specify the queue family index the ownership transfer is released to -or acquired from. Ownership transferring resource transitions have to be -performed both on a queue from the source queue family and on a queue from -the destination queue family (see elink:VkSharingMode for more detail). - -If pname:inputMask is zero in any of the memory barrier structures -then prior writes will only be coherent with any type of subsequent read -after a future resource transition command specifies a non-empty set of -memory input coherency control flags. This allows flushing device output -caches unconditionally. - -If pname:outputMask is zero in any of the memory barrier -structures then subsequent reads will only be coherent with any type of -prior write if an earlier resource transition command specified a non-empty -set of memory output coherency control flags. This allows invalidating -device input caches unconditionally. +fname:vkCmdWaitEvents waits for events set by either fname:vkSetEvent or +fname:vkCmdSetEvent to become signaled. Logically, it has three phases: + + . Wait at the pipeline stages specified by pname:dstStageMask (see + <>) until the pname:eventCount + event objects specified by pname:pEvents become signaled. + Implementations may: wait for each event object to become signaled + in sequence (starting with the first event object in pname:pEvents, + and ending with the last), or wait for all of the event objects to + become signaled at the same time. + . Execute the memory barriers specified by pname:pMemoryBarriers, + pname:pBufferMemoryBarriers and pname:pImageMemoryBarriers (see + <>). + . Resume execution of pipeline stages specified by pname:dstStageMask + +Implementations may: not execute commands in a pipelined manner, so +fname:vkCmdWaitEvents may: not observe the results of a subsequent +fname:vkCmdSetEvent or fname:vkCmdResetEvent command, even if the stages in +pname:dstStageMask occur after the stages in pname:srcStageMask. + +Commands that update the state of events in different pipeline stages +may: execute out of order, unless the ordering is enforced by execution +dependencies. + +[NOTE] +.Note +==== +Applications should: be careful to avoid race conditions when using +events. For example, an event should: only be reset if no +fname:vkCmdWaitEvents command is executing that waits upon that event. +==== include::../validity/protos/vkCmdWaitEvents.txt[] + See Also -------- -flink:vkCmdSetEvent, flink:vkCmdResetEvent, flink:vkSetEvent, flink:vkResetEvent, flink:vkCmdPipelineBarrier, -slink:VkMemoryBarrier, slink:VkBufferMemoryBarrier, slink:VkImageMemoryBarrier, elink:VkPipelineStageFlagBits +slink:VkBufferMemoryBarrier, slink:VkCommandBuffer, slink:VkEvent, slink:VkImageMemoryBarrier, slink:VkMemoryBarrier, elink:VkPipelineStageFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdWaitEvents + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCmdWriteTimestamp.txt b/doc/specs/vulkan/man/vkCmdWriteTimestamp.txt index 77f1db1a63..48ef497c8e 100644 --- a/doc/specs/vulkan/man/vkCmdWriteTimestamp.txt +++ b/doc/specs/vulkan/man/vkCmdWriteTimestamp.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCmdWriteTimestamp(3) -======================= +====================== Name ---- @@ -8,46 +12,71 @@ vkCmdWriteTimestamp - Write a device timestamp into a query object. C Specification --------------- +// refBegin vkCmdWriteTimestamp Write a device timestamp into a query object. + +To request a timestamp, call: + include::../protos/vkCmdWriteTimestamp.txt[] + Parameters ---------- -pname:commandBuffer:: - The command buffer into which the command will be placed. + * pname:commandBuffer is the command buffer into which the command will be + recorded. + * pname:pipelineStage is one of the elink:VkPipelineStageFlagBits, + specifying a stage of the pipeline. + * pname:queryPool is the query pool that will manage the timestamp. + * pname:query is the query within the query pool that will contain the + timestamp. -pname:pipelineStage:: - The stage of the pipeline at which the timestamp will be written. - -pname:queryPool:: - A handle to the query pool object containing the query. - -pname:entry:: - The entry in the query pool at which to write the query. Description ----------- -fname:vkCmdWriteTimestamp places a command into the command buffer specified -by pname:commandBuffer which, when executed, will cause the GPU to write its -internal timestamp into the query pool specified by pname:queryPool at the -entry specified in pname:entry. The timestamp is written when the command -passes the pipeline stage specified by pname:pipelineStage. The pipeline -stage is a single member of the elink:VkPipelineStageFlagBits enumeration, -the definition of which is: - -include::../enums/VkPipelineStageFlagBits.txt[] - -If an implementation is not capable of writing a timestamp value at the -pipeline point specified, it may at its option write the timestamp at -any point appearing later in the logical pipeline. However, it must do -this consistently for similar pipeline configurations. +fname:vkCmdWriteTimestamp latches the value of the timer when all previous +commands have completed executing as far as the specified pipeline stage, +and writes the timestamp value to memory. When the timestamp value is +written, the availability status of the query is set to available. + +[NOTE] +.Note +==== +If an implementation is unable to detect completion and latch the timer at +any specific stage of the pipeline, it may: instead do so at any logically +later stage. +==== + +flink:vkCmdCopyQueryPoolResults can: then be called to copy the timestamp +value from the query pool into buffer memory, with ordering and +synchronization behavior equivalent to how other queries operate. Timestamp +values can: also be retrieved from the query pool using +flink:vkGetQueryPoolResults. As with other queries, the query must: be reset +using flink:vkCmdResetQueryPool before requesting the timestamp value be +written to it. + +While fname:vkCmdWriteTimestamp can: be called inside or outside of a render +pass instance, flink:vkCmdCopyQueryPoolResults must: only be called outside +of a render pass instance. include::../validity/protos/vkCmdWriteTimestamp.txt[] + See Also -------- -flink:vkCmdSetEvent +slink:VkCommandBuffer, elink:VkPipelineStageFlagBits, slink:VkQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdWriteTimestamp + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateAndroidSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateAndroidSurfaceKHR.txt deleted file mode 100644 index 6643ca9929..0000000000 --- a/doc/specs/vulkan/man/vkCreateAndroidSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateAndroidSurfaceKHR(3) -=========================== - -Name ----- -vkCreateAndroidSurfaceKHR - create a VkSurfaceKHR object for an Android native window. - -C Specification ---------------- - -include::../protos/vkCreateAndroidSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate with the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkAndroidSurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateAndroidSurfaceKHR creates a VkSurface associated with the specified android native window. - -pname:pCreateInfo is an instance of the slink:VkAndroidSurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkAndroidSurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateAndroidSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateBuffer.txt b/doc/specs/vulkan/man/vkCreateBuffer.txt index dec66c0b08..3cbd454ff5 100644 --- a/doc/specs/vulkan/man/vkCreateBuffer.txt +++ b/doc/specs/vulkan/man/vkCreateBuffer.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateBuffer(3) -================== +================= Name ---- @@ -8,35 +12,47 @@ vkCreateBuffer - Create a new buffer object. C Specification --------------- +// refBegin vkCreateBuffer Create a new buffer object. + +To create buffers, call: + include::../protos/vkCreateBuffer.txt[] + Parameters ---------- -pname:device:: - The device with which to create the new buffer object. + * pname:device is the logical device that creates the buffer object. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkBufferCreateInfo structure containing parameters affecting + creation of the buffer. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pBuffer points to a sname:VkBuffer handle in which the resulting + buffer object is returned. -pname:pCreateInfo:: - Pointer to data structure containing information about the object to be created. - -pname:pBuffer:: - Pointer to a variable to receive a handle to the new buffer object. Description ----------- -fname:vkCreateBuffer creates a new buffer object using the device specified in pname:device. The -resulting buffer object handle is written into the variable whose address is given in -pname:pBuffer. pname:pCreateInfo is a pointer to a data structure describing the buffer to be -created and is of type slink:VkBufferCreateInfo, whose definition is: - -include::../structs/VkBufferCreateInfo.txt[] - include::../validity/protos/vkCreateBuffer.txt[] + See Also -------- -flink:vkCreateImage, flink:vkCreateBufferView +slink:VkAllocationCallbacks, slink:VkBuffer, slink:VkBufferCreateInfo, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateBufferView.txt b/doc/specs/vulkan/man/vkCreateBufferView.txt index 1f021bd353..e07d118553 100644 --- a/doc/specs/vulkan/man/vkCreateBufferView.txt +++ b/doc/specs/vulkan/man/vkCreateBufferView.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateBufferView(3) -====================== +===================== Name ---- @@ -8,36 +12,47 @@ vkCreateBufferView - Create a new buffer view object. C Specification --------------- +// refBegin vkCreateBufferView Create a new buffer view object. + +To create a buffer view, call: + include::../protos/vkCreateBufferView.txt[] + Parameters ---------- -pname:device:: - The device with which to create the buffer view. + * pname:device is the logical device that creates the buffer view. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkBufferViewCreateInfo structure containing parameters to be used + to create the buffer. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pView points to a sname:VkBufferView handle in which the resulting + buffer view object is returned. -pname:pCreateInfo:: - A pointer to a structure containing information to be placed in the object. - -pname:pView:: - A pointer to a variable which will receive the handle to the new object. Description ----------- -fname:vkCreateBufferView creates a new buffer view using the information contained in -pname:pCreateInfo and the device specified in pname:device. Upon success, a handle to -the new view object is deposited in the variable pointed to by pname:pView. -pname:pCreateInfo should point to an instance of the slink:VkBufferViewCreateInfo structure, -the definition of which is: - -include::../structs/VkBufferViewCreateInfo.txt[] - include::../validity/protos/vkCreateBufferView.txt[] + See Also -------- -flink:vkCreateBufferView +slink:VkAllocationCallbacks, slink:VkBufferView, slink:VkBufferViewCreateInfo, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateBufferView + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateCommandPool.txt b/doc/specs/vulkan/man/vkCreateCommandPool.txt index 518e304eb7..ec82e12f95 100644 --- a/doc/specs/vulkan/man/vkCreateCommandPool.txt +++ b/doc/specs/vulkan/man/vkCreateCommandPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateCommandPool(3) ====================== @@ -8,50 +12,45 @@ vkCreateCommandPool - Create a new command pool object. C Specification --------------- +// refBegin vkCreateCommandPool Create a new command pool object. + +To create a command pool, call: + include::../protos/vkCreateCommandPool.txt[] + Parameters ---------- -pname:device:: - The device with which to create the command pool. - -pname:pCreateInfo:: - A pointer to a structure containing information about the command pool. + * pname:device is the logical device that creates the command pool. + * pname:pCreateInfo contains information used to create the command pool. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pCommandPool points to an sname:VkCommandPool handle in which the + created pool is returned. -pname:pCommandPool:: - The address of a variable to receive the handle to the new command pool. Description ----------- -fname:vkCreateCommandPool creates a new command pool object using pname:device and places -its handle in the variable whose address is given in pname:pCommandPool. pname:pCreateInfo is -a pointer to an instance of the slink:VkCommandPoolCreateInfo structure which contains -information about how to create the new command pool. Its definition is: +include::../validity/protos/vkCreateCommandPool.txt[] -include::../structs/VkCommandPoolCreateInfo.txt[] -pname:queueFamilyIndex indicates the family of queues which the command buffer can be -submitted to, as well as the subset of commands which may be recorded on it. +See Also +-------- -pname:flags is a bitfield of flags indicating usage behavior for the pool and command -buffers allocated from it. Possible values include: +slink:VkAllocationCallbacks, slink:VkCommandPool, slink:VkCommandPoolCreateInfo, slink:VkDevice -ename:VK_COMMAND_POOL_CREATE_TRANSIENT_BIT indicates that command buffers created from the -pool will be short-lived, meaning that they will be reset or destroyed in a relatively -short timeframe. -ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT controls whether it is legal to call -fname:vkResetCommandBuffer on a command buffer allocated from the pool. If this is not -set, then the command buffers may only be reset in bulk by calling -fname:vkResetCommandPool. +Document Notes +-------------- -include::../validity/protos/vkCreateCommandPool.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateCommandPool -flink:vkDestroyCommandPool, flink:vkResetCommandPool +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateComputePipelines.txt b/doc/specs/vulkan/man/vkCreateComputePipelines.txt index fa6fdb6af6..7d6a214789 100644 --- a/doc/specs/vulkan/man/vkCreateComputePipelines.txt +++ b/doc/specs/vulkan/man/vkCreateComputePipelines.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateComputePipelines(3) =========================== @@ -8,76 +12,64 @@ vkCreateComputePipelines - Creates a new compute pipeline object. C Specification --------------- -include::../protos/vkCreateComputePipelines.txt[] +// refBegin vkCreateComputePipelines Creates a new compute pipeline object. -Parameters ----------- +To create compute pipelines, call: -pname:device:: - A handle to the device to use to create the new compute pipelines. +include::../protos/vkCreateComputePipelines.txt[] -pname:pipelineCache:: - A handle to a pipeline cache from which the result of previous compiles may - be retrieved, and to which the result of this compile may be stored. -pname:createInfoCount:: - The number of pipelines to create. +Parameters +---------- -pname:pCreateInfos:: - Pointer to an array of pname:createInfoCount - sname:VkComputePipelineCreateInfo structures defining the contents of - the new pipelines. + * pname:device is the logical device that creates the compute pipelines. + * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that + pipeline caching is disabled; or the handle of a valid + <> object, in which case use of that + cache is enabled for the duration of the command. + * pname:createInfoCount is the length of the pname:pCreateInfos and + pname:pPipelines arrays. + * pname:pCreateInfos is an array of sname:VkComputePipelineCreateInfo + structures. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pPipelines is a pointer to an array in which the resulting compute + pipeline objects are returned. ++ +-- +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +TODO (Jon) - Should we say something like ``the i'th element of the +pname:pPipelines array is created based on the corresponding element of the +pname:pCreateInfos array''? Also for flink:vkCreateGraphicsPipelines below. +==== +endif::editing-notes[] +-- -pname:pPipelines:: - A pointer to an array to receive the handles to the new compute pipeline - objects. Description ----------- -fname:vkCreateComputePipelines creates new compute pipeline objects using the device specified in -pname:device and the creation information specified in the structures pointed to by pname:pCreateInfos and -deposits the resulting handles in the array pointed to by pname:pPipelines. The definition -of slink:VkComputePipelineCreateInfo is: - -include::../structs/VkComputePipelineCreateInfo.txt[] - -.Create Info Details - -- pname:sType indicates the type of this structure and must be -ename:VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO. +include::../validity/protos/vkCreateComputePipelines.txt[] -- pname:pNext is a pointer to an extension-specific structure (can be NULL). -- pname:stage is a sname:VkPipelineShaderStageCreateInfo describing the -compute shader. +See Also +-------- -- pname:flags controls how the driver will create the pipeline. +slink:VkAllocationCallbacks, slink:VkComputePipelineCreateInfo, slink:VkDevice, slink:VkPipeline, slink:VkPipelineCache -- pname:layout the description of binding locations used by both the -pipeline and the descritor sets. -- pname:basePipelineHandle the pipeline to derive from (can be - code:VK_NULL_HANDLE, if pipeline is not derived). +Document Notes +-------------- -- pname:basePipelineIndex the index into the pname:pCreateInfos parameter -to fname:vkCreateComputePipelines. +For more information, see the Vulkan Specification at URL -The parameters pname:basePipelineHandle and pname:basePipelineIndex are ignored -unless pname:flags has the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT bit set. If -using the pname:basePipelineIndex parameter, the index must refer to a -pname:pCreateInfos parameter passed to vkCreateComputePipelines that appeared -earlier than the current sname:VkComputePipelineCreateInfo in the list. The -parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually -exclusive. If you specify a valid pname:basePipelineHandle, -pname:basePipelineIndex must be set to -1. If you specify a valid -pname:basePipelineIndex, pname:basePipelineHandle must be code:VK_NULL_HANDLE. +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateComputePipelines -include::../validity/protos/vkCreateComputePipelines.txt[] - -See Also --------- - -flink:vkCreateGraphicsPipelines, flink:vkCmdBindPipeline +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateDebugReportCallbackEXT.txt b/doc/specs/vulkan/man/vkCreateDebugReportCallbackEXT.txt deleted file mode 100644 index e858b984c8..0000000000 --- a/doc/specs/vulkan/man/vkCreateDebugReportCallbackEXT.txt +++ /dev/null @@ -1,27 +0,0 @@ -vkCreateDebugReportCallbackEXT(3) -================================= - -Name ----- -vkCreateDebugReportCallbackEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../protos/vkCreateDebugReportCallbackEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Parameters ----------- - -Description ------------ - -include::../validity/protos/vkCreateDebugReportCallbackEXT.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateDescriptorPool.txt b/doc/specs/vulkan/man/vkCreateDescriptorPool.txt index 5820893f0b..2495a09077 100644 --- a/doc/specs/vulkan/man/vkCreateDescriptorPool.txt +++ b/doc/specs/vulkan/man/vkCreateDescriptorPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateDescriptorPool(3) ========================= @@ -8,71 +12,52 @@ vkCreateDescriptorPool - Creates a descriptor pool object. C Specification --------------- +// refBegin vkCreateDescriptorPool Creates a descriptor pool object. + +To create a descriptor pool object, call: + include::../protos/vkCreateDescriptorPool.txt[] + Parameters ---------- -pname:device:: - Logical device which will own the new descriptor pool object. + * pname:device is the logical device that creates the descriptor pool. + * pname:pCreateInfo is a pointer to an instance of the + slink:VkDescriptorPoolCreateInfo structure specifying the state of the + descriptor pool object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pDescriptorPool points to a sname:VkDescriptorPool handle in which + the resulting descriptor pool object is returned. -pname:pCreateInfo:: - A pointer to a structure containing parameters of the new pool object. - -pname:pDescriptorPool:: - Pointer to a variable which will receive a handle to the new descriptor pool object. Description ----------- -fname:vkCreateDescriptorPool creates a new descriptor pool object using -pname:device. Descriptor sets may be allocated from the resulting descriptor -pool object by calling flink:vkAllocateDescriptorSets. pname:pCreateInfo is a -pointer to an insance of the slink:VkDescriptorPoolCreateInfo structure -containing parameters describing the new pool object. The definition of -slink:VkDescriptorPoolCreateInfo is: - -include::../structs/VkDescriptorPoolCreateInfo.txt[] - -The pname:sType member of the pname:pCreateInfo structure should be -ename:VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO. The pname:pNext member -is reserved for use by extensions and should be set to code:NULL. - -The pname:flags member of slink:VkDescriptorPoolCreateInfo is a set of flags -describing the intended usage of the pool and is formed from members of the -elink:VkDescriptorPoolCreateFlagBits enumeration, the definition of which is: +pname:pAllocator controls host memory allocation as described in the +<> chapter. -include::../enums/VkDescriptorPoolCreateFlagBits.txt[] +The created descriptor pool is returned in pname:pDescriptorPool. -If ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT is set in pname:flags -then descriptor sets allocated from the pool may be returned to the pool by calling -flink:vkFreeDescriptorSets. If this flag is clear then individual sets allocated -from the pool may not be returned to the pool and are considered allocated until -flink:vkResetDescriptorPool is called on the pool object. +include::../validity/protos/vkCreateDescriptorPool.txt[] -The pname:maxSets member specifies the maximum number of descriptor sets that -will be allocated from the pool. pname:pPoolSizes is a pointer to an array -of pname:poolSizeCount slink:VkDescriptorPoolSize structures, each describing a -type of descriptor and the number of that type of descriptor to be included -in the pool. The definition of the slink:VkDescriptorPoolSize structure is: -include::../structs/VkDescriptorPoolSize.txt[] +See Also +-------- -Each element of the ptext:pPoolSizes array specifies a type of descriptor in -pname:type and the count of that type of descriptor in -pname:descriptorCount. The pname:type member must be a member of the -elink:VkDescriptorType enumeration, the definition of which is: +slink:VkAllocationCallbacks, slink:VkDescriptorPool, slink:VkDescriptorPoolCreateInfo, slink:VkDevice -include::../enums/VkDescriptorType.txt[] -Upon success, a handle to the newly created descriptor pool is placed in the variable whose address is -specified in pname:pDescriptorPool. +Document Notes +-------------- -include::../validity/protos/vkCreateDescriptorPool.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateDescriptorPool -flink:vkAllocateDescriptorSets, flink:vkFreeDescriptorSets, flink:vkResetDescriptorPool, flink:vkDestroyDescriptorPool +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateDescriptorSetLayout.txt b/doc/specs/vulkan/man/vkCreateDescriptorSetLayout.txt index 0973125dec..45f43c2e8e 100644 --- a/doc/specs/vulkan/man/vkCreateDescriptorSetLayout.txt +++ b/doc/specs/vulkan/man/vkCreateDescriptorSetLayout.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateDescriptorSetLayout(3) -=============================== +============================== Name ---- @@ -8,68 +12,48 @@ vkCreateDescriptorSetLayout - Create a new descriptor set layout. C Specification --------------- +// refBegin vkCreateDescriptorSetLayout Create a new descriptor set layout. + +To create descriptor set layout objects, call: + include::../protos/vkCreateDescriptorSetLayout.txt[] + Parameters ---------- -pname:device:: - The device with which to create the layout object. + * pname:device is the logical device that creates the descriptor set + layout. + * pname:pCreateInfo is a pointer to an instance of the + slink:VkDescriptorSetLayoutCreateInfo structure specifying the state of + the descriptor set layout object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pSetLayout points to a sname:VkDescriptorSetLayout handle in which + the resulting descriptor set layout object is returned. -pname:pCreateInfo:: - Pointer to a structure specifying information to be placed in the object - -pname:pSetLayout:: - Pointer to a variable which will receive the new handle. Description ----------- -fname:vkCreateDescriptorSetLayout creates a new descriptor set layout usable by the device specified in -pname:device using the information contained in the structure pointed to by pname:pCreateInfo. If successful, -a handle to the newly created layout object is placed in the variable pointed to by pname:pSetLayout. The -description of the layout is specified in pname:pCreateInfo, which is a pointer to an instance of the -slink:VkDescriptorSetLayoutCreateInfo structure, the definition of which is: - -include::../structs/VkDescriptorSetLayoutCreateInfo.txt[] - -The pname:bindingCount member of pname:pCreateInfo specifies the number of -bindings contained in the set. This is the number of elements in the array -pointed to by pname:pBinding, which is an array of -slink:VkDescriptorSetLayoutBinding structures. The definition of -slink:VkDescriptorSetLayoutBinding is: - -include::../structs/VkDescriptorSetLayoutBinding.txt[] - -Each element of the ptext:pBinding array specifies a descriptor or an array -of descriptors to be included in the set layout. pname:descriptorType -contains the descriptor type and must be one of the elink:VkDescriptorType -enumerants, the complete list of which is: +include::../validity/protos/vkCreateDescriptorSetLayout.txt[] -include::../enums/VkDescriptorType.txt[] -The pname:stageFlags member specifies which pipeline shader stages may access the resource. This is a bitwise -combination of the elink:VkShaderStageFlags enumerant, the list of which is: +See Also +-------- -include::../enums/VkShaderStageFlagBits.txt[] +slink:VkAllocationCallbacks, slink:VkDescriptorSetLayout, slink:VkDescriptorSetLayoutCreateInfo, slink:VkDevice -If a shader stage is not included in pname:stageFlags, then the resource may not be accessed from that -stage within any pipeline using the set layout. -If pname:descriptorType member specifies a ename:VK_DESCRIPTOR_TYPE_SAMPLER or ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER -type descriptor, then the pname:pImmutableSamplers member may be used to initialize a set of _immutable samplers_. -Immutable samplers are permanently bound into the set layout; later binding a sampler into an immutable sampler slot in -a descriptor set is not allowed. If pname:pImmutableSamplers is not code:NULL, then it is considered to be a pointer to an -array of pname:arraySize sampler handles that will be consumed by the set layout and used for the corresponding binding. -If pname:pImmutableSamplers is code:NULL, then the sampler slots are dynamic and sampler handles must be bound into -descriptor sets using this layout. If pname:descriptorType is not one of these descriptor types, then -pname:pImmutableSamplers is ignored. +Document Notes +-------------- -include::../validity/protos/vkCreateDescriptorSetLayout.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateDescriptorSetLayout -flink:vkAllocateDescriptorSets, flink:vkFreeDescriptorSets, flink:vkCreateDescriptorPool +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateDevice.txt b/doc/specs/vulkan/man/vkCreateDevice.txt index e2108c6dc0..ac21328aec 100644 --- a/doc/specs/vulkan/man/vkCreateDevice.txt +++ b/doc/specs/vulkan/man/vkCreateDevice.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateDevice(3) -================== +================= Name ---- @@ -8,63 +12,55 @@ vkCreateDevice - Create a new device instance. C Specification --------------- +// refBegin vkCreateDevice Create a new device instance. + +A logical device is created as a _connection_ to a physical device. To +create a logical device, call: + include::../protos/vkCreateDevice.txt[] + Parameters ---------- -pname:physicalDevice:: - Handle to the physical device upon which to create the logical device. - -pname:pCreateInfo:: - Pointer to a structure containing creation info. + * pname:physicalDevice must: be one of the device handles returned from a + call to fname:vkEnumeratePhysicalDevices (see + <>). + * pname:pCreateInfo is a pointer to a slink:VkDeviceCreateInfo structure + containing information about how to create the device. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pDevice points to a handle in which the created sname:VkDevice is + returned. -pname:pDevice:: - Pointer to a variable to receive the handle to the new device instance. Description ----------- -fname:vkCreateDevice creates a new device instance on the physical device specified by -pname:physicalDevice and places the resulting device handle in the variable pointed to -by pname:pDevice. Information about how the device should be created is passed in an -instance of slink:VkDeviceCreateInfo whose address is passed in pname:pCreateInfo. -The definition of slink:VkDeviceCreateInfo is: - -include::../structs/VkDeviceCreateInfo.txt[] +Multiple logical devices can: be created from the same physical device. +Logical device creation may: fail due to lack of device-specific resources +(in addition to the other errors). If that occurs, fname:vkCreateDevice will +return ename:VK_ERROR_TOO_MANY_OBJECTS. include::../validity/protos/vkCreateDevice.txt[] - * 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:queueCreateInfoCount is the unsigned integer size of the - pname:pQueueCreateInfos array. Refer to the - <> section below for - further details. - * pname:pQueueCreateInfos is a pointer to an array of - slink:VkDeviceQueueCreateInfo structures describing the queues that are - requested to be created along with the logical device. Refer to the - <> section below for - further details. - * pname:enabledLayerCount is deprecated and ignored. - * pname:ppEnabledLayerNames is deprecated and ignored. See - <>. - * pname:enabledExtensionCount is the number of device extensions to - enable. - * pname:ppEnabledExtensionNames is a pointer to an array of - pname:enabledExtensionCount null-terminated UTF-8 strings containing the - names of extensions to enable for the created device. See the - <> section for further - details. - * pname:pEnabledFeatures is `NULL` or a pointer to a - slink:VkPhysicalDeviceFeatures structure that contains boolean - indicators of all the features to be enabled. Refer to the - <> section for further details. See Also -------- -flink:vkDestroyDevice +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkDeviceCreateInfo, slink:VkPhysicalDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateDevice + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateDisplayModeKHR.txt b/doc/specs/vulkan/man/vkCreateDisplayModeKHR.txt deleted file mode 100644 index 1f8b4af0bc..0000000000 --- a/doc/specs/vulkan/man/vkCreateDisplayModeKHR.txt +++ /dev/null @@ -1,48 +0,0 @@ -vkCreateDisplayModeKHR(3) -=========================== - -Name ----- -vkCreateDisplayModeKHR - create a display mode. - -C Specification ---------------- - -include::../protos/vkCreateDisplayModeKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - The physical device associated with display. - -pname:display:: - The display to create an additional mode. - -pname:pCreateInfo:: - Is a VkDisplayModeCreateInfoKHR structure describing the new mode to create. - -pname:pAllocator:: - The allocator used for host memory allocated for the mode object. - -pname:pMode:: - Returns the handle of the mode created. - -Description ------------ - -fname:vkCreateDisplayModeKHR creates additional display modes. - -pname:pCreateInfo is an instance of the slink:VkDisplayModeCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkDisplayModeCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateDisplayModeKHR.txt[] - -See Also --------- - -flink:vkGetDisplayModePropertiesKHR, flink:vkCreateDisplayPlaneSurfaceKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateDisplayPlaneSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateDisplayPlaneSurfaceKHR.txt deleted file mode 100644 index 031ddd8ca5..0000000000 --- a/doc/specs/vulkan/man/vkCreateDisplayPlaneSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateDisplayPlaneSurfaceKHR(3) -================================ - -Name ----- -vkCreateDisplayPlaneSurfaceKHR - create a VkSurfaceKHR structure representing a display plane and mode. - -C Specification ---------------- - -include::../protos/vkCreateDisplayPlaneSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkDisplaySurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateDisplayPlaneSurfaceKHR creates a VkSurface associated with the specified display plane and mode. - -pname:pCreateInfo is an instance of the slink:VkDisplaySurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkDisplaySurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateDisplayPlaneSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateEvent.txt b/doc/specs/vulkan/man/vkCreateEvent.txt index 7d55b489b0..a2e358cad9 100644 --- a/doc/specs/vulkan/man/vkCreateEvent.txt +++ b/doc/specs/vulkan/man/vkCreateEvent.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateEvent(3) -================= +================ Name ---- @@ -8,45 +12,49 @@ vkCreateEvent - Create a new event object. C Specification --------------- +// refBegin vkCreateEvent Create a new event object. + +To create an event, call: + include::../protos/vkCreateEvent.txt[] + Parameters ---------- -pname:device:: - A handle to the device with which to create the event. + * pname:device is the logical device that creates the event. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkEventCreateInfo structure which contains information about how + the event is to be created. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pEvent points to a handle in which the resulting event object is + returned. -pname:pCreateInfo:: - A pointer to the creation info structure. - -pname:pEvent:: - The address of an VK_EVENT variable that will receive the handle to the new event. Description ----------- -fname:vkCreateEvent creates a new event object using the device specified as -pname:device. A handle to the newly created event object is placed the -variable pointed to by pname:pEvent. pname:pCreateInfo is a pointer to an -instance of a slink:VkEventCreateInfo structure containing information about -the state in which to create the new object. The definition of -slink:VkEventCreateInfo is: - -include::../structs/VkEventCreateInfo.txt[] - -The pname:sType member of the slink:VkEventCreateInfo structure should be set to -ename:VK_STRUCTURE_TYPE_EVENT_CREATE_INFO. The pname:pNext member is reserved -for use by extensions and should be set to code:NULL. - -The pname:flags member specifies additional information about the event to be -created. There are presently no flags defined for this member and it should be -set to zero. +When created, the event object is in the unsignaled state. include::../validity/protos/vkCreateEvent.txt[] + See Also -------- -flink:vkSetEvent, flink:vkResetEvent, flink:vkCmdSetEvent, flink:vkCmdResetEvent +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkEvent, slink:VkEventCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateFence.txt b/doc/specs/vulkan/man/vkCreateFence.txt index 4b34a2f989..d3e784d8ac 100644 --- a/doc/specs/vulkan/man/vkCreateFence.txt +++ b/doc/specs/vulkan/man/vkCreateFence.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateFence(3) -================= +================ Name ---- @@ -8,53 +12,46 @@ vkCreateFence - Create a new fence object. C Specification --------------- +// refBegin vkCreateFence Create a new fence object. + +To create a new fence object, use the command + include::../protos/vkCreateFence.txt[] + Parameters ---------- -pname:device:: - A handle to the device with which to create the fence. + * pname:device is the logical device that creates the fence. + * pname:pCreateInfo points to a slink:VkFenceCreateInfo structure + specifying the state of the fence object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pFence points to a handle in which the resulting fence object is + returned. -pname:pCreateInfo:: - A pointer to a structure containing information about how to create the fence. - -pname:pFence:: - A pointer to a variable to receive the handle to the newly created fence object. Description ----------- -fname:vkCreateFence creates a new fence object using the device specified by -pname:device and places the resulting object handle in the variable pointed to -by pname:pFence. Information about how the fence should be created is passed in -an instance of slink:VkFenceCreateInfo whose address is given in -pname:pCreateInfo. The definition of slink:VkFenceCreateInfo is: - -include::../structs/VkFenceCreateInfo.txt[] +include::../validity/protos/vkCreateFence.txt[] -The pname:sType member of the slink:VkFenceCreateInfo structure should be set to -ename:VK_STRUCTURE_TYPE_FENCE_CREATE_INFO. The pname:pNext member is reserved -for use by extensions and should be set to code:NULL. -The pname:flags member specifies additional information about the fence to be -created. It is a bitfield made up from the members of the elink:VkFenceCreateFlagBits -enumeration, the definition of which is: +See Also +-------- -include::../enums/VkFenceCreateFlagBits.txt[] +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkFence, slink:VkFenceCreateInfo -If ename:VK_FENCE_CREATE_SIGNALED_BIT is set then the fence is created already -signaled, otherwise, the fence is created in an unsignaled state. -A fence becomes signaled when it is submitted to a queue with a call to -flink:vkQueueSubmit. A fence may be reset to unsignaled state with a call -to flink:vkResetFences. +Document Notes +-------------- -include::../validity/protos/vkCreateFence.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateFence -flink:vkWaitForFences, flink:vkDestroyFence, flink:vkResetFences, flink:vkQueueSubmit +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateFramebuffer.txt b/doc/specs/vulkan/man/vkCreateFramebuffer.txt index cc31ca8831..8c6913e47d 100644 --- a/doc/specs/vulkan/man/vkCreateFramebuffer.txt +++ b/doc/specs/vulkan/man/vkCreateFramebuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateFramebuffer(3) ====================== @@ -8,45 +12,46 @@ vkCreateFramebuffer - Create a new framebuffer object. C Specification --------------- +// refBegin vkCreateFramebuffer Create a new framebuffer object. + +To create a framebuffer, call: + include::../protos/vkCreateFramebuffer.txt[] + Parameters ---------- -pname:device:: - The device with which to create the framebuffer object. + * pname:device is the logical device that creates the framebuffer. + * pname:pCreateInfo points to a slink:VkFramebufferCreateInfo structure + which describes additional information about framebuffer creation. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pFramebuffer points to a sname:VkFramebuffer handle in which the + resulting framebuffer object is returned. -pname:pCreateInfo:: - A pointer to a structure containing information about how to create the object. - -pname:pFramebuffer:: - A pointer to a variable which will receive the handle to the new object. Description ----------- -fname:vkCreateFramebuffer creates a new framebuffer object using the information contained in -pname:pCreateInfo and the device specified in pname:device. Upon success, a handle to -the new framebuffer object is deposited in the variable pointed to by pname:pFramebuffer. -pname:pCreateInfo should point to an instance of the slink:VkFramebufferCreateInfo structure, -the definition of which is: +include::../validity/protos/vkCreateFramebuffer.txt[] + -include::../structs/VkFramebufferCreateInfo.txt[] +See Also +-------- -The attachments in pname:pAttachments correspond in order to the attachment descriptions -in the pname:renderPass. The attachment view must have the same format, sample count, -and initial layout as the render pass's attachment description. All attachment views -must also have dimensions at least as large as the framebuffer's pname:width, -pname:height, and pname:layers. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkFramebuffer, slink:VkFramebufferCreateInfo -The framebuffer may be used in combination with any render pass that has the same -attachment count, and corresponding attachments have the same format and sample count. -include::../validity/protos/vkCreateFramebuffer.txt[] +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateFramebuffer -flink:vkCmdBeginRenderPass, flink:vkDestroyFramebuffer +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateGraphicsPipelines.txt b/doc/specs/vulkan/man/vkCreateGraphicsPipelines.txt index d35f87e0c8..cb64154d2c 100644 --- a/doc/specs/vulkan/man/vkCreateGraphicsPipelines.txt +++ b/doc/specs/vulkan/man/vkCreateGraphicsPipelines.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateGraphicsPipelines(3) ============================ @@ -8,78 +12,57 @@ vkCreateGraphicsPipelines - Create graphics pipelines. C Specification --------------- -include::../protos/vkCreateGraphicsPipelines.txt[] +// refBegin vkCreateGraphicsPipelines Create graphics pipelines. -Parameters ----------- +To create graphics pipelines, call: -pname:device:: - A handle to the device to use to create the new graphics pipeline(s). +include::../protos/vkCreateGraphicsPipelines.txt[] -pname:pipelineCache:: - A handle to a pipeline cache from which the result of previous compiles may - be retrieved, and to which the result of this compile may be stored. -pname:createInfoCount:: - The number of pipelines to create. +Parameters +---------- -pname:pCreateInfos:: - Pointer to an array of pname:createInfoCount - sname:VkGraphicsPipelineCreateInfo structures defining the contents of - the new pipelines. + * pname:device is the logical device that creates the graphics pipelines. + * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that + pipeline caching is disabled; or the handle of a valid + <> object, in which case use of that + cache is enabled for the duration of the command. + * pname:createInfoCount is the length of the pname:pCreateInfos and + pname:pPipelines arrays. + * pname:pCreateInfos is an array of sname:VkGraphicsPipelineCreateInfo + structures. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pPipelines is a pointer to an array in which the resulting + graphics pipeline objects are returned. -pname:pPipelines:: - A pointer to an array to receive the handle(s) to the new graphics pipeline object(s). Description ----------- -fname:vkCreateGraphicsPipelines creates new graphics pipeline objects using the device specified in -pname:device and the creation information specified in the structures pointed to by pname:pCreateInfos and -deposits the resulting handles in the array pointed to by pname:pPipelines. The definition -of slink:VkGraphicsPipelineCreateInfo is: - -include::../structs/VkGraphicsPipelineCreateInfo.txt[] - -.Create Info Details - -- pname:pStages points to an array of pname:stageCount slink:VkPipelineShaderStageCreateInfo objects describing the stages comprising the pipeline. At minimum, the vertex shader stage must be defined. - -- pname:pVertexInputState points to a slink:VkPipelineVertexInputStateCreateInfo object describing the layout of the vertex buffers as well as the attributes within the buffers for the pipeline. - -- pname:pInputAssemblyState points to a slink:VkPipelineInputAssemblyStateCreateInfo object describing the input assembly state for the pipeline, including the primitive type and topology. +The slink:VkGraphicsPipelineCreateInfo structure includes an array of shader +create info structures containing all the desired active shader stages, as +well as creation info to define all relevant fixed-function stages, and a +pipeline layout. -- pname:pTessellationState points to a slink:VkPipelineTessellationStateCreateInfo object describing the patch control state for the tesselation stage of the pipeline, or is set to 'NULL' if no tesselation stage is defined. - -- pname:pViewportState points to a slink:VkPipelineViewportStateCreateInfo object describing the viewport state for the pipeline. - -- pname:pRasterizationState points to a slink:VkPipelineRasterizationStateCreateInfo object describing the rasterizer state for the pipeline, including fill mode, clip mode, and face orientation. - -- pname:pMultisampleState points to a slink:VkPipelineMultisampleStateCreateInfo object describing the multisample state for the pipeline. - -- pname:pDepthStencilState points to a slink:VkPipelineDepthStencilStateCreateInfo object describing the depth and stencil state for the pipeline. - -- pname:pColorBlendState points to a slink:VkPipelineColorBlendStateCreateInfo object describing the color buffer state for the pipeline, including state for each of the attachments that will be bound to the framebuffer. +include::../validity/protos/vkCreateGraphicsPipelines.txt[] -- pname:flags is an instance of elink:VkPipelineCreateFlags, indicating additional usage hint (e.g., if this pipeline will be used to create derivative pipelines). -- pname:layout is a handle to a sname:VkPipelineLayout object created with fname:vkCreatePipelineLayout. +See Also +-------- -- pname:renderPass is a handle to a sname:VkRenderPass object describing a renderpass the pipeline will be compatible with. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkGraphicsPipelineCreateInfo, slink:VkPipeline, slink:VkPipelineCache -- pname:subpass is the index of the subpass in the pname:renderPass the pipeline will be compatible with. -The created pipeline may only be used in a subpass compatible with the provided pname:renderPass and pname:subpass. -Two subpasses are compatible if they have the same index in their render passes, and if the render pass descriptions are -identical except for attachment load and store ops and image layouts. For a render pass with only one subpass, -the subpasses are compatible if they have the same number and kind of attachments, and if corresponding attachments -have the same format and sample count. +Document Notes +-------------- -include::../validity/protos/vkCreateGraphicsPipelines.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateGraphicsPipelines -flink:vkCreateComputePipelines, flink:vkCmdBindPipeline, flink:vkDestroyPipeline +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateImage.txt b/doc/specs/vulkan/man/vkCreateImage.txt index fb89104dd8..95cbe194bb 100644 --- a/doc/specs/vulkan/man/vkCreateImage.txt +++ b/doc/specs/vulkan/man/vkCreateImage.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateImage(3) -================= +================ Name ---- @@ -8,34 +12,47 @@ vkCreateImage - Create a new image object. C Specification --------------- +// refBegin vkCreateImage Create a new image object. + +To create images, call: + include::../protos/vkCreateImage.txt[] + Parameters ---------- -pname:device:: - A handle to the device with which to create the image. + * pname:device is the logical device that creates the image. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkImageCreateInfo structure containing parameters to be used to + create the image. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pImage points to a sname:VkImage handle in which the resulting + image object is returned. -pname:pCreateInfo:: - A pointer to a slink:VkImageCreateInfo structure specifying the properties of the new image. - -pname:pImage:: - A pointer to a variable to receive the handle to the resulting image. Description ----------- -fname:vkCreateImage creates a new image object and places the resulting handle in the variable pointed -to by pname:pImage. The properties of the new image are specified in an instance of a slink:VkImageCreateInfo -structure whose address is given in pname:pCreateInfo. The definition of slink:VkImageCreateInfo is: - -include::../structs/VkImageCreateInfo.txt[] - include::../validity/protos/vkCreateImage.txt[] + See Also -------- -flink:vkCreateSampler +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkImage, slink:VkImageCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateImage + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateImageView.txt b/doc/specs/vulkan/man/vkCreateImageView.txt index facd64b4d9..2034d8b897 100644 --- a/doc/specs/vulkan/man/vkCreateImageView.txt +++ b/doc/specs/vulkan/man/vkCreateImageView.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateImageView(3) ==================== @@ -8,52 +12,50 @@ vkCreateImageView - Create an image view from an existing image. C Specification --------------- +// refBegin vkCreateImageView Create an image view from an existing image. + +To create an image view, call: + include::../protos/vkCreateImageView.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the image. + * pname:device is the logical device that creates the image view. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkImageViewCreateInfo structure containing parameters to be used + to create the image view. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pView points to a sname:VkImageView handle in which the resulting + image view object is returned. -pname:pCreateInfo:: - Specifies properties of the new view. - -pname:pView:: - Returns the requested object. Description ----------- -fname:vkCreateImageView creates a new view of a source image in a compatible format, allowing casting -of image data from one format to another. Image views may be bound into descriptor sets to allow them -to be accessed in shaders, or be bound as color attachments. pname:device specifies the device that -is to be used to create the new view. pname:pCreateInfo is a pointer to an instance of the -slink:VkImageViewCreateInfo structure defining the properties of the new view object. The definition -of slink:VkImageViewCreateInfo is: +Some of the image creation parameters are inherited by the view. The +remaining parameters are contained in the pname:pCreateInfo. -include::../structs/VkImageViewCreateInfo.txt[] +include::../validity/protos/vkCreateImageView.txt[] -The pname:sType member of pname:pCreateInfo should be ename:VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO. -The pname:image member contains the handle to the parent object of which to create a view. pname:viewType -specifies the type of view to be created and should be a member of the elink:VkImageViewType enumeration, -the definition of which is: -include::../enums/VkImageViewType.txt[] +See Also +-------- -The pname:format member of pname:pCreateInfo specifies the image format for the newly created view and -should be compatible with the base format of the parent image specified in pname:image. The pname:components -member is an instance of the slink:VkComponentMapping structure which defines component ordering for data -read from the view. The pname:subresourceRange member of the pname:pCreateInfo specifies the -range of the parent resource to be visible through the new view. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkImageView, slink:VkImageViewCreateInfo -The pname:flags member of pname:pCreateInfo is reserved and must be 0. -include::../validity/protos/vkCreateImageView.txt[] +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateImageView -flink:vkCreateImage, flink:vkCreateBuffer, flink:vkCreateBufferView +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateInstance.txt b/doc/specs/vulkan/man/vkCreateInstance.txt index 1ef69191ce..e042faed6f 100644 --- a/doc/specs/vulkan/man/vkCreateInstance.txt +++ b/doc/specs/vulkan/man/vkCreateInstance.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateInstance(3) -==================== +=================== Name ---- @@ -8,117 +12,53 @@ vkCreateInstance - Create a new Vulkan instance C Specification --------------- +// refBegin vkCreateInstance Create a new Vulkan instance + +To create an instance object, call: + include::../protos/vkCreateInstance.txt[] + Parameters ---------- -pname:pCreateInfo:: - Pointer to instance creation structure. + * pname:pCreateInfo points to an instance of slink:VkInstanceCreateInfo + controlling creation of the instance. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pInstance points a sname:VkInstance handle in which the resulting + instance is returned. -pname:pInstance:: - Pointer to variable which will receive the new instance handle. Description ----------- -fname:vkCreateInstance creates a new Vulkan instance and places a handle to it in -the variable pointed to by pname:pInstance. pname:pCreateInfo is a pointer to an -instance of the slink:VkInstanceCreateInfo structure containing information about -how the instance should be created. The definition of slink:VkInstanceCreateInfo -is: - -include::../structs/VkInstanceCreateInfo.txt[] - -The pname:sType member of sname:VkInstanceCreateInfo should be set to ename:VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO. -The pname:pNext member of sname:VkInstanceCreateInfo is reserved for use by extensions -and should be set to code:NULL. - -The pname:pApplicationInfo member, if non-code:NULL, points to an instance of the slink:VkApplicationInfo -structure containing information about the application. The expected contents of the pname:pApplicationInfo -member are documented below. - -The pname:enabledLayerNameCount member of sname:VkInstanceCreateInfo specifies the number of global layers -to enable, and pname:ppEnabledLayerNames is a pointer to an array of pname:enabledLayerNameCount -code:NULL-terminated UTF-8 strings containing the names of layers -that should be enabled globally. If pname:enabledLayerNameCount is zero, then pname:ppEnabledLayerNames -is ignored and no global layers are enabled. If a layer cannot be found, the -call will not create a sname:VkInstance and will return ename:VK_ERROR_LAYER_NOT_PRESENT. - -Similary, information about global extensions is specified in the pname:enabledExtensionNameCount and -pname:ppEnabledExtensionNames members. pname:enabledExtensionNameCount specifies the number of global -extensions to enable and pname:ppEnabledExtensionNames is a pointer to an array of pointers -to code:NULL-terminated UTF-8 strings containing the extension names. If an extension is provided -by a layer, both the layer and extension must be specified at -fname:vkCreateInstance time. If a extension cannot be found, the call will not -create a sname:VkInstance and will return ename:VK_ERROR_LAYER_NOT_PRESENT. - -If pname:enabledExtensionNameCount is zero then no extensions are enabled and pname:ppEnabledExtensionNames -is ignored. - -The definition of the slink:VkApplicationInfo structure is as follows: - -include::../structs/VkApplicationInfo.txt[] - -The pname:sType member of slink:VkApplicationInfo should be set to ename:VK_STRUCTURE_TYPE_APPLICATION_INFO. -The pname:pNext member of slink:VkApplicationInfo is reserved for use by extensions and should -be set to code:NULL. - -pname:pApplicationName is a pointer to a code:NULL-terminated UTF-8 string containing the name of -the application. pname:applicationVersion contains an application-specific version number. It is -recommended that new versions of an existing application specify monotonically increasing -values for pname:applicationVersion. - -If the application is built on a reusable engine, the name of the engine may be specified -in the NULL-terminated UTF-8 string pointed to by pname:pEngineName. pname:engineVersion -is the version of the engine used to create the application. - -Finally, pname:apiVersion is the version of the Vulkan API that the application expects to -use. - -Any application memory required by the instance will be allocated by calling functions -specified in the structure pointed to by ptext:pAllocCb. The definition of slink:VkAllocationCallbacks is: - -include::../structs/VkAllocationCallbacks.txt[] - -The slink:VkAllocationCallbacks structure contains two function pointers. pname:pfnAllocation -points to an allocation function whose protoype should be of the following -form: - -[source,{basebackend@docbook:c++:cpp}] ------------------------------------------------------------------------------- -typedef void* (*PFN_vkAllocationFunction)( - void* pUserData, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); ------------------------------------------------------------------------------- - -pname:pUserData is set to the value of pname:pUserData in the allocation info structure -passed to fname:vkCreateInstance. ptext:size is the size of the desired allocation, -ptext:alignment is the desired allocation, in bytes, and ptext:allocationScope represents -the intended usage of the allocation. The return value of function is a pointer -to the newly allocated memory. - -The pname:pfnFree member of slink:VkAllocationCallbacks points to an instance of the -following function: - -[source,{basebackend@docbook:c++:cpp}] ------------------------------------------------------------------------------- -typedef void (*PFN_vkFreeFunction)( - void* pUserData, - void* pMemory); ------------------------------------------------------------------------------- - -Again, the pname:pUserData parameter is initialized to the value passed in the -slink:VkAllocationCallbacks structure passed to fname:vkCreateInstance. ptext:pMemory is a -pointer to the memory to be freed. +fname:vkCreateInstance creates the instance, then enables and initializes +global layers and extensions requested by the application. If an extension +is provided by a layer, both the layer and extension must: be specified at +fname:vkCreateInstance time. If a specified layer cannot be found, no +sname:VkInstance will be created and the function will return +ename:VK_ERROR_LAYER_NOT_PRESENT. Likewise, if a specified extension cannot +be found the call will return ename:VK_ERROR_EXTENSION_NOT_PRESENT. include::../validity/protos/vkCreateInstance.txt[] + See Also -------- -flink:vkDestroyInstance +slink:VkAllocationCallbacks, slink:VkInstance, slink:VkInstanceCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateInstance + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateMirSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateMirSurfaceKHR.txt deleted file mode 100644 index 13d2b2c117..0000000000 --- a/doc/specs/vulkan/man/vkCreateMirSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateMirSurfaceKHR(3) -======================= - -Name ----- -vkCreateMirSurfaceKHR - create a VkSurfaceKHR object for a Mir window. - -C Specification ---------------- - -include::../protos/vkCreateMirSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate with the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkMirSurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateMirSurfaceKHR creates a VkSurface associated with the specified Mir native window. - -pname:pCreateInfo is an instance of the slink:VkMirSurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkMirSurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateMirSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreatePipelineCache.txt b/doc/specs/vulkan/man/vkCreatePipelineCache.txt index c5477d6e94..89f57129f1 100644 --- a/doc/specs/vulkan/man/vkCreatePipelineCache.txt +++ b/doc/specs/vulkan/man/vkCreatePipelineCache.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreatePipelineCache(3) ======================== @@ -8,39 +12,75 @@ vkCreatePipelineCache - Creates a new pipeline cache C Specification --------------- +// refBegin vkCreatePipelineCache Creates a new pipeline cache + +To create pipeline cache objects, call: + include::../protos/vkCreatePipelineCache.txt[] + Parameters ---------- -pname:device:: - A handle to the device that will create the pipeline cache. + * pname:device is the logical device that creates the pipeline cache + object. + * pname:pCreateInfo is a pointer to a sname:VkPipelineCacheCreateInfo + structure that contains the initial parameters for the pipeline cache + object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in + which the resulting pipeline cache object is returned. -pname:pCreateInfo:: - A pointer to a sname:VkPipelineCacheCreateInfo object describing the pipeline cache to be created. - -pname:pPipelineCache:: - A pointer that will receive the handle to the newly created pipeline cache. Description ----------- -include::../structs/VkPipelineCacheCreateInfo.txt[] +[NOTE] +.Note +==== +Applications can: track and manage the total host memory size of a pipeline +cache object using the pname:pAllocator. Applications can: limit the amount +of data retrieved from a pipeline cache object in fname:vkGetPipelineCacheData. +Implementations shouldnot: internally limit the total number of entries added to a +pipeline cache object or the total host memory consumed. +==== + +Once created, a pipeline cache can: be passed to the +fname:vkCreateGraphicsPipelines and fname:vkCreateComputePipelines commands. +If the pipeline cache passed into these commands is not +dlink:VK_NULL_HANDLE, the implementation will query it for possible reuse +opportunities and update it with new content. The use of the pipeline cache +object in these commands is internally synchronized, and the same pipeline +cache object can: be used in multiple threads simultaneously. + +[NOTE] +.Note +==== +Implementations should: make every effort to limit any critical sections +to the actual accesses to the cache, which is expected to be significantly +shorter than the duration of the fname:vkCreateGraphicsPipelines and +fname:vkCreateComputePipelines commands. +==== + +include::../validity/protos/vkCreatePipelineCache.txt[] + -.Create Info Details +See Also +-------- -- pname:initialDataSize is the size of the initial data to populate the cache. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkPipelineCache, slink:VkPipelineCacheCreateInfo -- pname:pInitialData is a pointer to the initial data to populate the cache. -- pname:maxSize specifies an upper bound on the size the cache will grow to, -with -1 indicating that the cache may grow without bound. +Document Notes +-------------- -include::../validity/protos/vkCreatePipelineCache.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreatePipelineCache -flink:vkCreateGraphicsPipelines, flink:vkCreateComputePipelines, flink:vkGetPipelineCacheData, flink:vkMergePipelineCaches +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt index 987e538083..37acf6579b 100644 --- a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt +++ b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreatePipelineLayout(3) ========================= @@ -8,46 +12,47 @@ vkCreatePipelineLayout - Creates a new pipeline layout object. C Specification --------------- +// refBegin vkCreatePipelineLayout Creates a new pipeline layout object. + +To create a pipeline layout, call: + include::../protos/vkCreatePipelineLayout.txt[] + Parameters ---------- -pname:device:: - The device with which to create the new pipeline layout object. + * pname:device is the logical device that creates the pipeline layout. + * pname:pCreateInfo is a pointer to an instance of the + slink:VkPipelineLayoutCreateInfo structure specifying the state of the + pipeline layout object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pPipelineLayout points to a sname:VkPipelineLayout handle in which + the resulting pipeline layout object is returned. -pname:pCreateInfo:: - A pointer to structure specifying the properties of the new pipeline layout. - -pname:pPipelineLayout:: - Pointer to a variable to receive a handle to the new pipeline layout object. Description ----------- -fname:vkCreatePipelineLayout creates a new pipeline layout object for the device specified in -pname:device. The resulting pipeline layout object handle is written into the variable whose -address is given in pname:pPipelineLayout. +include::../validity/protos/vkCreatePipelineLayout.txt[] -pname:pCreateInfo is a pointer to an instance of a slink:VkPipelineLayoutCreateInfo structure describing -the new pipeline layout. The definition of slink:VkPipelineLayoutCreateInfo is: -include::../structs/VkPipelineLayoutCreateInfo.txt[] +See Also +-------- -The pname:sType member of the slink:VkPipelineLayoutCreateInfo structure should be set to -ename:VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO. The pname:pNext member is reserved for use -by extensions and should be set to code:NULL. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkPipelineLayout, slink:VkPipelineLayoutCreateInfo -The pname:setLayoutCount member specifies the number of descriptor sets to -include in the layout and pname:pSetLayouts is a pointer to an array of -pname:setLayoutCount sname:VkDescriptorSetLayout objects describing the -sets, each created with flink:vkCreateDescriptorSetLayout. -include::../validity/protos/vkCreatePipelineLayout.txt[] +Document Notes +-------------- -See Also --------- +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreatePipelineLayout -flink:vkCreateDescriptorSetLayout +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateQueryPool.txt b/doc/specs/vulkan/man/vkCreateQueryPool.txt index 5e85956715..45cca8a0a9 100644 --- a/doc/specs/vulkan/man/vkCreateQueryPool.txt +++ b/doc/specs/vulkan/man/vkCreateQueryPool.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateQueryPool(3) -===================== +==================== Name ---- @@ -8,43 +12,47 @@ vkCreateQueryPool - Create a new query pool object. C Specification --------------- +// refBegin vkCreateQueryPool Create a new query pool object. + +To create a query pool, call: + include::../protos/vkCreateQueryPool.txt[] + Parameters ---------- -pname:device:: - The device with which to create the query pool object. + * pname:device is the logical device that creates the query pool. + * pname:pCreateInfo is a pointer to an instance of the + sname:VkQueryPoolCreateInfo structure containing the number and type of + queries to be managed by the pool. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pQueryPool is a pointer to a sname:VkQueryPool handle in which the + resulting query pool object is returned. -pname:pCreateInfo:: - A pointer to a structure containing information to be placed in the object. - -pname:pQueryPool:: - A pointer to a variable which will receive the handle to the new object. Description ----------- -fname:vkCreateQueryPool creates a new query pool object using the information contained in -pname:pCreateInfo and the device specified in pname:device. Upon success, a handle to -the new query pool object is deposited in the variable pointed to by pname:pQueryPool. -pname:pCreateInfo should point to an instance of the slink:VkQueryPoolCreateInfo structure, -the definition of which is: - -include::../structs/VkQueryPoolCreateInfo.txt[] - include::../validity/protos/vkCreateQueryPool.txt[] -Return Value ------------- - -Upon success, fname:vkCreateQueryPool returns ename:VK_SUCCESS and deposits the resulting -query pool handle in the variable pointed to by pname:pQueryPool. Upon failure, a -descriptive error code is returned. See Also -------- -flink:vkCmdResetQueryPool, flink:vkCmdBeginQuery, flink:vkCmdEndQuery, flink:vkDestroyQueryPool, flink:vkGetQueryPoolResults, flink:vkCmdCopyQueryPoolResults +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkQueryPool, slink:VkQueryPoolCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateQueryPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateRenderPass.txt b/doc/specs/vulkan/man/vkCreateRenderPass.txt index bed2c4a42b..051894a369 100644 --- a/doc/specs/vulkan/man/vkCreateRenderPass.txt +++ b/doc/specs/vulkan/man/vkCreateRenderPass.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateRenderPass(3) -====================== +===================== Name ---- @@ -8,157 +12,47 @@ vkCreateRenderPass - Create a new render pass object. C Specification --------------- +// refBegin vkCreateRenderPass Create a new render pass object. + +To create a render pass, call: + include::../protos/vkCreateRenderPass.txt[] + Parameters ---------- -pname:device:: - The device with which to create the render pass object. + * pname:device is the logical device that creates the render pass. + * pname:pCreateInfo is a pointer to an instance of the + slink:VkRenderPassCreateInfo structure that describes the parameters of + the render pass. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pRenderPass points to a sname:VkRenderPass handle in which the + resulting render pass object is returned. -pname:pCreateInfo:: - A pointer to a structure containing information to be placed in the object. - -pname:pRenderPass:: - A pointer to a variable which will receive the handle to the new object. Description ----------- -fname:vkCreateRenderPass creates a new render pass object using the information contained in -pname:pCreateInfo and the device specified in pname:device. Upon success, a handle to -the new render pass object is deposited in the variable pointed to by pname:pRenderPass, -pname:pCreateInfo should point to an instance of the slink:VkRenderPassCreateInfo structure, -the definition of which is: - -include::../structs/VkRenderPassCreateInfo.txt[] - -A render pass is a sequence of subpasses, each of which reads from some framebuffer -attachments and writes to others as color and depth/stencil. The subpasses all render -to the same dimensions, and fragments for pixel (x,y,layer) in one subpass only read -framebuffer contents written by earlier subpasses at that same (x,y,layer) location. -It is quite common for a render pass to only contain a single subpass. - -Dependencies between subpasses describe ordering restrictions between them. Without -dependencies, implementations may reorder or overlap execution of two subpasses. - -Attachments -~~~~~~~~~~~ -The attachments used in the render pass are described by a slink:VkAttachmentDescription -structure, defined as: - -include::../structs/VkAttachmentDescription.txt[] - -The pname:format and pname:samples members are respectively the format and the -number of samples of the image that will be used for the attachment. - -The pname:loadOp defines how the contents of the attachment within the render -area will be treated at the beginning of the render pass. A load op of -ename:VK_ATTACHMENT_LOAD_OP_LOAD means the contents within the render area will -be preserved; ename:VK_ATTACHMENT_LOAD_OP_CLEAR means the contents within the -render area will be cleared to a uniform value; -ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE means the application intends to overwrite -all samples in the render area without reading the initial contents, so their -initial contents are unimportant. If the attachment format has both depth and -stencil components, pname:loadOp applies only to the depth data, while -pname:stencilLoadOp defines how the stencil data is handled. pname:stencilLoadOp -is ignored for other formats. - -The pname:storeOp defines whether data rendered to the attachment is committed to memory -at the end of the render pass. ename:VK_ATTACHMENT_STORE_OP_STORE means the data is committed -to memory and will be available for reading after the render pass completes. -ename:VK_ATTACHMENT_STORE_OP_DONT_CARE means the data is not needed after rendering, and may -be discarded; the contents of the attachment will be undefined inside the render area. -If the attachment format has both depth and stencil components, pname:storeOp applies only -to the depth data, while pname:stencilStoreOp defines how the stencil data is -handled. pname:stencilStoreOp is ignored for other formats. - -pname:initialLayout is the layout the attachment image will be in when the render -pass begins. - -pname:finalLayout is the layout the attachment image will be transitioned to when -the render pass ends. - -Subpasses -~~~~~~~~~ -Subpasses of a render pass are described by a slink:VkSubpassDescription structure, -defined as: - -include::../structs/VkSubpassDescription.txt[] - -The pname:pipelineBindPoint indicates whether this is a compute or graphics subpass. -Only graphics subpasses are currently allowed. - -The pname:flags member is currently unused and must be zero. - -pname:pInputAttachments lists which of the render pass's attachments will be -read in the shader in the subpass, and what layout the attachment images -should be transitioned to before the subpass. pname:inputAttachmentCount -indicates the number of input attachments. Input attachments must also be -bound to the pipeline with a descriptor set. - -pname:pColorAttachments lists which of the render pass's attachments will be -used as color attachments in the subpass, and what layout the attachment -images should be transitioned to before the subpass. -pname:colorAttachmentCount indicates the number of color attachments. - -Each entry in pname:pResolveAttachments corresponds to an entry in -pname:pColorAttachments; either pname:pResolveAttachments must be NULL or it -must have pname:colorAttachmentCount entries. If pname:pResolveAttachments -is not NULL, each of its elements corresponds to a color attachment (the -element in pname:pColorAttachments at the same index). At the end of each -subpass, the subpass's color attachments will be resolved to the -corresponding resolve attachments, unless the resolve attachment index is -ename:VK_ATTACHMENT_UNUSED. - -The pname:depthStencilAttachment indicates which attachment will be used for -depth/stencil data and the layout it should be transitioned to before the -subpass. If no depth/stencil attachment is used in the -subpass, the attachment index must be ename:VK_ATTACHMENT_UNUSED. - -The pname:pPreserveAttachments are the attachments that aren't used by a -subpass, but whose contents must be preserved throughout the subpass. If the -contents of an attachment are produced in one subpass and consumed in a -later subpass, the attachment must be preserved in any subpasses on -dependency chains from the producer to consumer. -pname:preserveAttachmentCount indicates the number of preserved attachments. - -If a subpass uses an attachment as both an input attachment and either a color -attachment or a depth/stencil attachment, all pipelines used in the subpass must -disable writes to any components of the attachment format that are used as input. - -Dependencies -~~~~~~~~~~~~ -Dependencies describe a pipeline barrier that must occur between two subpasses, -usually because the destination subpass reads attachment contents written by the -source subpass. Dependencies are described by sname:VkSubpassDependency -structures, defined as: - -include::../structs/VkSubpassDependency.txt[] - -The pname:srcSubpass and pname:dstSubpass are producer and consumer subpasses, -respectively. pname:srcSubpass must be less than or equal to pname:dstSubpass, -so that the order of subpass descriptions is always a valid execution ordering, -and so the dependency graph cannot have cycles. - -The pname:srcStageMask, pname:dstStageMask, pname:outputMask, pname:inputMask, -and pname:byRegion describe the barrier, and have the same meaning as the -VkCmdPipelineBarrier parameters and slink:VkMemoryBarrier members with the same -names. - -If pname:byRegion is ename:VK_TRUE, it describes a per-region (x,y,layer) -dependency, that is for each region, the pname:srcStageMask stages must have -finished in pname:srcSubpass before any pname:dstStageMask stage starts in -pname:dstSubpass for the same region. If pname:byRegion is ename:VK_FALSE, it -describes a global dependency, that is the pname:srcStageMask stages must have -finished for all regions in pname:srcSubpass before any pname:dstStageMask -stage starts in pname:dstSubpass for any region. - include::../validity/protos/vkCreateRenderPass.txt[] + See Also -------- -flink:vkCmdBeginRenderPass, flink:vkCmdEndRenderPass +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkRenderPass, slink:VkRenderPassCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateRenderPass + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateSampler.txt b/doc/specs/vulkan/man/vkCreateSampler.txt index f6179b784b..21162ba699 100644 --- a/doc/specs/vulkan/man/vkCreateSampler.txt +++ b/doc/specs/vulkan/man/vkCreateSampler.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateSampler(3) ================== @@ -8,37 +12,47 @@ vkCreateSampler - Create a new sampler object C Specification --------------- +// refBegin vkCreateSampler Create a new sampler object + +To create a sampler object, call: + include::../protos/vkCreateSampler.txt[] + Parameters ---------- -pname:device:: - The device used to create the sampler object. + * pname:device is the logical device that creates the sampler. + * pname:pCreateInfo is a pointer to an instance of the + slink:VkSamplerCreateInfo structure specifying the state of the sampler + object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pSampler points to a sname:VkSampler handle in which the resulting + sampler object is returned. -pname:pCreateInfo:: - A pointer to a structure containing the parameters used to construct the sampler. - -pname:pSampler:: - A pointer to a variable which will receive the handle to the new sampler object. Description ----------- -fname:vkCreateSampler creates a new sampler object using the device specified in -pname:device and places the resulting handle in the variable whose address is given -by pname:pSampler. pname:pCreateInfo is an instance of the slink:VkSamplerCreateInfo -structure whose definition is: - -include::../structs/VkSamplerCreateInfo.txt[] - -The resulting sampler object should be destroyed with a call to flink:vkDestroySampler. - include::../validity/protos/vkCreateSampler.txt[] + See Also -------- -flink:vkDestroySampler, flink:vkCreateImage +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkSampler, slink:VkSamplerCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateSampler + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateSemaphore.txt b/doc/specs/vulkan/man/vkCreateSemaphore.txt index 3a24ae70c7..30edb634af 100644 --- a/doc/specs/vulkan/man/vkCreateSemaphore.txt +++ b/doc/specs/vulkan/man/vkCreateSemaphore.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateSemaphore(3) -===================== +==================== Name ---- @@ -8,50 +12,47 @@ vkCreateSemaphore - Create a new queue semaphore object. C Specification --------------- +// refBegin vkCreateSemaphore Create a new queue semaphore object. + +To create a new semaphore object, use the command + include::../protos/vkCreateSemaphore.txt[] + Parameters ---------- -pname:device:: - The device with which to create the queue semaphore object. - -pname:pCreateInfo:: - A pointer to a structure containing information to be placed in the object. + * pname:device is the logical device that creates the semaphore. + * pname:pCreateInfo points to a slink:VkSemaphoreCreateInfo structure + specifying the state of the semaphore object. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pSemaphore points to a handle in which the resulting + semaphore object is returned. The semaphore is created in the unsignaled + state. -pname:pSemaphore:: - A pointer to a variable which will receive the handle to the new object. Description ----------- -fname:vkCreateSemaphore creates a new queue semaphore object using the -information contained in pname:pCreateInfo and the device specified in -pname:device. Upon success, a handle to the new queue semaphore object is -deposited in the variable pointed to by pname:pSemaphore. pname:pCreateInfo -should point to an instance of the slink:VkSemaphoreCreateInfo structure, -the definition of which is: +include::../validity/protos/vkCreateSemaphore.txt[] -include::../structs/VkSemaphoreCreateInfo.txt[] -The pname:sType member of the sname:VkSemaphoreCreateInfo structure should be -set to ename:VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO. The pname:pNext member -is reserved for use by extensions and should be set to code:NULL. +See Also +-------- -The pname:flags member of the sname:VkSemaphoreCreateInfo structure pointed -to by pname:pCreateInfo contains flags defining the initial state and -behavior of the semaphore. Currently, no flags are defined. +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkSemaphore, slink:VkSemaphoreCreateInfo -// include::../enums/VkSemaphoreCreateFlagBits.txt[] -The semaphore is created in the unsignaled state and may be signaled by submitting -it to a queue through a call to flink:vkQueueSubmit. +Document Notes +-------------- -include::../validity/protos/vkCreateSemaphore.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateSemaphore -flink:vkDestroySemaphore, flink:vkQueueSubmit +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateShaderModule.txt b/doc/specs/vulkan/man/vkCreateShaderModule.txt index 302796f31c..804ccf8322 100644 --- a/doc/specs/vulkan/man/vkCreateShaderModule.txt +++ b/doc/specs/vulkan/man/vkCreateShaderModule.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkCreateShaderModule(3) -======================== +======================= Name ---- @@ -8,44 +12,50 @@ vkCreateShaderModule - Creates a new shader module object. C Specification --------------- +// refBegin vkCreateShaderModule Creates a new shader module object. + +To create a shader module, call: + include::../protos/vkCreateShaderModule.txt[] + Parameters ---------- -pname:device:: - Logical device to own the new object. + * pname:device is the logical device that creates the shader module. + * pname:pCreateInfo parameter is a pointer to an instance of the + sname:VkShaderModuleCreateInfo structure. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + * pname:pShaderModule points to a sname:VkShaderModule handle in which the + resulting shader module object is returned. -pname:pCreateInfo:: - A pointer to a structure defining the shader module object to be created. - -pname:pShaderModule:: - Pointer to the variable to receive a handle to the new object. Description ----------- -fname:vkCreateShaderModule creates a new shader module from shader source provided by the caller. -pname:device is a handle to the device that is to be used to create the shader module. pname:pCreateInfo -is a pointer to an instance of the slink:VkShaderModuleCreateInfo structure which contains information -needed to construct the module. The definition of slink:VkShaderModuleCreateInfo is: - -include::../structs/VkShaderModuleCreateInfo.txt[] - -The pname:pCode member of pname:pCreateInfo contains a pointer to an opaque code structure describing -the content of the shader module. The pname:codeSize member specifies the length of the data pointed -to by pname:pCreateInfo in bytes. The pname:flags member of pname:pCreateInfo is used to further control -construction of the shader module. However, no flags are currently defined, pname:flags is therefore -reserved and should be set to zero. - -Upon success, a handle to the newly created shader module object is placed in the variable that is pointed -to by pname:pShaderModule. +Once a shader module has been created, any entry points it contains can: be +used in pipeline shader stages as described in <> and <>. include::../validity/protos/vkCreateShaderModule.txt[] + See Also -------- -flink:vkDestroyShaderModule +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkShaderModule, slink:VkShaderModuleCreateInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCreateShaderModule + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkCreateSharedSwapchainsKHR.txt b/doc/specs/vulkan/man/vkCreateSharedSwapchainsKHR.txt deleted file mode 100644 index 3bf89b8313..0000000000 --- a/doc/specs/vulkan/man/vkCreateSharedSwapchainsKHR.txt +++ /dev/null @@ -1,50 +0,0 @@ -vkCreateSharedSwapchainsKHR(3) -============================= - -Name ----- -vkCreateSharedSwapchainsKHR - create multiple swapchains that share presentable images. - -C Specification ---------------- - -include::../protos/vkCreateSharedSwapchainsKHR.txt[] - -Parameters ----------- - -pname:device:: - The VkDevice assocated with swapchain. - -pname:swapchainCount:: - The count of the array of swapchain create info. - -pname:pCreateInfos:: - A pointer to an array of VkSwapchainCreateInfoKHR structures containing the parameters affecting the creation of the swapchain objects. - -pname:pAllocator:: - The allocator used for host memory allocated for the swapchain objects. - -pname:pSwapchains:: - The array of created swapchains. - -Description ------------ - -fname:vkCreateSharedSwapchainsKHR creates multiple swapchains that share images. - -pname:pCreateInfo is an array of the slink:VkSwapchainCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkSwapchainCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateSharedSwapchainsKHR.txt[] - -See Also --------- - -flink:vkCreateSwapchainKHR, flink:vkDestroySwapchainKHR, -flink:vkGetSwapchainImagesKHR, flink:vkAcquireNextImageKHR, -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateSwapchainKHR.txt b/doc/specs/vulkan/man/vkCreateSwapchainKHR.txt deleted file mode 100644 index b6c046e1a8..0000000000 --- a/doc/specs/vulkan/man/vkCreateSwapchainKHR.txt +++ /dev/null @@ -1,47 +0,0 @@ -vkCreateSwapchainKHR(3) -====================== - -Name ----- -vkCreateSwapchainKHR - create a swapchain. - -C Specification ---------------- - -include::../protos/vkCreateSwapchainKHR.txt[] - -Parameters ----------- - -pname:device:: - The VkDevice to associate the swapchain. - -pname:pCreateInfo:: - A pointer to an instance of the VkSwapchainCreateInfoKHR structure containing the parameters affecting the creation of the swapchain object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSwapchain:: - The resulting swapchain. - -Description ------------ - -fname:vkCreateSwapchainKHR creates a swapchain. - -pname:pCreateInfo is an instance of the slink:VkSwapchainCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkSwapchainCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateSwapchainKHR.txt[] - -See Also --------- - -flink:vkCreateSharedSwapchainsKHR, flink:vkDestroySwapchainKHR, -flink:vkGetSwapchainImagesKHR, flink:vkAcquireNextImageKHR, -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateWaylandSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateWaylandSurfaceKHR.txt deleted file mode 100644 index 50cdf76eb5..0000000000 --- a/doc/specs/vulkan/man/vkCreateWaylandSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateWaylandSurfaceKHR(3) -=========================== - -Name ----- -vkCreateWaylandSurfaceKHR - create a VkSurfaceKHR object for a Wayland window. - -C Specification ---------------- - -include::../protos/vkCreateWaylandSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate with the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkWaylandSurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateWaylandSurfaceKHR creates a VkSurface associated with the specified Wayland native window. - -pname:pCreateInfo is an instance of the slink:VkWaylandSurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkWaylandSurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateWaylandSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateWin32SurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateWin32SurfaceKHR.txt deleted file mode 100644 index 2ccba18c96..0000000000 --- a/doc/specs/vulkan/man/vkCreateWin32SurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateWin32SurfaceKHR(3) -========================= - -Name ----- -vkCreateWin32SurfaceKHR - create a VkSurfaceKHR object for a Win32 window. - -C Specification ---------------- - -include::../protos/vkCreateWin32SurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkWin32SurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateWin32SurfaceKHR creates a VkSurface associated with the specified Win32 native window. - -pname:pCreateInfo is an instance of the slink:VkWin32SurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkWin32SurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateWin32SurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateXcbSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateXcbSurfaceKHR.txt deleted file mode 100644 index 2adc97e743..0000000000 --- a/doc/specs/vulkan/man/vkCreateXcbSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateXcbSurfaceKHR(3) -======================= - -Name ----- -vkCreateXcbSurfaceKHR - create a VkSurfaceKHR object for a X11 window, using the XCB client-side library. - -C Specification ---------------- - -include::../protos/vkCreateXcbSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkXcbSurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateXcbSurfaceKHR creates a VkSurface associated with the X11 window. - -pname:pCreateInfo is an instance of the slink:VkXcbSurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkXcbSurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateXcbSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkCreateXlibSurfaceKHR.txt b/doc/specs/vulkan/man/vkCreateXlibSurfaceKHR.txt deleted file mode 100644 index 7ab38042ae..0000000000 --- a/doc/specs/vulkan/man/vkCreateXlibSurfaceKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkCreateXlibSurfaceKHR(3) -======================== - -Name ----- -vkCreateXlibSurfaceKHR - create a VkSurfaceKHR object for an X11 window, using the Xlib client-side library. - -C Specification ---------------- - -include::../protos/vkCreateXlibSurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The VkInstance to associate the surface. - -pname:pCreateInfo:: - A pointer to an instance of the VkXlibSurfaceCreateInfoKHR structure containing the parameters affecting the creation of the surface object. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -pname:pSurface:: - The resulting surface object handle is returned in pSurface. - -Description ------------ - -fname:vkCreateXlibSurfaceKHR creates a VkSurface associated with the specified X11 window. - -pname:pCreateInfo is an instance of the slink:VkXlibSurfaceCreateInfoKHR -structure, the definition of which is: - -include::../structs/VkXlibSurfaceCreateInfoKHR.txt[] - -include::../validity/protos/vkCreateXlibSurfaceKHR.txt[] - -See Also --------- - -flink:vkDestroySurfaceKHR, flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, flink:vkGetPhysicalDeviceSurfaceFormatsKHR, -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkDebugReportMessageEXT.txt b/doc/specs/vulkan/man/vkDebugReportMessageEXT.txt deleted file mode 100644 index 4b052cf0f8..0000000000 --- a/doc/specs/vulkan/man/vkDebugReportMessageEXT.txt +++ /dev/null @@ -1,27 +0,0 @@ -vkDebugReportMessageEXT(3) -========================== - -Name ----- -vkDebugReportMessageEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../protos/vkDebugReportMessageEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Parameters ----------- - -Description ------------ - -include::../validity/protos/vkDebugReportMessageEXT.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkDestroyBuffer.txt b/doc/specs/vulkan/man/vkDestroyBuffer.txt index 7f052aaac6..5862942265 100644 --- a/doc/specs/vulkan/man/vkDestroyBuffer.txt +++ b/doc/specs/vulkan/man/vkDestroyBuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyBuffer(3) ================== @@ -8,34 +12,43 @@ vkDestroyBuffer - Destroy a buffer object C Specification --------------- +// refBegin vkDestroyBuffer Destroy a buffer object + +To destroy a buffer, call: + include::../protos/vkDestroyBuffer.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the buffer. + * pname:buffer is the buffer to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:buffer:: - The handle of the buffer object to destroy. Description ----------- -fname:vkDestroyBuffer destroys the buffer object whose handle is specified in -pname:buffer. pname:buffer must be a valid handle to buffer object created -through a successful call to flink:vkCreateBuffer on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a buffer object has been destroyed, -its handle becomes invalid and must not be accessed again. Furthermore, any views -of the buffer previously created through calls to flink:vkCreateBufferView on -the specified buffer also become invalid and should be destroyed before -the parent buffer. - include::../validity/protos/vkDestroyBuffer.txt[] + See Also -------- -flink:vkCreateBuffer +slink:VkAllocationCallbacks, slink:VkBuffer, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyBufferView.txt b/doc/specs/vulkan/man/vkDestroyBufferView.txt index 721190997c..94589174e8 100644 --- a/doc/specs/vulkan/man/vkDestroyBufferView.txt +++ b/doc/specs/vulkan/man/vkDestroyBufferView.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyBufferView(3) ====================== @@ -8,31 +12,43 @@ vkDestroyBufferView - Destroy a buffer view object C Specification --------------- +// refBegin vkDestroyBufferView Destroy a buffer view object + +To destroy a buffer view, call: + include::../protos/vkDestroyBufferView.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the buffer view. + * pname:bufferView is the buffer view to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:bufferView:: - The handle of the buffer view object to destroy. Description ----------- -fname:vkDestroyBufferView destroys the buffer view object whose handle is specified in -pname:bufferView. pname:bufferView must be a valid handle to buffer view object created -through a successful call to flink:vkCreateBufferView on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a buffer view object has been destroyed, -its handle becomes invalid and must not be accessed again. - include::../validity/protos/vkDestroyBufferView.txt[] + See Also -------- -flink:vkCreateBufferView +slink:VkAllocationCallbacks, slink:VkBufferView, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyBufferView + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyCommandPool.txt b/doc/specs/vulkan/man/vkDestroyCommandPool.txt index 5830692cfb..0a2047224d 100644 --- a/doc/specs/vulkan/man/vkDestroyCommandPool.txt +++ b/doc/specs/vulkan/man/vkDestroyCommandPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyCommandPool(3) ======================= @@ -8,36 +12,47 @@ vkDestroyCommandPool - Destroy a command pool object C Specification --------------- +// refBegin vkDestroyCommandPool Destroy a command pool object + +To destroy a command pool, call: + include::../protos/vkDestroyCommandPool.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the command pool. + * pname:commandPool is the handle of the command pool to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:commandPool:: - The command pool to destroy. Description ----------- -fname:vkDestroyCommandPool destroys the command pool object whose handle is specified in -pname:commandPool. pname:commandPool must be a valid handle to command object created -through a successful call to flink:vkCreateCommandPool on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a command pool object has been destroyed, -its handle becomes invalid and must not be accessed again. Any command buffers allocated from -the pool also become invalid and must not be accessed. - -All command buffers allocated from the pool must be freed by a call to flink:vkFreeCommandBuffers before the pool -is destroyed. Failure to return command buffers to their command pools before destroying -the pool object may result in resource leaks. +When a pool is destroyed, all command buffers allocated from the pool are +implicitly freed and become invalid. Command buffers allocated from a given +pool do not need to be freed before destroying that command pool. include::../validity/protos/vkDestroyCommandPool.txt[] + See Also -------- -flink:vkCreateCommandPool, flink:vkResetCommandPool +slink:VkAllocationCallbacks, slink:VkCommandPool, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyCommandPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyDebugReportCallbackEXT.txt b/doc/specs/vulkan/man/vkDestroyDebugReportCallbackEXT.txt deleted file mode 100644 index 095e56c7a7..0000000000 --- a/doc/specs/vulkan/man/vkDestroyDebugReportCallbackEXT.txt +++ /dev/null @@ -1,27 +0,0 @@ -vkDestroyDebugReportCallbackEXT(3) -================================== - -Name ----- -vkDestroyDebugReportCallbackEXT - Stub page (not yet written) - -C Specification ---------------- - -include::../protos/vkDestroyDebugReportCallbackEXT.txt[] - -This is a stub page. Content has not been filled in yet. Khronos is -aware of the problem and working on it as time allows; please do not -file Github issues bringing the missing content to our attention. - -Parameters ----------- - -Description ------------ - -include::../validity/protos/vkDestroyDebugReportCallbackEXT.txt[] -See Also --------- - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkDestroyDescriptorPool.txt b/doc/specs/vulkan/man/vkDestroyDescriptorPool.txt index 14814ecef2..9920892d8f 100644 --- a/doc/specs/vulkan/man/vkDestroyDescriptorPool.txt +++ b/doc/specs/vulkan/man/vkDestroyDescriptorPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyDescriptorPool(3) ========================== @@ -8,34 +12,47 @@ vkDestroyDescriptorPool - Destroy a descriptor pool object C Specification --------------- +// refBegin vkDestroyDescriptorPool Destroy a descriptor pool object + +To destroy a descriptor pool, call: + include::../protos/vkDestroyDescriptorPool.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the descriptor pool. + * pname:descriptorPool is the descriptor pool to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:descriptorPool:: - The handle of the descriptor pool to destroy. Description ----------- -fname:vkDestroyDescriptorPool destroys the descriptor pool object whose handle is specified in -pname:descriptorPool. pname:descriptorPool must be a valid handle to descriptor pool object created -through a successful call to flink:vkCreateDescriptorPool on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a descriptor pool object has been destroyed, -its handle becomes invalid and must not be accessed again. - -Any descriptor sets allocated from the pool should be freed before the pool is destroyed. Not returning -descriptor sets to the pool before destroying the pool may cause a resource leak. +When a pool is destroyed, all descriptor sets allocated from the pool are +implicitly freed and become invalid. Descriptor sets allocated from a given +pool do not need to be freed before destroying that descriptor pool. include::../validity/protos/vkDestroyDescriptorPool.txt[] + See Also -------- -flink:vkCreateDescriptorPool +slink:VkAllocationCallbacks, slink:VkDescriptorPool, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyDescriptorPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyDescriptorSetLayout.txt b/doc/specs/vulkan/man/vkDestroyDescriptorSetLayout.txt index eda3594148..78e07b3f7f 100644 --- a/doc/specs/vulkan/man/vkDestroyDescriptorSetLayout.txt +++ b/doc/specs/vulkan/man/vkDestroyDescriptorSetLayout.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyDescriptorSetLayout(3) =============================== @@ -8,32 +12,44 @@ vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object C Specification --------------- +// refBegin vkDestroyDescriptorSetLayout Destroy a descriptor set layout object + +To destroy a descriptor set layout, call: + include::../protos/vkDestroyDescriptorSetLayout.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the descriptor set + layout. + * pname:descriptorSetLayout is the descriptor set layout to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:descriptorSetLayout:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyDescriptorSetLayout destroys the descriptor set layout object whose handle -is specified in pname:descriptorSetLayout. pname:descriptorSetLayout must be a valid handle -to fence object created through a successful call to flink:vkCreateDescriptorSetLayout on -pname:device. Attempts to destroy code:VK_NULL_HANDLE are silently ignored. After a -descriptor set object has been destroyed, its handle becomes invalid and must not be accessed -again. - include::../validity/protos/vkDestroyDescriptorSetLayout.txt[] + See Also -------- -flink:vkCreateDescriptorSetLayout +slink:VkAllocationCallbacks, slink:VkDescriptorSetLayout, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyDescriptorSetLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyDevice.txt b/doc/specs/vulkan/man/vkDestroyDevice.txt index f80b18ed65..c29439e092 100644 --- a/doc/specs/vulkan/man/vkDestroyDevice.txt +++ b/doc/specs/vulkan/man/vkDestroyDevice.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyDevice(3) ================== @@ -8,28 +12,57 @@ vkDestroyDevice - Destroy a logical device. C Specification --------------- +// refBegin vkDestroyDevice Destroy a logical device. + +To destroy a device, call: + include::../protos/vkDestroyDevice.txt[] + Parameters ---------- -pname:device:: - A handle to the logical device to destroy. + * pname:device is the logical device to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + Description ----------- -fname:vkDestroyDevice destroys a logical device. It does not destroy any resources created -by or associated with the device. If those resources are not destroyed, they may be leaked. -Therefore, applications should ensure that all objects created through the logical device -have been destroyed before destroying the device itself. Attempts to destroy code:VK_NULL_HANDLE -are silently ignored. +To ensure that no work is active on the device, flink:vkDeviceWaitIdle +can: be used to gate the destruction of the device. Prior to destroying a +device, an application is responsible for destroying/freeing any Vulkan +objects that were created using that device as the first parameter of the +corresponding ftext:vkCreate* or ftext:vkAllocate* command. + +[NOTE] +.Note +==== +The lifetime of each of these objects is bound by the lifetime of the +sname:VkDevice object. Therefore, to avoid resource leaks, it is critical +that an application explicitly free all of these resources prior to calling +fname:vkDestroyDevice. +==== include::../validity/protos/vkDestroyDevice.txt[] + See Also -------- -flink:vkCreateDevice, flink:vkDestroyDevice +slink:VkAllocationCallbacks, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyDevice + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyEvent.txt b/doc/specs/vulkan/man/vkDestroyEvent.txt index 906d2a47c9..bf6f2b5b46 100644 --- a/doc/specs/vulkan/man/vkDestroyEvent.txt +++ b/doc/specs/vulkan/man/vkDestroyEvent.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyEvent(3) ================= @@ -8,32 +12,43 @@ vkDestroyEvent - Destroy an event object C Specification --------------- +// refBegin vkDestroyEvent Destroy an event object + +To destroy an event, call: + include::../protos/vkDestroyEvent.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the event. + * pname:event is the handle of the event to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:event:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyEvent destroys the event object whose handle is specified in -pname:event. pname:event must be a valid handle to event object created -through a successful call to flink:vkCreateEvent on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a event object has been destroyed, -its handle becomes invalid and must not be accessed again. Results are undefined -if a command buffer is waiting on a event when the event is destroyed. - include::../validity/protos/vkDestroyEvent.txt[] + See Also -------- -flink:vkCreateEvent +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyFence.txt b/doc/specs/vulkan/man/vkDestroyFence.txt index d357ad2dae..746c8213f8 100644 --- a/doc/specs/vulkan/man/vkDestroyFence.txt +++ b/doc/specs/vulkan/man/vkDestroyFence.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyFence(3) ================= @@ -8,32 +12,43 @@ vkDestroyFence - Destroy a fence object C Specification --------------- +// refBegin vkDestroyFence Destroy a fence object + +To destroy a fence, call: + include::../protos/vkDestroyFence.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the fence. + * pname:fence is the handle of the fence to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:fence:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyFence destroys the fence object whose handle is specified in -pname:fence. pname:fence must be a valid handle to fence object created -through a successful call to flink:vkCreateFence on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a fence object has been destroyed, -its handle becomes invalid and must not be accessed again. Results are undefined -if another thread is waiting on a fence when the fence is destroyed. - include::../validity/protos/vkDestroyFence.txt[] + See Also -------- -flink:vkCreateFence +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkFence + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyFence + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyFramebuffer.txt b/doc/specs/vulkan/man/vkDestroyFramebuffer.txt index 037073f97b..4d25e8424e 100644 --- a/doc/specs/vulkan/man/vkDestroyFramebuffer.txt +++ b/doc/specs/vulkan/man/vkDestroyFramebuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyFramebuffer(3) ======================= @@ -8,31 +12,43 @@ vkDestroyFramebuffer - Destroy a framebuffer object C Specification --------------- +// refBegin vkDestroyFramebuffer Destroy a framebuffer object + +To destroy a framebuffer, call: + include::../protos/vkDestroyFramebuffer.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the framebuffer. + * pname:framebuffer is the handle of the framebuffer to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:framebuffer:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyFramebuffer destroys the framebuffer object whose handle is specified in -pname:framebuffer. pname:framebuffer must be a valid handle to framebuffer object created -through a successful call to flink:vkCreateFramebuffer on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a framebuffer object has been destroyed, -its handle becomes invalid and must not be accessed again. - include::../validity/protos/vkDestroyFramebuffer.txt[] + See Also -------- -flink:vkCreateFramebuffer +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkFramebuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyFramebuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyImage.txt b/doc/specs/vulkan/man/vkDestroyImage.txt index 2c64a698b1..3a188c400a 100644 --- a/doc/specs/vulkan/man/vkDestroyImage.txt +++ b/doc/specs/vulkan/man/vkDestroyImage.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyImage(3) ================= @@ -8,32 +12,43 @@ vkDestroyImage - Destroy an image object C Specification --------------- +// refBegin vkDestroyImage Destroy an image object + +To destroy an image, call: + include::../protos/vkDestroyImage.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the image. + * pname:image is the image to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:image:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyImage destroys the image object whose handle is specified in -pname:image. pname:image must be a valid handle to an image object created -through a successful call to flink:vkCreateImage on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After an image has been destroyed, -its handle becomes invalid and must not be accessed again. Additionally, views of -images immediately become invalid once the parent image has been destroyed. - include::../validity/protos/vkDestroyImage.txt[] + See Also -------- -flink:vkCreateImage +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkImage + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyImage + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyImageView.txt b/doc/specs/vulkan/man/vkDestroyImageView.txt index 0344a9efe3..4f6a042739 100644 --- a/doc/specs/vulkan/man/vkDestroyImageView.txt +++ b/doc/specs/vulkan/man/vkDestroyImageView.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyImageView(3) ===================== @@ -8,31 +12,43 @@ vkDestroyImageView - Destroy an image view object C Specification --------------- +// refBegin vkDestroyImageView Destroy an image view object + +To destroy an image view, call: + include::../protos/vkDestroyImageView.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the image view. + * pname:imageView is the image view to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:imageView:: - The handle of the image view object to destroy. Description ----------- -fname:vkDestroyImageView destroys the image view object whose handle is specified in -pname:imageView. pname:imageView must be a valid handle to an image view object created -through a successful call to flink:vkCreateImageView on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After an image view has been destroyed, -its handle becomes invalid and must not be accessed again. - include::../validity/protos/vkDestroyImageView.txt[] + See Also -------- -flink:vkCreateImage, flink:vkDestroyImage, flink:vkCreateImageView +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkImageView + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyImageView + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyInstance.txt b/doc/specs/vulkan/man/vkDestroyInstance.txt index d3dfff0021..0fd1e477ab 100644 --- a/doc/specs/vulkan/man/vkDestroyInstance.txt +++ b/doc/specs/vulkan/man/vkDestroyInstance.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyInstance(3) ==================== @@ -8,28 +12,42 @@ vkDestroyInstance - Destroy an instance of Vulkan. C Specification --------------- +// refBegin vkDestroyInstance Destroy an instance of Vulkan. + +To destroy an instance, call: + include::../protos/vkDestroyInstance.txt[] + Parameters ---------- -pname:instance:: - Vulkan instance to release. + * pname:instance is the handle of the instance to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. + Description ----------- -fname:vkDestroyInstance destroys an instance of Vulkan. After destruction of the instance, -all devices (logical and physical) and any objects created by those devices become in valid -and should not be accessed. However, objects allocated directly or indirectly through -the instance are not destroyed automatically and so may be leaked. Applications should destroy -all objects created through pname:instance before destroying the instance itself. - include::../validity/protos/vkDestroyInstance.txt[] + See Also -------- -flink:vkCreateInstance, flink:vkCreateDevice, flink:vkDestroyDevice +slink:VkAllocationCallbacks, slink:VkInstance + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyInstance + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyPipeline.txt b/doc/specs/vulkan/man/vkDestroyPipeline.txt index c585d85c00..ba1de82ada 100644 --- a/doc/specs/vulkan/man/vkDestroyPipeline.txt +++ b/doc/specs/vulkan/man/vkDestroyPipeline.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyPipeline(3) ==================== @@ -8,32 +12,43 @@ vkDestroyPipeline - Destroy a pipeline object C Specification --------------- +// refBegin vkDestroyPipeline Destroy a pipeline object + +To destroy a graphics or compute pipeline, call: + include::../protos/vkDestroyPipeline.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the pipeline. + * pname:pipeline is the handle of the pipeline to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:pipeline:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyPipeline destroys the pipeline object whose handle is specified -in pname:pipeline. pname:pipeline must be a valid handle to a pipeline created through -a successful call to flink:vkCreateGraphicsPipelines or flink:vkCreateComputePipelines -on pname:device. Attempts to destroy code:VK_NULL_HANDLE are silently ignored. -Once a pipeline has been destroyed, its handle becomes invalid and must not be accessed -again. - include::../validity/protos/vkDestroyPipeline.txt[] + See Also -------- -flink:vkCreateGraphicsPipelines, flink:vkCreateComputePipelines +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkPipeline + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyPipeline + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyPipelineCache.txt b/doc/specs/vulkan/man/vkDestroyPipelineCache.txt index e1c805549e..a0664eac33 100644 --- a/doc/specs/vulkan/man/vkDestroyPipelineCache.txt +++ b/doc/specs/vulkan/man/vkDestroyPipelineCache.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyPipelineCache(3) ========================= @@ -8,31 +12,44 @@ vkDestroyPipelineCache - Destroy a pipeline cache object C Specification --------------- +// refBegin vkDestroyPipelineCache Destroy a pipeline cache object + +To destroy a pipeline cache, call: + include::../protos/vkDestroyPipelineCache.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the pipeline cache + object. + * pname:pipelineCache is the handle of the pipeline cache to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:pipelineCache:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyPipelineCache destroys the pipeline cache object whose handle is specified in -pname:pipelineCache, which must be a valid handle to a pipeline cache object that was created -by a successful call to flink:vkCreatePipelineCache on pname:device. Attempts to destroy -code:VK_NULL_HANDLE are silently ignored. After a pipeline cache has been destroyed, -its handle becomes invalid and should not be accessed again. - include::../validity/protos/vkDestroyPipelineCache.txt[] + See Also -------- -flink:vkCreatePipelineCache, flink:vkGetPipelineCacheData, flink:vkMergePipelineCaches +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkPipelineCache + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyPipelineCache + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyPipelineLayout.txt b/doc/specs/vulkan/man/vkDestroyPipelineLayout.txt index 489b75b930..e6ff45e958 100644 --- a/doc/specs/vulkan/man/vkDestroyPipelineLayout.txt +++ b/doc/specs/vulkan/man/vkDestroyPipelineLayout.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyPipelineLayout(3) ========================== @@ -8,30 +12,43 @@ vkDestroyPipelineLayout - Destroy a pipeline layout object C Specification --------------- +// refBegin vkDestroyPipelineLayout Destroy a pipeline layout object + +To destroy a pipeline layout, call: + include::../protos/vkDestroyPipelineLayout.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the pipeline layout. + * pname:pipelineLayout is the pipeline layout to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:pipelineLayout:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyPipelineLayout destroys the pipeline layout object whose handle is specified in -pname:pipelineLayout, which must be a valid handle to a pipeline layout that was created by -pname:device. Attempts to destroy code:VK_NULL_HANDLE are silently ignored. After a pipeline layout -has been destroyed, its handle becomes invalid and should not be accessed again. - include::../validity/protos/vkDestroyPipelineLayout.txt[] + See Also -------- -flink:vkCreatePipelineLayout +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkPipelineLayout + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyPipelineLayout + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkDestroyQueryPool.txt b/doc/specs/vulkan/man/vkDestroyQueryPool.txt index eecbfdc606..1fafee2998 100644 --- a/doc/specs/vulkan/man/vkDestroyQueryPool.txt +++ b/doc/specs/vulkan/man/vkDestroyQueryPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyQueryPool(3) ===================== @@ -8,30 +12,43 @@ vkDestroyQueryPool - Destroy a query pool object C Specification --------------- +// refBegin vkDestroyQueryPool Destroy a query pool object + +To destroy a query pool, call: + include::../protos/vkDestroyQueryPool.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the query pool. + * pname:queryPool is the query pool to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:queryPool:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyQueryPool destroys the query pool whose handle is specified in pname:queryPool, -which must be a valid handle to a query pool that was created by pname:device. Attempts to -destroy code:VK_NULL_HANDLE are silently ignored. After a query pool has been destroyed, -its handle becomes invalid and should not be accessed again. - include::../validity/protos/vkDestroyQueryPool.txt[] + See Also -------- -flink:vkCreateQueryPool, flink:vkCmdResetQueryPool, flink:vkCmdBeginQuery, flink:vkCmdEndQuery, flink:vkCmdCopyQueryPoolResults, flink:vkGetQueryPoolResults +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkQueryPool + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyQueryPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyRenderPass.txt b/doc/specs/vulkan/man/vkDestroyRenderPass.txt index 96aab01a9d..c1ed268fe0 100644 --- a/doc/specs/vulkan/man/vkDestroyRenderPass.txt +++ b/doc/specs/vulkan/man/vkDestroyRenderPass.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyRenderPass(3) ====================== @@ -8,30 +12,43 @@ vkDestroyRenderPass - Destroy a render pass object C Specification --------------- +// refBegin vkDestroyRenderPass Destroy a render pass object + +To destroy a render pass, call: + include::../protos/vkDestroyRenderPass.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the render pass. + * pname:renderPass is the handle of the render pass to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:renderPass:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyRenderPass destroys the render pass whose handle is specified in pname:renderPass, -which must be a valid handle to a render pass that was created by pname:device. Attempts to -destroy code:VK_NULL_HANDLE are silently ignored. After a render pass has been destroyed, -its handle becomes invalid and should not be accessed again. - include::../validity/protos/vkDestroyRenderPass.txt[] + See Also -------- -flink:vkCreateRenderPass +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkRenderPass + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyRenderPass + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroySampler.txt b/doc/specs/vulkan/man/vkDestroySampler.txt index 7f88e51a48..dcbaf97a68 100644 --- a/doc/specs/vulkan/man/vkDestroySampler.txt +++ b/doc/specs/vulkan/man/vkDestroySampler.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroySampler(3) =================== @@ -8,30 +12,43 @@ vkDestroySampler - Destroy a sampler object C Specification --------------- +// refBegin vkDestroySampler Destroy a sampler object + +To destroy a sampler, call: + include::../protos/vkDestroySampler.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the sampler. + * pname:sampler is the sampler to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:sampler:: - The handle of the object to destroy. Description ----------- -fname:vkDestroySampler destroys the sampler whose handle is specified in pname:sampler, -which must be a valid handle to a sampler that was created by pname:device. Attempts to -destroy code:VK_NULL_HANDLE are silently ignored. After a sampler has been destroyed, -its handle becomes invalid and should not be accessed again. - include::../validity/protos/vkDestroySampler.txt[] + See Also -------- -flink:vkCreateSampler +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkSampler + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroySampler + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroySemaphore.txt b/doc/specs/vulkan/man/vkDestroySemaphore.txt index d7f37a2c7c..1df4899650 100644 --- a/doc/specs/vulkan/man/vkDestroySemaphore.txt +++ b/doc/specs/vulkan/man/vkDestroySemaphore.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroySemaphore(3) ===================== @@ -8,31 +12,43 @@ vkDestroySemaphore - Destroy a semaphore object C Specification --------------- +// refBegin vkDestroySemaphore Destroy a semaphore object + +To destroy a semaphore, call: + include::../protos/vkDestroySemaphore.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the semaphore. + * pname:semaphore is the handle of the semaphore to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:semaphore:: - The handle of the object to destroy. Description ----------- -fname:vkDestroySemaphore destroys the semaphore whose handle is specified in -pname:semaphore, which must be a valid handle to a semaphore that was created -by device pname:device. Attempts to destroy code:VK_NULL_HANDLE are silently -ignored. Once a semaphore has been destroyed, its handle becomes invalid and -must not be reused. - include::../validity/protos/vkDestroySemaphore.txt[] + See Also -------- -flink:vkCreateSemaphore +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkSemaphore + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroySemaphore + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroyShaderModule.txt b/doc/specs/vulkan/man/vkDestroyShaderModule.txt index cb9608542f..5482ec4f2d 100644 --- a/doc/specs/vulkan/man/vkDestroyShaderModule.txt +++ b/doc/specs/vulkan/man/vkDestroyShaderModule.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDestroyShaderModule(3) ======================== @@ -8,30 +12,46 @@ vkDestroyShaderModule - Destroy a shader module module C Specification --------------- +// refBegin vkDestroyShaderModule Destroy a shader module module + +To destroy a shader module, call: + include::../protos/vkDestroyShaderModule.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the object. + * pname:device is the logical device that destroys the shader module. + * pname:shaderModule is the handle of the shader module to destroy. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. -pname:shaderModule:: - The handle of the object to destroy. Description ----------- -fname:vkDestroyShaderModule destroys the shader module specified in pname:shaderModule, -which must be a valid handle to a shader module owned by pname:device. An attempt to destroy -the code:VK_NULL_HANDLE handle are silently ignored. After the shader module has been -destroyed its handle becomes invalid and it should not be accessed again. +A shader module can: be destroyed while pipelines created using its +shaders are still in use. include::../validity/protos/vkDestroyShaderModule.txt[] + See Also -------- -flink:vkCreateShaderModule, flink:vkCreateShader, flink:vkDestroyShader +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkShaderModule + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDestroyShaderModule + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkDestroySurfaceKHR.txt b/doc/specs/vulkan/man/vkDestroySurfaceKHR.txt deleted file mode 100644 index 43df65ca29..0000000000 --- a/doc/specs/vulkan/man/vkDestroySurfaceKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkDestroySurfaceKHR(3) -===================== - -Name ----- -vkDestroySurfaceKHR - destroy a VkSurfaceKHR object. - -C Specification ---------------- - -include::../protos/vkDestroySurfaceKHR.txt[] - -Parameters ----------- - -pname:instance:: - The instance used to create the surface. - -pname:pSurface:: - The handle of the surface to destroy. - -pname:pAllocator:: - The allocator used for host memory allocated for the surface object. - -Description ------------ - -fname:vkDestroySurfaceKHR destroys the VkSurface object. - -include::../validity/protos/vkDestroySurfaceKHR.txt[] - -See Also --------- - -flink:vkCreateAndroidSurfaceKHR, flink:vkCreateDisplayPlaneSurfaceKHR, -flink:vkCreateMirSurfaceKHR, flink:vkCreateWaylandSurfaceKHR, -flink:vkCreateWin32SurfaceKHR, flink:vkCreateXcbSurfaceKHR, -flink:vkCreateXlibSurfaceKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkDestroySwapchainKHR.txt b/doc/specs/vulkan/man/vkDestroySwapchainKHR.txt deleted file mode 100644 index b0649745e3..0000000000 --- a/doc/specs/vulkan/man/vkDestroySwapchainKHR.txt +++ /dev/null @@ -1,39 +0,0 @@ -vkDestroySwapchainKHR(3) -======================= - -Name ----- -vkDestroySwapchainKHR - destroy a swapchain object. - -C Specification ---------------- - -include::../protos/vkDestroySwapchainKHR.txt[] - -Parameters ----------- - -pname:device:: - The VkDevice associated with the swapchain. - -pname:pSwapchain:: - The swapchain to destroy. - -pname:pAllocator:: - The allocator used for host memory allocated for the swapchain object. - -Description ------------ - -fname:vkDestroySwapchainKHR destroys a swapchain. - -include::../validity/protos/vkDestroySwapchainKHR.txt[] - -See Also --------- - -flink:vkCreateSwapchainKHR, flink:vkCreateSharedSwapchainsKHR, -flink:vkGetSwapchainImagesKHR, flink:vkAcquireNextImageKHR, -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkDeviceWaitIdle.txt b/doc/specs/vulkan/man/vkDeviceWaitIdle.txt index ceeb0a2371..431d630ed1 100644 --- a/doc/specs/vulkan/man/vkDeviceWaitIdle.txt +++ b/doc/specs/vulkan/man/vkDeviceWaitIdle.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkDeviceWaitIdle(3) -==================== +=================== Name ---- @@ -8,26 +12,43 @@ vkDeviceWaitIdle - Wait for a device to become idle. C Specification --------------- +// refBegin vkDeviceWaitIdle Wait for a device to become idle. + +To wait on the host for the completion of outstanding queue operations for all queues on a given logical device, call: + include::../protos/vkDeviceWaitIdle.txt[] + Parameters ---------- -pname:device:: - The handle to the device to idle. + * pname:device is the logical device to idle. + Description ----------- -fname:vkDeviceWaitIdle waits for the device specified by pname:device to complete all work submitted -by the application and become idle. It is logically equivalent to calling flink:vkQueueWaitIdle -on all queues associated with the device. +fname:vkDeviceWaitIdle is equivalent to calling fname:vkQueueWaitIdle for +all queues owned by pname:device. include::../validity/protos/vkDeviceWaitIdle.txt[] + See Also -------- -flink:vkQueueWaitIdle +slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkDeviceWaitIdle + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEndCommandBuffer.txt b/doc/specs/vulkan/man/vkEndCommandBuffer.txt index 07be3d3ae3..46506a429e 100644 --- a/doc/specs/vulkan/man/vkEndCommandBuffer.txt +++ b/doc/specs/vulkan/man/vkEndCommandBuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEndCommandBuffer(3) ===================== @@ -8,29 +12,47 @@ vkEndCommandBuffer - Finish recording a command buffer C Specification --------------- +// refBegin vkEndCommandBuffer Finish recording a command buffer + +To complete recording of a command buffer, call: + include::../protos/vkEndCommandBuffer.txt[] + Parameters ---------- -pname:commandBuffer:: - A handle to the command buffer for which recording is to end. + * pname:commandBuffer is the command buffer to complete recording. The + command buffer must: have been in the recording state, and is moved to + the executable state. + Description ----------- -fname:vkEndCommandBuffer ends the recording of a command buffer. The command buffer -must be in the recording state. After recording of a primary command buffer is completed, it -may be submitted to a queue using flink:vkQueueSubmit. After recording of a secondary -command buffer is completed, it may be called from a primary command buffer by a call -to flink:vkCmdExecuteCommands. No further modification to a completed command buffer may -be performed until flink:vkResetCommandBuffer is called on it. +If there was an error during recording, the application will be notified by +an unsuccessful return code returned by fname:vkEndCommandBuffer. If the +application wishes to further use the command buffer, the command buffer +must: be reset. include::../validity/protos/vkEndCommandBuffer.txt[] + See Also -------- -flink:vkAllocateCommandBuffers, flink:vkFreeCommandBuffers, flink:vkBeginCommandBuffer, flink:vkResetCommandBuffer, flink:vkCmdExecuteCommands +slink:VkCommandBuffer + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEndCommandBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEnumerateDeviceExtensionProperties.txt b/doc/specs/vulkan/man/vkEnumerateDeviceExtensionProperties.txt index a46aaa5383..31a471b188 100644 --- a/doc/specs/vulkan/man/vkEnumerateDeviceExtensionProperties.txt +++ b/doc/specs/vulkan/man/vkEnumerateDeviceExtensionProperties.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEnumerateDeviceExtensionProperties(3) -========================================= +======================================= Name ---- @@ -8,46 +12,54 @@ vkEnumerateDeviceExtensionProperties - Returns properties of available physical C Specification --------------- +// refBegin vkEnumerateDeviceExtensionProperties Returns properties of available physical device extensions. + +To query the extensions available to a given physical device, call: + include::../protos/vkEnumerateDeviceExtensionProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - Physical device to query. + * pname:physicalDevice is the physical device that will be queried. + * pname:pLayerName is either `NULL` or a pointer to a null-terminated + UTF-8 string naming the layer to retrieve extensions from. + * pname:pPropertyCount is a pointer to an integer related to the number of + extension properties available or queried, and is treated in the same + fashion as the + flink:vkEnumerateInstanceExtensionProperties::pname:pPropertyCount + parameter. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkExtensionProperties structures. -pname:pLayerName:: - Optional layer name to query. - -pname:pPropertyCount:: - Count indicating number of sname:VkExtensionProperties pointed to by - pname:pProperties. - -pname:pProperties:: - Pointer to an array of sname:VkExtensionProperties. Description ----------- -fname:vkEnumerateDeviceExtensionProperties retrieves properties for -extensions on a physical device whose handle is given in -pname:physicalDevice. To determine the extensions implemented by a layer set -pname:pLayerName to point to the layer's name and any returned extensions -are implemented by that layer. Setting pname:pLayerName to NULL will return -the available non-layer extensions. pname:pPropertyCount must be set to the -size of the VkExtensionProperties array pointed to by pname:pProperties. The -pname:pProperties should point to an array of VkExtensionProperties to be -filled out or null. If null, fname:vkEnumerateDeviceExtensionProperties will -update pPropertyCount with the number of extensions found. The definition of -slink:VkExtensionProperties is as follows: - -include::../structs/VkExtensionProperties.txt[] +When pname:pLayerName parameter is NULL, only extensions provided by the Vulkan +implementation or by implicitly enabled layers are returned. +When pname:pLayerName is the name of a layer, the device extensions +provided by that layer are returned. include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] + See Also -------- -flink:vkEnumerateDeviceLayerProperties, flink:vkCreateDevice +slink:VkExtensionProperties, slink:VkPhysicalDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEnumerateDeviceExtensionProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEnumerateDeviceLayerProperties.txt b/doc/specs/vulkan/man/vkEnumerateDeviceLayerProperties.txt index 4737599680..4bd03fc2e5 100644 --- a/doc/specs/vulkan/man/vkEnumerateDeviceLayerProperties.txt +++ b/doc/specs/vulkan/man/vkEnumerateDeviceLayerProperties.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEnumerateDeviceLayerProperties(3) -===================================== +=================================== Name ---- @@ -8,41 +12,60 @@ vkEnumerateDeviceLayerProperties - Returns properties of available physical devi C Specification --------------- +// refBegin vkEnumerateDeviceLayerProperties Returns properties of available physical device layers. + +To enumerate device layers, call: + include::../protos/vkEnumerateDeviceLayerProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - Physical device to query. - -pname:pPropertyCount:: - Count indicating number of sname:VkLayerProperties pointed to by - pname:pProperties. + * pname:pPropertyCount is a pointer to an integer related to the number of + layer properties available or queried. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkLayerProperties structures. -pname:pProperties:: - Pointer to an array of sname:VkLayerProperties. Description ----------- -fname:vkEnumerateDeviceLayerProperties retrieves properties for layers on a -physical device whose handle is given in pname:physicalDevice. -pname:pPropertyCount must be a valid pointer to an integer set to the size -of the slink:VkLayerProperties array pointed to by pname:pProperties. -pname:pProperties must be code:NULL or a pointer to an array of -slink:VkLayerProperties to be filled out. If code:NULL, -fname:vkEnumerateDeviceLayerProperties will update pname:pPropertyCount with -the number of layers found. The definition of slink:VkLayerProperties is as -follows: +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. -include::../structs/VkLayerProperties.txt[] +The list of layers enumerated by fname:vkEnumerateDeviceLayerProperties must: +be exactly the sequence of layers enabled for the instance. The members of +sname:VkLayerProperties for each enumerated layer must: be the same as the +properties when the layer was enumerated by +fname:vkEnumerateInstanceLayerProperties. include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] + See Also -------- -flink:vkEnumerateDeviceLayerProperties, flink:vkCreateDevice +slink:VkLayerProperties, slink:VkPhysicalDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEnumerateDeviceLayerProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEnumerateInstanceExtensionProperties.txt b/doc/specs/vulkan/man/vkEnumerateInstanceExtensionProperties.txt index 6ec0ba8965..35cba77399 100644 --- a/doc/specs/vulkan/man/vkEnumerateInstanceExtensionProperties.txt +++ b/doc/specs/vulkan/man/vkEnumerateInstanceExtensionProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEnumerateInstanceExtensionProperties(3) ========================================= @@ -8,50 +12,62 @@ vkEnumerateInstanceExtensionProperties - Returns up to requested number of globa C Specification --------------- +// refBegin vkEnumerateInstanceExtensionProperties Returns up to requested number of global extension properties. + +To query the available instance extensions, call: + include::../protos/vkEnumerateInstanceExtensionProperties.txt[] + Parameters ---------- -pname:pLayerName:: - Pointer to optional layer name. If not null, will only return extension - properties for the requested layer. + * pname:pLayerName is either `NULL` or a pointer to a null-terminated + UTF-8 string naming the layer to retrieve extensions from. + * pname:pPropertyCount is a pointer to an integer related to the number of + extension properties available or queried, as described below. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkExtensionProperties structures. -pname:pPropertyCount:: - Pointer to count indicating space available on input and structures - returned on output. - -pname:pProperties:: - Pointer to a data structure to receive the results. Description ----------- -fname:vkEnumerateInstanceExtensionProperties retrieves properties for global -extensions of the loader or the optionally specified layer. -pname:pProperties points to an array of sname:VkExtensionProperties where -the return data will be stored. If NULL, -fname:vkEnumerateInstanceExtensionProperties will update the count with the -number of global extensions found. pname:pPropertyCount must point to a -count indicating the number of sname:VkExtensionProperties structures -available. The definition of slink:VkExtensionProperties is as follows: - -include::../structs/VkExtensionProperties.txt[] +When pname:pLayerName parameter is NULL, only extensions provided by the Vulkan +implementation or by implicitly enabled layers are returned. +When pname:pLayerName is the name of a layer, the instance extensions +provided by that layer are returned. + +If pname:pProperties is `NULL`, +then the number of extensions properties available is returned in +pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a +variable set by the user to the number of elements in the pname:pProperties +array, and on return the variable is overwritten with the number of +structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of extension properties +available, at most pname:pPropertyCount structures will be written. If +pname:pPropertyCount is smaller than the number of extensions available, +ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to +indicate that not all the available properties were returned. include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] -Return Value ------------- - -Upon success, fname:vkEnumerateInstanceExtensionProperties returns ename:VK_SUCCESS or ename:VK_INCOMPLETE. -ename:VK_INCOMPLETE indicates that the number of extension properties found exceeds the given count. An app -will need to call again with a larger array and count to get all available extension properties. -The number of available extensions could change from one call to the next if an application -updates or installs Vulkan components. See Also -------- -flink:vkEnumerateInstanceLayerProperties, flink:vkCreateInstance +slink:VkExtensionProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEnumerateInstanceExtensionProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEnumerateInstanceLayerProperties.txt b/doc/specs/vulkan/man/vkEnumerateInstanceLayerProperties.txt index 31e654f625..f963cf06f1 100644 --- a/doc/specs/vulkan/man/vkEnumerateInstanceLayerProperties.txt +++ b/doc/specs/vulkan/man/vkEnumerateInstanceLayerProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEnumerateInstanceLayerProperties(3) ===================================== @@ -8,37 +12,54 @@ vkEnumerateInstanceLayerProperties - Returns up to requested number of global la C Specification --------------- +// refBegin vkEnumerateInstanceLayerProperties Returns up to requested number of global layer properties. + +To query the available layers, call: + include::../protos/vkEnumerateInstanceLayerProperties.txt[] + Parameters ---------- -pname:pPropertyCount:: - Pointer to count indicating space available on input and structures - returned on output. + * pname:pPropertyCount is a pointer to an integer related to the number of + layer properties available or queried, as described below. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkLayerProperties structures. -pname:pProperties:: - Pointer to a array to receive the results. Description ----------- -fname:vkEnumerateInstanceLayerProperties retrieves properties for global layers. -pname:pPropertyCount must be a valid pointer to an integer set to the size -of the slink:VkLayerProperties array pointed to by pname:pProperties. -pname:pProperties must be code:NULL or a pointer to an array of -slink:VkLayerProperties to be filled out. If code:NULL, -fname:vkEnumerateInstanceLayerProperties will update pname:pPropertyCount -with the number of layers found. The definition of slink:VkLayerProperties -is as follows: - -include::../structs/VkLayerProperties.txt[] +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] + See Also -------- -flink:vkEnumerateInstanceExtensionProperties, flink:vkCreateInstance +slink:VkLayerProperties + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEnumerateInstanceLayerProperties + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt index 17334512cd..058486196d 100644 --- a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt +++ b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkEnumeratePhysicalDevices(3) ============================= @@ -8,46 +12,59 @@ vkEnumeratePhysicalDevices - Enumerates the physical devices accessible to a Vul C Specification --------------- +// refBegin vkEnumeratePhysicalDevices Enumerates the physical devices accessible to a Vulkan instance. + +To retrieve a list of physical device objects representing the +physical devices installed in the system, call: + include::../protos/vkEnumeratePhysicalDevices.txt[] + Parameters ---------- -pname:instance:: - A handle to the instance to be used to enumerate devices. + * pname:instance is a handle to a Vulkan instance previously created + with fname:vkCreateInstance. + * pname:pPhysicalDeviceCount is a pointer to an integer related to the + number of physical devices available or queried, as described below. + * pname:pPhysicalDevices is either `NULL` or a pointer to an + array of sname:VkPhysicalDevice handles. -pname:pPhysicalDeviceCount:: - A pointer to a variable containing the maximum number of devices to enumerate. - -pname:pPhysicalDevices:: - A pointer to an array that will be filled with handles to the enumerated devices. Description ----------- -fname:vkEnumeratePhysicalDevices generates a list of the physical devices accessible to the -instance of Vulkan specified in pname:instance. - -pname:pPhysicalDeviceCount is a pointer to a variable which contains the number of devices to -enumerate. pname:pPhysicalDeviceCount must not be code:NULL. pname:pPhysicalDevices is a -pointer to an array of sname:VkPhysicalDevice handles which will be filled with handles -to the enumerated devices. - -If pname:pPhysicalDevices is code:NULL, then the initial value of the variable pointed to -by pname:pPhysicalDeviceCount is ignored and this variable is overwritten with the number of -physical devices accessible to pname:instance. - -If pname:pPhysicalDevices is not code:NULL, then pname:pPhysicalDeviceCount should point -to a variable that has been initialized with the size of the array pointed to by pname:pPhysicalDevices. -No more than this number of physical device handles will be written into the output array. -The actual number of device handles written into pname:pPhysicalDevices is then written into -the variable pointed to by pname:pPhysicalDeviceCount. +If pname:pPhysicalDevices is `NULL`, then the number of physical devices +available is returned in pname:pPhysicalDeviceCount. Otherwise, +pname:pPhysicalDeviceCount must: point to a variable set by the user to +the number of elements in the pname:pPhysicalDevices array, and on +return the variable is overwritten with the number of structures actually +written to pname:pPhysicalDevices. If +pname:pPhysicalDeviceCount is less than the number of physical devices +available, at most pname:pPhysicalDeviceCount structures will be +written. If pname:pPhysicalDeviceCount is smaller than the number of +physical devices available, ename:VK_INCOMPLETE will be returned instead of +ename:VK_SUCCESS, to indicate that not all the available physical devices +were returned. include::../validity/protos/vkEnumeratePhysicalDevices.txt[] + See Also -------- -flink:vkGetPhysicalDeviceFeatures, flink:vkCreateDevice +slink:VkInstance, slink:VkPhysicalDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkEnumeratePhysicalDevices + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkFlushMappedMemoryRanges.txt b/doc/specs/vulkan/man/vkFlushMappedMemoryRanges.txt index bfe150499f..f31c3d56f7 100644 --- a/doc/specs/vulkan/man/vkFlushMappedMemoryRanges.txt +++ b/doc/specs/vulkan/man/vkFlushMappedMemoryRanges.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkFlushMappedMemoryRanges(3) ============================ @@ -8,50 +12,49 @@ vkFlushMappedMemoryRanges - Flush mapped memory ranges. C Specification --------------- +// refBegin vkFlushMappedMemoryRanges Flush mapped memory ranges. + +To flush ranges of non-coherent memory from the host caches, call: + include::../protos/vkFlushMappedMemoryRanges.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the specified memory ranges. + * pname:device is the logical device that owns the memory ranges. + * pname:memoryRangeCount is the length of the pname:pMemoryRanges array. + * pname:pMemoryRanges is a pointer to an array of + slink:VkMappedMemoryRange structures describing the memory ranges to + flush. -pname:memoryRangeCount:: - Number of memory ranges described by pname:pMemoryRanges. - -pname:pMemoryRanges:: - Mapped memory ranges to flush. Description ----------- -fname:vkFlushMappedMemoryRanges flushes zero more more ranges of a mapped memory objects. pname:device -is a handle to the device that owns the memory objects to be flushed. pname:memoryRangeCount is -the number of ranges to flush and pname:pMemoryRanges points to an array of pname:memoryRangeCount -instances of the slink:VkMappedMemoryRange structure, each defining a region of memory -to flush. The definition of slink:VkMappedMemoryRange is: +fname:vkFlushMappedMemoryRanges must: be used to guarantee that host writes to +non-coherent memory are visible to the device. It must: be called after the host +writes to non-coherent memory have completed and before command buffers that will +read or write any of those memory locations are submitted to a queue. + +include::../validity/protos/vkFlushMappedMemoryRanges.txt[] + -include::../structs/VkMappedMemoryRange.txt[] +See Also +-------- -For each element of the pname:pMemoryRanges array, pname:memory is the memory object containing -the mapped range, pname:offset is the location of the start of the range within pname:memory, -and pname:size is the size of the region to flush. Both pname:offset and pname:size are -specified in bytes. +slink:VkDevice, slink:VkMappedMemoryRange -If any referenced region of the memory object is not mapped or extends beyond the bounds of the memory -object then the command has no effect on that region, but is still honored for other regions in -the array. Multiple regions inside the same memory object may be contained in pname:pMemoryRanges, -including ranges that overlap one another. -Flushing memory ranges ensures that any writes performed by the host become visible to commands -subsequently executing on devices with references to that memory. fname:vkFlushMappedMemoryRanges -has no effect with respect to writes performed by the device. +Document Notes +-------------- -include::../validity/protos/vkFlushMappedMemoryRanges.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkFlushMappedMemoryRanges -flink:vkMapMemory, flink:vkUnmapMemory, flink:vkAllocateMemory, flink:vkFreeMemory +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkFreeCommandBuffers.txt b/doc/specs/vulkan/man/vkFreeCommandBuffers.txt index efdd3c3ec9..031946d84a 100644 --- a/doc/specs/vulkan/man/vkFreeCommandBuffers.txt +++ b/doc/specs/vulkan/man/vkFreeCommandBuffers.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkFreeCommandBuffers(3) ======================= @@ -8,46 +12,45 @@ vkFreeCommandBuffers - Free command buffers. C Specification --------------- +// refBegin vkFreeCommandBuffers Free command buffers. + +To free command buffers, call: + include::../protos/vkFreeCommandBuffers.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the command pool and command buffers referenced by the command. + * pname:device is the logical device that owns the command pool. + * pname:commandPool is the handle of the command pool that the command + buffers were allocated from. + * pname:commandBufferCount is the length of the pname:pCommandBuffers + array. + * pname:pCommandBuffers is an array of handles of command buffers to free. -pname:commandPool:: - A handle to the command pool which owns the command buffers. - -pname:commandBufferCount:: - The number of command buffers to free. - -pname:pCommandBuffers:: - A pointer to an array of handles to the command buffers to free. Description ----------- -fname:vkFreeCommandBuffers frees pname:commandBufferCount command buffers, returning their -resources to the pool specified in pname:commandPool. pname:pCommandBuffers is a pointer to an -array of pname:commandBufferCount basetype:VkCommandBuffer handles to the command buffers -to free. Each command buffer in the array must have been allocated from the pool specified -in pname:commandPool through a call to flink:vkAllocateCommandBuffers. pname:device must be a -handle to the device that owns both pname:commandPool and all of the command buffers referenced -from the array pointed to by pname:pCommandBuffers. - -After command buffers are freed, they may not be referenced again. A command buffer must not -be freed while it is in flight. - include::../validity/protos/vkFreeCommandBuffers.txt[] + See Also -------- -flink:vkAllocateCommandBuffers, -flink:vkResetCommandBuffer, -flink:vkBeginCommandBuffer, -flink:vkEndCommandBuffer, -flink:vkQueueSubmit +slink:VkCommandBuffer, slink:VkCommandPool, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkFreeCommandBuffers + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkFreeDescriptorSets.txt b/doc/specs/vulkan/man/vkFreeDescriptorSets.txt index 718a2c4b55..bed86c7d84 100644 --- a/doc/specs/vulkan/man/vkFreeDescriptorSets.txt +++ b/doc/specs/vulkan/man/vkFreeDescriptorSets.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkFreeDescriptorSets(3) ======================= @@ -8,44 +12,49 @@ vkFreeDescriptorSets - Free one or more descriptor sets C Specification --------------- +// refBegin vkFreeDescriptorSets Free one or more descriptor sets + +To free allocated descriptor sets, call: + include::../protos/vkFreeDescriptorSets.txt[] + Parameters ---------- -pname:device:: - The device that owns the descriptor sets. + * pname:device is the logical device that owns the descriptor pool. + * pname:descriptorPool is the descriptor pool from which the descriptor + sets were allocated. + * pname:descriptorSetCount is the number of elements in the + pname:pDescriptorSets array. + * pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet + objects. -pname:descriptorPool:: - The descriptor pool that the descriptor sets were allocated from. - -pname:descriptorSetCount:: - The number of descriptor sets to free. - -pname:pDescriptorSets:: - An array of pname:descriptorSetCount variables containing the descriptor - set handles to free. Description ----------- -fname:vkFreeDescriptorSets frees descriptor sets. pname:device is a handle -to the device that owns the descriptor pool specified in -pname:descriptorPool, which must be the pool from which the sets were -allocated. Freeing a descriptor set returns its descriptors to the pool from -which it was allocated but does not necessarily free resources associated -with the set. pname:pDescriptorSets is a pointer to an array of descriptor -set handles returned from previous calls to flink:vkAllocateDescriptorSets. -pname:descriptorSetCount specifies the number of descriptor set handles in -the pname:pDescriptorSets array. - -To actually free resources associated with descriptor pools, call flink:vkDestroyDescriptorPool. +After a successful call to fname:vkFreeDescriptorSets, all descriptor sets +in pname:pDescriptorSets are invalid. include::../validity/protos/vkFreeDescriptorSets.txt[] + See Also -------- -flink:vkAllocateDescriptorSets, flink:vkCreateDescriptorPool, flink:vkDestroyDescriptorPool. +slink:VkDescriptorPool, slink:VkDescriptorSet, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkFreeDescriptorSets + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkFreeMemory.txt b/doc/specs/vulkan/man/vkFreeMemory.txt index 87bf78c301..9fb4ff8fe8 100644 --- a/doc/specs/vulkan/man/vkFreeMemory.txt +++ b/doc/specs/vulkan/man/vkFreeMemory.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkFreeMemory(3) -================ +=============== Name ---- @@ -8,30 +12,60 @@ vkFreeMemory - Free GPU memory C Specification --------------- +// refBegin vkFreeMemory Free GPU memory + +To free a memory object, call: + include::../protos/vkFreeMemory.txt[] + Parameters ---------- -pname:device:: - The logical device which owns the memory object. + * pname:device is the logical device that owns the memory. + * pname:memory is the sname:VkDeviceMemory object to be freed. + * pname:pAllocator controls host memory allocation as described in + the <> chapter. -pname:mem:: - The memory object to free. Description ----------- -fname:vkFreeMemory frees the memory object whose handle is given in pname:mem. After the memory is freed, -pname:mem becomes invalid and should no longer be used. Further, any resource to which the memory is -bound become invalid and should not be referenced. Such objects should be destroyed or rebound to a new -memory object (if allowed). +Before freeing a memory object, an application must: ensure the +memory object is no longer in use by the device--for example by command +buffers queued for execution. The memory can: remain bound to images or +buffers at the time the memory object is freed, but any further use of them +(on host or device) for anything other than destroying those objects will +result in undefined behavior. If there are still any bound images or +buffers, the memory may: not be immediately released by the implementation, +but must: be released by the time all bound images and buffers have been +destroyed. Once memory is released, it is returned to the heap from which it +was allocated. + +How memory objects are bound to Images and Buffers is described in detail in +the <> section. + +If a memory object is mapped at the time it is freed, it is implicitly +unmapped. include::../validity/protos/vkFreeMemory.txt[] + See Also -------- -flink:vkAllocateMemory +slink:VkAllocationCallbacks, slink:VkDevice, slink:VkDeviceMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkFreeMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetBufferMemoryRequirements.txt b/doc/specs/vulkan/man/vkGetBufferMemoryRequirements.txt index 74fa476715..677944b6f7 100644 --- a/doc/specs/vulkan/man/vkGetBufferMemoryRequirements.txt +++ b/doc/specs/vulkan/man/vkGetBufferMemoryRequirements.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetBufferMemoryRequirements(3) ================================ @@ -8,44 +12,44 @@ vkGetBufferMemoryRequirements - Returns the memory requirements for specified Vu C Specification --------------- +// refBegin vkGetBufferMemoryRequirements Returns the memory requirements for specified Vulkan object. + +To determine the memory requirements for a buffer resource, call: + include::../protos/vkGetBufferMemoryRequirements.txt[] + Parameters ---------- -pname:device:: - Logical device which owns pname:buffer. + * pname:device is the logical device that owns the buffer. + * pname:buffer is the buffer to query. + * pname:pMemoryRequirements points to an instance of the + slink:VkMemoryRequirements structure in which the memory requirements of + the buffer object are returned. -pname:buffer:: - Object to query. - -pname:pMemoryRequirements:: - Pointer to a data structure to receive the result of the query. Description ----------- -fname:vkGetBufferMemoryRequirements retrieves memory requirements for the buffer whose handle is -given in pname:buffer. The pname:pMemoryRequirements parameter should point to an instance -of an slink:VkMemoryRequirements structure which will be filled with the memory requirements of the -buffer object. The definition of slink:VkMemoryRequirements is as follows: - -include::../structs/VkMemoryRequirements.txt[] - -The pname:size member of slink:VkMemoryRequirements reports the size of the memory allocation, measured -in bytes, required by the buffer. pname:alignment reports the required alignment of the memory allocation, -also measured in bytes. When memory is bound to the buffer object, the offset of the range within -the memory object must be an integer multiple of this value. The pname:memoryTypeBits member is a -bitfield with each set bit representing a valid memory type. Memory types for a device may be -determined by calling flink:vkGetPhysicalDeviceMemoryProperties. The least significant bit -if pname:memoryTypeBits represents the first memory type returned from -flink:vkGetPhysicalDeviceMemoryProperties, the next bit represents the second memory type and so on. - include::../validity/protos/vkGetBufferMemoryRequirements.txt[] + See Also -------- -flink:vkBindImageMemory +slink:VkBuffer, slink:VkDevice, slink:VkMemoryRequirements + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetBufferMemoryRequirements + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetDeviceMemoryCommitment.txt b/doc/specs/vulkan/man/vkGetDeviceMemoryCommitment.txt index fd6fb35b3b..5406d5b694 100644 --- a/doc/specs/vulkan/man/vkGetDeviceMemoryCommitment.txt +++ b/doc/specs/vulkan/man/vkGetDeviceMemoryCommitment.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetDeviceMemoryCommitment(3) ============================== @@ -8,34 +12,52 @@ vkGetDeviceMemoryCommitment - Query the current commitment for a VkDeviceMemory C Specification --------------- +// refBegin vkGetDeviceMemoryCommitment Query the current commitment for a VkDeviceMemory + +To determine the amount of lazily-allocated memory that is currently +committed for a memory object, call: + include::../protos/vkGetDeviceMemoryCommitment.txt[] + Parameters ---------- -pname:device:: - The device object from which pname:memory was allocated. - -pname:memory:: - The device memory object to query. + * pname:device is the logical device that owns the memory. + * pname:memory is the memory object being queried. + * pname:pCommittedMemoryInBytes is a pointer to a basetype:VkDeviceSize + value in which the number of bytes currently committed is returned, on + success. -pname:pCommittedMemoryInBytes:: - Pointer to a variable which will receive the current memory commitment, in bytes. Description ----------- -fname:vkGetDeviceMemoryCommitment queries the commitment status of a stext:VkDeviceMemory that -was created with the ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT set. +The implementation may: update the commitment at any time, and the +value returned by this query may: be out of date. -The number of bytes committed for the given memory object is returned in the -pname:pCommittedMemoryInBytes pointer. +The implementation guarantees to allocate any committed memory from the +heapIndex indicated by the memory type that the memory object was created +with. include::../validity/protos/vkGetDeviceMemoryCommitment.txt[] + See Also -------- -flink:vkGetPhysicalDeviceMemoryProperties, flink:vkAllocateMemory, flink:vkFreeMemory +slink:VkDevice, slink:VkDeviceMemory, basetypes:VkDeviceSize + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetDeviceMemoryCommitment + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetDeviceProcAddr.txt b/doc/specs/vulkan/man/vkGetDeviceProcAddr.txt index 7d0aa91503..e73bdca1f9 100644 --- a/doc/specs/vulkan/man/vkGetDeviceProcAddr.txt +++ b/doc/specs/vulkan/man/vkGetDeviceProcAddr.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetDeviceProcAddr(3) -======================= +====================== Name ---- @@ -8,43 +12,60 @@ vkGetDeviceProcAddr - Return a function pointer for a command C Specification --------------- +// refBegin vkGetDeviceProcAddr Return a function pointer for a command + +In order to support systems with multiple Vulkan implementations +comprising heterogeneous collections of hardware and software, the function +pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch +code, which calls a different real implementation for different +sname:VkDevice objects (and objects created from them). The overhead of this +internal dispatch can: be avoided by obtaining device-specific function +pointers for any commands that use a device or device-child object as their +dispatchable object. Such function pointers can: be obtained with the +command: + include::../protos/vkGetDeviceProcAddr.txt[] + Parameters ---------- -pname:device:: - The VkDevice whose function pointer to query. + * pname:device is the logical device that provides the function pointer. + * pname:pName is the name of any Vulkan command whose first parameter + is one of + ** sname:VkDevice + ** sname:VkQueue + ** sname:VkCommandBuffer -pname:pName:: - The name of the command. Description ----------- -fname:vkGetDeviceProcAddr returns a function pointer for the command specified -in pname:pName as it corresponds to pname:device. Depending on the operating -system, supporting components, software environment and hardware topology, the -function pointer returned for a single command name may be different for -different values of pname:device. +The returned function pointer is of type tlink:PFN_vkVoidFunction, and must +be cast to the type of the command being queried. -Device-specific function pointers only exist for commands that take a -device-child object as their first parameter. In the core API these are -sname:VkDevice, sname:VkQueue, and sname:VkCommandBuffer, though extensions may introduce additional dispatchable device-child object types. fname:vkGetDeviceProcAddr will return code:NULL when pname:pName is not one of these commands. +If pname:pName is not the name of one of these Vulkan commands, and is +not the name of an extension command belonging to an extension enabled for +pname:device, then fname:vkGetDeviceProcAddr will return `NULL`. include::../validity/protos/vkGetDeviceProcAddr.txt[] -Return Value ------------- - -Upon success, fname:vkGetDeviceProcAddr returns a function pointer -(PFN_vkVoidFunction) for the command specified in pname:pName. If -pname:pName is not supported by the device or has no corresponding -pname:device, then fname:vkGetDeviceProcAddr returns code:NULL. See Also -------- -flink:vkGetInstanceProcAddr, flink:vkCreateDevice +slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetDeviceProcAddr + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetDeviceQueue.txt b/doc/specs/vulkan/man/vkGetDeviceQueue.txt index e4bdd55697..63aad8a19b 100644 --- a/doc/specs/vulkan/man/vkGetDeviceQueue.txt +++ b/doc/specs/vulkan/man/vkGetDeviceQueue.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetDeviceQueue(3) -==================== +=================== Name ---- @@ -8,36 +12,46 @@ vkGetDeviceQueue - Get a queue handle from a device. C Specification --------------- +// refBegin vkGetDeviceQueue Get a queue handle from a device. + +To retrieve a handle to a VkQueue object, call: + include::../protos/vkGetDeviceQueue.txt[] + Parameters ---------- -pname:device:: - Handle to the device that is the owner of the queue. + * pname:device is the logical device that owns the queue. + * pname:queueFamilyIndex is the index of the queue family to which the + queue belongs. + * pname:queueIndex is the index within this queue family of the queue to + retrieve. + * pname:pQueue is a pointer to a sname:VkQueue object that will be filled + with the handle for the requested queue. -pname:queueFamilyIndex:: - The family index of the queue within the device. - -pname:queueIndex:: - The index of the queue within the queue family. - -pname:pQueue:: - A pointer to a variable that is to receive the resulting handle. Description ----------- -fname:vkGetDeviceQueue retrieves a handle to a specified queue from the device specified in -pname:device. The queue is identified by its family index, specified in pname:queueFamilyIndex and its -index within the family, specified in pname:queueIndex. pname:pQueue is a pointer to a variable that -will receive the resulting handle. - include::../validity/protos/vkGetDeviceQueue.txt[] + See Also -------- -flink:vkGetPhysicalDeviceFeatures, flink:vkGetPhysicalDeviceQueueFamilyProperties +slink:VkDevice, slink:VkQueue + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetDeviceQueue + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetDisplayModePropertiesKHR.txt b/doc/specs/vulkan/man/vkGetDisplayModePropertiesKHR.txt deleted file mode 100644 index 9b2ae73703..0000000000 --- a/doc/specs/vulkan/man/vkGetDisplayModePropertiesKHR.txt +++ /dev/null @@ -1,45 +0,0 @@ -vkGetDisplayModePropertiesKHR(3) -=============================== - -Name ----- -vkGetDisplayModePropertiesKHR - get the set of mode properties supported by the display. - -C Specification ---------------- - -include::../protos/vkGetDisplayModePropertiesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - The physical device associated with the display. - -pname:display:: - A display present on the physical device. - -pname:pPropertyCount:: - The number of entries in the array pointed to by pProperties. - -pname:pProperties:: - A pointer to an array of pPropertyCount VkDisplayModePropertiesKHR structures. - -Description ------------ - -fname:vkGetDisplayModePropertiesKHR gets the array of modes supported by the display. - -pname:pPrpoerties is an array of the slink:VkDisplayModePropertiesKHR -structure, the definition of which is: - -include::../structs/VkDisplayModePropertiesKHR.txt[] - -include::../validity/protos/vkGetDisplayModePropertiesKHR.txt[] - -See Also --------- - -flink:vkCreateDisplayModeKHR, flink:vkGetDisplayPlaneCapabilitiesKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetDisplayPlaneCapabilitiesKHR.txt b/doc/specs/vulkan/man/vkGetDisplayPlaneCapabilitiesKHR.txt deleted file mode 100644 index 81ff2ae45b..0000000000 --- a/doc/specs/vulkan/man/vkGetDisplayPlaneCapabilitiesKHR.txt +++ /dev/null @@ -1,45 +0,0 @@ -vkGetDisplayPlaneCapabilitiesKHR(3) -================================== - -Name ----- -vkGetDisplayPlaneCapabilitiesKHR - get the capabilities of a mode and plane combination. - -C Specification ---------------- - -include::../protos/vkGetDisplayPlaneCapabilitiesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - The physical device associated with the display. - -pname:mode:: - The display mode the application intends to program when using the specified plane. - -pname:planeIndex:: - The plane which the application intends to use with the display. - -pname:pCapabilities:: - A pointer to a VkDisplayPlaneCapabilitiesKHR struct. - -Description ------------ - -fname:vkGetDisplayPlaneCapabilitiesKHR gets the capabilities of a plane and its mode. - -pname:pCapabilities is an instance of the slink:VkDisplayPlaneCapabilitiesKHR -structure, the definition of which is: - -include::../structs/VkDisplayPlaneCapabilitiesKHR.txt[] - -include::../validity/protos/vkGetDisplayPlaneCapabilitiesKHR.txt[] - -See Also --------- - -flink:vkCreateDisplayPlaneSurfaceKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetDisplayPlaneSupportedDisplaysKHR.txt b/doc/specs/vulkan/man/vkGetDisplayPlaneSupportedDisplaysKHR.txt deleted file mode 100644 index 44e820d7fe..0000000000 --- a/doc/specs/vulkan/man/vkGetDisplayPlaneSupportedDisplaysKHR.txt +++ /dev/null @@ -1,45 +0,0 @@ -vkGetDisplayPlaneSupportedDisplaysKHR(3) -======================================= - -Name ----- -vkGetDisplayPlaneSupportedDisplaysKHR - get list of displays a plane supports. - -C Specification ---------------- - -include::../protos/vkGetDisplayPlaneSupportedDisplaysKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:planeIndex:: - The plane which the application wishes to use. - -pname:pDisplayCount:: - The number of entries in the array pointed to by pDisplays. - -pname:pDisplays:: - A pointer to an array of pDisplayCount VkDisplayKHR handles. - -Description ------------ - -fname:vkGetDisplayPlaneSupportedDisplaysKHR determine which displays a plane is usable with. - -pname:pDisplays is an instance of the slink:VkDisplayKHR -structure, the definition of which is: - -include::../structs/VkDisplayKHR.txt[] - -include::../validity/protos/vkGetDisplayPlaneSupportedDisplaysKHR.txt[] - -See Also --------- - -flink:vkCreateDisplayPlaneSurfaceKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetEventStatus.txt b/doc/specs/vulkan/man/vkGetEventStatus.txt index 5d9a54f0e8..08a64ed7f5 100644 --- a/doc/specs/vulkan/man/vkGetEventStatus.txt +++ b/doc/specs/vulkan/man/vkGetEventStatus.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetEventStatus(3) =================== @@ -8,32 +12,56 @@ vkGetEventStatus - Retrieve the status of an event object. C Specification --------------- +// refBegin vkGetEventStatus Retrieve the status of an event object. + +To query the state of an event from the host, call: + include::../protos/vkGetEventStatus.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the event. + * pname:device is the logical device that owns the event. + * pname:event is the handle of the event to query. -pname:event:: - A handle to the event whose status to retrieve. Description ----------- -fname:vkGetEventStatus retrieves the status of the event object specified in pname:event. Event -objects cannot be directly waited for by the host although it is possible to wait within a command -buffer for an event to become signaled by calling flink:vkCmdWaitEvents. Events are set -from within a command buffer by calling flink:vkCmdSetEvent and may be reset by calling -flink:vkCmdResetEvent. On the host, events may be set and reset by calling flink:vkSetEvent -and flink:vkResetEvent, respectively. +Upon success, fname:vkGetEventStatus returns the state of the event object +with the following return codes: + +[width="80%",options="header"] +|===== +| Status | Meaning +| ename:VK_EVENT_SET | The event specified by pname:event is signaled. +| ename:VK_EVENT_RESET | The event specified by pname:event is unsignaled. +|===== + +The state of an event can: be updated by the host. The state of the event is +immediately changed, and subsequent calls to fname:vkGetEventStatus will +return the new state. If an event is already in the requested state, then +updating it to the same state has no effect. include::../validity/protos/vkGetEventStatus.txt[] + See Also -------- -flink:vkSetEvent, flink:vkResetEvent, flink:vkCmdSetEvent, flink:vkCmdResetEvent, flink:vkCmdWaitEvents +slink:VkDevice, slink:VkEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetEventStatus + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetFenceStatus.txt b/doc/specs/vulkan/man/vkGetFenceStatus.txt index b0f3de91b5..c91360b645 100644 --- a/doc/specs/vulkan/man/vkGetFenceStatus.txt +++ b/doc/specs/vulkan/man/vkGetFenceStatus.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetFenceStatus(3) -==================== +=================== Name ---- @@ -8,45 +12,47 @@ vkGetFenceStatus - Return the status of a fence. C Specification --------------- +// refBegin vkGetFenceStatus Return the status of a fence. + +To query the status of a fence from the host, use the command + include::../protos/vkGetFenceStatus.txt[] + Parameters ---------- -pname:device:: - Logical device which owns pname:fence. + * pname:device is the logical device that owns the fence. + * pname:fence is the handle of the fence to query. -pname:fence:: - The fence whose status to return. Description ----------- -fname:vkGetFenceStatus returns the immediate status of the fence whose handle is given in pname:fence. -Fences are initially created in the unsignaled state and are associated with submissions to queues -through a call to flink:vkQueueSubmit. Fences are signaled by the system when work invoked by -flink:vkQueueSubmit completes. Fences may subsequently be reset by calling flink:vkResetFences. -To wait for one or more fences to become signaled, it is recommended that flink:vkWaitForFences -be used in preference to repeatedly polling flink:vkGetFenceStatus. +Upon success, fname:vkGetFenceStatus returns the status of the fence, +which is one of: + + * ename:VK_SUCCESS indicates that the fence is signaled. + * ename:VK_NOT_READY indicates that the fence is unsignaled. include::../validity/protos/vkGetFenceStatus.txt[] -Return Value ------------- -Upon success, fname:vkGetFenceStatus returns the status of the fence, -which may be one of: +See Also +-------- -* ename:VK_SUCCESS indicates that the fence has completed (its status - is signaled). -* ename:VK_NOT_READY indicates that the fence has not yet completed (its status - is unsignaled). +slink:VkDevice, slink:VkFence -Upon failure, a descriptive error code is returned. -See Also --------- +Document Notes +-------------- -flink:vkCreateFence, flink:vkWaitForFences, flink:vkQueueSubmit +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetFenceStatus + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetImageMemoryRequirements.txt b/doc/specs/vulkan/man/vkGetImageMemoryRequirements.txt index efcc59d445..983895cd54 100644 --- a/doc/specs/vulkan/man/vkGetImageMemoryRequirements.txt +++ b/doc/specs/vulkan/man/vkGetImageMemoryRequirements.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetImageMemoryRequirements(3) -================================= +=============================== Name ---- @@ -8,44 +12,44 @@ vkGetImageMemoryRequirements - Returns the memory requirements for specified Vul C Specification --------------- +// refBegin vkGetImageMemoryRequirements Returns the memory requirements for specified Vulkan object. + +To determine the memory requirements for an image resource, call: + include::../protos/vkGetImageMemoryRequirements.txt[] + Parameters ---------- -pname:device:: - Logical device which owns pname:image. + * pname:device is the logical device that owns the image. + * pname:image is the image to query. + * pname:pMemoryRequirements points to an instance of the + slink:VkMemoryRequirements structure in which the memory requirements of + the image object are returned. -pname:image:: - Object to query. - -pname:pMemoryRequirements:: - Pointer to a data structure to receive the result of the query. Description ----------- -fname:vkGetImageMemoryRequirements retrieves memory requirements for the image object whose -handle is given in pname:image. The pname:pMemoryRequirements parameter should point to an instance -of an slink:VkMemoryRequirements structure which will be filled with the memory requirements of the -image object. The definition of slink:VkMemoryRequirements is as follows: - -include::../structs/VkMemoryRequirements.txt[] - -The pname:size member of slink:VkMemoryRequirements reports the size of the memory allocation, measured -in bytes, required by the image. pname:alignment reports the required alignment of the memory allocation, -also measured in bytes. When memory is bound to the image object, the offset of the range within -the memory object must be an integer multiple of this value. The pname:memoryTypeBits member is a -bitfield with each set bit representing a valid memory type. Memory types for a device may be -determined by calling flink:vkGetPhysicalDeviceMemoryProperties. The least significant bit -if pname:memoryTypeBits represents the first memory type returned from -flink:vkGetPhysicalDeviceMemoryProperties, the next bit represents the second memory type and so on. - include::../validity/protos/vkGetImageMemoryRequirements.txt[] + See Also -------- -flink:vkBindImageMemory, flink:vkGetPhysicalDeviceMemoryProperties +slink:VkDevice, slink:VkImage, slink:VkMemoryRequirements + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetImageMemoryRequirements + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetImageSparseMemoryRequirements.txt b/doc/specs/vulkan/man/vkGetImageSparseMemoryRequirements.txt index 9e126fc5b8..7f60b7b06c 100644 --- a/doc/specs/vulkan/man/vkGetImageSparseMemoryRequirements.txt +++ b/doc/specs/vulkan/man/vkGetImageSparseMemoryRequirements.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetImageSparseMemoryRequirements(3) ===================================== @@ -8,92 +12,73 @@ vkGetImageSparseMemoryRequirements - Query the memory requirements for a sparse C Specification --------------- +// refBegin vkGetImageSparseMemoryRequirements Query the memory requirements for a sparse image. + +To query sparse memory requirements for an image, call: + include::../protos/vkGetImageSparseMemoryRequirements.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the image being queried. - -pname:image:: - A handle to the image to be queried. - -pname:pSparseMemoryRequirementCount:: - On input, a pointer to a variable containing the number of elements in the array pointed to - by pname:pSparseMemoryRequirements. On output, this variable is overwritten with the number - of elements written into pname:pSparseMemoryRequirements. + * pname:device is the logical device that owns the image. + * pname:image is the sname:VkImage object to get the memory requirements + for. + * pname:pSparseMemoryRequirementCount is a pointer to an integer related + to the number of sparse memory requirements available or queried, as + described below. + * pname:pSparseMemoryRequirements is either `NULL` or a pointer to an + array of sname:VkSparseImageMemoryRequirements structures. -pname:pSparseMemoryRequirements:: - A pointer to an array of structures that will be filled with the requested information. Description ----------- -fname:vkGetImageSparseMemoryRequirements queries the device specified in pname:device for -the memory requirements of the sparse image specified in pname:image, which must be a -handle to a sparse image. - -pname:pSparseMemoryRequirementCount is a pointer to a variable which, on input to the -command contains the number of elements in the array pointed to by -pname:pSparseMemoryRequirements. This is an array of slink:VkSparseImageMemoryRequirements -structures, the definition of which is: - -include::../structs/VkSparseImageMemoryRequirements.txt[] - -Within slink:VkSparseImageMemoryRequirements, the pname:formatProperties member is an -instance of the slink:VkSparseImageFormatProperties structure, the definition of -which is: - -include::../structs/VkSparseImageFormatProperties.txt[] - -The pname:aspectMask member of slink:VkSparseImageFormatProperties specifies the image -aspect or aspects to which the remainder of the properties apply. This is a bitfield -made up from members of the elink:VkImageAspectFlagBits enumeration, the definition -of which is: - -include::../enums/VkImageAspectFlagBits.txt[] +If pname:pSparseMemoryRequirements is `NULL`, then the number of sparse +memory requirements available is returned in +pname:pSparseMemoryRequirementCount. Otherwise, +pname:pSparseMemoryRequirementCount must: point to a variable set by the +user to the number of elements in the pname:pSparseMemoryRequirements array, +and on return the variable is overwritten with the number of structures +actually written to pname:pSparseMemoryRequirements. If +pname:pSparseMemoryRequirementCount is less than the number of sparse memory +requirements available, at most pname:pSparseMemoryRequirementCount +structures will be written. + +If the image was not created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT +then pname:pSparseMemoryRequirementCount will be set to zero and +pname:pSparseMemoryRequirements will not be written to. + +[NOTE] +.Note +==== +It is legal for an implementation to report a larger value in +sname:VkMemoryRequirements::pname:size than would be obtained by adding +together memory sizes for all sname:VkSparseImageMemoryRequirements returned +by fname:vkGetImageSparseMemoryRequirements. This may: occur when the +hardware requires unused padding in the address range describing the +resource. +==== -For each unique aspect of the image, an instance of slink:VkSparseImageFormatProperties is -returned. The pname:imageGranularity member specifies the size, in texels, of the -smallest region that may be uniquely bound within the image specified by pname:image. -Binding is affected by calling flink:vkQueueBindSparse. -It is an instance of the slink:VkExtent3D structure which contains the size of the -sparse binding regions, expressed in texels. - -The pname:flags member is a bitfield made up from members of the elink:VkSparseImageFormatFlagBits -enumeration and describes additional requirements for sparse memory binding. The -definition of which is: - -include::../enums/VkSparseImageFormatFlagBits.txt[] - -The meanings of each of the flags is as follows: - -If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set, the image combines mulitple levels -at the tail of the mip chain into a single residency state for array textures. Otherwise, -mip tail is individually addressable for each array layer. +include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[] -If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set, then each mip level outside the -tail has dimensions that are integer multiples of the sparse image block dimensions. -If ename:VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT is set, then the format has non-standard -sparse image block dimensions and the members of the pname:imageGranularity do not match the -standard sparse image block dimensions for the format. +See Also +-------- -The pname:imageMipTailStartLod member of the slink:VkSparseImageMemoryRequirements structure -contains the level-of-detail at which the mip tail begins for the image specified in -pname:image. +slink:VkDevice, slink:VkImage, slink:VkSparseImageMemoryRequirements -pname:imageMipTailSize contains the size of the mip tail, pname:imageMipTailOffset -contains its offset, and pname:imageMipTailStride contains the stride between layers in the -tail for array textures. All three members are expressed in bytes. +Document Notes +-------------- -include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetImageSparseMemoryRequirements -flink:vkQueueBindSparse, flink:vkGetImageMemoryRequirements +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt index ad37fc16da..b9e3cb1a5b 100644 --- a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt +++ b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetImageSubresourceLayout(3) -=============================== +============================== Name ---- @@ -8,72 +12,49 @@ vkGetImageSubresourceLayout - Retrieve information about an image subresource. C Specification --------------- +// refBegin vkGetImageSubresourceLayout Retrieve information about an image subresource. + +To query the host access layout of an image subresource, for an image +created with linear tiling, call: + include::../protos/vkGetImageSubresourceLayout.txt[] + Parameters ---------- -pname:device:: - A handle to the device that owns the image. + * pname:device is the logical device that owns the image. + * pname:image is the image whose layout is being queried. + * pname:pSubresource is a pointer to a slink:VkImageSubresource structure + selecting a specific image for the image subresource. + * pname:pLayout points to a slink:VkSubresourceLayout structure in which + the layout is returned. -pname:image:: - A handle to the image about which to retrieve information. - -pname:pSubresource:: - A pointer to a structure describing the image subresource. - -pname:pLayout:: - A pointer to a structure that will receive information about the image - subresource. Description ----------- -fname:vkGetImageSubresourceLayout returns information about the memory -layout of an image subresource of an image. pname:device is a handle to the -device that owns pname:image, which is the image about which to retrieve -information. A description of the image subresource is passsed to the -command through an instance of the slink:VkImageSubresource structure, the -address of which is passed in pname:pSubresource. The definition of -slink:VkImageSubresource is: - -include::../structs/VkImageSubresource.txt[] - -Within the pname:pSubresource structure, pname:aspectMask is a bitfield describing the aspect of the image and -is made up of a single member of the elink:VkImageAspectFlagBits enumeration, the definition of which is: +flink:vkGetImageSubresourceLayout is invariant for the lifetime of a single +image. -include::../enums/VkImageAspectFlagBits.txt[] +include::../validity/protos/vkGetImageSubresourceLayout.txt[] -The ename:VK_IMAGE_ASPECT_COLOR_BIT aspect is valid only for image formats that are usable as color. The -ename:VK_IMAGE_ASPECT_DEPTH_BIT aspect is valid for formats containing depth information and the -ename:VK_IMAGE_ASPECT_STENCIL_BIT aspect is valid only for formats containing stencil information. Note -that some formats contain both depth and stencil information, and -in this case, pname:aspectMask is used to select which to query. It is not legal to include more than -one member of elink:VkImageAspectFlagBits in pname:aspectMask. Some formats also include metadata -which may be implementation dependent but is queryable by specifying ename:VK_IMAGE_ASPECT_METADATA_BIT. -For resources that have mipmaps or are multiple array layers, the pname:mipLevel and pname:arrayLayer members describe -the mipmap level and array layer, respectively. For resources that do not have mipmaps or are not layered, -pname:mipLevel and pname:arrayLayer, respectively, should be set to zero. +See Also +-------- -Information about the selected sub-resource is returned to the caller in the instance of the slink:VkSubresourceLayout -structure pointed to by pname:pLayout. The definition of slink:VkSubresourceLayout is: +slink:VkDevice, slink:VkImage, slink:VkImageSubresource, slink:VkSubresourceLayout -include::../structs/VkSubresourceLayout.txt[] -The pname:offset member of the pname:pLayout structure is filled with the relative offset of the start of the sub-resource -from the start of the parent resource's memory binding. The pname:size member is the size of the sub-resource in -memory. The pname:rowPitch specifies the distance in memory of the start of each texel row of the sub-resource -from the start of the previous row. The pname:depthPitch specififes the distance in memory of the start of each -slice of the sub-resource relative to the start of the previous slice. For one-dimensional resources, pname:rowPitch -is zero, and for one- and two-dimensional resources, pname:depthPitch is zero. All four parameters are specified -in bytes. +Document Notes +-------------- -include::../validity/protos/vkGetImageSubresourceLayout.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetImageSubresourceLayout -flink:vkGetPhysicalDeviceImageFormatProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt index 156e8cbe08..0a3c11d85f 100644 --- a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt +++ b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetInstanceProcAddr(3) -========================= +======================== Name ---- @@ -8,57 +12,93 @@ vkGetInstanceProcAddr - Return a function pointer for a command C Specification --------------- +// refBegin vkGetInstanceProcAddr Return a function pointer for a command + +Vulkan commands are not necessarily exposed statically on a platform. +Function pointers for all Vulkan commands can: be obtained with the +command: + include::../protos/vkGetInstanceProcAddr.txt[] + Parameters ---------- -pname:instance:: - The instance whose function pointer to query + * pname:instance is the instance that the function pointer will be + compatible with. + * pname:pName is the name of the command to obtain. -pname:pName:: - The name of the command Description ----------- -fname:vkGetInstanceProcAddr returns a function pointer for the command -specified in pname:pName as it corresponds to pname:instance. Depending on the -operating system, supporting components, software environment and hardware -topology, the address returned for a single command name may be different for -different values of pname:instance. - -If pname:instance is code:NULL, fname:vkGetInstanceProcAddr will return -non-code:NULL function pointers for the global commands -fname:vkEnumerateInstanceExtensionProperties, -fname:vkEnumerateInstanceLayerProperties, and fname:vkCreateInstance. It will -return code:NULL for all other commands, since they may have different -implementations in different instances. - -If pname:instance is a valid instance, fname:vkGetInstanceProcAddr will return -a non-code:NULL function pointer for any core command except the global -commands listed previously. It will also return non-code:NULL for any extension -command, if there is a layer or driver available that implements the extension. - -The function pointers returned by fname:vkGetInstanceProcAddr may be used with -any object of the appropriate type derived from the pname:instance. For -example, the function pointer for a command with a sname:VkDevice first -parameter can be used with any sname:VkDevice object created from physical -devices belonging to the instance. +fname:vkGetInstanceProcAddr itself is obtained in a platform- and loader- +specific manner. Typically, the loader library will export this command as a +function symbol, so applications can: link against the loader library, or +load it dynamically and look up the symbol using platform-specific APIs. +Loaders are encouraged to export function symbols for all other core +Vulkan commands as well; if this is done, then applications that use only +the core Vulkan commands have no need to use fname:vkGetInstanceProcAddr. + +Function pointers to commands that do not operate on a specific instance can: +be obtained by using this command with pname:instance equal to `NULL`. The +following commands can: be accessed this way: + + * flink:vkEnumerateInstanceExtensionProperties + * flink:vkEnumerateInstanceLayerProperties + * flink:vkCreateInstance + +The returned function pointer is of type tlink:PFN_vkVoidFunction, and must +be cast to the type of the command being queried. + +If pname:instance is a valid sname:VkInstance, function pointers to any +commands that operate on pname:instance or a child of pname:instance can: be +obtained. The returned function pointer must: only be called with a +dispatchable object (the first parameter) that is a child of pname:instance. + +If pname:pName is not the name of a core Vulkan command, or is an +extension command for any extension not supported by any available layer or +implementation, then fname:vkGetInstanceProcAddr will return `NULL`. + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +(Jon, Bug 14886 / Gitlab issue 4) The WSI group tentatively agreed that the +WSI extensions were special, and should get static entry points in link +libraries and prototypes in +vulkan.h+, while future extensions would have +to be dynamically loaded. If this decision is upheld by the group as a +whole, it would probably be encoded in the previous paragraph, in the WSI +extensions branch of the Specification. + +However, this decision has not been fully signed off on by the entire Vulkan +WG yet AFAIK. Note that implementations typically will not support many of the +WSI extensions, so ``static entry points'' do not relieve apps of the +neccessity of runtime enabling and testing of each extension before using +it. +==== +endif::editing-notes[] include::../validity/protos/vkGetInstanceProcAddr.txt[] -Return Value ------------- +// refEnd vkGetInstanceProcAddr PFN_vkVoidFunction -Upon success, fname:vkGetInstanceProcAddr returns the address -(code:PFN_vkVoidFunction) of the command whose name is specified by pname:pName. -If pname:pName is not supported by the Vulkan library, then -fname:vkGetInstanceProcAddr returns code:NULL. See Also -------- -flink:vkGetDeviceProcAddr, flink:vkCreateInstance +tlink:PFN_vkVoidFunction, slink:VkInstance + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetInstanceProcAddr + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt deleted file mode 100644 index 43760172d8..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt +++ /dev/null @@ -1,42 +0,0 @@ -vkGetPhysicalDeviceDisplayPlanePropertiesKHR(3) -============================================== - -Name ----- -vkGetPhysicalDeviceDisplayPlanePropertiesKHR - query the plane properties. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:pPropertyCount:: - The number of entries in the array pointed to by pProperties. - -pname:pProperties:: - A pointer to an array of pPropertyCount VkDisplayPlanePropertiesKHR structures. - -Description ------------ - -fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR provides a list of plane index and its current display. - -pname:pProperties is an instance of the slink:VkDisplayPlanePropertiesKHR -structure, the definition of which is: - -include::../structs/VkDisplayPlanePropertiesKHR.txt[] - -include::../validity/protos/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt[] - -See Also --------- - -flink:vkGetDisplayPlaneSupportedDisplaysKHR, flink:vkGetDisplayPlaneCapabilitiesKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPropertiesKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPropertiesKHR.txt deleted file mode 100644 index e67e8f6ac5..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceDisplayPropertiesKHR.txt +++ /dev/null @@ -1,42 +0,0 @@ -vkGetPhysicalDeviceDisplayPropertiesKHR(3) -========================================= - -Name ----- -vkGetPhysicalDeviceDisplayPropertiesKHR - query information about the available displays. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceDisplayPropertiesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:pPropertyCount:: - The number of entries in the array pointed to by pProperties. - -pname:pProperties:: - A pointer to an array of pPropertyCount VkDisplayPropertiesKHR structures. - -Description ------------ - -fname:vkGetPhysicalDeviceDisplayPropertiesKHR gets the display properties. - -pname:pProperties is an instance of the slink:VkDisplayPropertiesKHR -structure, the definition of which is: - -include::../structs/VkDisplayPropertiesKHR.txt[] - -include::../validity/protos/vkGetPhysicalDeviceDisplayPropertiesKHR.txt[] - -See Also --------- - -flink:vkGetDisplayModePropertiesKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceFeatures.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceFeatures.txt index 670049c075..223978528e 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceFeatures.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceFeatures.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceFeatures(3) ============================== @@ -8,408 +12,46 @@ vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device. C Specification --------------- +// refBegin vkGetPhysicalDeviceFeatures Reports capabilities of a physical device. + +To query supported features, call: + include::../protos/vkGetPhysicalDeviceFeatures.txt[] + Parameters ---------- -pname:physicalDevice:: - A handle to the physical device. + * pname:physicalDevice is the physical device from which to query the + supported features. + * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures + structure in which the physical device features are returned. For each + feature, a value of ename:VK_TRUE indicates that the feature is + supported on this physical device, and ename:VK_FALSE indicates that the + feature is not supported. -pname:pFeatures:: - A pointer to a structure that will be written with the device feature set. Description ----------- -fname:vkGetPhysicalDeviceFeatures returns the set of physical features supported by the physical device -whose handle is passed in pname:physicalDevice. This parameter should be a valid handle to a physical -device returned from a successful call to flink:vkEnumeratePhysicalDevices. pname:pFeatures is a pointer -to an instance of the sname:VkPhysicalDeviceFeatures structure, the definition of which is: - -include::../structs/VkPhysicalDeviceFeatures.txt[] - -Each member of the pname:pFeatures structure represents a feature of the underlying physical device. A brief -description of the members follows: - -* *pname:robustBufferAccess* indicates that out of bounds accesses to buffers via shader - operations are well-defined. - -** When enabled, out-of-bounds buffer reads will return any of the following values: - -*** Values from anywhere within the buffer object. -*** Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value - represented in the type of the vector components and may be any of: -**** 0, 1, or the maximum representable positive integer value, for signed or unsigned - integer components -**** 0.0 or 1.0, for floating-point components - -** When enabled, out-of-bounds writes may modify values within the buffer object or - be ignored. - -** If not enabled, out of bounds accesses may cause undefined behaviour up-to and including - process termination. - -* *pname:fullDrawIndexUint32* indicates the full 32-bit range of indices is supported for - indexed draw calls when using a elink:VkIndexType of ename:VK_INDEX_TYPE_UINT32. - The ptext:maxDrawIndexedIndexValue limit indicates the maximum - index value that may be used (aside from the primitive restart index, which is always - 2^32^-1 when the elink:VkIndexType is ename:VK_INDEX_TYPE_UINT32). If this feature - is supported, ptext:maxDrawIndexedIndexValue must be 2^32^-1; otherwise it must be no - smaller than 2^24^-1. See <>. - [[features-features-fullDrawIndexUint]] - -* *pname:imageCubeArray* indicates whether image views with a elink:VkImageViewType of - ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can be created and that the corresponding - *ImageCubeArray* SPIR-V OpCapability can be used in shader code. - -* *pname:independentBlend* indicates whether the sname:VkPipelineColorBlendAttachmentState - settings are controlled independently per-attachment. If this is features not supported or - enabled, the sname:VkPipelineColorBlendAttachmentState settings for the first color attachment - will be used for all attachments. Otherwise, a sname:VkPipelineColorBlendAttachmentState - must be provided for each bound color attachment. - -* *pname:geometryShader* indicates whether geometry shaders are supported. If this feature is not - supported or enabled, ename:VK_SHADER_STAGE_GEOMETRY_BIT, - and ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT enum values may not be used. This also - indicates whether the *Geometry* SPIR-V OpCapability can be used in shader code. - -* *pname:tessellationShader* indicates whether tessellation control and evaluation shaders are supported. - If this feature is not supported or enabled, the ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, - ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, - ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, and - ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO enum values may not be used. - This also indicates whether the *Tessellation* SPIR-V OpCapability can be used in shader code. - -* *pname:sampleRateShading* indicates whether per-sample shading and multisample interpolation is supported. - If this feature is not supported or enabled, the ptext:sampleShadingEnable member of - the slink:VkPipelineMultisampleStateCreateInfo structure must be set to - ename:VK_FALSE and the ptext:minSampleShading member is ignored. This also indicates whether - the *SampleRateShading* SPIR-V OpCapability can be used in shader code. - -* *pname:dualSourceBlend* indicates whether blend operations which take two sources are supported. - If this feature is not supported or enabled, the ename:VK_BLEND_FACTOR_SRC1_COLOR, - ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, and ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - enum values may not be used as source or destination blending factors. - -* *pname:logicOp* indicates whether logic operations are supported. If this feature is not supported - or enabled, the ptext:logicOpEnable member of the slink:VkPipelineColorBlendStateCreateInfo structure - must be set to ename:VK_FALSE and the pname:logicOp member is ignored. - - [[features-features-multiDrawIndirect]] -* *pname:multiDrawIndirect* indicates whether multi-draw indirect is - supported. If this feature is not supported or enabled, the - ptext:drawCount parameter to the flink:vkCmdDrawIndirect and - flink:vkCmdDrawIndexedIndirect commands must be 1. The - ptext:maxDrawIndirectCount member of the slink:VkPhysicalDeviceLimits - structure must also be 1 if this feature is not supported. See - <>. - -* *pname:depthClamp* indicates whether depth clamping is supported. If this feature is not supported - or enabled, the ptext:depthClampEnable member of the sname:VkPipelineRasterizationStateCreateInfo structure - must be set to ename:VK_FALSE. Otherwise, setting ptext:depthClampEnable to ename:VK_TRUE will - enable depth clamping. - -* *pname:depthBiasClamp* indicates whether depth bias clamping is supported. If this feature is not - supported or enabled, the ptext:depthBiasClamp parameter to flink:vkCmdSetDepthBias is ignored. - -* *pname:fillModeNonSolid* indicates whether point and wireframe fill modes are supported. If this feature - is not supported or enabled, the ename:VK_POLYGON_MODE_POINT and ename:VK_POLYGON_MODE_LINE enum - values may not be used. - -* *pname:depthBounds* indicates whether depth bounds tests are supported. If this feature is not supported - or enabled, the ptext:depthBoundsTestEnable member of the sname:VkPipelineDepthStencilStateCreateInfo - structure must be set to ename:VK_FALSE. When ptext:depthBoundsTestEnable is set to ename:VK_FALSE, - the values of the flink:vkCmdSetDepthBounds command may not be used. - -* *pname:wideLines* indicates whether lines with width greater than 1.0 are supported. If this feature is - not supported or enabled, the flink:vkCmdSetLineWidth command may not be used. - . The range and granularity of supported line widths are indicated by the - ptext:lineWidthRange and ptext:lineWidthGranularity members of the slink:VkPhysicalDeviceLimits - structure, respectively. - -* *pname:largePoints* indictates if points with size greater than 1.0 are supported. If this feature - is not supported or enabled, only a point size of 1.0 written by a shader is supported. - The range and granularity of supported point sizes are indicated by the ptext:pointSizeRange and - ptext:pointSizeGranularity members of the ptext:VkPhysicalDeviceLimits structure, respectively. - -* *pname:textureCompressionETC2* indicates whether the ETC2 and EAC compressed texture formats are - supported. If this feature is not supported or enabled, the following formats may not be - used to create images: -+ --- -* ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK -* ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK -* ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK -* ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK -* ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK -* ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK -* ename:VK_FORMAT_EAC_R11_UNORM_BLOCK -* ename:VK_FORMAT_EAC_R11_SNORM_BLOCK -* ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK -* ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK --- -+ -The fname:vkGetPhysicalDeviceFormatProperties command should be used to check -for the supported properties of individual formats. - -* *pname:textureCompressionASTC_LDR* indicates whether the ASTC LDR compressed texture formats are - supported. If this feature is not supported or enabled, the following formats may not be - used to create images: -+ --- -* ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK -* ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK -* ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK --- -+ -The fname:vkGetPhysicalDeviceFormatProperties command should be used to check -for the supported properties of individual formats. - -* *pname:textureCompressionBC* indicates whether the BC compressed texture formats are supported. - If this feature is not supported or enabled, the following formats may not be - used to create images: -+ --- -* ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK -* ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK -* ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK -* ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK -* ename:VK_FORMAT_BC2_UNORM_BLOCK -* ename:VK_FORMAT_BC2_SRGB_BLOCK -* ename:VK_FORMAT_BC3_UNORM_BLOCK -* ename:VK_FORMAT_BC3_SRGB_BLOCK -* ename:VK_FORMAT_BC4_UNORM_BLOCK -* ename:VK_FORMAT_BC4_SNORM_BLOCK -* ename:VK_FORMAT_BC5_UNORM_BLOCK -* ename:VK_FORMAT_BC5_SNORM_BLOCK -* ename:VK_FORMAT_BC6H_UFLOAT_BLOCK -* ename:VK_FORMAT_BC6H_SFLOAT_BLOCK -* ename:VK_FORMAT_BC7_UNORM_BLOCK -* ename:VK_FORMAT_BC7_SRGB_BLOCK --- -+ -The fname:vkGetPhysicalDeviceFormatProperties command should be used to check -for the supported properties of individual formats. - -* *pname:occlusionQueryPrecise* indicates whether precise (non-conservative) - occlusion queries are supported. Occlusion queries are created in a sname:VkQueryPool by - specifying the ptext:queryType of ename:VK_QUERY_TYPE_OCCLUSION in the sname:VkQueryPoolCreateInfo - structure which is passed to fname:vkCreateQueryPool. If this feature is supported and enabled, - queries of this type may set ename:VK_QUERY_CONTROL_PRECISE_BIT in the ptext:flags - parameter to fname:vkCmdBeginQuery. If this feature is not supported, the implementation can - only support conservative occlusion queries. When any samples are passed, conservative queries - will return between one and the actual number of samples passed. When this feature is enabled - and ename:VK_QUERY_CONTROL_PRECISE_BIT is set, occlusion queries will report the - actual number of samples passed. - -* *pname:pipelineStatisticsQuery* indicates whether the pipeline statistics queries are supported. - If this feature is not supported or enabled, queries of type - ename:VK_QUERY_TYPE_PIPELINE_STATISTICS cannot be created and none of the - elink:VkQueryPipelineStatisticFlagBits bits should be set in the ptext:pipelineStatistics - member of the sname:VkQueryPoolCreateInfo structure. - - * pname:vertexPipelineStoresAndAtomics indicates whether - storage buffers and images support stores and atomic operations - in the vertex, tessellation, and geometry shader stages. If this - feature is not supported or enabled, all storage image, storage texel - buffers and storage buffer variables in shaders for these - stages must be decorated with the *NonWriteable* SPIR-V decoration - (or the _readonly_ memory qualifier in GLSL). - [[features-features-fragmentStoresAndAtomics]] - * pname:fragmentStoresAndAtomics indicates whether storage buffers and - images support stores and atomic operations in the fragment shader stage. - If this feature is not supported or enabled, all storage image, storage - texel buffers and storage buffer variables in shaders for the - fragment stage must be decorated with the *NonWriteable* SPIR-V decoration - (or the _readonly_ memory qualifier in GLSL). - * pname:shaderTessellationAndGeometryPointSize indicates whether the - _PointSize_ shader builtin is available in the tessellation control, - tessellation evaluation, and geometry shader stages. If this feature is - not supported or enabled, the _PointSize_ shader builtin is not available - in these shader stages and all points written from a tessellation or - geometry shader will have a size of 1.0. This also indicates whether - the *TessellationPointSize* SPIR-V OpCapability can be used in shader - code for tessellation control and evaluation shaders, or if the - *GeometryPointSize* SPIR-V OpCapability can be used in shader code - for geometry shaders. An implementation supporting this feature must - also support one or both of the _tessellationShader_ or - _geometryShader_ features. - -* *pname:shaderImageGatherExtended* indicates whether the extended set of image gather - instructions are available in shader code. If this feature is not supported or enabled, - the _textureGatherOffset_ shader instruction only supports offsets that are constant - integer expressions and the _textureGatherOffsets_ shader instruction is not supported. - This also indicates whether the *ImageGatherExtended* SPIR-V OpCapability can be used in - shader code. - -* *pname:shaderStorageImageExtendedFormats* indicates whether the extended storage image - formats are available in shader code. If this feature is not supported or enabled, - the formats requiring the *StorageImageExtendedFormats* SPIR-V OpCapability are not - supported for resources referenced by the ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE descriptor - type. This also indicates whether the *StorageImageExtendedFormats* OpCapability ca - be used in shader code. - -* *pname:shaderStorageImageMultisample* indicates whether multisampled storage images are - supported. If this feature is not supported or enabled, images that are created - with a ptext:usage that includes ename:VK_IMAGE_USAGE_STORAGE_BIT must be created - with ptext:samples equal to 1. This also indicates whether the *StorageImageMultisample* SPIR-V - OpCapability can be used in shader code. - -* *pname:shaderUniformBufferArrayDynamicIndexing* indicates whether arrays of uniform buffers - can be indexed by dynamically uniform integer expressions in shader code. If this feature is not - supported or enabled, resources with a descriptor type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER - or ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC can only be indexed by constant - integral expressions when aggregated into arrays in shader code. This corresponds to the - *UniformBufferArrayDynamicIndexing* SPIR-V OpCapability can be used in shader code. - -* *pname:shaderSampledImageArrayDynamicIndexing* indicates whether arrays of samplers or sampled images - can be indexed by dynamically uniform integer expressions in shader code. If this feature is not - supported or enabled, resources with a descriptor type of ename:VK_DESCRIPTOR_TYPE_SAMPLER, - ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER and ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE can - only be indexed by constant integral expressions when aggregated into arrays in shader code. - This also indicates whether the *SampledImageArrayDynamicIndexing* SPIR-V OpCapability can be - used in shader code. - -* *pname:shaderStorageBufferArrayDynamicIndexing* indicates whether arrays of storage buffers can - be indexed by dynamically uniform integer expressions in shader code. If this feature is not - supported or enabled, resources with a descriptor type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER - or ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC can only be indexed by constant integral - expressions when aggregated into arrays in shader code. This corresponds to the - *StorageBufferArrayDynamicIndexing* SPIR-V OpCapability can be used in shader code. - -* *pname:shaderStorageImageArrayDynamicIndexing* indicates whether arrays of storage images - can be indexed by dynamically uniform integer expressions in shader code. If this feature - is not supported or enabled, resources with a descriptor type of - ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE can only be indexed by constant integral expressions when - aggregated into arrays in shader code. This also indicates whether the *StorageImageArrayDynamicIndexing* - SPIR-V OpCapability can be used in shader code. - -* *pname:shaderClipDistance* indicates whether clip distances are supported in shader code. - If this feature is not supported or enabled, the _ClipDistance_ shader builtin is not available - in the builtin shader input and output blocks. This also indicates whether the *ClipDistance* - SPIR-V OpCapability can be used in shader code. - -* *pname:shaderCullDistance* indicates whether cull distances are suppored in shader code. - If this feature is not supported or enabled, the _CullDistance_ shader builtin is not available - in the builtin shader input and output blocks. This also indicates whether the *CullDistance* - SPIR-V OpCapability can be used in shader code. - -* *pname:shaderFloat64* indicates whether 64-bit floats (doubles) are supported in shader code. - If this feature is not supported or enabled, the 64-bit floating point types cannot be used in - shader code. This also indicates whether the *Float64* SPIR-V OpCapability can be used in shader code. - -* *pname:shaderInt64* indicates whether 64-bit integers (signed and unsigned) are supported in shader - code. If this feature is not supported or enabled, the 64-bit integer types cannot be used in - shader code. This also indicates whether the *Int64* SPIR-V OpCapability can be used in shader code. - -* *pname:shaderInt16* indicates whether 16-bit integers (signed and unsigned) are supported in shader - code. If this feature is not supported or enabled, the 16-bit integer types cannot be used in - shader code. This also indicates whether the *Int16* SPIR-V OpCapability can be used in shader code. - -* *pname:shaderResourceResidency* indicates whether image operations that return resource residency - information are supported in shader code. If this feature is not supported or enabled, - the image operations which return resource residency information cannot be used in shader code. - This also indicates whether the *SparseResidency* SPIR-V OpCapability can be used in shader code. - The feature requires the ptext:sparseNonResident feature to be supported. - -* *pname:shaderResourceMinLod* indicates whether image operations that specify the minimum resource - level-of-detail (LOD) are supported in shader code. If this feature is not supported or enabled, - the image operations which specify minimum resource LOD cannot be used in shader code. - This also indicates whether the *MinLod* SPIR-V OpCapability can be used in shader code. - -* *pname:alphaToOne* indicates whether the implementation is able to replace the alpha value of the color - fragment output from the fragment shader with the maximum representable alpha value for fixed-point - colors or 1.0 for floating-point colors. If this feature is not supported or enabled, then the - ptext:alphaToOneEnable member of the sname:VkPipelineColorBlendAttachmentState structure must be - set to ename:VK_FALSE. Otherwise setting ptext:alphaToOneEnable to ename:VK_TRUE will enable - alpha-to-one behaviour. - -* *pname:sparseBinding* indicates whether resource memory can be managed at opaque page level instead of - at the object level. If this feature is not supported or enabled, resource memory can only be - bound on a per-object basis using the fname:vkBindBufferMemory and fname:vkBindImageMemory - commands. In this case, buffers and images cannot be created with ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT - and ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in the ptext:flags member of the - sname:VkBufferCreateInfo and sname:VkImageCreateInfo structures, respectively. - Otherwise resource memory can be managed as described in - <>. - -* *pname:sparseResidencyBuffer* indicates whether the device can access partially resident - buffers. If this feature is not supported or enabled, buffers cannot be created with - ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT set in the ptext:flags member of the - sname:VkBufferCreateInfo structure. - -* *pname:sparseResidencyImage2D* indicates whether the device can access partially resident - 2D images with 1 sample per pixel. If this feature is not supported or enabled, images - with an ptext:imageType of ename:VK_IMAGE_TYPE_2D and ptext:samples of 1 - cannot be created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set - in the ptext:flags member of the sname:VkImageCreateInfo structure. - -* *pname:sparseResidencyImage3D* indicates whether the device can access partially resident - 3D images. If this feature is not supported or enabled, images with an ptext:imageType of - ename:VK_IMAGE_TYPE_3D cannot be created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set - in the ptext:flags member of the sname:VkImageCreateInfo structure. +include::../validity/protos/vkGetPhysicalDeviceFeatures.txt[] -* *pname:sparseResidency2Samples* indicates whether the physical device can access partially - resident 2D images with 2 samples per pixel. If this feature is not supported or enabled, images - with an ptext:imageType of ename:VK_IMAGE_TYPE_2D and ptext:samples of 2 cannot be created with - ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the ptext:flags member of the sname:VkImageCreateInfo - structure. -* *pname:sparseResidency4Samples* indicates whether the physical device can access partially - resident 2D images with 4 samples per pixel. If this feature is not supported or enabled, images - with an ptext:imageType of ename:VK_IMAGE_TYPE_2D and ptext:samples of 4 cannot be created with - ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the ptext:flags member of the - sname:VkImageCreateInfo structure. +See Also +-------- -* *pname:sparseResidency8Samples* indicates whether the physical device can access partially - resident 2D images with 8 samples per pixel. If this feature is not supported or enabled, images - with an ptext:imageType of ename:VK_IMAGE_TYPE_2D and ptext:samples of 8 cannot be created with - ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the ptext:flags member of the - sname:VkImageCreateInfo structure. +slink:VkPhysicalDevice, slink:VkPhysicalDeviceFeatures -* *pname:sparseResidency16Samples* indicates whether the physical device can access partially - resident 2D images with 16 samples per pixel. If this feature is not supported or enabled, images - with an ptext:imageType of ename:VK_IMAGE_TYPE_2D and ptext:samples of 16 cannot be created with - ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the ptext:flags member of the - sname:VkImageCreateInfo structure. -* *pname:sparseResidencyAliased* indicates whether the physical device can correctly access - data aliased into multiple locations. If this feature is not supported or enabled, - the ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT and ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT - enum values may not be used in ptext:flags members of the sname:VkBufferCreateInfo and - sname:VkImageCreateInfo structures, respectively. +Document Notes +-------------- -include::../validity/protos/vkGetPhysicalDeviceFeatures.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceFeatures -flink:vkGetPhysicalDeviceProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceFormatProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceFormatProperties.txt index fb7388a237..bbaef32127 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceFormatProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceFormatProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceFormatProperties(3) ====================================== @@ -8,61 +12,46 @@ vkGetPhysicalDeviceFormatProperties - Lists physical device's format capabilitie C Specification --------------- +// refBegin vkGetPhysicalDeviceFormatProperties Lists physical device's format capabilities. + +To query supported format features which are properties of the physical +device, call: + include::../protos/vkGetPhysicalDeviceFormatProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - A handle to the physical device to query. + * pname:physicalDevice is the physical device from which to query the + format properties. + * pname:format is the format whose properties are queried. + * pname:pFormatProperties is a pointer to a slink:VkFormatProperties + structure in which physical device properties for pname:format are + returned. -pname:format:: - The format whose properties to query. - -pname:pFormatProperties:: - A pointer to the structure to receive the result of the query. Description ----------- -fname:vkGetPhysicalDeviceFormatProperties queries the device specified by pname:physicalDevice -for its support of the format specified in pname:format and places the result in the -structure pointed to by pname:pFormatProperties. pname:pFormatProperties should point to an -instance of the slink:VkFormatProperties structure, the definition of which is: - -include::../structs/VkFormatProperties.txt[] +include::../validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] -The pname:linearTilingFeatures, pname:optimalTilingFeatures, and pname:bufferFeatures parameters -are a bitwise combination of one or more of the bits specified in elink:VkFormatFeatureFlagBits, -the definition of which is: -include::../enums/VkFormatFeatureFlagBits.txt[] +See Also +-------- -The pname:linearTilingFeatures member contains information about format support in linear images. The -pname:optimalTilingFeatures member contains information about format support in opaque tiled images. -The pname:bufferFeatures member contains information about format support in buffer objects. +elink:VkFormat, slink:VkFormatProperties, slink:VkPhysicalDevice -* If ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is set then image views of this format may be sampled by shaders. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT is set then image views of this format may be used as storage images in shaders. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT is set is set then atomic operations may be performed by shaders on image views of this format. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT is set then buffer views of this format may be used to store uniform values accessible by shaders. This bit should only appear in pname:bufferFeatures. -* If ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT is set then buffer views of this format may be used to store texel data accessible to shaders. This bit should only appear in pname:bufferFeatures. -* If ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT is set then shaders may perform atomic operations on texel data stored in buffers in this format. This bit should only appear in pname:bufferFeatures. -* If ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT is set then this format may be used as a vertex attribute format. This bit should only appear in pname:bufferFeatures. -* If ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT is set then image views of this format may be used as color attachments. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT is set then blending is supported into color attachments of this format. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT is set then image views of this format may be used as depth or stencil attachments. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is set then images of this format may be used as the source of a blit operation. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -* If ename:VK_FORMAT_FEATURE_BLIT_DST_BIT is set then images of this format may be used as the destination of a blit operation. This bit should only appear in pname:linearTilingFeatures or pname:optimalTilingFeatures. -If the physical device does not support the specified format then the output slink:VkFormatProperties -structure is filled with zeros. +Document Notes +-------------- -include::../validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceFormatProperties -flink:vkGetPhysicalDeviceImageFormatProperties, flink:vkGetPhysicalDeviceFeatures +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceImageFormatProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceImageFormatProperties.txt index f8d9e53d53..2823a89aaa 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceImageFormatProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceImageFormatProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceImageFormatProperties(3) =========================================== @@ -8,89 +12,73 @@ vkGetPhysicalDeviceImageFormatProperties - Lists physical device's image format C Specification --------------- -include::../protos/vkGetPhysicalDeviceImageFormatProperties.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A handle to the physical device upon which to perform the query. +// refBegin vkGetPhysicalDeviceImageFormatProperties Lists physical device's image format capabilities. -pname:format:: - The format of the image. +To query additional capabilities specific to image types, call: -pname:type:: - The type of the image. +include::../protos/vkGetPhysicalDeviceImageFormatProperties.txt[] -pname:tiling:: - The tiling mode of the image. -pname:usage:: - The usage of the image. +Parameters +---------- -pname:flags:: - Additional flags describing the image. + * pname:physicalDevice is the physical device from which to query the + image capabilities. + * pname:format is the image format, corresponding to + slink:VkImageCreateInfo.format. + * pname:type is the image type, corresponding to + slink:VkImageCreateInfo.imageType. + * pname:tiling is the image tiling, corresponding to + slink:VkImageCreateInfo.tiling. + * pname:usage is the intended usage of the image, corresponding to + slink:VkImageCreateInfo.usage. + * pname:flags is a bitmask describing additional parameters of the image, + corresponding to slink:VkImageCreateInfo.flags. + * pname:pImageFormatProperties points to an instance of the + slink:VkImageFormatProperties structure in which capabilities are + returned. -pname:pImageFormatProperties:: - A pointer to a structure in which the requested information is returned. Description ----------- -fname:vkGetPhysicalDeviceImageFormatProperties queries the physical device specified in pname:physicalDevice -about its support for images as if they had been created using the remaining parameters to the command. -These parameters, pname:format, pname:type, pname:tiling and pname:usage have the same meanings as they do -in the slink:VkImageCreateInfo structure, the definition of which is: - -include::../structs/VkImageCreateInfo.txt[] - -In this call, pname:format specifies the format of the image and must be a member of the elink:VkFormat enumeration. -pname:type specifies the type of image for which the format will be used. This is a member of the elink:VkImageType -enumeration, the definition of which is: - -include::../enums/VkImageType.txt[] +The pname:format, pname:type, pname:tiling, pname:usage, and pname:flags +parameters correspond to parameters that would be consumed by +flink:vkCreateImage. + +If pname:format is not a supported image format, or if the combination of +pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not +supported for images, then fname:vkGetPhysicalDeviceImageFormatProperties +returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED. + +The limitations on an image format that are reported by +fname:vkGetPhysicalDeviceImageFormatProperties have the following property: +if code:usage1 and code:usage2 of type elink:VkImageUsageFlags are such that +the bits set in code:usage1 are a subset of the bits set in code:usage2, and +code:flags1 and code:flags2 of type elink:VkImageCreateFlags are such that +the bits set in code:flags1 are a subset of the bits set in code:flags2, +then the limitations for code:usage1 and code:flags1 must: be no more strict +than the limitations for code:usage2 and code:flags2, for all values of +pname:format, pname:type, and pname:tiling. -The pname:tiling parameter specifies the tiling layout for the image and must be one of ename:VK_IMAGE_TILING_LINEAR -or ename:VK_IMAGE_TILING_OPTIMAL. The pname:usage parameter specifies the intended usage for the image and -should be a bitwise combination of one or more members of the elink:VkImageUsageFlagBits enumeration, the -definition of which is: - -include::../enums/VkImageUsageFlagBits.txt[] - -If the image format is supported for the specified combination of the pname:format, pname:type, pname:tiling, -pname:usage, and pname:flags parameters, then fname:vkGetPhysicalDeviceImageFormatProperties -places information about how such an image may be used in the instance of the slink:VkImageFormatProperties -structure pointed to by pname:pImageFormatProperties. The definition of slink:VkImageFormatProperties is: - -include::../structs/VkImageFormatProperties.txt[] - -The pname:maxExtent member of the output structure contains the maximum dimensions of an image in the specified -format. The pname:maxMipLevels and pname:maxArrayLayers contain the maximum number of mipmap levels and -maximum number of layers in array forms of images, respectively. If array images are not supported for -the specified format, then pname:maxArrayLayers will be zero. If multisampling is supported for the specified -format, then pname:sampleCounts contains a bitwise combination of the supported sample counts using -members of the elink:VkSampleCountFlagBits enumeration, the definition of which is: +include::../validity/protos/vkGetPhysicalDeviceImageFormatProperties.txt[] -include::../enums/VkSampleCountFlagBits.txt[] -Additional sample counts not listed in the elink:VkSampleCountFlagBits enumeration are reserved and their -presence should not be used to imply higher sample counts than listed. +See Also +-------- -If multisampling is not supported for the specified format, then pname:sampleCounts will contain zero. +elink:VkFormat, elink:VkImageCreateFlags, slink:VkImageFormatProperties, elink:VkImageTiling, elink:VkImageType, elink:VkImageUsageFlags, slink:VkPhysicalDevice -The pname:maxResourceSize member contains the maximum size in memory of any resource in this format. Note -that it may not be possible to create a resource of the maximum supported extent and array layer count -in every dimension that still fits within the maxium in-memory resource size. -If the format is not supported in the specified configuration, then -fname:vkGetPhysicalDeviceImageFormatProperties fills the slink:VkImageFormatProperties structure -pointed to by pname:pImageFormatProperties with zeros. +Document Notes +-------------- -include::../validity/protos/vkGetPhysicalDeviceImageFormatProperties.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceImageFormatProperties -flink:vkGetPhysicalDeviceProperties, flink:vkGetPhysicalDeviceFeatures +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceMemoryProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceMemoryProperties.txt index d711b8efe9..4db71c603e 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceMemoryProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceMemoryProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceMemoryProperties(3) ====================================== @@ -8,98 +12,43 @@ vkGetPhysicalDeviceMemoryProperties - Reports memory information for the specifi C Specification --------------- +// refBegin vkGetPhysicalDeviceMemoryProperties Reports memory information for the specified physical device. + +To query memory properties, call: + include::../protos/vkGetPhysicalDeviceMemoryProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - A handle to the physical device about which information is to be retrieved. + * pname:physicalDevice is the handle to the device to query. + * pname:pMemoryProperties points to an instance of + sname:VkPhysicalDeviceMemoryProperties structure in which the properties + are returned. -pname:pMemoryProperties:: - A pointer to a structure that is to receive the memory information. Description ----------- -fname:vkGetPhysicalDeviceMemoryProperties retrieves information about the memory of the physical -device whose handle is given in pname:physicalDevice. pname:pMemoryProperties should point to an -instance of the sname:VkPhysicalDeviceMemoryProperties structure, into which will be stored the -information about the device. The definition of sname:VkPhysicalDeviceMemoryProperties is as -follows. - -include::../structs/VkPhysicalDeviceMemoryProperties.txt[] - -* pname:memoryTypeCount will be filled with the number of memory types supported by -the device. - -* pname:memoryTypes is an array of ename:VK_MAX_MEMORY_TYPES instances of the -slink:VkMemoryType structures. Upon return from fname:vkGetPhysicalDeviceMemoryProperties, -the first pname:memoryTypeCount elements of pname:memoryTypes will contain valid data. - -* pname:memoryHeapCount will be filled with the number of memory heaps supported by -the device. - -* pname:memoryHeaps is an array of ename:VK_MAX_MEMORY_HEAPS slink:VkMemoryHeap -structures which describe the heaps available to the device. - -The definition of the slink:VkMemoryType structure is as follows: - -include::../structs/VkMemoryType.txt[] - -* pname:propertyFlags is a bitfield made up from members of the elink:VkMemoryPropertyFlagBits -enumeration, which is described below. - -* pname:heapIndex is the index into the ptext:memoryHeaps array returned through this -command from which the memory type will be allocated. - -The elink:VkMemoryPropertyFlagBits enumeration, which forms the available bits for use in the -pname:propertyFlags member of the slink:VkMemoryType structure is defined as follows: - -include::../enums/VkMemoryPropertyFlagBits.txt[] - -* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT signifies that the memory is the -most efficient type for device access (e.g. local device memory). - -* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT indicates that memory with this property is visible -to the host. That is, a valid host address may be obtained and allocations from this memory -type may be mapped. - -* ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT indicates that accesses to -mapped memory of this type is coherent with accesses to the same memory -by the device. Such access do not need to be marshalled using calls to -flink:vkFlushMappedMemoryRanges or by unmapping the memory. - -* ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT indicates that data stored in -memory of this type is cached by the host and as such, it is likely that -reads from such regions by the host will be faster than reads from uncached -memory. - -* ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT indicates that allocations from this type of memory -may be made on an as-needed basis. In general, allocations from this type of memory will almost -always succeed and return quickly, but first access to such a region may take longer than expected. - -The definition of the slink:VkMemoryHeap structure is as follows: +include::../validity/protos/vkGetPhysicalDeviceMemoryProperties.txt[] -include::../structs/VkMemoryHeap.txt[] -* pname:size specifies the size in bytes of the memory heap. +See Also +-------- -* pname:flags is a bitfield made up of the members of the -elink:VkMemoryHeapFlagBits enumeration, the definition of which is: +slink:VkPhysicalDevice, slink:VkPhysicalDeviceMemoryProperties -include::../enums/VkMemoryHeapFlagBits.txt[] -* If the ptext:flags member of slink:VkMemoryHeap contains ename:VK_MEMORY_HEAP_HOST_LOCAL_BIT, -then the memory for that heap is located closer to the host than to the device in NUMA (Non-Unified -Memory Architecture) systems. Even in unified architectures, this flag may indicate that access -to this heap is more efficient from the host than from the device. +Document Notes +-------------- -include::../validity/protos/vkGetPhysicalDeviceMemoryProperties.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceMemoryProperties -flink:vkGetPhysicalDeviceProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceMirPresentationSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceMirPresentationSupportKHR.txt deleted file mode 100644 index 643e7cdded..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceMirPresentationSupportKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkGetPhysicalDeviceMirPresentationSupportKHR(3) -============================================== - -Name ----- -vkGetPhysicalDeviceMirPresentationSupportKHR - query physical device for presentation to Mir. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceMirPresentationSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A physical device handle. - -pname:queueFamilyIndex:: - Index to a queue family. - -pname:connection:: - Pointer to a sname:MirConnection. - -Description ------------ - -fname:vkGetPhysicalDeviceMirPresentationSupportKHR determines whether a queue family of a physical device supports presentation to the Mir compositor. - -pname:connection is an instance of the sname:MirConnection -structure. - -include::../validity/protos/vkGetPhysicalDeviceMirPresentationSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceProperties.txt index 1fb1b6305d..ce156db432 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceProperties(3) ================================ @@ -8,77 +12,44 @@ vkGetPhysicalDeviceProperties - Returns properties of a physical device. C Specification --------------- +// refBegin vkGetPhysicalDeviceProperties Returns properties of a physical device. + +To query general properties of physical devices once enumerated, call: + include::../protos/vkGetPhysicalDeviceProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - A handle to the physical device. + * pname:physicalDevice is the handle to the physical device whose + properties will be queried. + * pname:pProperties points to an instance of the + slink:VkPhysicalDeviceProperties structure, that will be filled with + returned information. -pname:pProperties:: - A pointer to a structure that will be written with the device properties. Description ----------- -fname:vkGetPhysicalDeviceProperties returns the properties of the physical device specified in -pname:physicalDevice in the structure pointed to by pname:pProperties. pname:pProperties points -to an instance of the slink:VkPhysicalDeviceProperties structure, the definition of which -is: - -include::../structs/VkPhysicalDeviceProperties.txt[] - -The data returned in the pname:pProperties structure contains information about the physical -device and the driver associated with it. - -The pname:apiVersion member of slink:VkPhysicalDeviceProperties indicates the API version -supported by the physical device. Minor revisions of the API are backward compatible whereas -major versions of the API may break compatibility. The API version is represented as a 32-bit -field where bits 31 - 22 represent the major version, bits 21 - 12 represent the minor version, -and bits 11 - 0 represent the patch version. - -The pname:driverVersion member represents the vendor-specific version of the driver used to -enable the device. - -The pname:vendorID and pname:deviceID members contain the PCI vendor and device identifiers, -respectively. Note that if the device is not physcially a PCI-compliant device, then the -values of pname:vendorID and pname:deviceID are platform dependent and may not be values assigned -by the PCI-SIG. +include::../validity/protos/vkGetPhysicalDeviceProperties.txt[] -The pname:deviceType member indicates the type of device represented by pname:physicalDevice. -pname:deviceType is a member of the elink:VkPhysicalDeviceType enumeration, the definition of -which is: -include::../enums/VkPhysicalDeviceType.txt[] +See Also +-------- -When pname:deviceType is ename:VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, then the device is typically -one embedded in or tightly coupled with the host CPU that is running the application. When -pname:deviceType is ename:VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, then the device is typically -a separate physical device connected to the host CPU via a slower interlink such as PCI-Express. -If pname:deviceType is ename:VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, then the device is potentially -emulated (such a stub device or debugger endpoint), a virtual node in a virtualization environment or -otherwise does not fit either category. If the device is running entirely on the CPU, then -pname:deviceType will be ename:VK_PHYSICAL_DEVICE_TYPE_CPU. If the device type is unknown or does -not fit any of these types, then pname:deviceType may be ename:VK_PHYSICAL_DEVICE_TYPE_OTHER. +slink:VkPhysicalDevice, slink:VkPhysicalDeviceProperties -The pname:deviceName member of pname:pProperties contains a vendor-supplied human-readable name -for the device encoded as a UTF-8 string which is up to ename:VK_MAX_PHYSICAL_DEVICE_NAME_SIZE -characters long, including a null-terminator. -pname:pipelineCacheUUID is an array, of size ename:VK_UUID_SIZE, containing 8-bit values that represent -a universally unique signature that identifies the hardware and driver combination. +Document Notes +-------------- -pname:limits is an instance of the slink:VkPhysicalDeviceLimits structure which contains limits -on the functionality provided by the device. The definition of slink:VkPhysicalDeviceLimits is: +For more information, see the Vulkan Specification at URL -include::../structs/VkPhysicalDeviceLimits.txt[] +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceProperties -include::../validity/protos/vkGetPhysicalDeviceProperties.txt[] - -See Also --------- - -flink:vkGetPhysicalDeviceFeatures, flink:vkGetPhysicalDeviceProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt index 9ccfabfda4..aa479ac98a 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceQueueFamilyProperties(3) =========================================== @@ -8,87 +12,55 @@ vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of t C Specification --------------- +// refBegin vkGetPhysicalDeviceQueueFamilyProperties Reports properties of the queues of the specified physical device. + +To query properties of queues available on a physical device, call: + include::../protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[] + Parameters ---------- -pname:physicalDevice:: - Physical device to query. - -pname:pQueueFamilyPropertyCount:: - Count indicating number of sname:VkQueueFamilyProperties pointed to by - pname:pQueueFamilyProperties. + * pname:physicalDevice is the handle to the physical device whose + properties will be queried. + * pname:pQueueFamilyPropertyCount is a pointer to an integer related to + the number of queue families available or queried, as described below. + * pname:pQueueFamilyProperties is either `NULL` or a pointer to an array + of slink:VkQueueFamilyProperties structures. -pname:pQueueFamilyProperties:: - Pointer to an array of sname:VkQueueFamilyProperties structures receiving the information about - each particular queue family. Description ----------- -fname:vkGetPhysicalDeviceQueueFamilyProperties retrieves properties of the -queues on a physical device whose handle is given in pname:physicalDevice. -pname:pQueueFamilyPropertyCount must be set to the size of the array pointed -to by pname:pQueueFamilyProperties and thus specifies the number of queue -families to retrieve information for. The pname:pQueueFamilyProperties -parameter should point to an array of sname:VkQueueFamilyProperties -structures to be filled out with the properties of the queue families. If -pname:pQueueFamilyProperties is code:NULL then -fname:vkGetPhysicalDeviceQueueFamilyProperties will update the value pointed -by pname:pQueueFamilyPropertyCount with the number of queue families -available on the specified physical device. - -The device will overwrite the entries of pname:pQueueFamilyProperties with information about the -supported queues, and will write the number of structures filled into the variable pointed to by -pname:pQueueFamilyPropertyCount. Each element of pname:pQueueFamilyProperties is an instance of the -slink:VkQueueFamilyProperties structure, the definition of which is: - -include::../structs/VkQueueFamilyProperties.txt[] - -The members of slink:VkQueueFamilyProperties have the following meanings: - -* pname:queueFlags is a bitfield made up from members of the elink:VkQueueFlagBits enumeration indicating -capabilities of the queue. The list of capabilities is described below. - -* pname:queueCount contains the number of individual queues within the specified queue family. Queues -within a single family are considered identical from a feature support perspective and are directly -compatible with one another. +If pname:pQueueFamilyProperties is `NULL`, then the number of queue families +available is returned in pname:pQueueFamilyPropertyCount. Otherwise, +pname:pQueueFamilyPropertyCount must: point to a variable set by the user to +the number of elements in the pname:pQueueFamilyProperties array, and on +return the variable is overwritten with the number of structures actually +written to pname:pQueueFamilyProperties. If +pname:pQueueFamilyPropertyCount is less than the number of queue families +available, at most pname:pQueueFamilyPropertyCount structures will be +written. -* pname:timestampValidBits contains the number of valid bits that will be written to timestamp by -flink:vkCmdWriteTimestamp. Timestamps are always 64-bit unsigned integers. However, less than 64 bits -may actually be valid. Additional bits will contain zeros. If pname:timestampValidBits is zero -then the queue does not support timestamps and flink:vkCmdWriteTimestamp may not be used in command -buffers submitted to queues in this family. If pname:timestampValidBits is non-zero, it must be at -least 32, and may be as high as 64. +include::../validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[] -The valid bits that may be contained in pname:queueFlags are comprised of the members of the -elink:VkQueueFlagBits enumeration, the definition of which is: -include::../enums/VkQueueFlagBits.txt[] +See Also +-------- -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_GRAPHICS_BIT, then it supports graphics -operations such as binding graphics state and graphics pipelines and executing drawing commands. +slink:VkPhysicalDevice, slink:VkQueueFamilyProperties -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_COMPUTE_BIT, then it supports compute -operations such as binding compute pipelines and executing compute dispatches. -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transfer -operations, which include copying data and images. +Document Notes +-------------- -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_SPARSE_BINDING_BIT, then it supports -binding memory to sparse buffer and image resources. +For more information, see the Vulkan Specification at URL -All Vulkan implementations must expose at least one queue, each of which has at least one queue -capability bit set. Note, though, that it is possible that new sets of capabilities are exposed -by extensions or future API versions and so a queue may have none of the bits listed above -set. +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties -include::../validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[] - -See Also --------- - -flink:vkGetPhysicalDeviceFeatures, flink:vkGetPhysicalDeviceProperties, flink:vkGetPhysicalDeviceMemoryProperties, slink:VkQueueFamilyProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceSparseImageFormatProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceSparseImageFormatProperties.txt index 9d1a5f84ca..18198952d1 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceSparseImageFormatProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceSparseImageFormatProperties.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPhysicalDeviceSparseImageFormatProperties(3) ================================================= @@ -8,100 +12,78 @@ vkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of an image C Specification --------------- -include::../protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] - -Parameters ----------- - -pname:physicalDevice:: - The physical device whose properties to query. - -pname:format:: - The format about which to query the device. +// refBegin vkGetPhysicalDeviceSparseImageFormatProperties Retrieve properties of an image format applied to sparse images. -pname:type:: - The dimensionality of the image. +fname:vkGetPhysicalDeviceSparseImageFormatProperties returns an +array of slink:VkSparseImageFormatProperties. Each element will describe +properties for one set of image aspects that are bound simultaneously in the +image. This is usually one element for each aspect in the image, but for +interleaved depth/stencil images there is only one element describing the +combined aspects. -pname:samples:: - The number of multisamples in the image. +include::../protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] -pname:usage:: - The intended usages for the image. -pname:tiling:: - A set of flags defining the tiling of the image. +Parameters +---------- -pname:pPropertyCount:: - A pointer to a variable that contains the number of properties to query. + * pname:physicalDevice is the physical device from which to query the + sparse image capabilities. + * pname:format is the image format. + * pname:type is the dimensionality of image. + * pname:samples is the number of samples per pixel as defined in + elink:VkSampleCountFlagBits. + * pname:usage is a bitmask describing the intended usage of the image. + * pname:tiling is the tiling arrangement of the data elements in memory. + * pname:pPropertyCount is a pointer to an integer related to the number of + sparse format properties available or queried, as described below. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkSparseImageFormatProperties structures. -pname:pProperties:: - A pointer to an array of slink:VkSparseImageFormatProperties structures that will receive the results of the query. Description ----------- -fname:vkGetPhysicalDeviceSparseImageFormatProperties queries the physical device -specified in pname:physicalDevice for its support of the format described by -the remaining parameters to the command should that format be used with -a sparse image. +If pname:pProperties is `NULL`, then the number of sparse format properties +available is returned in pname:pPropertyCount. Otherwise, +pname:pPropertyCount must: point to a variable set by the user to the number +of elements in the pname:pProperties array, and on return the variable is +overwritten with the number of structures actually written to +pname:pProperties. If pname:pPropertyCount is less than the +number of sparse format properties available, at most pname:pPropertyCount +structures will be written. -pname:format specifies the format of the image and is a member of the -elink:VkFormat enumeration. pname:type specifies the type of the image -and is a member of the elink:VkImageType enumeration, the definition of -which is: +If ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT is not supported for the given +arguments, pname:pPropertyCount will be set to zero upon return, and no data +will be written to pname:pProperties. -include::../enums/VkImageType.txt[] +Multiple aspects are returned for depth/stencil images that are implemented +as separate planes by the implementation. The depth and stencil data planes +each have unique sname:VkSparseImageFormatProperties data. -The pname:samples parameter specifies the number of samples to be used in -the image and must be a supported sample count for the image format. The -possible values are: +Depth/stencil images with depth and stencil data interleaved into a single +plane will return a single sname:VkSparseImageFormatProperties structure +with the pname:aspectMask set to ename:VK_IMAGE_ASPECT_DEPTH_BIT | +ename:VK_IMAGE_ASPECT_STENCIL_BIT. -include::../enums/VkSampleCountFlagBits.txt[] +include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[] -If pname:samples is ename:VK_SAMPLE_COUNT_1_BIT then the image is not multisampled. -The pname:usage parameter is a bitfield made up of members of the elink:VkImageUsageFlagBits -enumeration and specifies the intended usage for the image. The definition of -elink:VkImageUsageFlagBits is: - -include::../enums/VkImageUsageFlagBits.txt[] - -On input, pname:pPropertyCount points to a variable that is populated with -the number of aspects to query about the image. pname:pProperties is a pointer -to an array of at least this many slink:VkSparseImageFormatProperties -structures, the definition of which is: - -include::../structs/VkSparseImageFormatProperties.txt[] - -On return, the variable pointed to by pname:pPropertyCount will be overwritten -with the number of entries in pname:pProperties that were populated by the -command. - -In the slink:VkSparseImageFormatProperties structure, pname:aspectMask contains -the aspects of the image to which this property applies. pname:imageGranularity -contains the size, in texels at which image memory is to be bound to a sparse -image with the specified properties through a call to flink:vkQueueBindSparse. -pname:flags contains a bitfield of the supported flags for this image format, -and is a bitwise combination of members of the elink:VkSparseImageFormatFlagBits -enumeration, the definition of which is: +See Also +-------- -include::../enums/VkSparseImageFormatFlagBits.txt[] +elink:VkFormat, elink:VkImageTiling, elink:VkImageType, elink:VkImageUsageFlags, slink:VkPhysicalDevice, elink:VkSampleCountFlagBits, slink:VkSparseImageFormatProperties -include::../validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] -Return Value ------------- +Document Notes +-------------- -fname:vkGetPhysicalDeviceSparseImageFormatProperties does not return a value. -However, on success, the variable pname:pPropertyCount is overwritten with -the number of structures written into the array pointed to by pname:pProperties. -On failure, the variable is overwritten with zero. +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties -flink:vkGetImageSparseMemoryRequirements, -flink:vkGetPhysicalDeviceImageFormatProperties, -flink:vkGetPhysicalDeviceFormatProperties +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt deleted file mode 100644 index 8a9c05f021..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt +++ /dev/null @@ -1,42 +0,0 @@ -vkGetPhysicalDeviceSurfaceCapabilitiesKHR(3) -=========================================== - -Name ----- -vkGetPhysicalDeviceSurfaceCapabilitiesKHR - get surface capabilities. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:surface:: - VkSurface to query. - -pname:pSurfaceCapabilities:: - A pointer to an instance of VkSurfaceCapabilitiesKHR that will be filled. - -Description ------------ - -fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR queries the basic capabilities of a surface, needed in order to create a swapchain. - -pname:pSurfaceCapabilities is an instance of the slink:VkSurfaceCapabilitiesKHR -structure, the definition of which is: - -include::../structs/VkSurfaceCapabilitiesKHR.txt[] - -include::../validity/protos/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt[] - -See Also --------- - -flink:vkGetPhysicalDeviceSurfaceFormatsKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceFormatsKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceFormatsKHR.txt deleted file mode 100644 index 8030e9e698..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceFormatsKHR.txt +++ /dev/null @@ -1,46 +0,0 @@ -vkGetPhysicalDeviceSurfaceFormatsKHR(3) -====================================== - -Name ----- -vkGetPhysicalDeviceSurfaceFormatsKHR - get color formats supported by surface. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:surface:: - VkSurface to query. - -pname:pSurfaceFormatCount:: - The number of elements in the array pointed by pSurfaceFormats . - -pname:pSurfaceFormats:: - A pointer to an array of VkSurfaceFormatKHR. - -Description ------------ - -fname:vkGetPhysicalDeviceSurfaceFormatsKHR queries the supported swapchain format-colorspace pairs for a surface. - -pname:pSurfaceFormats is an instance of the slink:VkSurfaceFormatKHR -structure, the definition of which is: - -include::../structs/VkSurfaceFormatKHR.txt[] - -include::../validity/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[] - -See Also --------- - -flink:vkGetPhysicalDeviceFormatProperties, flink:vkGetPhysicalDeviceImageFormatProperties, -flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfacePresentModesKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfacePresentModesKHR.txt deleted file mode 100644 index 0dbb6ffab5..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfacePresentModesKHR.txt +++ /dev/null @@ -1,45 +0,0 @@ -vkGetPhysicalDeviceSurfacePresentModesKHR(3) -=========================================== - -Name ----- -vkGetPhysicalDeviceSurfacePresentModesKHR - get supported presentation modes. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceSurfacePresentModesKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:surface:: - The VkSurface to query. - -pname:pPresentModeCount:: - The number of elements in the array pointed by pPresentModes. - -pname:pPresentModes:: - Pointer to an array of VkPresentModeKHR. - -Description ------------ - -fname:vkCreateWaylandSurfaceKHR queries the supported presentation modes for a surface. - -pname:pPresentModes is an instance of the slink:VkPresentModeKHR -structure, the definition of which is: - -include::../structs/VkPresentModeKHR.txt[] - -include::../validity/protos/vkGetPhysicalDeviceSurfacePresentModesKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceSupportKHR.txt deleted file mode 100644 index fb5b295eec..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceSurfaceSupportKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkGetPhysicalDeviceSurfaceSupportKHR(3) -====================================== - -Name ----- -vkGetPhysicalDeviceSurfaceSupportKHR - query if presentation is supported. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceSurfaceSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A valid physical device. - -pname:queueFamilyIndex:: - A queue family. - -pname:surface:: - The surface to query. - -pname:pSupported:: - Indicates is presentation is supported. - -Description ------------ - -fname:vkGetPhysicalDeviceSurfaceSupportKHR determines whether a queue family of a physical device supports presentation to a given surface. - -include::../validity/protos/vkGetPhysicalDeviceSurfaceSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt deleted file mode 100644 index b17b79b750..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt +++ /dev/null @@ -1,37 +0,0 @@ -vkGetPhysicalDeviceWaylandPresentationSupportKHR(3) -================================================== - -Name ----- -vkGetPhysicalDeviceWaylandPresentationSupportKHR - query physical device for presentation to Wayland. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A physical device handle. - -pname:queueFamilyIndex:: - Index to a queue family. - -pname:connection:: - Pointer to a wl_display associated with the Wayland compositor. - -Description ------------ - -fname:vkGetPhysicalDeviceWaylandPresentationSupportKHR determines whether a queue family of a physical device supports presentation to the Wayland compositor. - -include::../validity/protos/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt deleted file mode 100644 index c3d9e26e71..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt +++ /dev/null @@ -1,34 +0,0 @@ -vkGetPhysicalDeviceWin32PresentationSupportKHR(3) -================================================ - -Name ----- -vkGetPhysicalDeviceWin32PresentationSupportKHR - query physical device for presentation to Windows desktop. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A physical device handle. - -pname:queueFamilyIndex:: - Index to a queue family. - -Description ------------ - -fname:vkCreateWaylandSurfaceKHR determines whether a queue family of a physical device supports presentation to the Microsoft Windows desktop. - -include::../validity/protos/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt deleted file mode 100644 index 66e5807b37..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkGetPhysicalDeviceXcbPresentationSupportKHR(3) -============================================== - -Name ----- -vkGetPhysicalDeviceXcbPresentationSupportKHR - query physical device for presentation to X11 server using XCB. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A physical device handle. - -pname:queueFamilyIndex:: - Index to a queue family. - -pname:connection:: - Pointer to a xcb_connection_t. - -pname:visual_id:: - An xcb_visualid_t. - -Description ------------ - -fname:vkGetPhysicalDeviceXcbPresentationSupportKHR determines whether a queue family of a physical device supports presentation to an X11 server, using the XCB client-side library. - -include::../validity/protos/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt deleted file mode 100644 index 0a40c926f4..0000000000 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkGetPhysicalDeviceXlibPresentationSupportKHR(3) -=============================================== - -Name ----- -vkGetPhysicalDeviceXlibPresentationSupportKHR - query physical device for presentation to X11 server using Xlib. - -C Specification ---------------- - -include::../protos/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt[] - -Parameters ----------- - -pname:physicalDevice:: - A physical device handle. - -pname:queueFamilyIndex:: - Index to a queue family. - -pname:dpy:: - Pointer to an Xlib Display. - -pname:visualID:: - An X11 VisualID. - -Description ------------ - -fname:vkGetPhysicalDeviceXlibPresentationSupportKHR determines whether a queue family of a physical device supports presentation to an X11 server, using the Xlib client-side library. - -include::../validity/protos/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt[] - -See Also --------- - -flink:vkQueuePresentKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkGetPipelineCacheData.txt b/doc/specs/vulkan/man/vkGetPipelineCacheData.txt index 299392624b..167a8fd613 100644 --- a/doc/specs/vulkan/man/vkGetPipelineCacheData.txt +++ b/doc/specs/vulkan/man/vkGetPipelineCacheData.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetPipelineCacheData(3) ========================= @@ -8,40 +12,111 @@ vkGetPipelineCacheData - Get the data store from a pipeline cache C Specification --------------- +// refBegin vkGetPipelineCacheData Get the data store from a pipeline cache + +Data can: be retrieved from a pipeline cache object using the command: + include::../protos/vkGetPipelineCacheData.txt[] + Parameters ---------- -pname:device:: - A handle to the device that is the parent of the pipeline cache. - -pname:pipelineCache:: - The pipeline cache whose data will be returned. - -pname:pDataSize:: - A pointer to a variable to receive the size (in bytes) of the data retrieved from the cache. + * pname:device is the logical device that owns the pipeline cache. + * pname:pipelineCache is the pipeline cache to retrieve data from. + * pname:pDataSize is a pointer to a value related to the amount of data in + the pipeline cache, as described below. + * pname:pData is either `NULL` or a pointer to a buffer. -pname:pData:: - A pointer to memory where the cache's data will be stored. Description ----------- -fname:vkGetPipelineCacheData fills the output buffer pname:pData with a copy of the data -store of a pipeline cache, as a step in the process of the application retrieving and saving -the cache data. pname:pDataSize points to a variable that, on entry, contains the size -of the data area pointed to by pname:pData. If pname:pData is code:NULL, then the initial -value of the variable addressed by pname:pDataSize is ignored and overwritten with the -size of the data that would be returned. Otherwise, it is used to determine the size of -data that may be written to pname:pData, which should be large enough to receive the -entire data blob. +If pname:pData is `NULL`, then the maximum size of the data that can: be +retrieved from the pipeline cache, in bytes, is returned in pname:pDataSize. +Otherwise, pname:pDataSize must: point to a variable set by the user to the +size of the buffer, in bytes, pointed to by pname:pData, and on return the +variable is overwritten with the amount of data actually written to +pname:pData. + +If pname:pDataSize is less than the maximum size that can: be +retrieved by the pipeline cache, at most pname:pDataSize bytes will be +written to pname:pData, and fname:vkGetPipelineCacheData will return +ename:VK_INCOMPLETE. Any data written to pname:pData is valid and can: be +provided as the pname:pInitialData member of the +sname:VkPipelineCacheCreateInfo structure passed to +fname:vkCreatePipelineCache. + +[[pipelines-cache-header]] +Applications can: store the data retrieved from the pipeline cache, and use +these data, possibly in a future run of the application, to populate new +pipeline cache objects. The results of pipeline compiles, however, +may: depend on the vendor ID, device ID, driver version, and other details +of the device. To enable applications to detect when previously retrieved +data is incompatible with the device, the initial bytes written to +pname:pData must: be a header consisting of the following members: + +.Layout for pipeline cache header version VK_PIPELINE_CACHE_HEADER_VERSION_ONE +[width="85%",cols="8%,21%,71%",options="header"] +|===== +| Offset | Size | Meaning +| 0 | 4 | length in bytes of the entire pipeline cache header + written as a stream of bytes, with the least + significant byte first +| 4 | 4 | a elink:VkPipelineCacheHeaderVersion value + written as a stream of bytes, with the least + significant byte first +| 8 | 4 | a vendor ID equal to + sname:VkPhysicalDeviceProperties::pname:vendorID + written as a stream of bytes, with the least + significant byte first +| 12 | 4 | a device ID equal to + sname:VkPhysicalDeviceProperties::pname:deviceID + written as a stream of bytes, with the least + significant byte first +| 16 | ename:VK_UUID_SIZE | a pipeline cache ID equal to + sname:VkPhysicalDeviceProperties::pname:pipelineCacheUUID +|===== + +The first four bytes encode the length of the entire pipeline header, in +bytes. This value includes all fields in the header including the pipeline +cache version field and the size of the length field. + +// refBegin VkPipelineCacheHeaderVersion Encode pipeline cache version + +The next four bytes encode the pipeline cache version. This field is +interpreted as a elink:VkPipelineCacheHeaderVersion value, and must: +have one of the following values: + +include::../enums/VkPipelineCacheHeaderVersion.txt[] + +A consumer of the pipeline cache should use the cache version to interpret +the remainder of the cache header. + +// refEnd VkPipelineCacheHeaderVersion vkCreatePipelineCache vkGetPipelineCacheData + +If pname:pDataSize is less than what is necessary to store this +header, nothing will be written to pname:pData and zero will be written to +pname:pDataSize. include::../validity/protos/vkGetPipelineCacheData.txt[] + See Also -------- -flink:vkCreatePipelineCache, flink:vkMergePipelineCaches +slink:VkDevice, slink:VkPipelineCache + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetPipelineCacheData + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetQueryPoolResults.txt b/doc/specs/vulkan/man/vkGetQueryPoolResults.txt index 686f61c12b..1966f50df5 100644 --- a/doc/specs/vulkan/man/vkGetQueryPoolResults.txt +++ b/doc/specs/vulkan/man/vkGetQueryPoolResults.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetQueryPoolResults(3) -========================= +======================== Name ---- @@ -8,59 +12,147 @@ vkGetQueryPoolResults - Copy results of queries in a query pool to a host memory C Specification --------------- -include::../protos/vkGetQueryPoolResults.txt[] - -Parameters ----------- +// refBegin vkGetQueryPoolResults Copy results of queries in a query pool to a host memory region. -pname:device:: - Logical device owning the query pool. +To retrieve status and results for a set of queries, call: -pname:queryPool:: - The query pool whose results should be copied to the buffer object. - -pname:startQuery:: - The index of the first query in the query pool whose results should be copied to the buffer object. - -pname:queryCount:: - The number of queries in the query pool whose results should be copied to the buffer object. +include::../protos/vkGetQueryPoolResults.txt[] -pname:dataSize:: - The size of the data area pointed to by pname:pData. -pname:pData:: - A pointer to a buffer that will be filled with query results. +Parameters +---------- -pname:stride:: - The stride, in bytes between the start of each query object in memory. + * pname:device is the logical device that owns the query pool. + * pname:queryPool is the query pool managing the queries containing the + desired results. + * pname:firstQuery is the initial query index. + * pname:queryCount is the number of queries. pname:firstQuery and + pname:queryCount together define a range of queries. + * pname:dataSize is the size in bytes of the buffer pointed to by + pname:pData. + * pname:pData is a pointer to a user-allocated buffer + where the results will be written + * pname:stride is the stride in bytes between results for individual + queries within pname:pData. + * pname:flags is a bitmask of elink:VkQueryResultFlagBits specifying how + and when results are returned. Bits which can: be set include: ++ +-- +// refBegin VkQueryResultFlagBits - Bitmask specifying how and when query results are returned +include::../enums/VkQueryResultFlagBits.txt[] +-- ++ + ** ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an + array of 64-bit unsigned integer values. If this bit is not set, the + results will be written as an array of 32-bit unsigned integer values. + ** ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for + each query's status to become available before retrieving its results. + ** ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the + availability status accompanies the results. + ** ename:VK_QUERY_RESULT_PARTIAL_BIT indicates that returning partial + results is acceptable. -pname:flags:: - The flags controlling the behavior of the query result copy command (see elink:VkQueryResultFlags). Description ----------- -fname:vkGetQueryPoolResults copies the results of pname:queryCount number of queries in the query pool specified -by pname:queryPool starting from index pname:startQuery. The results are written to the host memory buffer specified -by pname:pData. pname:dataSize contains the size of the output buffer. If pname:pData is not code:NULL, -then the output buffer size must be large enough to hold the query results. The semantics of when and what values -written to the destination buffer are defined by the type of the queries in the query pool, the query control -flags passed to flink:vkCmdBeginQuery, and the query result control flags specified by pname:flags. +If no bits are set in pname:flags, and all requested queries are +in the available state, results are written as an array of +32-bit unsigned integer values. The behavior when not all queries +are available, is described <>. + +If ename:VK_QUERY_RESULT_64_BIT is not set and the result overflows a +32-bit value, the value may: either wrap or saturate. Similarly, if +ename:VK_QUERY_RESULT_64_BIT is set and the result overflows a 64-bit +value, the value may: either wrap or saturate. + +If ename:VK_QUERY_RESULT_WAIT_BIT is set, Vulkan will wait for each +query to be in the available state before retrieving the numerical +results for that query. In this case, fname:vkGetQueryPoolResults is +guaranteed to succeed and return ename:VK_SUCCESS if the queries +become available in a finite time (i.e. if they have been issued and not +reset). If queries will never finish (e.g. due to being reset but not +issued), then fname:vkGetQueryPoolResults may: not return in finite time. + +[[queries-wait-bit-not-set]] +If ename:VK_QUERY_RESULT_WAIT_BIT and ename:VK_QUERY_RESULT_PARTIAL_BIT +are both not set then no result values are written to pname:pData for +queries that are in the unavailable state at the time of the call, +and fname:vkGetQueryPoolResults returns ename:VK_NOT_READY. +However, availability state is still written to pname:pData for those +queries if ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is set. + +[NOTE] +.Note +==== +Applications must: take care to ensure that use of the +ename:VK_QUERY_RESULT_WAIT_BIT bit has the desired effect. + +For example, if a query has been used previously and a command buffer +records the commands fname:vkCmdResetQueryPool, fname:vkCmdBeginQuery, and +fname:vkCmdEndQuery for that query, then the query will remain +in the available state until the fname:vkCmdResetQueryPool command +executes on a queue. Applications can: use fences or events to ensure that +an query has already been reset before checking for its results or +availability status. Otherwise, a stale value could be returned from a +previous use of the query. + +The above also applies when ename:VK_QUERY_RESULT_WAIT_BIT is used in +combination with ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT. In this +case, the returned availability status may: reflect the result of a +previous use of the query unless the fname:vkCmdResetQueryPool command +has been executed since the last use of the query. +==== + +[NOTE] +.Note +==== +Applications can: double-buffer query pool usage, with a pool per +frame, and reset queries at the end of the frame in which they +are read. +==== + +If ename:VK_QUERY_RESULT_PARTIAL_BIT is set, ename:VK_QUERY_RESULT_WAIT_BIT +is not set, and the query's status is unavailable, an intermediate +result value between zero and the final result value is written to +pname:pData for that query. + +ename:VK_QUERY_RESULT_PARTIAL_BIT mustnot: be used if the pool's +pname:queryType is ename:VK_QUERY_TYPE_TIMESTAMP. + +If ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is set, the final integer +value written for each query is non-zero if the query's status was +available or zero if the status was unavailable. When +ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is used, implementations must: +guarantee that if they return a non-zero availability value then the +numerical results must: be valid, assuming the results are not reset by a +subsequent command. + +[NOTE] +.Note +==== +Satisfying this guarantee may: require careful ordering by the application, +e.g. to read the availability status before reading the results. +==== include::../validity/protos/vkGetQueryPoolResults.txt[] -Return Value ------------- - -Upon success, fname:vkGetQueryPoolResults returns ename:VK_SUCCESS and query results are -deposited in the buffer pointed to by pname:pData. If only some of the results are available, -fname:vkGetQueryPoolResults returns ename:VK_NOT_READY; in this case, if pname:flags contains -ename:VK_QUERY_RESULT_PARTIAL_BIT, partial results are deposited in the buffer pointed to by -pname:pData. Upon failure, a descriptive error code is returned. See Also -------- -flink:vkCmdCopyQueryPoolResults, elink:VkQueryResultFlags, flink:vkCmdBeginQuery, elink:VkQueryControlFlags +slink:VkDevice, basetypes:VkDeviceSize, slink:VkQueryPool, elink:VkQueryResultFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetQueryPoolResults + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetRenderAreaGranularity.txt b/doc/specs/vulkan/man/vkGetRenderAreaGranularity.txt index 766e2d32cf..cf5dd341ac 100644 --- a/doc/specs/vulkan/man/vkGetRenderAreaGranularity.txt +++ b/doc/specs/vulkan/man/vkGetRenderAreaGranularity.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkGetRenderAreaGranularity(3) ============================= @@ -8,54 +12,64 @@ vkGetRenderAreaGranularity - Returns the granularity for optimal render area. C Specification --------------- +// refBegin vkGetRenderAreaGranularity Returns the granularity for optimal render area. + +To query the render area granularity, call: + include::../protos/vkGetRenderAreaGranularity.txt[] + Parameters ---------- -pname:device:: - The device in which pname:renderPass was created. - -pname:renderPass:: - The render pass for which to query the render area granularity. + * pname:device is the logical device that owns the render pass. + * pname:renderPass is a handle to a render pass. + * pname:pGranularity points to a slink:VkExtent2D structure in which the + granularity is returned. -pname:pGranularity:: - A pointer to a structure containing the return value. Description ----------- -fname:vkGetRenderAreaGranularity returns the granularity at which the ptext:renderArea member of the -slink:VkRenderPassBeginInfo structure should be for optimal performance. pname:device -must be the device which created pname:renderPass. The pname:renderPass -parameter must be the same as the one given in the slink:VkRenderPassBeginInfo structure for which -the render area is relevant. pname:pGranularity must point to an instance of the slink:VkExtent2D -structure, which will be filled if fname:vkGetRenderAreaGranularity is successful. The definitions -of the slink:VkExtent2D structure is: +The conditions leading to an optimal pname:renderArea are: + + * the pname:offset.x member in pname:renderArea is a multiple of the + pname:width member of the returned slink:VkExtent2D (the horizontal + granularity). + * the pname:offset.y member in pname:renderArea is a multiple of the + pname:height of the returned slink:VkExtent2D (the vertical + granularity). + * either the pname:offset.width member in pname:renderArea is a multiple + of the horizontal granularity or pname:offset.x+pname:offset.width is + equal to the pname:width of the pname:framebuffer in the + slink:VkRenderPassBeginInfo. + * either the pname:offset.height member in pname:renderArea is a multiple + of the vertical granularity or pname:offset.y+pname:offset.height is + equal to the pname:height of the pname:framebuffer in the + slink:VkRenderPassBeginInfo. + +Subpass dependencies are not affected by the render area, and apply to the +entire image subresources attached to the framebuffer. Similarly, pipeline +barriers are valid even if their effect extends outside the render area. -include::../structs/VkExtent2D.txt[] +include::../validity/protos/vkGetRenderAreaGranularity.txt[] -The conditions leading to an optimal ptext:renderArea are: -* the ptext:offset.x member of ptext:renderArea must be a multiple of the pname:width member of - the returned slink:VkExtent2D (the horizontal granularity). +See Also +-------- -* the ptext:offset.y member of ptext:renderArea must be a multiple of the pname:height of the - returned slink:VkExtent2D (the vertical granularity). +slink:VkDevice, slink:VkExtent2D, slink:VkRenderPass -* it must be true that either the ptext:offset.width member of ptext:renderArea is a multiple of the - horizontal granularity or that ptext:offset.x + ptext:offset.width is equal to the - pname:width of the ptext:framebuffer in the slink:VkRenderPassBeginInfo. -* it must be true that either the ptext:offset.height member of ptext:renderArea is a multiple of the - vertical granularity or that ptext:offset.y + ptext:offset.height is equal to the - pname:height of the ptext:framebuffer in the slink:VkRenderPassBeginInfo. +Document Notes +-------------- -include::../validity/protos/vkGetRenderAreaGranularity.txt[] +For more information, see the Vulkan Specification at URL -See Also --------- +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkGetRenderAreaGranularity -flink:vkCmdBeginRenderPass +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkGetSwapchainImagesKHR.txt b/doc/specs/vulkan/man/vkGetSwapchainImagesKHR.txt deleted file mode 100644 index 9e55a254bf..0000000000 --- a/doc/specs/vulkan/man/vkGetSwapchainImagesKHR.txt +++ /dev/null @@ -1,41 +0,0 @@ -vkGetSwapchainImagesKHR(3) -========================= - -Name ----- -vkGetSwapchainImagesKHR - obtain the array of presentable images associated with a swapchain. - -C Specification ---------------- - -include::../protos/vkGetSwapchainImagesKHR.txt[] - -Parameters ----------- - -pname:device:: - The VkDevice associated with swapchain. - -pname:swapchain:: - The swwapchain. - -pname:pSwapchainImageCount:: - The number of elements in the array pointed by pSwapchainImages. - -pname:pSwapchainImages:: - The returned array of images. - -Description ------------ - -fname:vkGetSwapchainImagesKHR gets the array of images from a swapchain. - -include::../validity/protos/vkGetSwapchainImagesKHR.txt[] - -See Also --------- - -flink:vkCreateSwapchainKHR, flink:vkCreateSharedSwapchainsKHR, -flink:vkAcquireNextImageKHR, flink:vkDestroySwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkInvalidateMappedMemoryRanges.txt b/doc/specs/vulkan/man/vkInvalidateMappedMemoryRanges.txt index 28308af2aa..d95068ce01 100644 --- a/doc/specs/vulkan/man/vkInvalidateMappedMemoryRanges.txt +++ b/doc/specs/vulkan/man/vkInvalidateMappedMemoryRanges.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkInvalidateMappedMemoryRanges(3) ================================= @@ -8,45 +12,51 @@ vkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory objects. C Specification --------------- +// refBegin vkInvalidateMappedMemoryRanges Invalidate ranges of mapped memory objects. + +To invalidate ranges of non-coherent memory from the host caches, call: + include::../protos/vkInvalidateMappedMemoryRanges.txt[] + Parameters ---------- -pname:device:: - A handle to the logical device which owns the specified memory ranges. + * pname:device is the logical device that owns the memory ranges. + * pname:memoryRangeCount is the length of the pname:pMemoryRanges array. + * pname:pMemoryRanges is a pointer to an array of + slink:VkMappedMemoryRange structures describing the memory ranges to + invalidate. -pname:memoryRangeCount:: - Number of memory ranges described by pname:pMemoryRanges. - -pname:pMemoryRanges:: - Memory ranges to invalidate. Description ----------- -fname:vkInvalidateMappedMemoryRanges invalidates a number of ranges of a number of mapped memory -objects. pname:device is the handle to the device that owns the memory objects referenced by -the call. pname:memoryRangeCount specifies the number of memory ranges to invalidate and pname:pMemoryRanges -is a pointer to an array of slink:VkMappedMemoryRange structures describing the memory ranges -to be invalidated. The definition of slink:VkMappedMemoryRange is: - -include::../structs/VkMappedMemoryRange.txt[] - -The pname:sType member of each element of pname:pMemoryRanges should be set to ename:VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE. -The pname:memory member of the structure specifies the handle to the device memory object containing the -mapped region and pname:offset and pname:size specify the starting offset and size of the region, in bytes, respectively. -Areas of regions that extend outside the mapped portion of the parent memory object are ignored and -have no effect. - -After invalidation, any data stored in the referenced region is discarded and should be considered -stale. +fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to +non-coherent memory are visible to the host. It must: be called after command buffers +that execute and flush (via memory barriers) the device writes have completed, and +before the host will read or write any of those locations. If a range of non-coherent +memory is written by the host and then invalidated without first being flushed, its +contents are undefined. include::../validity/protos/vkInvalidateMappedMemoryRanges.txt[] + See Also -------- -flink:vkFlushMappedMemoryRanges +slink:VkDevice, slink:VkMappedMemoryRange + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkInvalidateMappedMemoryRanges + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkMapMemory.txt b/doc/specs/vulkan/man/vkMapMemory.txt index 3f9f2234fd..f309f20a08 100644 --- a/doc/specs/vulkan/man/vkMapMemory.txt +++ b/doc/specs/vulkan/man/vkMapMemory.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkMapMemory(3) -=============== +============== Name ---- @@ -8,42 +12,84 @@ vkMapMemory - Map a memory object into application address space. C Specification --------------- -include::../protos/vkMapMemory.txt[] - -Parameters ----------- +// refBegin vkMapMemory Map a memory object into application address space. -pname:device:: - Logical device which owns the memory object. +To retrieve a host virtual address pointer to a region of a mappable memory +object, call: -pname:memory:: - A handle to the memory object to map. +include::../protos/vkMapMemory.txt[] -pname:offset:: - Start offset of the memory region to map. -pname:size:: - Size of the memory region to map. +Parameters +---------- -pname:flags:: - This parameter is reserved and must be zero. + * pname:device is the logical device that owns the memory. + * pname:memory is the sname:VkDeviceMemory object to be mapped. + * pname:offset is a zero-based byte offset from the beginning of the + memory object. + * pname:size is the size of the memory range to map, or + ename:VK_WHOLE_SIZE to map from pname:offset to the end of the + allocation. + * pname:flags is reserved for future use. + * pname:ppData points to a pointer in which is returned a host-accessible + pointer to the beginning of the mapped range. This pointer minus + pname:offset must: be aligned to at least + sname:VkPhysicalDeviceLimits::pname:minMemoryMapAlignment. -pname:ppData:: - The pointer to a variable to receive the resulting application-visible address. Description ----------- -fname:vkMapMemory maps a region of the memory object specified in `mem` into application -address space and returns the resulting pointer in the variable pointed to by `ppData`. -The mapped memory region starts at offset pname:offset and has a size of pname:size. -The `flags` parameter is reserved and should be set to zero. +It is an application error to call fname:vkMapMemory on a memory object that +is already mapped. + +[[memory-device-hostaccess-hazards]] +fname:vkMapMemory does not check whether the device memory is currently in +use before returning the host-accessible pointer. The application +must: guarantee that any previously submitted command that writes to this +range has completed before the host reads from or writes to that +range, and that any previously submitted command that reads from that +range has completed before the host writes to that region (see +<> +for details on fulfilling such a guarantee). If the device memory was +allocated without the ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set, +these guarantees must: be made for an extended range: the application +must: round down the start of the range to the nearest multiple of +sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize, and round the end +of the range up to the nearest multiple of +sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize. + +While a range of device memory is mapped for host access, the application +is responsible for synchronizing both device and host access to that memory +range. + +[NOTE] +.Note +==== +It is important for the application developer to become meticulously +familiar with all of the mechanisms described in the chapter on +<> as they are crucial +to maintaining memory access ordering. +==== include::../validity/protos/vkMapMemory.txt[] + See Also -------- -flink:vkUnmapMemory, flink:vkFlushMappedMemoryRanges, flink:vkInvalidateMappedMemoryRanges +slink:VkDevice, slink:VkDeviceMemory, basetypes:VkDeviceSize, elink:VkMemoryMapFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkMapMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkMergePipelineCaches.txt b/doc/specs/vulkan/man/vkMergePipelineCaches.txt index 12dd44a7bb..f147d6d5f6 100644 --- a/doc/specs/vulkan/man/vkMergePipelineCaches.txt +++ b/doc/specs/vulkan/man/vkMergePipelineCaches.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkMergePipelineCaches(3) ======================== @@ -8,34 +12,54 @@ vkMergePipelineCaches - Combine the data stores of pipeline caches. C Specification --------------- +// refBegin vkMergePipelineCaches Combine the data stores of pipeline caches. + +Pipeline cache objects can: be merged using the command: + include::../protos/vkMergePipelineCaches.txt[] + Parameters ---------- -pname:device:: - A handle to the device that is the parent of the pipeline caches. + * pname:device is the logical device that owns the pipeline cache objects. + * pname:dstCache is the handle of the pipeline cache to merge results + into. + * pname:srcCacheCount is the length of the pname:pSrcCaches array. + * pname:pSrcCaches is an array of pipeline cache handles, which will be + merged into pname:dstCache. The previous contents of pname:dstCache are + included after the merge. -pname:dstCache:: - The pipeline cache the combined data will be stored into. - -pname:srcCacheCount:: - The number of pipeline caches in the pSrcCaches array. - -pname:pSrcCaches:: - An array of pipeline caches to be combined. Description ----------- -This command combines the caches in the pname:pSrcCaches array, storing the -result in pname:dstCache. +[NOTE] +.Note +==== +The details of the merge operation are implementation dependent, but +implementations should: merge the contents of the specified pipelines and +prune duplicate entries. +==== include::../validity/protos/vkMergePipelineCaches.txt[] + See Also -------- -flink:vkCreatePipelineCache, flink:vkCreateGraphicsPipelines, flink:vkCreateComputePipelines, flink:vkGetPipelineCacheData +slink:VkDevice, slink:VkPipelineCache + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkMergePipelineCaches + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkQueueBindSparse.txt b/doc/specs/vulkan/man/vkQueueBindSparse.txt index e7e74391cb..f922c91b71 100644 --- a/doc/specs/vulkan/man/vkQueueBindSparse.txt +++ b/doc/specs/vulkan/man/vkQueueBindSparse.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkQueueBindSparse(3) ==================== @@ -8,155 +12,65 @@ vkQueueBindSparse - Bind device memory to a sparse resource object. C Specification --------------- +// refBegin vkQueueBindSparse Bind device memory to a sparse resource object. + +To submit sparse binding operations to a queue, call: + include::../protos/vkQueueBindSparse.txt[] + Parameters ---------- -pname:queue:: - The queue upon which to perform the operation. + * pname:queue is the queue that the sparse binding operations will be submitted to. + * pname:bindInfoCount is the number of elements in the pname:pBindInfo array. + * pname:pBindInfo is an array of slink:VkBindSparseInfo structures, + each specifying a sparse binding submission batch. + * pname:fence is an optional handle to a fence to be signaled. If + pname:fence is not dlink:VK_NULL_HANDLE, it defines a + <>. -pname:bindInfoCount:: - The number of binding operations to perform. - -pname:pBindInfo:: - A pointer to an array of pname:bindInfoCount data structures describing - the binding operations to perform. - -pname:fence:: - A handle to a fence object that will be signaled when the binding - operation completes. Description ----------- -fname:vkQueueBindSparse binds memory to sparse resources. The number of -binding operations to perform is specified in pname:bindInfoCount and -the binding operation takes place on the queue specified in pname:queue. -pname:queue must be the handle to a queue that is a member of a family -that supports the ename:VK_QUEUE_SPARSE_MEMMGR_BIT capability. - -pname:pBindInfo is a pointer to an array of pname:bindInfoCount -slink:VkBindSparseInfo structures describing each of the binding operations. -The definition of slink:VkBindSparseInfo is: - -include::../structs/VkBindSparseInfo.txt[] - -The pname:sType member of slink:VkBindSparseInfo should be -ename:VK_STRUCTURE_TYPE_BIND_SPARSE_INFO. The pname:pNext member is reserved -for use by extensions and should be set to code:NULL. - -The pname:waitSemaphoreCount member specifies the number of semaphores -that should be waited on before the binding operation takes place. -pname:pWaitSemaphores is a pointer to an array of basetype:VkSemaphore -objects to wait on. If pname:waitSemaphoreCount is zero then the value -of pname:pWaitSemaphores is ignored and the command will not wait before -performing the bind operations. - -The pname:bufferBindCount parameter specifies the number of binding -operations to apply to buffer objects. The pname:pBufferBinds parameter -is a pointer to an array of pname:bufferBindCount slink:VkSparseBufferMemoryBindInfo -structures describing the binding operations for buffers to be performed -by the command. The definition of slink:VkSparseBufferMemoryBindInfo is: - -include::../structs/VkSparseBufferMemoryBindInfo.txt[] - -The pname:buffer member of slink:VkSparseBufferMemoryBindInfo specifies the -target buffer, pname:bindCount specifies the number of binding operations -to apply to that buffer, and pname:pBinds is a pointer to an array of -slink:VkSparseMemoryBind structures describing the bindings. If -pname:bindCount is zero then the value of pname:pBinds is ignored and no -bindings are performed. The definition of slink:VkSparseMemoryBind is: - -include::../structs/VkSparseMemoryBind.txt[] - -For each element of the array of slink:VkSparseMemoryBind structures, -pname:resourceOffset and pname:size specify the starting offset -and size of the region in the buffer. Both are specified in bytes. -pname:memoryOffset specifies the offset of the region of the memory -object specified by pname:memory that is to be bound to the specified region -in the buffer object. pname:memoryOffset is also specified in bytes. -pname:resourceOffset, pname:size and pname:memoryOffset must each satisfy -the alignment requirements of the buffer. This is returned in the -ptext:alignment field of the slink:VkMemoryRequirements structure filled by a call to -flink:vkGetBufferMemoryRequirements. - -The pname:flags member of the slink:VkSparseMemoryBind structure is a -bitfield comprising members of the elink:VkSparseMemoryBindFlagBits -enumeration, the definition of which is: - -include::../enums/VkSparseMemoryBindFlagBits.txt[] - -All other bits in pname:flags are reserved and should be set to zero. - -The ptext:imageOpaqueBindCount member specifies the number of opaque -image memory binding operations to execute and ptext:pImageOpaqueBinds -is a pointer to an array of ptext:imageOpaqueBindCount -slink:VkSparseImageOpaqueMemoryBindInfo structures describing those -operations. If ptext:imageOpaqueBindCount is zero then the value of -ptext:pImageOpaqueBinds is ignored and no binding operations are performed. -The definition of slink:VkSparseImageOpaqueMemoryBindInfo is: - -include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[] - -The pname:image member of the slink:VkSparseImageOpaqueMemoryBindInfo structure -specifies the image that is the target of the binding operation. pname:bindCount -specifies the number of binding operations to be applied to pname:image and -pname:pBinds is a pointer to an array of slink:VkSparseMemoryBind structures -describing those operations. If pname:bindCount is zero then the value of -pname:pBinds is ignored. Opaque memory binding operations are expressed -in terms of byte offsets. The slink:VkSparseMemoryBind structures pointed -to by the pname:pBinds member of slink:VkSparseImageOpaqueMemoryBindInfo -are interpreted as described for buffers above. - -The ptext:imageBindCount member of the slink:VkBindSparseInfo specifies the -number of non-opaque image bindings to perform, and the ptext:pImageBinds -member of the structure is a pointer to an array of ptext:imageBindCount -slink:VkSparseImageMemoryBindInfo structures describing those operations. -If ptext:imageBindCount is zero then the value of ptext:pImageBinds is -ignored. The definition of slink:VkSparseImageMemoryBindInfo is: - -include::../structs/VkSparseImageMemoryBindInfo.txt[] - -Within slink:VkSparseImageMemoryBindInfo, the pname:image member specifies -the image that is to be the target of the binding operation. pname:bindCount -specifies the number of binding operations to execute and pname:pBinds -is a pointer to an array of pname:bindCount slink:VkSparseImageMemoryBind -structes describing those operations. The definition of -slink:VkSparseImageMemoryBind is: - -include::../structs/VkSparseImageMemoryBind.txt[] - -The pname:subresource member of slink:VkSparseImageMemoryBind specifies the -image subresource within the image to bind memory to. The pname:offset and -pname:extent members specify the region within the image subresource -to bind memory to. pname:offset and pname:extent are instances of the -slink:VkOffset3D and slink:VkExtent3D structures, respectively, and are -expressed in texels. The pname:memoryOffset member specifies the offset within -the memory object specified by pname:memory from which to bind memory. -pname:memoryOffset is expressed in bytes. Its value and the values contained -in pname:offset and pname:extent must satisfy device-specific alignment -requirements. - -The pname:flags member within slink:VkSparseImageMemoryBind has the same -interpretation as the similarly named member in slink:VkSparseMemoryBind. - -The ptext:signalSemaphoreCount parameter specifies the number of semaphores -to signal after the binding operations are complete. ptext:pSignalSemaphores -is a pointer to an array of ptext:signalSemaphoreCount basetype:VkSemaphore -objects to signal at this point. If ptext:signalSemaphoreCount is zero -then the value of ptext:pSignalSemaphores is ignored and no semaphores are -signaled as a result of the operation. +fname:vkQueueBindSparse is a +<>, with each batch +defined by an element of pname:pBindInfo as an instance of the +slink:VkBindSparseInfo structure. + +Within a batch, a given range of a resource must: not be bound more than +once. Across batches, if a range is to be bound to one allocation and offset +and then to another allocation and offset, then the application must: +guarantee (usually using semaphores) that the binding operations are +executed in the correct order, as well as to order binding operations +against the execution of command buffer submissions. + +As no operation to flink:vkQueueBindSparse causes any pipeline stage to +access memory, synchronization primitives used in this command effectively +only define execution dependencies. + +Additional information about fence and semaphore operation is described in +<>. include::../validity/protos/vkQueueBindSparse.txt[] + See Also -------- -flink:vkQueueSubmit, -flink:vkBindBufferMemory, -flink:vkGetBufferMemoryRequirements, -flink:vkGetImageMemoryRequirements, -flink:vkBindImageMemory +slink:VkBindSparseInfo, slink:VkFence, slink:VkQueue + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkQueueBindSparse + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkQueuePresentKHR.txt b/doc/specs/vulkan/man/vkQueuePresentKHR.txt deleted file mode 100644 index 6b95418905..0000000000 --- a/doc/specs/vulkan/man/vkQueuePresentKHR.txt +++ /dev/null @@ -1,40 +0,0 @@ -vkQueuePresentKHR(3) -=================== - -Name ----- -vkQueuePresentKHR - queue an image for presentation. - -C Specification ---------------- - -include::../protos/vkQueuePresentKHR.txt[] - -Parameters ----------- - -pname:queue:: - A VkQueue that is capable of presentation to the target surface. - -pname:pPresentInfo:: - A pointer to a VkPresentInfoKHR structure specifying the parameters of the presentation. - -Description ------------ - -fname:vkQueuePresentKHR queues an image for presentation. - -pname:pPresentInfo is an instance of the slink:VkPresentInfoKHR -structure, the definition of which is: - -include::../structs/VkPresentInfoKHR.txt[] - -include::../validity/protos/vkQueuePresentKHR.txt[] - -See Also --------- - -flink:vkGetPhysicalDeviceSurfacePresentModesKHR, flink:vkAcquireNextImageKHR, -flink:vkCreateSwapchainKHR - -include::footer.txt[] diff --git a/doc/specs/vulkan/man/vkQueueSubmit.txt b/doc/specs/vulkan/man/vkQueueSubmit.txt index 163bc2a3ac..ff1251b91e 100644 --- a/doc/specs/vulkan/man/vkQueueSubmit.txt +++ b/doc/specs/vulkan/man/vkQueueSubmit.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkQueueSubmit(3) -================= +================ Name ---- @@ -8,72 +12,72 @@ vkQueueSubmit - Submits a sequence of semaphores or command buffers to a queue. C Specification --------------- +// refBegin vkQueueSubmit Submits a sequence of semaphores or command buffers to a queue. + +To submit command buffers to a queue, call: + include::../protos/vkQueueSubmit.txt[] + Parameters ---------- -pname:queue:: - The queue to which to submit work. + * pname:queue is the queue that the command buffers will be submitted to. + * pname:submitCount is the number of elements in the pname:pSubmits array. + * pname:pSubmits is a pointer to an array of slink:VkSubmitInfo structures, + each specifying a command buffer submission batch. + * pname:fence is an optional handle to a fence to be signaled. If + pname:fence is not dlink:VK_NULL_HANDLE, it defines a + <>. -pname:submitCount:: - The number of submissions to make. - -pname:pSubmits:: - The address of an array of pname:submitCount slink:VkSubmitInfo - structures to submit to pname:queue. - -pname:fence:: - An optional fence object that will be signaled when all command buffers referenced in - pname:pSubmits have completed execution. Description ----------- -fname:vkQueueSubmit makes one or more submissions to a the queue specified in pname:queue. -Each submision is represented by an element of an array of slink:VkSubmitInfo structures, -the address of which is specified in pname:pSubmits. The length of the array is -given by pname:submitCount. If pname:submitCount is zero then, pSubmits may be code:NULL, -in which case, no work is submitted to the queue. The definition of slink:VkSubmitInfo -is: - -include::../structs/VkSubmitInfo.txt[] - -If the pname:waitSemaphoreCount member of slink:VkSubmitInfo is not zero, -then pname:pWaitSemaphores is a pointer to an array of -pname:waitSemaphoreCount sname:VkSemaphore handles which will be waited on -before any further work is performed by the queue. - -After all semaphores specified in pname:pWaitSemaphores (if any) have become -signaled, the command buffers specified in pname:pCommandBuffers are -executed and those semaphores are again reset to the unsignaled state. -pname:pCommandBuffers is a pointer to an array of pname:commandBufferCount -sname:VkCommandBuffer handles to the command buffers to execute. If -pname:commandBufferCount is zero then pname:pCommandBuffers may be code:NULL -and no work is performed on the queue as a result. - -After all work specified in pname:pCommandBuffers (if any) has completed, -the semaphores specified in pname:pSignalSemaphores are signaled. -pname:pSignalSemaphores is a pointer to an array of -pname:signalSemaphoreCount sname:VkSemaphore handles. If -pname:signalSemaphoreCount is zero then pname:pSignalSemaphores may be -code:NULL. - -pname:fence is an optional handle to a fence which, if not code:VK_NULL_HANDLE, is -signaled when execution of the all elements of pname:pCommandBuffers in pname:pSubmits is completed. -If pname:submitCount is zero, but pname:fence is not code:NULL, the fence will still -be submitted to the queue and will become signaled when all work previusly submitted -to the queue has completed. - -An implementation may, at its option, choose to merge the submissions specified in -pname:pSubmits, but at least one submission is made to the queue and the work represented -by pname:pSubmits is guaranteed to complete in finite time. +[NOTE] +.Note +==== +Submission can be a high overhead operation, and applications should: +attempt to batch work together into as few calls to fname:vkQueueSubmit as +possible. +==== + +fname:vkQueueSubmit is a +<>, with each batch +defined by an element of pname:pSubmits as an instance of the +slink:VkSubmitInfo structure. + +Fence and semaphore operations submitted with flink:vkQueueSubmit have +additional ordering constraints compared to other submission commands, +with dependencies involving previous and subsequent queue operations. +Information about these additional constraints can be found in the +<> and +<> sections of +<>. + +Details on the interaction of pname:pWaitDstStageMask with synchronization +are described in the +<> section of +<>. include::../validity/protos/vkQueueSubmit.txt[] + See Also -------- -flink:vkBeginCommandBuffer, flink:vkEndCommandBuffer, flink:vkCreateSemaphore +slink:VkFence, slink:VkQueue, slink:VkSubmitInfo + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkQueueSubmit + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkQueueWaitIdle.txt b/doc/specs/vulkan/man/vkQueueWaitIdle.txt index cbc4f285d8..0a6802c419 100644 --- a/doc/specs/vulkan/man/vkQueueWaitIdle.txt +++ b/doc/specs/vulkan/man/vkQueueWaitIdle.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkQueueWaitIdle(3) -=================== +================== Name ---- @@ -8,29 +12,43 @@ vkQueueWaitIdle - Wait for a queue to become idle. C Specification --------------- +// refBegin vkQueueWaitIdle Wait for a queue to become idle. + +To wait on the host for the completion of outstanding queue operations for a given queue, call: + include::../protos/vkQueueWaitIdle.txt[] + Parameters ---------- -pname:queue:: - A handle to the queue that is to become idle. + * pname:queue is the queue on which to wait. + Description ----------- -fname:vkQueueWaitIdle waits for all work submitted to the specified queue to complete and for -the queue to become idle. After the queue becomes idle, the following guarantees are made: - -* Any command buffers previously submitted to the queue have completed execution. -* Any events set or reset by command buffers submitted to that queue will be in their new state. -* Any semaphores signaled by previous calls to flink:vkQueueSubmit will have reached signaled state. +fname:vkQueueWaitIdle is equivalent to submitting a fence to a queue and +waiting with an infinite timeout for that fence to signal. include::../validity/protos/vkQueueWaitIdle.txt[] + See Also -------- -flink:vkDeviceWaitIdle, flink:vkQueueSubmit +slink:VkQueue + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkQueueWaitIdle + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkResetCommandBuffer.txt b/doc/specs/vulkan/man/vkResetCommandBuffer.txt index bef2608ff9..6ebf365301 100644 --- a/doc/specs/vulkan/man/vkResetCommandBuffer.txt +++ b/doc/specs/vulkan/man/vkResetCommandBuffer.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkResetCommandBuffer(3) ======================= @@ -8,36 +12,54 @@ vkResetCommandBuffer - Reset a command buffer. C Specification --------------- +// refBegin vkResetCommandBuffer Reset a command buffer. + +To reset command buffers, call: + include::../protos/vkResetCommandBuffer.txt[] + Parameters ---------- -pname:commandBuffer:: - Command buffer to reset. + * pname:commandBuffer is the command buffer to reset. The command buffer + can: be in any state, and is put in the initial state. + * pname:flags is a bitmask controlling the reset operation. Bits which + can: be set include: ++ +-- +// refBegin VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer reset +include::../enums/VkCommandBufferResetFlagBits.txt[] +-- ++ +If pname:flags includes ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT, +then most or all memory resources currently owned by the command buffer +should: be returned to the parent command pool. If this flag is not set, +then the command buffer may: hold onto memory resources and reuse them when +recording commands. -pname:flags:: - Flags controlling the behavior of the Reset operation. For more details, - see elink:VkCommandBufferResetFlags. Description ----------- -fname:vkResetCommandBuffer resets the command buffer specified in pname:commandBuffer to a -state where it can begin recording commands, i.e. it can be rebuilt by calling -fname:vkBeginCommandBuffer. Note that it is necessary to reset a command buffer -which encountered an error during build before it can be reused. - -If pname:flags includes ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT, then most or -all memory resources currently owned by the command buffer should be returned to the -parent command pool. If this flag is not set, then the command buffer may hold onto -memory resources and reuse them when recording commands. - include::../validity/protos/vkResetCommandBuffer.txt[] + See Also -------- -flink:vkBeginCommandBuffer, flink:vkEndCommandBuffer +slink:VkCommandBuffer, elink:VkCommandBufferResetFlags + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkResetCommandBuffer + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkResetCommandPool.txt b/doc/specs/vulkan/man/vkResetCommandPool.txt index c1f10e9135..6389602ed6 100644 --- a/doc/specs/vulkan/man/vkResetCommandPool.txt +++ b/doc/specs/vulkan/man/vkResetCommandPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkResetCommandPool(3) ===================== @@ -8,40 +12,57 @@ vkResetCommandPool - Reset a command pool. C Specification --------------- +// refBegin vkResetCommandPool Reset a command pool. + +To reset a command pool, call: + include::../protos/vkResetCommandPool.txt[] + Parameters ---------- -pname:device:: - The device the command pool was created from. + * pname:device is the logical device that owns the command pool. + * pname:commandPool is the command pool to reset. + * pname:flags contains additional flags controlling the behavior of the + reset. Bits which can: be set include: ++ +-- +// refBegin VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool reset +include::../enums/VkCommandPoolResetFlagBits.txt[] +-- ++ +If pname:flags includes ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, +resetting a command pool recycles all of the resources from the command pool +back to the system. -pname:commandPool:: - Command pool to reset. - -pname:flags:: - Flags controlling the behavior of the Reset operation. For more details, - see elink:VkCmdPoolResetFlags. Description ----------- -fname:vkResetCommandPool resets the command pool specified in pname:commandPool to a -state that depends on the pname:flags. If pname:flags includes -ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, then the pool's memory is returned -to the system. If ename:VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT is not used, then the -pool's memory is return to an "unallocated" state which command buffers can allocate -from. - -Resetting a pool implicitly resets all command buffers that were created from it, where -resetting the command buffers is treated as if ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT -were used. +Resetting a command pool recycles all of the resources from all of the +command buffers allocated from the command pool back to the command pool. +All command buffers that have been allocated from the command pool are put +in the initial state. include::../validity/protos/vkResetCommandPool.txt[] + See Also -------- -flink:vkCreateCommandPool, flink:vkDestroyCommandPool +slink:VkCommandPool, elink:VkCommandPoolResetFlags, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkResetCommandPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkResetDescriptorPool.txt b/doc/specs/vulkan/man/vkResetDescriptorPool.txt index d2b98c82ba..6a2186c174 100644 --- a/doc/specs/vulkan/man/vkResetDescriptorPool.txt +++ b/doc/specs/vulkan/man/vkResetDescriptorPool.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkResetDescriptorPool(3) ======================== @@ -8,29 +12,47 @@ vkResetDescriptorPool - Resets a descriptor pool object. C Specification --------------- +// refBegin vkResetDescriptorPool Resets a descriptor pool object. + +To return all descriptor sets allocated from a given pool to the pool, +rather than freeing individual descriptor sets, call: + include::../protos/vkResetDescriptorPool.txt[] + Parameters ---------- -pname:device:: - Handle to the logical device which owns the descriptor pool object. + * pname:device is the logical device that owns the descriptor pool. + * pname:descriptorPool is the descriptor pool to be reset. + * pname:flags is reserved for future use. -pname:descriptorPool:: - Handle to the descriptor pool object which needs to be reset. Description ----------- -fname:vkResetDescriptorPool returns all descriptor sets allocated from pname:descriptorPool to -the pool. This returns the pool to its initial state. pname:device must be the handle to the device -that owns the pool. +Resetting a descriptor pool recycles all of the resources from all of the +descriptor sets allocated from the descriptor pool back to the descriptor +pool, and the descriptor sets are implicitly freed. include::../validity/protos/vkResetDescriptorPool.txt[] + See Also -------- -flink:vkCreateDescriptorPool, flink:vkAllocateDescriptorSets, flink:vkFreeDescriptorSets +slink:VkDescriptorPool, elink:VkDescriptorPoolResetFlags, slink:VkDevice + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkResetDescriptorPool + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkResetEvent.txt b/doc/specs/vulkan/man/vkResetEvent.txt index 6b1b4c52a3..d04301fa91 100644 --- a/doc/specs/vulkan/man/vkResetEvent.txt +++ b/doc/specs/vulkan/man/vkResetEvent.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkResetEvent(3) -================ +=============== Name ---- @@ -8,27 +12,41 @@ vkResetEvent - Reset an event to non-signaled state. C Specification --------------- +// refBegin vkResetEvent Reset an event to non-signaled state. + +To set the state of an event to unsignaled from the host, call: + include::../protos/vkResetEvent.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the event. + * pname:device is the logical device that owns the event. + * pname:event is the event to reset. -pname:event:: - A handle to the event object to reset. Description ----------- -fname:vkResetEvent resets the event object specified by pname:event to the non-signaled state. - include::../validity/protos/vkResetEvent.txt[] + See Also -------- -flink:vkSetEvent, flink:vkCreateEvent +slink:VkDevice, slink:VkEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkResetEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkResetFences.txt b/doc/specs/vulkan/man/vkResetFences.txt index d00c2bf75c..95325ae2a9 100644 --- a/doc/specs/vulkan/man/vkResetFences.txt +++ b/doc/specs/vulkan/man/vkResetFences.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkResetFences(3) ================ @@ -8,31 +12,47 @@ vkResetFences - Resets one or more fence objects. C Specification --------------- +// refBegin vkResetFences Resets one or more fence objects. + +To reset the status of one or more fences to the unsignaled state, use the +command: + include::../protos/vkResetFences.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the specified fences. - -pname:fenceCount:: - Number of fences specified under pname:pFences. + * pname:device is the logical device that owns the fences. + * pname:fenceCount is the number of fences to reset. + * pname:pFences is a pointer to an array of pname:fenceCount fence + handles to reset. -pname:pFences:: - Fences to reset. Description ----------- -fname:vkResetFences resets the status of the pname:fenceCount fences whose -handles are passed in the pname:pFences array to unsignaled. +If a fence is already in the unsignaled state, then resetting it has no +effect. include::../validity/protos/vkResetFences.txt[] + See Also -------- -flink:vkCreateFence, flink:vkDestroyFence, flink:vkGetFenceStatus, flink:vkWaitForFences +slink:VkDevice, slink:VkFence + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkResetFences + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. + +include::footer.txt[] -include::footer.txt[] \ No newline at end of file diff --git a/doc/specs/vulkan/man/vkSetEvent.txt b/doc/specs/vulkan/man/vkSetEvent.txt index 5e8d91aedd..92e347fe7d 100644 --- a/doc/specs/vulkan/man/vkSetEvent.txt +++ b/doc/specs/vulkan/man/vkSetEvent.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkSetEvent(3) -============== +============= Name ---- @@ -8,31 +12,41 @@ vkSetEvent - Set an event to signaled state. C Specification --------------- +// refBegin vkSetEvent Set an event to signaled state. + +To set the state of an event to signaled from the host, call: + include::../protos/vkSetEvent.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the event. + * pname:device is the logical device that owns the event. + * pname:event is the event to set. -pname:event:: - Handle to the event object to signal. Description ----------- -fname:vkSetEvent sets the event object specified by pname:event to signaled state. -pname:event must be an event object owned by pname:device. Subsequent calls to -flink:vkGetEventStatus on pname:event will return the new status. If any command -buffers are currently executing on any queue on pname:device and are waiting on -the event specified by pname:event, then they will be unblocked. - include::../validity/protos/vkSetEvent.txt[] + See Also -------- -flink:vkResetEvent, flink:vkGetEventStatus, flink:vkCmdSetEvent, flink:vkCmdWaitEvents +slink:VkDevice, slink:VkEvent + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkSetEvent + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkUnmapMemory.txt b/doc/specs/vulkan/man/vkUnmapMemory.txt index 365ef0a981..3d386205ca 100644 --- a/doc/specs/vulkan/man/vkUnmapMemory.txt +++ b/doc/specs/vulkan/man/vkUnmapMemory.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkUnmapMemory(3) -================= +================ Name ---- @@ -8,27 +12,42 @@ vkUnmapMemory - Unmap a previously mapped memory object. C Specification --------------- +// refBegin vkUnmapMemory Unmap a previously mapped memory object. + +To unmap a memory object once host access to it is no longer needed by the +application, call: + include::../protos/vkUnmapMemory.txt[] + Parameters ---------- -pname:device:: - Logical device which owns the memory object. + * pname:device is the logical device that owns the memory. + * pname:memory is the memory object to be unmapped. -pname:memory:: - A handle to the memory object to unmap. Description ----------- -fname:vkUnmapMemory unmaps the previously mapped memory object specified by pname:memory. - include::../validity/protos/vkUnmapMemory.txt[] + See Also -------- -flink:vkMapMemory +slink:VkDevice, slink:VkDeviceMemory + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkUnmapMemory + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkUpdateDescriptorSets.txt b/doc/specs/vulkan/man/vkUpdateDescriptorSets.txt index e68a6fa414..e3c52b9117 100644 --- a/doc/specs/vulkan/man/vkUpdateDescriptorSets.txt +++ b/doc/specs/vulkan/man/vkUpdateDescriptorSets.txt @@ -1,3 +1,7 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkUpdateDescriptorSets(3) ========================= @@ -8,117 +12,64 @@ vkUpdateDescriptorSets - Update the contents of a descriptor set object. C Specification --------------- -include::../protos/vkUpdateDescriptorSets.txt[] +// refBegin vkUpdateDescriptorSets Update the contents of a descriptor set object. -Parameters ----------- +Once allocated, descriptor sets can: be updated with a combination of write +and copy operations. To update descriptor sets, call: -pname:device:: - A handle to the device on which to update descriptor sets. +include::../protos/vkUpdateDescriptorSets.txt[] -pname:descriptorWriteCount:: - Number of descriptor set write requests. -pname:pDescriptorWrites:: - Pointer to an array of pname:descriptorWriteCount number of - slink:VkWriteDescriptorSet structures each specifying the parameters of - a descriptor write request to a descriptor set. +Parameters +---------- -pname:descriptorCopyCount:: - Number of descriptor set copy requests. + * pname:device is the logical device that updates the descriptor sets. + * pname:descriptorWriteCount is the number of elements in the + pname:pDescriptorWrites array. + * pname:pDescriptorWrites is a pointer to an array of + slink:VkWriteDescriptorSet structures describing the descriptor sets to + write to. + * pname:descriptorCopyCount is the number of elements in the + pname:pDescriptorCopies array. + * pname:pDescriptorCopies is a pointer to an array of + slink:VkCopyDescriptorSet structures describing the descriptor sets to + copy between. -pname:pDescriptorCopies:: - Pointer to an array of pname:descriptorCopyCount number of - slink:VkCopyDescriptorSet structures each specifying the parameters of a - descriptor copy request between two descriptor sets. Description ----------- -fname:vkUpdateDescriptorSets allows performing one or more descriptor set -update operations. - -There are two types of descriptor set update operations: descriptor write and descriptor copy requests. - -Descriptor write requests allow writing descriptor data coming from buffer view, image view, and sampler objects -to a range of descriptors within a destination descriptor set. Each descriptor write request is described -by an instance of the sname:VkWriteDescriptorSet structure. The definition of this structure is: - -include::../structs/VkWriteDescriptorSet.txt[] - -Additionally, the structure contains a pointer to an array of pname:descriptorCount -data structures that specify the buffer view, image view, and/or sampler -objects from where the descriptor data is sourced. The information about each -of the descriptor updates is stored in up to three arrays, ptext:pTexelBufferInfo, -which is an array of stext:VkBufferView handles, and pname:pImageInfo and -pname:pBufferInfo, which are arrays of slink:VkDescriptorImageInfo and -slink:VkDescriptorBufferInfo structures, respectively. The definitions of these -structures are as follows: - -include::../structs/VkDescriptorImageInfo.txt[] -include::../structs/VkDescriptorBufferInfo.txt[] - -Which of the ptext:pImageInfo, ptext:pBufferInfo and ptext:pTexelBufferView arrays is used -is determined from the value of ptext:descriptorType, as follows: - -If descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, -ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, -then the entries in ptext:pBufferInfo are used to update the descriptors and ptext:pImageInfo and -ptext:pTexelBufferInfo parameters are ignored. For each entry of ptext:pBufferInfo, ptext:buffer -specifies the handle of the buffer to bind to the descriptor set, and ptext:offset and ptext:range -specify the starting offset and size of the range of the buffer to bind, respectively, in bytes. - -For ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC -descriptor types, ptext:offset is the base offset from which the dynamic offset is applied and ptext:range -is the static size used for all dynamic offsets. - -If ptext:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or -ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, then the ptext:pTexelBufferView array are used to -update the descriptors, and the ptext:pImageInfo and ptext:pBufferInfo parameters are ignored. - -If ptext:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER, ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, -ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or -ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the members in ptext:pImageInfo array are used to update the -descriptors and the ptext:pBufferInfo and ptext:pTexelBufferInfo members are ignored. - -Within each element of the ptext:pImageInfo array, the ptext:sampler member is a handle to the -sampler to bind and is used for descriptor types ename:VK_DESCRIPTOR_TYPE_SAMPLER and -ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER. The ptext:imageView is the image view handle -used for descriptor updates of type ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, -ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. -The ptext:imageLayout member specifies the layout of the image and is used with descriptor types -ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, -ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. - -A single descriptor write request may only update a continuous range of descriptors of the same type -though that range may cross binding boundaries. See slink:VkWriteDescriptorSet for more information. - -Descriptor copy requests allow copying a range of descriptors between a source and destination descriptor set. -Each descriptor copy request is described by an instance of the sname:VkCopyDescriptorSet structure, the definition -of which is: - -include::../structs/VkCopyDescriptorSet.txt[] - -This structure specifies the source and destination descriptor sets of the -copy operation in the pname:srcSet and pname:dstSet members, respectively. -The pname:srcBinding and pname:srcArrayElement members of the structure -specify the first entry in the source descriptor set that should be copied; -the pname:dstBinding and pname:dstArrayElement members specify the first -entry in the destination descriptor set where the source descriptors should -be copied to, while the pname:descriptorCount member specifies the number of -descriptors to copy. A single descriptor copy request may only copy between -two continuous ranges of descriptors of the same type though both the source -and desintation ranges may cross binding boundaries. See -slink:VkCopyDescriptorSet for more information. - -Attempting to update the contents of a descriptor set that is used by any command buffer that is pending -execution may result in undefined behavior. +The operations described by pname:pDescriptorWrites are performed first, +followed by the operations described by pname:pDescriptorCopies. Within +each array, the operations are performed in the order they appear in the +array. + +Each element in the pname:pDescriptorWrites array describes an operation +updating the descriptor set using descriptors for resources specified in the +structure. + +Each element in the pname:pDescriptorCopies array is a +slink:VkCopyDescriptorSet structure describing an operation copying +descriptors between sets. include::../validity/protos/vkUpdateDescriptorSets.txt[] + See Also -------- -slink:VkWriteDescriptorSet, slink:VkCopyDescriptorSet, slink:VkDescriptorBufferInfo, slink:VkDescriptorImageInfo +slink:VkCopyDescriptorSet, slink:VkDevice, slink:VkWriteDescriptorSet + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkUpdateDescriptorSets + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/man/vkWaitForFences.txt b/doc/specs/vulkan/man/vkWaitForFences.txt index 350b954caf..337947bc3a 100644 --- a/doc/specs/vulkan/man/vkWaitForFences.txt +++ b/doc/specs/vulkan/man/vkWaitForFences.txt @@ -1,5 +1,9 @@ +// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + vkWaitForFences(3) -=================== +================== Name ---- @@ -8,49 +12,86 @@ vkWaitForFences - Wait for one or more fences to become signaled. C Specification --------------- -include::../protos/vkWaitForFences.txt[] +// refBegin vkWaitForFences Wait for one or more fences to become signaled. -Parameters ----------- +To cause the host to wait until any one or all of a group of fences +is signaled, use the command: -pname:device:: - The device owning the fences to be waited upon. +include::../protos/vkWaitForFences.txt[] -pname:fenceCount:: - The number of fences to wait on. -pname:pFences:: - The address of an array of fences to wait on. +Parameters +---------- -pname:waitAll:: - If true, wait for all fences to become signaled. Otherwise, wait for at least one fence to become signaled. + * pname:device is the logical device that owns the fences. + * pname:fenceCount is the number of fences to wait on. + * pname:pFences is a pointer to an array of pname:fenceCount fence + handles. + * pname:waitAll is the condition that must: be satisfied to successfully + unblock the wait. If pname:waitAll is ename:VK_TRUE, then the condition + is that all fences in pname:pFences are signaled. Otherwise, the + condition is that at least one fence in pname:pFences is signaled. + * pname:timeout is the timeout period in units of nanoseconds. + pname:timeout is adjusted to the closest value allowed by the + implementation-dependent timeout accuracy, which may: be substantially + longer than one nanosecond, and may: be longer than the requested + period. -pname:timeout:: - Timeout, in nanoseconds, to wait for fences to become signaled. Description ----------- -fname:vkWaitForFences waits for one or more fences become signaled. pname:fenceCount is -the number of fences to wait on and pname:pFences is a pointer to an array of pname:fenceCount -fences. If pname:waitAll is code:VK_TRUE, then fname:vkWaitForFences waits for all fences in -the array to become signaled, otherwise it will return when any fence in the array becomes -signaled. If none of the fences are signaled before pname:timeout nanoseconds elapses, -then fname:vkWaitForFences will return without any fence necessarily becoming -signaled. +If the condition is satisfied when fname:vkWaitForFences is called, then +fname:vkWaitForFences returns immediately. If the condition is not satisfied +at the time fname:vkWaitForFences is called, then fname:vkWaitForFences will +block and wait up to pname:timeout nanoseconds for the condition to become +satisfied. + +If pname:timeout is zero, then fname:vkWaitForFences does not +wait, but simply returns the current state of the fences. ename:VK_TIMEOUT +will be returned in this case if the condition is not satisfied, even though +no actual wait was performed. + +If the specified timeout period expires before the condition is satisfied, +fname:vkWaitForFences returns ename:VK_TIMEOUT. If the condition is +satisfied before pname:timeout nanoseconds has expired, +fname:vkWaitForFences returns ename:VK_SUCCESS. + +[[synchronization-fences-devicewrites]] +fname:vkWaitForFences defines the second half of a memory dependency with +the host, for each fence being waited on. The memory dependency defined by +signaling a fence and waiting on the host does not guarantee that the +results of memory accesses will be visible to the host, or that the memory +is available. To provide that guarantee, the application must: insert a +memory barrier between the device writes and the end of the submission +that will signal the fence, with pname:dstAccessMask having the +ename:VK_ACCESS_HOST_READ_BIT bit set, with pname:dstStageMask having the +ename:VK_PIPELINE_STAGE_HOST_BIT bit set, and with the appropriate +pname:srcStageMask and pname:srcAccessMask members set to guarantee +completion of the writes. If the memory was allocated without the +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set, then +fname:vkInvalidateMappedMemoryRanges must: be called after the fence is +signaled in order to ensure the writes are visible to the host, as described +in <>. include::../validity/protos/vkWaitForFences.txt[] -Return Value ------------- - -Upon successful detection of a signaled fence, fname:vkWaitForFences returns ename:VK_SUCCESS. -If pname:timeout nanoseconds pass before any fence becomes signaled, fname:vkWaitForFences -returns ename:VK_TIMEOUT. Upon failure, a descriptive error code is returned. See Also -------- -flink:vkCreateFence, flink:vkDestroyFence, flink:vkResetFences +basetypes:VkBool32, slink:VkDevice, slink:VkFence + + +Document Notes +-------------- + +For more information, see the Vulkan Specification at URL + +https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkWaitForFences + +This page is extracted from the Vulkan Specification. +Fixes and changes should be made to the Specification,not directly. include::footer.txt[] + diff --git a/doc/specs/vulkan/refDesc.py b/doc/specs/vulkan/refDesc.py new file mode 100644 index 0000000000..e2ad7f4262 --- /dev/null +++ b/doc/specs/vulkan/refDesc.py @@ -0,0 +1,350 @@ +#!/usr/bin/python3 + +refDesc = {} + +# These are extracted from the original handwritten ref pages + +refDesc['vkAcquireNextImageKHR'] = 'Retrieve the index of the next available presentable image' +refDesc['vkAllocateCommandBuffers'] = 'Allocate command buffers from an existing command pool' +refDesc['vkAllocateDescriptorSets'] = 'Allocate one or more descriptor sets' +refDesc['vkAllocateMemory'] = 'Allocate GPU memory' +refDesc['VkAllocationCallbacks'] = 'Structure containing callback function pointers for memory allocation' +refDesc['vkBeginCommandBuffer'] = 'Start recording a command buffer' +refDesc['vkBindBufferMemory'] = 'Bind device memory to a buffer object' +refDesc['vkBindImageMemory'] = 'Bind device memory to an image object' +refDesc['VkBufferCreateFlags'] = 'Buffer object creation flags' +refDesc['VkBufferCreateInfo'] = 'Structure specifying the parameters of a newly created buffer object' +refDesc['VkBufferMemoryBarrier'] = 'Structure specifying the parameters of a buffer memory barrier' +refDesc['VkBufferUsageFlags'] = 'Buffer object usage flags' +refDesc['vkCmdBeginQuery'] = 'Begin a query' +refDesc['vkCmdBeginRenderPass'] = 'Begin a new render pass' +refDesc['vkCmdBindDescriptorSets'] = 'Binds descriptor sets to a command buffer' +refDesc['vkCmdBindIndexBuffer'] = 'Bind an index buffer to a command buffer' +refDesc['vkCmdBindPipeline'] = 'Bind a pipeline object to a command buffer' +refDesc['vkCmdBindVertexBuffers'] = 'Bind vertex buffers to a command buffer' +refDesc['vkCmdBlitImage'] = 'Copy regions of an image, potentially performing format conversion,' +refDesc['vkCmdClearAttachments'] = 'Clear regions within currently bound framebuffer attachments' +refDesc['vkCmdClearColorImage'] = 'Clear regions of a color image' +refDesc['vkCmdClearDepthStencilImage'] = 'Fill regions of a combined depth-stencil image' +refDesc['vkCmdCopyBufferToImage'] = 'Copy data from a buffer into an image' +refDesc['vkCmdCopyBuffer'] = 'Copy data between buffer regions' +refDesc['vkCmdCopyImageToBuffer'] = 'Copy image data into a buffer' +refDesc['vkCmdCopyImage'] = 'Copy data between images' +refDesc['vkCmdCopyQueryPoolResults'] = 'Copy the results of queries in a query pool to a buffer object' +refDesc['vkCmdDispatchIndirect'] = 'Dispatch compute work items using indirect parameters' +refDesc['vkCmdDispatch'] = 'Dispatch compute work items' +refDesc['vkCmdDrawIndexedIndirect'] = 'Perform an indexed indirect draw' +refDesc['vkCmdDrawIndexed'] = 'Issue an indexed draw into a command buffer' +refDesc['vkCmdDrawIndirect'] = 'Issue an indirect draw into a command buffer' +refDesc['vkCmdDraw'] = 'Draw primitives' +refDesc['vkCmdEndQuery'] = 'Ends a query' +refDesc['vkCmdEndRenderPass'] = 'End the current render pass' +refDesc['vkCmdExecuteCommands'] = 'Execute a secondary command buffer from a primary command buffer' +refDesc['vkCmdFillBuffer'] = 'Fill a region of a buffer with a fixed value' +refDesc['vkCmdNextSubpass'] = 'Transition to the next subpass of a render pass' +refDesc['vkCmdPipelineBarrier'] = 'Insert a set of execution and memory barriers' +refDesc['vkCmdPushConstants'] = 'Update the values of push constants' +refDesc['vkCmdResetEvent'] = 'Reset an event object to non-signaled state' +refDesc['vkCmdResetQueryPool'] = 'Reset queries in a query pool' +refDesc['vkCmdResolveImage'] = 'Resolve regions of an image' +refDesc['vkCmdSetBlendConstants'] = 'Set the values of blend constants' +refDesc['vkCmdSetDepthBias'] = 'Set the depth bias dynamic state' +refDesc['vkCmdSetDepthBounds'] = 'Set the depth bounds test values for a command buffer' +refDesc['vkCmdSetEvent'] = 'Set an event object to signaled state' +refDesc['vkCmdSetLineWidth'] = 'Set the dynamic line width state' +refDesc['vkCmdSetScissor'] = 'Set the dynamic scissor rectangles on a command buffer' +refDesc['vkCmdSetStencilCompareMask'] = 'Set the stencil compare mask dynamic state' +refDesc['vkCmdSetStencilReference'] = 'Set the stencil reference dynamic state' +refDesc['vkCmdSetStencilWriteMask'] = 'Set the stencil write mask dynamic state' +refDesc['vkCmdSetViewport'] = 'Set the viewport on a command buffer' +refDesc['vkCmdUpdateBuffer'] = 'Update a buffer\'s contents from host memory' +refDesc['vkCmdWaitEvents'] = 'Wait for one or more events and insert a set of memory' +refDesc['vkCmdWriteTimestamp'] = 'Write a device timestamp into a query object' +refDesc['VkCommandBufferAllocateInfo'] = 'Structure specifying the allocation parameters for command buffer object' +refDesc['vkCreateAndroidSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for an Android native window' +refDesc['vkCreateBuffer'] = 'Create a new buffer object' +refDesc['vkCreateBufferView'] = 'Create a new buffer view object' +refDesc['vkCreateCommandPool'] = 'Create a new command pool object' +refDesc['vkCreateComputePipelines'] = 'Creates a new compute pipeline object' +refDesc['vkCreateDescriptorPool'] = 'Creates a descriptor pool object' +refDesc['vkCreateDescriptorSetLayout'] = 'Create a new descriptor set layout' +refDesc['vkCreateDevice'] = 'Create a new device instance' +refDesc['vkCreateDisplayModeKHR'] = 'Create a display mode' +refDesc['vkCreateDisplayPlaneSurfaceKHR'] = 'Create a slink:VkSurfaceKHR structure representing a display plane and mode' +refDesc['vkCreateEvent'] = 'Create a new event object' +refDesc['vkCreateFence'] = 'Create a new fence object' +refDesc['vkCreateFramebuffer'] = 'Create a new framebuffer object' +refDesc['vkCreateGraphicsPipelines'] = 'Create graphics pipelines' +refDesc['vkCreateImage'] = 'Create a new image object' +refDesc['vkCreateImageView'] = 'Create an image view from an existing image' +refDesc['vkCreateInstance'] = 'Create a new Vulkan instance' +refDesc['vkCreateMirSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a Mir window' +refDesc['vkCreatePipelineCache'] = 'Creates a new pipeline cache' +refDesc['vkCreatePipelineLayout'] = 'Creates a new pipeline layout object' +refDesc['vkCreateQueryPool'] = 'Create a new query pool object' +refDesc['vkCreateRenderPass'] = 'Create a new render pass object' +refDesc['vkCreateSampler'] = 'Create a new sampler object' +refDesc['vkCreateSemaphore'] = 'Create a new queue semaphore object' +refDesc['vkCreateShaderModule'] = 'Creates a new shader module object' +refDesc['vkCreateSharedSwapchainsKHR'] = 'Create multiple swapchains that share presentable images' +refDesc['vkCreateSwapchainKHR'] = 'Create a swapchain' +refDesc['vkCreateWaylandSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a Wayland window' +refDesc['vkCreateXcbSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a X11 window, using the XCB client-side library' +refDesc['vkCreateXlibSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for an X11 window, using the Xlib client-side library' +refDesc['VkDescriptorSetAllocateInfo'] = 'Structure specifying the allocation parameters for descriptor sets' +refDesc['VkDescriptorType'] = 'Specifies the type of a descriptor in a descriptor set' +refDesc['vkDestroyBuffer'] = 'Destroy a buffer object' +refDesc['vkDestroyBufferView'] = 'Destroy a buffer view object' +refDesc['vkDestroyCommandPool'] = 'Destroy a command pool object' +refDesc['vkDestroyDescriptorPool'] = 'Destroy a descriptor pool object' +refDesc['vkDestroyDescriptorSetLayout'] = 'Destroy a descriptor set layout object' +refDesc['vkDestroyDevice'] = 'Destroy a logical device' +refDesc['vkDestroyEvent'] = 'Destroy an event object' +refDesc['vkDestroyFence'] = 'Destroy a fence object' +refDesc['vkDestroyFramebuffer'] = 'Destroy a framebuffer object' +refDesc['vkDestroyImage'] = 'Destroy an image object' +refDesc['vkDestroyImageView'] = 'Destroy an image view object' +refDesc['vkDestroyInstance'] = 'Destroy an instance of Vulkan' +refDesc['vkDestroyPipelineCache'] = 'Destroy a pipeline cache object' +refDesc['vkDestroyPipelineLayout'] = 'Destroy a pipeline layout object' +refDesc['vkDestroyPipeline'] = 'Destroy a pipeline object' +refDesc['vkDestroyQueryPool'] = 'Destroy a query pool object' +refDesc['vkDestroyRenderPass'] = 'Destroy a render pass object' +refDesc['vkDestroySampler'] = 'Destroy a sampler object' +refDesc['vkDestroySemaphore'] = 'Destroy a semaphore object' +refDesc['vkDestroyShaderModule'] = 'Destroy a shader module module' +refDesc['vkDestroySurfaceKHR'] = 'Destroy a VkSurfaceKHR object' +refDesc['vkDestroySwapchainKHR'] = 'Destroy a swapchain object' +refDesc['vkDeviceWaitIdle'] = 'Wait for a device to become idle' +refDesc['vkEndCommandBuffer'] = 'Finish recording a command buffer' +refDesc['vkEnumerateDeviceExtensionProperties'] = 'Returns properties of available physical device extensions' +refDesc['vkEnumerateDeviceLayerProperties'] = 'Returns properties of available physical device layers' +refDesc['vkEnumerateInstanceExtensionProperties'] = 'Returns up to requested number of global extension properties' +refDesc['vkEnumerateInstanceLayerProperties'] = 'Returns up to requested number of global layer properties' +refDesc['vkEnumeratePhysicalDevices'] = 'Enumerates the physical devices accessible to a Vulkan instance' +refDesc['vkFlushMappedMemoryRanges'] = 'Flush mapped memory ranges' +refDesc['VkFormatFeatureFlags'] = 'Capability flags of a particular format' +refDesc['vkFreeCommandBuffers'] = 'Free command buffers' +refDesc['vkFreeDescriptorSets'] = 'Free one or more descriptor sets' +refDesc['vkFreeMemory'] = 'Free GPU memory' +refDesc['vkGetBufferMemoryRequirements'] = 'Returns the memory requirements for specified Vulkan object' +refDesc['vkGetDeviceMemoryCommitment'] = 'Query the current commitment for a VkDeviceMemory' +refDesc['vkGetDeviceProcAddr'] = 'Return a function pointer for a command' +refDesc['vkGetDeviceQueue'] = 'Get a queue handle from a device' +refDesc['vkGetDisplayModePropertiesKHR'] = 'Query the set of mode properties supported by the display' +refDesc['vkGetDisplayPlaneCapabilitiesKHR'] = 'Query capabilities of a mode and plane combination' +refDesc['vkGetDisplayPlaneSupportedDisplaysKHR'] = 'Query the list of displays a plane supports' +refDesc['vkGetEventStatus'] = 'Retrieve the status of an event object' +refDesc['vkGetFenceStatus'] = 'Return the status of a fence' +refDesc['vkGetImageMemoryRequirements'] = 'Returns the memory requirements for specified Vulkan object' +refDesc['vkGetImageSparseMemoryRequirements'] = 'Query the memory requirements for a sparse image' +refDesc['vkGetImageSubresourceLayout'] = 'Retrieve information about an image subresource' +refDesc['vkGetInstanceProcAddr'] = 'Return a function pointer for a command' +refDesc['vkGetPhysicalDeviceDisplayPlanePropertiesKHR'] = 'Query the plane properties' +refDesc['vkGetPhysicalDeviceDisplayPropertiesKHR'] = 'Query information about the available displays' +refDesc['vkGetPhysicalDeviceFeatures'] = 'Reports capabilities of a physical device' +refDesc['vkGetPhysicalDeviceFormatProperties'] = 'Lists physical device\'s format capabilities' +refDesc['vkGetPhysicalDeviceImageFormatProperties'] = 'Lists physical device\'s image format capabilities' +refDesc['vkGetPhysicalDeviceMemoryProperties'] = 'Reports memory information for the specified physical device' +refDesc['vkGetPhysicalDeviceMirPresentationSupportKHR'] = 'Query physical device for presentation to Mir' +refDesc['vkGetPhysicalDeviceProperties'] = 'Returns properties of a physical device' +refDesc['vkGetPhysicalDeviceQueueFamilyProperties'] = 'Reports properties of the queues of the specified physical device' +refDesc['vkGetPhysicalDeviceSparseImageFormatProperties'] = 'Retrieve properties of an image format applied to sparse images' +refDesc['vkGetPhysicalDeviceSurfaceCapabilitiesKHR'] = 'Query surface capabilities' +refDesc['vkGetPhysicalDeviceSurfaceFormatsKHR'] = 'Query color formats supported by surface' +refDesc['vkGetPhysicalDeviceSurfacePresentModesKHR'] = 'Query supported presentation modes' +refDesc['vkGetPhysicalDeviceSurfaceSupportKHR'] = 'Query if presentation is supported' +refDesc['vkGetPhysicalDeviceWaylandPresentationSupportKHR'] = 'Query physical device for presentation to Wayland' +refDesc['vkGetPhysicalDeviceXcbPresentationSupportKHR'] = 'Query physical device for presentation to X11 server using XCB' +refDesc['vkGetPhysicalDeviceXlibPresentationSupportKHR'] = 'Query physical device for presentation to X11 server using Xlib' +refDesc['vkGetPipelineCacheData'] = 'Get the data store from a pipeline cache' +refDesc['vkGetQueryPoolResults'] = 'Copy results of queries in a query pool to a host memory region' +refDesc['vkGetRenderAreaGranularity'] = 'Returns the granularity for optimal render area' +refDesc['vkGetSwapchainImagesKHR'] = 'Obtain the array of presentable images associated with a swapchain' +refDesc['VkImageCreateFlags'] = 'Image object creation flags' +refDesc['VkImageCreateInfo'] = 'Structure specifying the parameters of a newly created image object' +refDesc['VkImageLayout'] = 'Layout of image and image subresources' +refDesc['VkImageMemoryBarrier'] = 'Structure specifying the parameters of an image memory barrier' +refDesc['VkImageType'] = 'Specifies the type of an image object' +refDesc['VkImageUsageFlags'] = 'Image object usage flags' +refDesc['VkImageViewType'] = 'Image view types' +refDesc['vkInvalidateMappedMemoryRanges'] = 'Invalidate ranges of mapped memory objects' +refDesc['vkMapMemory'] = 'Map a memory object into application address space' +refDesc['VkMemoryAllocateInfo'] = 'Structure containing parameters of a memory allocation' +refDesc['VkMemoryPropertyFlags'] = 'Memory pool properties' +refDesc['vkMergePipelineCaches'] = 'Combine the data stores of pipeline caches' +refDesc['VkPhysicalDeviceFeatures'] = 'Structure describing the fine-grained features that can be supported by an implementation' +refDesc['VkPhysicalDeviceLimits'] = 'Structure' +refDesc['VkPipelineLayoutCreateInfo'] = 'Structure specifying the parameters of a newly created pipeline layout object' +refDesc['VkPipelineStageFlags'] = 'Pipeline stage identifiers' +refDesc['VkQueryControlFlags'] = 'Query control flags' +refDesc['VkQueryResultFlags'] = 'Query result flags' +refDesc['vkQueueBindSparse'] = 'Bind device memory to a sparse resource object' +refDesc['VkQueueFamilyProperties'] = 'Structure providing information about a queue family' +refDesc['VkQueueFlags'] = 'Queue capability flags' +refDesc['vkQueuePresentKHR'] = 'Queue an image for presentation' +refDesc['vkQueueSubmit'] = 'Submits a sequence of semaphores or command buffers to a queue' +refDesc['vkQueueWaitIdle'] = 'Wait for a queue to become idle' +refDesc['vkResetCommandBuffer'] = 'Reset a command buffer' +refDesc['vkResetCommandPool'] = 'Reset a command pool' +refDesc['vkResetDescriptorPool'] = 'Resets a descriptor pool object' +refDesc['vkResetEvent'] = 'Reset an event to non-signaled state' +refDesc['vkResetFences'] = 'Resets one or more fence objects' +refDesc['vkSetEvent'] = 'Set an event to signaled state' +refDesc['VkSharingMode'] = 'Buffer and image sharing modes' +refDesc['vkUnmapMemory'] = 'Unmap a previously mapped memory object' +refDesc['vkUpdateDescriptorSets'] = 'Update the contents of a descriptor set object' +refDesc['vkWaitForFences'] = 'Wait for one or more fences to become signaled' +refDesc['VkWriteDescriptorSet'] = 'Structure specifying the parameters of a descriptor set write operation' +refDesc['VkAndroidSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Android surface object' +refDesc['VkDisplayModeCreateInfoKHR'] = 'Structure specifying parameters of a newly created display mode object' +refDesc['VkDisplayModeParametersKHR'] = 'Structure describing display parameters associated with a display mode' +refDesc['VkDisplayModePropertiesKHR'] = 'Structure describing display mode properties' +refDesc['VkDisplayPlaneCapabilitiesKHR'] = 'Structure describing capabilities of a mode and plane combination' +refDesc['VkDisplayPlanePropertiesKHR'] = 'Structure describing display plane properties' +refDesc['VkDisplayPresentInfoKHR'] = 'Structure describing parameters of a queue presentation to a swapchain' +refDesc['VkDisplayPropertiesKHR'] = 'Structure describing an available display device' +refDesc['VkDisplaySurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created display plane surface object' +refDesc['VkMirSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Mir surface object' +refDesc['VkPresentInfoKHR'] = 'Structure describing parameters of a queue presentation' +refDesc['VkSurfaceCapabilitiesKHR'] = 'Structure describing capabilities of a surface' +refDesc['VkSurfaceFormatKHR'] = 'Structure describing a supported swapchain format-colorspace pair' +refDesc['VkSwapchainCreateInfoKHR'] = 'Structure specifying parameters of a newly created swapchain object' +refDesc['VkWaylandSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Wayland surface object' +refDesc['VkWin32SurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Win32 surface object' +refDesc['VkXcbSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Xcb surface object' +refDesc['VkXlibSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Xlib surface object' + +# These are generated based on the structure name + +refDesc['VkBufferViewCreateInfo'] = 'Structure specifying parameters of a newly created buffer view' +refDesc['VkCommandPoolCreateInfo'] = 'Structure specifying parameters of a newly created command pool' +refDesc['VkComputePipelineCreateInfo'] = 'Structure specifying parameters of a newly created compute pipeline' +refDesc['VkDescriptorPoolCreateInfo'] = 'Structure specifying parameters of a newly created descriptor pool' +refDesc['VkDescriptorSetLayoutCreateInfo'] = 'Structure specifying parameters of a newly created descriptor set layout' +refDesc['VkDeviceCreateInfo'] = 'Structure specifying parameters of a newly created device' +refDesc['VkDeviceQueueCreateInfo'] = 'Structure specifying parameters of a newly created device queue' +refDesc['VkEventCreateInfo'] = 'Structure specifying parameters of a newly created event' +refDesc['VkExtent2D'] = 'Structure specifying a two-dimensional extent' +refDesc['VkExtent3D'] = 'Structure specifying a three-dimensional extent' +refDesc['VkFenceCreateInfo'] = 'Structure specifying parameters of a newly created fence' +refDesc['VkFramebufferCreateInfo'] = 'Structure specifying parameters of a newly created framebuffer' +refDesc['VkGraphicsPipelineCreateInfo'] = 'Structure specifying parameters of a newly created graphics pipeline' +refDesc['VkImageViewCreateInfo'] = 'Structure specifying parameters of a newly created image view' +refDesc['VkInstanceCreateInfo'] = 'Structure specifying parameters of a newly created instance' +refDesc['VkOffset2D'] = 'Structure specifying a two-dimensional offset' +refDesc['VkOffset3D'] = 'Structure specifying a three-dimensional offset' +refDesc['VkPipelineCacheCreateInfo'] = 'Structure specifying parameters of a newly created pipeline cache' +refDesc['VkPipelineColorBlendStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline color blend state' +refDesc['VkPipelineDepthStencilStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline depth stencil state' +refDesc['VkPipelineDynamicStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline dynamic state' +refDesc['VkPipelineInputAssemblyStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline input assembly state' +refDesc['VkPipelineMultisampleStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline multisample state' +refDesc['VkPipelineRasterizationStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline rasterization state' +refDesc['VkPipelineShaderStageCreateInfo'] = 'Structure specifying parameters of a newly created pipeline shader stage' +refDesc['VkPipelineTessellationStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline tessellation state' +refDesc['VkPipelineVertexInputStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline vertex input state' +refDesc['VkPipelineViewportStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline viewport state' +refDesc['VkQueryPoolCreateInfo'] = 'Structure specifying parameters of a newly created query pool' +refDesc['VkRect2D'] = 'Structure specifying a two-dimensional subregion' +refDesc['VkRenderPassCreateInfo'] = 'Structure specifying parameters of a newly created render pass' +refDesc['VkSamplerCreateInfo'] = 'Structure specifying parameters of a newly created sampler' +refDesc['VkSemaphoreCreateInfo'] = 'Structure specifying parameters of a newly created semaphore' +refDesc['VkShaderModuleCreateInfo'] = 'Structure specifying parameters of a newly created shader module' + +# These are TBD + +refDesc['VkApplicationInfo'] = 'Structure specifying application info' +refDesc['VkAttachmentDescription'] = 'Structure specifying an attachment description' +refDesc['VkAttachmentReference'] = 'Structure specifying an attachment reference' +refDesc['VkBindSparseInfo'] = 'Structure specifying a sparse binding operation' +refDesc['VkBufferCopy'] = 'Structure specifying a buffer copy operation' +refDesc['VkBufferImageCopy'] = 'Structure specifying a buffer image copy operation' +refDesc['VkClearAttachment'] = 'Structure specifying a clear attachment' +refDesc['VkClearColorValue'] = 'Structure specifying a clear color value' +refDesc['VkClearDepthStencilValue'] = 'Structure specifying a clear depth stencil value' +refDesc['VkClearRect'] = 'Structure specifying a clear rectangle' +refDesc['VkClearValue'] = 'Structure specifying a clear value' +refDesc['VkCommandBufferBeginInfo'] = 'Structure specifying a command buffer begin operation' +refDesc['VkCommandBufferInheritanceInfo'] = 'Structure specifying command buffer inheritance info' +refDesc['VkCommandBufferLevel'] = 'Structure specifying a command buffer level' +refDesc['VkComponentMapping'] = 'Structure specifying a color component mapping' +refDesc['VkCopyDescriptorSet'] = 'Structure specifying a copy descriptor set operation' +refDesc['VkDescriptorBufferInfo'] = 'Structure specifying descriptor buffer info' +refDesc['VkDescriptorImageInfo'] = 'Structure specifying descriptor image info' +refDesc['VkDescriptorPoolSize'] = 'Structure specifying descriptor pool size' +refDesc['VkDescriptorSetLayoutBinding'] = 'Structure specifying a descriptor set layout binding' +refDesc['VkDispatchIndirectCommand'] = 'Structure specifying a dispatch indirect command' +refDesc['VkDrawIndexedIndirectCommand'] = 'Structure specifying a draw indexed indirect command' +refDesc['VkDrawIndirectCommand'] = 'Structure specifying a draw indirect command' +refDesc['VkExtensionProperties'] = 'Structure specifying a extension properties' +refDesc['VkFormatProperties'] = 'Structure specifying image format properties' +refDesc['VkImageBlit'] = 'Structure specifying an image blit operation' +refDesc['VkImageCopy'] = 'Structure specifying an image copy operation' +refDesc['VkImageFormatProperties'] = 'Structure specifying a image format properties' +refDesc['VkImageResolve'] = 'Structure specifying an image resolve operation' +refDesc['VkImageSubresource'] = 'Structure specifying a image subresource' +refDesc['VkImageSubresourceLayers'] = 'Structure specifying a image subresource layers' +refDesc['VkImageSubresourceRange'] = 'Structure specifying a image subresource range' +refDesc['VkLayerProperties'] = 'Structure specifying layer properties' +refDesc['VkMappedMemoryRange'] = 'Structure specifying a mapped memory range' +refDesc['VkMemoryBarrier'] = 'Structure specifying a memory barrier' +refDesc['VkMemoryHeap'] = 'Structure specifying a memory heap' +refDesc['VkMemoryRequirements'] = 'Structure specifying memory requirements' +refDesc['VkMemoryType'] = 'Structure specifying memory type' +refDesc['VkPhysicalDeviceMemoryProperties'] = 'Structure specifying physical device memory properties' +refDesc['VkPhysicalDeviceProperties'] = 'Structure specifying physical device properties' +refDesc['VkPhysicalDeviceSparseProperties'] = 'Structure specifying physical device sparse memory properties' +refDesc['VkPipelineColorBlendAttachmentState'] = 'Structure specifying a pipeline color blend attachment state' +refDesc['VkPushConstantRange'] = 'Structure specifying a push constant range' +refDesc['VkRenderPassBeginInfo'] = 'Structure specifying render pass begin info' +refDesc['VkSparseBufferMemoryBindInfo'] = 'Structure specifying a sparse buffer memory bind operation' +refDesc['VkSparseImageFormatProperties'] = 'Structure specifying sparse image format properties' +refDesc['VkSparseImageMemoryBind'] = 'Structure specifying sparse image memory bind' +refDesc['VkSparseImageMemoryBindInfo'] = 'Structure specifying sparse image memory bind info' +refDesc['VkSparseImageMemoryRequirements'] = 'Structure specifying sparse image memory requirements' +refDesc['VkSparseImageOpaqueMemoryBindInfo'] = 'Structure specifying sparse image opaque memory bind info' +refDesc['VkSparseMemoryBind'] = 'Structure specifying a sparse memory bind operation' +refDesc['VkSpecializationInfo'] = 'Structure specifying specialization info' +refDesc['VkSpecializationMapEntry'] = 'Structure specifying a specialization map entry' +refDesc['VkStencilOpState'] = 'Structure specifying stencil operation state' +refDesc['VkSubmitInfo'] = 'Structure specifying a queue submit operation' +refDesc['VkSubpassDependency'] = 'Structure specifying a subpass dependency' +refDesc['VkSubpassDescription'] = 'Structure specifying a subpass description' +refDesc['VkSubresourceLayout'] = 'Structure specifying subresource layout' +refDesc['VkVertexInputAttributeDescription'] = 'Structure specifying vertex input attribute description' +refDesc['VkVertexInputBindingDescription'] = 'Structure specifying vertex input binding description' +refDesc['VkViewport'] = 'Structure specifying a viewport' + +# These are constructed from spec text + +refDesc['VkAccessFlagBits'] = 'Bitmask specifying classes of memory access the will participate in a memory barrier dependency' +refDesc['VkAttachmentDescriptionFlagBits'] = 'Bitmask specifying additional properties of an attachment' +refDesc['VkBufferCreateFlagBits'] = 'Bitmask specifying additional parameters of a buffer' +refDesc['VkBufferUsageFlagBits'] = 'Bitmask specifying allowed usage of a buffer' +refDesc['VkColorComponentFlagBits'] = 'Bitmask controlling which components are written to the framebuffer' +refDesc['VkCommandBufferResetFlagBits'] = 'Bitmask controlling behavior of a command buffer reset' +refDesc['VkCommandBufferUsageFlagBits'] = 'Bitmask specifying usage behavior for command buffer' +refDesc['VkCommandPoolCreateFlagBits'] = 'Bitmask specifying usage behavior for a command pool' +refDesc['VkCommandPoolResetFlagBits'] = 'Bitmask controlling behavior of a command pool reset' +refDesc['VkCullModeFlagBits'] = 'Bitmask controlling triangle culling' +refDesc['VkDependencyFlagBits'] = 'Bitmask specifying dependencies between subpasses' +refDesc['VkDescriptorPoolCreateFlagBits'] = 'Bitmask specifying certain supported operations on a descriptor pool' +refDesc['VkFenceCreateFlagBits'] = 'Bitmask specifying initial state and behavior of a fence' +refDesc['VkFormatFeatureFlagBits'] = 'Bitmask specifying features supported by a buffer' +refDesc['VkImageAspectFlagBits'] = 'Bitmask specifying which aspects of an image are included in a view' +refDesc['VkImageCreateFlagBits'] = 'Bitmask specifying additional parameters of an image' +refDesc['VkImageUsageFlagBits'] = 'Bitmask specifying intended usage of an image' +refDesc['VkMemoryHeapFlagBits'] = 'Bitmask specifying attribute flags for a heap' +refDesc['VkMemoryPropertyFlagBits'] = 'Bitmask specifying properties for a memory type' +refDesc['VkPipelineCreateFlagBits'] = 'Bitmask controlling how a pipeline is generated' +refDesc['VkPipelineStageFlagBits'] = 'Bitmask specifying pipeline stages' +refDesc['VkQueryControlFlagBits'] = 'Bitmask specifying constraints on a query' +refDesc['VkQueryPipelineStatisticFlagBits'] = 'Bitmask specifying queried pipeline statistics' +refDesc['VkQueryResultFlagBits'] = 'Bitmask specifying how and when query results are returned' +refDesc['VkQueueFlagBits'] = 'Bitmask specifying capabilities of queues in a queue family' +refDesc['VkSampleCountFlagBits'] = 'Bitmask specifying sample counts supported for an image used for storage operations' +refDesc['VkShaderStageFlagBits'] = 'Bitmask specifying a pipeline stage' +refDesc['VkSparseImageFormatFlagBits'] = 'Bitmask specifying additional information about a sparse image resource' +refDesc['VkSparseMemoryBindFlagBits'] = 'Bitmask specifying usage of a sparse memory binding operation' +refDesc['VkStencilFaceFlagBits'] = 'Bitmask specifying sets of stencil state for which to update the compare mask' diff --git a/doc/specs/vulkan/refPageNotes.md b/doc/specs/vulkan/refPageNotes.md new file mode 100644 index 0000000000..17f8958432 --- /dev/null +++ b/doc/specs/vulkan/refPageNotes.md @@ -0,0 +1,83 @@ +# Notes on automatic reference page generation + +Main takeaway point: ref page generation from the spec sources is ready to +go. It can be tweaked in lots of small ways, but as it stands it's a huge +improvement over the current ref pages and should be adopted ASAP. + +## Approach + +This is done with some Python scripts that rely on the rigid structure +we've enforced on command and structure definitions in the spec. Everything +from the paragraph *preceding* the protos/structs include:: through the +validity:: include is pulled out and then split up into ref page sections. +In some cases, it isn't immediately obvious how to reorder to get all the +content relevant to a single command or struct blocked together in this +fashion, and some simplistic semantic tagging has been added for those cases +where the structural organization isn't appropriate. + +The changes to the spec are straightforward, though they appear large in +some places. What's happening is: + + * Validity includes are moved below all the relevant text. + * Structure definitions are moved after the validity includes for + commands, so they don't overlap or imbed. This has been done for + enumerant definitions in some cases, but those are harder to unwind. + * Blank lines are being removed from parameter / member definition bullet + lists, so they don't confuse the extraction script. + * Annotations in the form of asciidoc comments were added where + they were needed to assist the extraction scripts. These look + like +
        // refBegin vkSomething short description of command for ref page title +
        // refEnd vkSomething [list of related ref pages] + * A bunch of small consistency edits were done to match the style guide. + These (mostly) aren't directly related to the extraction process, but it + is an opportune time to do them. + * Pages that don't have extractable descriptive text in the specification, + such as Vk*Flags and some Vk*FlagBits types, get automatically generated + ref pages. These just define the interface and link to other pages using + that type. + +## Things to be done + +These are (more or less) in decreasing priority order. Few of them are +difficult. + + * Something is messed up with the individual page generation targets in + the Makefile, so the genRef.py action isn't a dependency of + $(MANSOURCES) yet. See + https://www.cmcrossroads.com/article/rules-multiple-outputs-gnu-make?page=0%2C2 + * Cross-page macro links are broken in the individual ref pages, due to + using the wrong macros, but are OK in the single-page apispec.html. + Should be easily fixed. + * manpdf (single-page PDF ref document) target is currently broken. + * Turn handle references from sname: to slink: so they link to the right + place. Consider using an hlink/hname macro instead. Similarly for + basetype: (which doesn't link, but could now with blink:/btext:). In + general, most of the ?name: macros can and should turn into ?link:, + aside from those directly in the section describing that name. + * Need to tweak asciidoc macros for man pages (manpages.conf). + * "See Also" links are automatically generated based on the type + dependencies between pages. This works well, but doesn't include logical + groupings (all clear commands, all drawing commands, etc.). These can be + added to the explicit crosslinks in // refEnd statements if desired. + * Remove autogenerated files from git and enhance the Makefiles to do all + the scripting work required to generate the ref page sources, vkapi.py, + etc. at build time. + * Some problems with a2x not finding NOTE icons from the asciidoc + distribution (worked around by copying into the man/images directory, + for now). It would sure be nice if the build were smart enough to use + the icons distributed with asciidoc, instead of needing separate copies. + * I'm not sure how to best deal with KHR extension ref pages. We could + generate them separately in their branches and combine with core pages, + or generate everything in the wsi_extensions branch - but that will + leave us with core ref pages including WSI extension material, without + any obvious indication of why or where. Changes for the KHR extension + branches will be small once the 1.0 changes are merged in, and I'll + undertake to do those once the core changes are accepted. + * Cross-page asciidoc links are broken. This is hard to fix. Probably the + best thing to do is strip \<\<\>\> links from the source, or perhaps + generate an HTML link to the live spec. + * VkResult page needs a better "See Also" section - but not the full list + of functions returning VkResult. + * Short descriptions are currently embedded in the spec source, and are + missing in some cases. Would it make more sense to add them to vk.xml? diff --git a/doc/specs/vulkan/reflib.py b/doc/specs/vulkan/reflib.py new file mode 100644 index 0000000000..35f22fd3a8 --- /dev/null +++ b/doc/specs/vulkan/reflib.py @@ -0,0 +1,384 @@ +#!/usr/bin/python3 + +# Utility functions for automatic ref page generation + +import io,os,re,sys + +# global errFile, warnFile, diagFile + +errFile = sys.stderr +warnFile = sys.stdout +diagFile = None + +def write(*args, **kwargs ): + file = kwargs.pop('file',sys.stdout) + end = kwargs.pop('end','\n') + file.write(' '.join([str(arg) for arg in args])) + file.write(end) + +# Set the file handle to log either or both warnings and diagnostics to. +# setDiag and setWarn are True if the corresponding handle is to be set. +# filename is None for no logging, '-' for stdout, or a pathname. +def setLogFile(setDiag, setWarn, filename): + global diagFile, warnFile + + if (filename == None): + return + elif (filename == '-'): + fp = sys.stdout + else: + fp = open(filename, 'w') + + if (setDiag): + diagFile = fp + if (setWarn): + warnFile = fp + +def logDiag(*args, **kwargs): + file = kwargs.pop('file', diagFile) + end = kwargs.pop('end','\n') + if (file != None): + file.write('DIAG: ' + ' '.join([str(arg) for arg in args])) + file.write(end) + +def logWarn(*args, **kwargs): + file = kwargs.pop('file', warnFile) + end = kwargs.pop('end','\n') + if (file != None): + file.write('WARN: ' + ' '.join([str(arg) for arg in args])) + file.write(end) + +def logErr(*args, **kwargs): + file = kwargs.pop('file', errFile) + end = kwargs.pop('end','\n') + + strfile = io.StringIO() + strfile.write( 'ERROR: ' + ' '.join([str(arg) for arg in args])) + strfile.write(end) + + if (file != None): + file.write(strfile.getvalue()) + raise UserWarning(strfile.getvalue()) + +# Return True if s is nothing but white space, False otherwise +def isempty(s): + return len(''.join(s.split())) == 0 + +# pageInfo - information about a ref page relative to the file it's +# extracted from. +# +# extractPage - True if page should not be extracted +# Warning - string warning if page is suboptimal or can't be generated +# embed - False or the name of the ref page this include is imbedded within +# +# type - 'structs', 'protos', 'funcpointers', 'flags', 'enums' +# name - struct/proto/enumerant/etc. name +# desc - short description of ref page +# begin - index of first line of the page (heuristic or // refBegin) +# include - index of include:: line defining the page +# param - index of first line of parameter/member definitions +# body - index of first line of body text +# validity - index of validity include +# end - index of last line of the page (heuristic validity include, or // refEnd) +# refs - cross-references on // refEnd line, if supplied +class pageInfo: + def __init__(self): + self.extractPage = True + self.Warning = None + self.embed = False + + self.type = None + self.name = None + self.desc = None + self.begin = None + self.include = None + self.param = None + self.body = None + self.validity = None + self.end = None + self.refs = '' + +# Print a single field of a pageInfo struct, possibly None +# desc - string description of field +# line - field value or None +# file - indexed by line +def printPageInfoField(desc, line, file): + if (line != None): + logDiag(desc + ':', line + 1, '\t-> ', file[line], end='') + else: + logDiag(desc + ':', line) + +# Print out fields of a pageInfo struct +# pi - pageInfo +# file - indexed by pageInfo +def printPageInfo(pi, file): + logDiag('TYPE: ', pi.type) + logDiag('NAME: ', pi.name) + logDiag('WARN: ', pi.Warning) + logDiag('EXTRACT:', pi.extractPage) + logDiag('EMBED: ', pi.embed) + logDiag('DESC: ', pi.desc) + printPageInfoField('BEGIN ', pi.begin, file) + printPageInfoField('INCLUDE ', pi.include, file) + printPageInfoField('PARAM ', pi.param, file) + printPageInfoField('BODY ', pi.body, file) + printPageInfoField('VALIDITY', pi.validity, file) + printPageInfoField('END ', pi.end, file) + logDiag('REFS: "' + pi.refs + '"') + +# Go back one paragraph from the specified line and return the line number +# of the first line of that paragraph. +# +# Paragraphs are delimited by blank lines. It is assumed that the +# current line is the first line of a paragraph. +# file is an array of strings +# line is the starting point (zero-based) +def prevPara(file, line): + # Skip over current paragraph + while (line >= 0 and not isempty(file[line])): + line = line - 1 + # Skip over white space + while (line >= 0 and isempty(file[line])): + line = line - 1 + # Skip to first line of previous paragraph + while (line >= 1 and not isempty(file[line-1])): + line = line - 1 + return line + +# Go forward one paragraph from the specified line and return the line +# number of the first line of that paragraph. +# +# Paragraphs are delimited by blank lines. It is assumed that the +# current line is standalone (which is bogus) +# file is an array of strings +# line is the starting point (zero-based) +def nextPara(file, line): + maxLine = len(file) - 1 + # Skip over current paragraph + while (line != maxLine and not isempty(file[line])): + line = line + 1 + # Skip over white space + while (line != maxLine and isempty(file[line])): + line = line + 1 + return line + +# Return (creating if needed) the pageInfo entry in pageMap for name +def lookupPage(pageMap, name): + if (not name in pageMap.keys()): + pi = pageInfo() + pi.name = name + pageMap[name] = pi + else: + pi = pageMap[name] + return pi + +# Load a file into a list of strings. Return the list or None on failure +def loadFile(specFile): + if (not os.path.exists(specFile)): + error('No such spec file', specFile, '- skipping ref page generation') + return None + + fp = open(specFile, 'r') + file = fp.readlines() + fp.close() + + return file + +# Fill in missing fields in pageInfo structures, to the extent they can be +# inferred. +# pageMap - dictionary of pageInfo structures +# specFile - filename +# file - list of strings making up the file, indexed by pageInfo +def fixupRefs(pageMap, specFile, file): + # All potential ref pages are now in pageMap. Process them to + # identify actual page start/end/description boundaries, if + # not already determined from the text. + for name in sorted(pageMap.keys()): + pi = pageMap[name] + + # # If nothing is found but an include line with no begin, validity, + # # or end, this is not intended as a ref page (yet). Set the begin + # # line to the include line, so autogeneration can at least + # # pull the include out, but mark it not to be extracted. + # # Examples include the host sync table includes in + # # chapters/fundamentals.txt and the table of Vk*Flag types in + # # appendices/boilerplate.txt. + # if (pi.begin == None and pi.validity == None and pi.end == None): + # pi.begin = pi.include + # pi.extractPage = False + # pi.Warning = 'No begin, validity, or end lines identified' + # continue + + # If there's no refBegin line, try to determine where the page + # starts by going back a paragraph from the include statement. + if (pi.begin == None): + if (pi.include != None): + # structs and protos are the only pages with sufficiently + # regular structure to guess at the boundaries + if (pi.type == 'structs' or pi.type == 'protos'): + pi.begin = prevPara(file, pi.include) + else: + pi.begin = pi.include + if (pi.begin == None): + pi.extractPage = False + pi.Warning = 'Can\'t identify beginning of page' + continue + + # If there's no description of the page, infer one from the type + if (pi.desc == None): + if (pi.type != None): + # pi.desc = pi.type[0:len(pi.type)-1] + ' (no short description available)' + pi.Warning = 'No short description available; could infer from the type and name' + True + else: + pi.extractPage = False + pi.Warning = 'No short description available, cannot infer from the type' + continue + + # If there's no refEnd line, try to determine where the page ends + # by the location of the validity include + if (pi.end == None): + if (pi.validity != None): + pi.end = pi.validity + else: + pi.extractPage = False + pi.Warning = 'Can\'t identify end of page (no validity include)' + continue + + # funcpointer, proto, and struct pages infer the location of the + # parameter and body sections. Other pages infer the location of the + # body but have no parameter sections. + if (pi.include != None): + if (pi.type in ['funcpointers', 'protos', 'structs']): + pi.param = nextPara(file, pi.include) + pi.body = nextPara(file, pi.param) + else: + pi.body = nextPara(file, pi.include) + else: + pi.Warning = 'Page does not have an API definition include::' + + # We can get to this point with .include, .param, and .validity + # all being None, indicating those sections weren't found. + + logDiag('fixupRefs: after processing,', pi.name, 'looks like:') + printPageInfo(pi, file) + + # Now that all the valid pages have been found, try to make some + # inferences about invalid pages. + # + # If a reference without a .end is entirely inside a valid reference, + # then it's intentionally embedded - may want to create an indirect + # page that links into the embedding page. This is done by a very + # inefficient double loop, but the loop depth is small. + for name in sorted(pageMap.keys()): + pi = pageMap[name] + + if (pi.end == None): + for embedName in sorted(pageMap.keys()): + logDiag('fixupRefs: comparing', pi.name, 'to', embedName) + embed = pageMap[embedName] + # Don't check embeddings which are themselves invalid + if (not embed.extractPage): + logDiag('Skipping check for embedding in:', embed.name) + continue + if (embed.begin == None or embed.end == None): + logDiag('fixupRefs:', name + ':', + 'can\'t compare to unanchored ref:', embed.name, + 'in', specFile, 'at line', pi.include ) + printPageInfo(pi, file) + printPageInfo(embed, file) + # If an embed is found, change the error to a warning + elif (pi.include >= embed.begin and pi.include <= embed.end): + logDiag('fixupRefs: Found embed for:', name, + 'inside:', embedName, + 'in', specFile, 'at line', pi.include ) + pi.embed = embed.name + pi.Warning = 'Embedded in definition for ' + embed.name + break + else: + logDiag('fixupRefs: No embed match for:', name, + 'inside:', embedName, 'in', specFile, + 'at line', pi.include) + + +# Patterns used to recognize interesting lines in an asciidoc source file. +# These patterns are only compiled once. +includePat = re.compile('^include::(\.\./)+(?P\w+)/(?P\w+).txt\[\]') +validPat = re.compile('^include::(\.\./)+validity/(?P\w+)/(?P\w+).txt\[\]') +beginPat = re.compile('^// *refBegin (?P\w+) *(?P.*)') +endPat = re.compile('^// *refEnd (?P\w+) *(?P.*)') + +# Identify reference pages in a list of strings, returning a dictionary of +# pageInfo entries for each one found, or None on failure. +def findRefs(file): + # This is a dictionary of interesting line numbers and strings related + # to a Vulkan API name + pageMap = {} + + numLines = len(file) + line = numLines - 1 + + while (line >= 0): + # Only one of the patterns can possibly match. Add it to + # the dictionary for that name. + matches = validPat.search(file[line]) + if (matches != None): + logDiag('findRefs: Matched validPat on line', line, '->', file[line], end='') + type = matches.group('type') + name = matches.group('name') + pi = lookupPage(pageMap, name) + if (pi.type and type != pi.type): + logWarn('ERROR: pageMap[' + name + '] type:', + pi.type, 'does not match type:', type, + 'at line:', line) + pi.type = type + pi.validity = line + logDiag('findRefs:', name, '@', line, 'added TYPE =', pi.type, 'VALIDITY =', pi.validity) + line = line - 1 + continue + + matches = includePat.search(file[line]) + if (matches != None): + logDiag('findRefs: Matched includePat on line', line, '->', file[line], end='') + type = matches.group('type') + name = matches.group('name') + pi = lookupPage(pageMap, name) + if (pi.type and type != pi.type): + logWarn('ERROR: pageMap[' + name + '] type:', + pi.type, 'does not match type:', type, + 'at line:', line) + pi.type = type + pi.include = line + logDiag('findRefs:', name, '@', line, 'added TYPE =', pi.type, 'INCLUDE =', pi.include) + line = line - 1 + continue + + matches = beginPat.search(file[line]) + if (matches != None): + logDiag('findRefs: Matched beginPat on line', line, '->', file[line], end='') + name = matches.group('name') + pi = lookupPage(pageMap, name) + pi.begin = line + pi.desc = matches.group('desc').strip() + if (pi.desc[0:2] == '- '): + pi.desc = pi.desc[2:] + logDiag('findRefs:', name, '@', line, 'added BEGIN =', pi.begin, 'DESC =', pi.desc) + line = line - 1 + continue + + matches = endPat.search(file[line]) + if (matches != None): + logDiag('findRefs: Matched endPat on line', line, '->', file[line], end='') + name = matches.group('name') + pi = lookupPage(pageMap, name) + pi.refs = matches.group('refs') + pi.end = line + logDiag('findRefs:', name, '@', line, 'added END =', pi.end, 'Crossrefs =', pi.refs) + line = line - 1 + continue + + line = line - 1 + continue + + return pageMap + diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index efe09f35cb..dc9c884144 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -556,6 +556,9 @@ existing API Specification. | When describing objects or memory resulting from ftext:vkAllocate* commands. | application | client | +| bitmask | bitfield + | Technically correct. Vulkan bitmasks are just integers and + are not logically addressable at the bit level. | command | function | Except when talking about function pointers returned by ftext:vkGet*ProcAddr commands. @@ -655,7 +658,7 @@ When describing the need for a small number of objects, smaller than ten, spell the number out (e.g. ``one''). If you are describing a literal value that is a small number, you may use a numeric value (e.g. ``1''). -For example, instead of writing that a bitfield ``contains 1 or more bits'', +For example, instead of writing that a bitmask ``contains 1 or more bits'', write that it ``contains one or more bits''. A counter example is that it is okay to write ``For non-stereoscopic-3D applications, this value is 1.'' @@ -905,7 +908,7 @@ structure or enumeration: * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags is a combination of bitfield flags indicating usage behavior + * pname:flags is a combination of bitmask flags indicating usage behavior for the pool and command buffers allocated from it. Possible values include: + @@ -941,7 +944,7 @@ asciidoc parser. It is usually best to append a block following the first paragraph of such a list item: ---- - * pname:flags is a combination of bitfield flags + * pname:flags is a combination of bitmask flags indicating usage behavior for the pool and command buffers allocated from it. Possible values include: diff --git a/doc/specs/vulkan/validity/protos/vkCmdBindIndexBuffer.txt b/doc/specs/vulkan/validity/protos/vkCmdBindIndexBuffer.txt index 5718dcdaea..5b3c8466a8 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdBindIndexBuffer.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdBindIndexBuffer.txt @@ -14,7 +14,7 @@ endif::doctype-manpage[] * The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations * Each of pname:commandBuffer and pname:buffer must: have been created, allocated or retrieved from the same sname:VkDevice * pname:offset must: be less than the size of pname:buffer -* The sum of pname:offset, and the address of the range of sname:VkDeviceMemory object that's backing pname:buffer, must: be a multiple of the type indicated by pname:indexType +* The sum of pname:offset and the address of the range of sname:VkDeviceMemory object that is backing pname:buffer, must: be a multiple of the type indicated by pname:indexType * pname:buffer must: have been created with the ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT flag ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdExecuteCommands.txt b/doc/specs/vulkan/validity/protos/vkCmdExecuteCommands.txt index 0a642a585d..c6d3c3e9d0 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdExecuteCommands.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdExecuteCommands.txt @@ -23,7 +23,7 @@ endif::doctype-manpage[] * If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT * If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the index of the subpass which the given command buffer will be executed in * If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with a render pass that is compatible with the current render pass - see <> -* If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to sname:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the sname:VkFramebuffer used in the current render pass instance +* If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the sname:VkFramebuffer used in the current render pass instance * If the <> feature is not enabled, pname:commandBuffer mustnot: have any queries <> * If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:occlusionQueryEnable set to ename:VK_TRUE * If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:queryFlags having all bits set that are set for the query diff --git a/doc/specs/vulkan/validity/protos/vkCreateComputePipelines.txt b/doc/specs/vulkan/validity/protos/vkCreateComputePipelines.txt index 549b111220..8b133e0f94 100644 --- a/doc/specs/vulkan/validity/protos/vkCreateComputePipelines.txt +++ b/doc/specs/vulkan/validity/protos/vkCreateComputePipelines.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:pipelineCache is not sname:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle +* If pname:pipelineCache is not dlink:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle * pname:pCreateInfos must: be a pointer to an array of pname:createInfoCount valid sname:VkComputePipelineCreateInfo structures * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * pname:pPipelines must: be a pointer to an array of pname:createInfoCount sname:VkPipeline handles diff --git a/doc/specs/vulkan/validity/protos/vkCreateGraphicsPipelines.txt b/doc/specs/vulkan/validity/protos/vkCreateGraphicsPipelines.txt index 669900a66d..484bc8f127 100644 --- a/doc/specs/vulkan/validity/protos/vkCreateGraphicsPipelines.txt +++ b/doc/specs/vulkan/validity/protos/vkCreateGraphicsPipelines.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:pipelineCache is not sname:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle +* If pname:pipelineCache is not dlink:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle * pname:pCreateInfos must: be a pointer to an array of pname:createInfoCount valid sname:VkGraphicsPipelineCreateInfo structures * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * pname:pPipelines must: be a pointer to an array of pname:createInfoCount sname:VkPipeline handles diff --git a/doc/specs/vulkan/validity/protos/vkDestroyBuffer.txt b/doc/specs/vulkan/validity/protos/vkDestroyBuffer.txt index 510a6672b3..2a48549c0e 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyBuffer.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyBuffer.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:buffer is not sname:VK_NULL_HANDLE, pname:buffer must: be a valid sname:VkBuffer handle +* If pname:buffer is not dlink:VK_NULL_HANDLE, pname:buffer must: be a valid sname:VkBuffer handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:buffer is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:buffer that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyBufferView.txt b/doc/specs/vulkan/validity/protos/vkDestroyBufferView.txt index d7835c9de3..8f50d84c80 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyBufferView.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyBufferView.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:bufferView is not sname:VK_NULL_HANDLE, pname:bufferView must: be a valid sname:VkBufferView handle +* If pname:bufferView is not dlink:VK_NULL_HANDLE, pname:bufferView must: be a valid sname:VkBufferView handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:bufferView is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:bufferView that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyCommandPool.txt b/doc/specs/vulkan/validity/protos/vkDestroyCommandPool.txt index e8347a66d1..74bff3dcac 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyCommandPool.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyCommandPool.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:commandPool is not sname:VK_NULL_HANDLE, pname:commandPool must: be a valid sname:VkCommandPool handle +* If pname:commandPool is not dlink:VK_NULL_HANDLE, pname:commandPool must: be a valid sname:VkCommandPool handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:commandPool is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:commandPool that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyDescriptorPool.txt b/doc/specs/vulkan/validity/protos/vkDestroyDescriptorPool.txt index b269d76621..1918b663ae 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyDescriptorPool.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyDescriptorPool.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:descriptorPool is not sname:VK_NULL_HANDLE, pname:descriptorPool must: be a valid sname:VkDescriptorPool handle +* If pname:descriptorPool is not dlink:VK_NULL_HANDLE, pname:descriptorPool must: be a valid sname:VkDescriptorPool handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:descriptorPool is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:descriptorPool that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyDescriptorSetLayout.txt b/doc/specs/vulkan/validity/protos/vkDestroyDescriptorSetLayout.txt index 3428dee32a..fcd968d37a 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyDescriptorSetLayout.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyDescriptorSetLayout.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:descriptorSetLayout is not sname:VK_NULL_HANDLE, pname:descriptorSetLayout must: be a valid sname:VkDescriptorSetLayout handle +* If pname:descriptorSetLayout is not dlink:VK_NULL_HANDLE, pname:descriptorSetLayout must: be a valid sname:VkDescriptorSetLayout handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:descriptorSetLayout is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:descriptorSetLayout that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyEvent.txt b/doc/specs/vulkan/validity/protos/vkDestroyEvent.txt index 1a1ca54bb5..6c5bda2cc6 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyEvent.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:event is not sname:VK_NULL_HANDLE, pname:event must: be a valid sname:VkEvent handle +* If pname:event is not dlink:VK_NULL_HANDLE, pname:event must: be a valid sname:VkEvent handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:event is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:event that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyFence.txt b/doc/specs/vulkan/validity/protos/vkDestroyFence.txt index 64016326b0..ab4582d5dd 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyFence.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyFence.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle +* If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:fence is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyFramebuffer.txt b/doc/specs/vulkan/validity/protos/vkDestroyFramebuffer.txt index 3f454d54e5..d4ddbec2a2 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyFramebuffer.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyFramebuffer.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:framebuffer is not sname:VK_NULL_HANDLE, pname:framebuffer must: be a valid sname:VkFramebuffer handle +* If pname:framebuffer is not dlink:VK_NULL_HANDLE, pname:framebuffer must: be a valid sname:VkFramebuffer handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:framebuffer is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:framebuffer that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyImage.txt b/doc/specs/vulkan/validity/protos/vkDestroyImage.txt index 7f1b2811ca..fa48ba4d39 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyImage.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyImage.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:image is not sname:VK_NULL_HANDLE, pname:image must: be a valid sname:VkImage handle +* If pname:image is not dlink:VK_NULL_HANDLE, pname:image must: be a valid sname:VkImage handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:image is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:image that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyImageView.txt b/doc/specs/vulkan/validity/protos/vkDestroyImageView.txt index 075918bd43..9fb8b0b0d9 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyImageView.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyImageView.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:imageView is not sname:VK_NULL_HANDLE, pname:imageView must: be a valid sname:VkImageView handle +* If pname:imageView is not dlink:VK_NULL_HANDLE, pname:imageView must: be a valid sname:VkImageView handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:imageView is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:imageView that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyPipeline.txt b/doc/specs/vulkan/validity/protos/vkDestroyPipeline.txt index 4cff02fc0d..0a4d802c15 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyPipeline.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyPipeline.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:pipeline is not sname:VK_NULL_HANDLE, pname:pipeline must: be a valid sname:VkPipeline handle +* If pname:pipeline is not dlink:VK_NULL_HANDLE, pname:pipeline must: be a valid sname:VkPipeline handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:pipeline is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:pipeline that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyPipelineCache.txt b/doc/specs/vulkan/validity/protos/vkDestroyPipelineCache.txt index ce3fad43b9..6a7a423d55 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyPipelineCache.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyPipelineCache.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:pipelineCache is not sname:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle +* If pname:pipelineCache is not dlink:VK_NULL_HANDLE, pname:pipelineCache must: be a valid sname:VkPipelineCache handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:pipelineCache is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:pipelineCache that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyPipelineLayout.txt b/doc/specs/vulkan/validity/protos/vkDestroyPipelineLayout.txt index 16b4bce918..003c65842e 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyPipelineLayout.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyPipelineLayout.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:pipelineLayout is not sname:VK_NULL_HANDLE, pname:pipelineLayout must: be a valid sname:VkPipelineLayout handle +* If pname:pipelineLayout is not dlink:VK_NULL_HANDLE, pname:pipelineLayout must: be a valid sname:VkPipelineLayout handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:pipelineLayout is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:pipelineLayout that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyQueryPool.txt b/doc/specs/vulkan/validity/protos/vkDestroyQueryPool.txt index 5b4a0197ad..ab2ba1b5fc 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyQueryPool.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyQueryPool.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:queryPool is not sname:VK_NULL_HANDLE, pname:queryPool must: be a valid sname:VkQueryPool handle +* If pname:queryPool is not dlink:VK_NULL_HANDLE, pname:queryPool must: be a valid sname:VkQueryPool handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:queryPool is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:queryPool that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyRenderPass.txt b/doc/specs/vulkan/validity/protos/vkDestroyRenderPass.txt index 1cc212284d..7280c86d20 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyRenderPass.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyRenderPass.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:renderPass is not sname:VK_NULL_HANDLE, pname:renderPass must: be a valid sname:VkRenderPass handle +* If pname:renderPass is not dlink:VK_NULL_HANDLE, pname:renderPass must: be a valid sname:VkRenderPass handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:renderPass is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:renderPass that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroySampler.txt b/doc/specs/vulkan/validity/protos/vkDestroySampler.txt index 3e6225b2b7..f71046f516 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroySampler.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroySampler.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:sampler is not sname:VK_NULL_HANDLE, pname:sampler must: be a valid sname:VkSampler handle +* If pname:sampler is not dlink:VK_NULL_HANDLE, pname:sampler must: be a valid sname:VkSampler handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:sampler is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:sampler that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroySemaphore.txt b/doc/specs/vulkan/validity/protos/vkDestroySemaphore.txt index 35ba6157a9..0120275bca 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroySemaphore.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroySemaphore.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:semaphore is not sname:VK_NULL_HANDLE, pname:semaphore must: be a valid sname:VkSemaphore handle +* If pname:semaphore is not dlink:VK_NULL_HANDLE, pname:semaphore must: be a valid sname:VkSemaphore handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:semaphore is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:semaphore that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkDestroyShaderModule.txt b/doc/specs/vulkan/validity/protos/vkDestroyShaderModule.txt index 039c5bd105..49c473722d 100644 --- a/doc/specs/vulkan/validity/protos/vkDestroyShaderModule.txt +++ b/doc/specs/vulkan/validity/protos/vkDestroyShaderModule.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:shaderModule is not sname:VK_NULL_HANDLE, pname:shaderModule must: be a valid sname:VkShaderModule handle +* If pname:shaderModule is not dlink:VK_NULL_HANDLE, pname:shaderModule must: be a valid sname:VkShaderModule handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:shaderModule is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:shaderModule that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkFreeCommandBuffers.txt b/doc/specs/vulkan/validity/protos/vkFreeCommandBuffers.txt index 4ce13653ef..2ecc975a44 100644 --- a/doc/specs/vulkan/validity/protos/vkFreeCommandBuffers.txt +++ b/doc/specs/vulkan/validity/protos/vkFreeCommandBuffers.txt @@ -14,7 +14,7 @@ endif::doctype-manpage[] * Each element of pname:pCommandBuffers that is a valid handle must: have been created, allocated or retrieved from pname:commandPool * Each of pname:device, pname:commandPool and the elements of pname:pCommandBuffers that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice * All elements of pname:pCommandBuffers mustnot: be pending execution -* pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or sname:VK_NULL_HANDLE +* pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or dlink:VK_NULL_HANDLE ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkFreeDescriptorSets.txt b/doc/specs/vulkan/validity/protos/vkFreeDescriptorSets.txt index 10450ad16c..9bff52f1c6 100644 --- a/doc/specs/vulkan/validity/protos/vkFreeDescriptorSets.txt +++ b/doc/specs/vulkan/validity/protos/vkFreeDescriptorSets.txt @@ -14,7 +14,8 @@ endif::doctype-manpage[] * Each element of pname:pDescriptorSets that is a valid handle must: have been created, allocated or retrieved from pname:descriptorPool * Each of pname:device, pname:descriptorPool and the elements of pname:pDescriptorSets that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice * All submitted commands that refer to any element of pname:pDescriptorSets must: have completed execution -* pname:pDescriptorSets must: be a pointer to an array of pname:descriptorSetCount sname:VkDescriptorSet handles, each element of which must: either be a valid handle or sname:VK_NULL_HANDLE +* pname:pDescriptorSets must: be a pointer to an array of pname:descriptorSetCount sname:VkDescriptorSet handles, each element of which must: either be a valid handle or dlink:VK_NULL_HANDLE +* Each valid handle in pname:pDescriptorSets must: have been allocated from pname:descriptorPool * pname:descriptorPool must: have been created with the ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT flag ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkFreeMemory.txt b/doc/specs/vulkan/validity/protos/vkFreeMemory.txt index ff53f5254d..76f1467f34 100644 --- a/doc/specs/vulkan/validity/protos/vkFreeMemory.txt +++ b/doc/specs/vulkan/validity/protos/vkFreeMemory.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:device must: be a valid sname:VkDevice handle -* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle +* If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle * If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure * If pname:memory is a valid handle, it must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:memory that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice diff --git a/doc/specs/vulkan/validity/protos/vkGetInstanceProcAddr.txt b/doc/specs/vulkan/validity/protos/vkGetInstanceProcAddr.txt index 63524c3961..e79f38418b 100644 --- a/doc/specs/vulkan/validity/protos/vkGetInstanceProcAddr.txt +++ b/doc/specs/vulkan/validity/protos/vkGetInstanceProcAddr.txt @@ -9,8 +9,8 @@ Valid Usage endif::doctype-manpage[] * If pname:instance is not `NULL`, pname:instance must: be a valid sname:VkInstance handle * pname:pName must: be a null-terminated string -* If pname:instance is `NULL`, pname:pName must: be one of: fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties or fname:vkCreateInstance -* If pname:instance is not `NULL`, pname:pName mustnot: be fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties or fname:vkCreateInstance +* If pname:instance is `NULL`, pname:pName must: be "vkEnumerateInstanceExtensionProperties", "vkEnumerateInstanceLayerProperties", or "vkCreateInstance" +* If pname:instance is not `NULL`, pname:pName mustnot: be "vkEnumerateInstanceExtensionProperties", "vkEnumerateInstanceLayerProperties", or "vkCreateInstance" ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt index d997e50af7..35d32217f4 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt @@ -9,7 +9,7 @@ Valid Usage endif::doctype-manpage[] * pname:queue must: be a valid sname:VkQueue handle * If pname:bindInfoCount is not `0`, pname:pBindInfo must: be a pointer to an array of pname:bindInfoCount valid sname:VkBindSparseInfo structures -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle +* If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * The pname:queue must: support sparse binding operations * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice * pname:fence must: be unsignaled diff --git a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt index d29228fbcd..10163a303c 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt @@ -9,10 +9,10 @@ Valid Usage endif::doctype-manpage[] * pname:queue must: be a valid sname:VkQueue handle * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle +* If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue +* If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence must: be unsignaled +* If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkCommandBufferBeginInfo.txt b/doc/specs/vulkan/validity/structs/VkCommandBufferBeginInfo.txt index 57a074d5ab..e356fc1906 100644 --- a/doc/specs/vulkan/validity/structs/VkCommandBufferBeginInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkCommandBufferBeginInfo.txt @@ -12,7 +12,7 @@ endif::doctype-manpage[] * pname:flags must: be a valid combination of elink:VkCommandBufferUsageFlagBits values * If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:renderPass member of pname:pInheritanceInfo must: be a valid sname:VkRenderPass * If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:subpass member of pname:pInheritanceInfo must: be a valid subpass index within the pname:renderPass member of pname:pInheritanceInfo -* If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:framebuffer member of pname:pInheritanceInfo must: be either sname:VK_NULL_HANDLE, or a valid sname:VkFramebuffer that is compatible with the pname:renderPass member of pname:pInheritanceInfo +* If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:framebuffer member of pname:pInheritanceInfo must: be either dlink:VK_NULL_HANDLE, or a valid sname:VkFramebuffer that is compatible with the pname:renderPass member of pname:pInheritanceInfo ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkComputePipelineCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkComputePipelineCreateInfo.txt index 285d89626f..44cb1a516c 100644 --- a/doc/specs/vulkan/validity/structs/VkComputePipelineCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkComputePipelineCreateInfo.txt @@ -13,11 +13,11 @@ endif::doctype-manpage[] * pname:stage must: be a valid sname:VkPipelineShaderStageCreateInfo structure * pname:layout must: be a valid sname:VkPipelineLayout handle * Each of pname:layout and pname:basePipelineHandle that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be sname:VK_NULL_HANDLE +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE * If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a compute sname:VkPipeline +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, it must: be a valid handle to a compute sname:VkPipeline * The pname:stage member of pname:stage must: be ename:VK_SHADER_STAGE_COMPUTE_BIT * The shader code for the entry point identified by pname:stage and the rest of the state identified by this structure must: adhere to the pipeline linking rules described in the <> chapter * pname:layout must: be <> with all shaders specified in pname:pStages diff --git a/doc/specs/vulkan/validity/structs/VkGraphicsPipelineCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkGraphicsPipelineCreateInfo.txt index a9bf8beb90..f418f5b5ec 100644 --- a/doc/specs/vulkan/validity/structs/VkGraphicsPipelineCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkGraphicsPipelineCreateInfo.txt @@ -19,11 +19,11 @@ endif::doctype-manpage[] * pname:renderPass must: be a valid sname:VkRenderPass handle * pname:stageCount must: be greater than `0` * Each of pname:layout, pname:renderPass and pname:basePipelineHandle that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be sname:VK_NULL_HANDLE +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE * If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle -* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle +* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline * The pname:stage member of each element of pname:pStages must: be unique * The pname:stage member of one element of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT * The pname:stage member of any given element of pname:pStages mustnot: be ename:VK_SHADER_STAGE_COMPUTE_BIT @@ -35,7 +35,7 @@ endif::doctype-manpage[] * If pname:pStages includes both a tessellation control shader stage and a tessellation evaluation shader stage, the shader code of at least one must: contain an code:OpExecutionMode instruction that specifies the output patch size in the pipeline * If pname:pStages includes both a tessellation control shader stage and a tessellation evaluation shader stage, and the shader code of both contain an code:OpExecutionMode instruction that specifies the out patch size in the pipeline, they must: both specify the same patch size * If pname:pStages includes tessellation shader stages, the pname:topology member of pname:pInputAssembly must: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST -* If pname:pStages includes a geometry shader stage, and doesn't include any tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <> with the primitive topology specified in pname:pInputAssembly +* If pname:pStages includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <> with the primitive topology specified in pname:pInputAssembly * If pname:pStages includes a geometry shader stage, and also includes tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <> with the primitive topology that is output by the tessellation stages * If pname:pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with code:PrimitiveID, then the geometry shader code must: write to a matching output variable, decorated with code:PrimitiveID, in all execution paths * If pname:pStages includes a fragment shader stage, its shader code mustnot: read from any input attachment that is defined as ename:VK_ATTACHMENT_UNUSED in pname:subpass diff --git a/doc/specs/vulkan/validity/structs/VkSparseImageMemoryBind.txt b/doc/specs/vulkan/validity/structs/VkSparseImageMemoryBind.txt index 301950d3f1..69cc38403f 100644 --- a/doc/specs/vulkan/validity/structs/VkSparseImageMemoryBind.txt +++ b/doc/specs/vulkan/validity/structs/VkSparseImageMemoryBind.txt @@ -8,7 +8,7 @@ Valid Usage ----------- endif::doctype-manpage[] * pname:subresource must: be a valid sname:VkImageSubresource structure -* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle +* If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle * pname:flags must: be a valid combination of elink:VkSparseMemoryBindFlagBits values * If the <> feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound mustnot: overlap with those bound ranges * pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <> diff --git a/doc/specs/vulkan/validity/structs/VkSparseMemoryBind.txt b/doc/specs/vulkan/validity/structs/VkSparseMemoryBind.txt index 9f3b142dc9..244f977ad6 100644 --- a/doc/specs/vulkan/validity/structs/VkSparseMemoryBind.txt +++ b/doc/specs/vulkan/validity/structs/VkSparseMemoryBind.txt @@ -7,10 +7,10 @@ ifdef::doctype-manpage[] Valid Usage ----------- endif::doctype-manpage[] -* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle +* If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory must: be a valid sname:VkDeviceMemory handle * pname:flags must: be a valid combination of elink:VkSparseMemoryBindFlagBits values -* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <> -* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set +* If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <> +* If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set * pname:size must: be greater than `0` * pname:resourceOffset must: be less than the size of the resource * pname:size must: be less than or equal to the size of the resource minus pname:resourceOffset diff --git a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt index 39a81fa2a6..c8720fe3cf 100644 --- a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt @@ -24,7 +24,7 @@ endif::doctype-manpage[] * Any given element of pname:pCommandBuffers mustnot: contain commands that execute a secondary command buffer, if that secondary command buffer has been recorded in another primary command buffer after it was recorded into this sname:VkCommandBuffer * Any given element of pname:pCommandBuffers must: have been created on a sname:VkCommandPool that was created for the same queue family that the calling command's pname:queue belongs to * Any given element of pname:pCommandBuffers mustnot: have been created with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY -* Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore +* 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 * If the <> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT * If the <> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT ifndef::doctype-manpage[] diff --git a/doc/specs/vulkan/vkapi.py b/doc/specs/vulkan/vkapi.py index ba9bf0a8e0..552231be64 100644 --- a/doc/specs/vulkan/vkapi.py +++ b/doc/specs/vulkan/vkapi.py @@ -1,1037 +1,1800 @@ -flags = {} -enums = {} -structs = {} -consts = {} -enums = {} +basetypes = {} +basetypes['VkBool32'] = None +basetypes['VkDeviceSize'] = None +basetypes['VkFlags'] = None +basetypes['VkSampleMask'] = None consts = {} -protos = {} -funcpointers = {} -# Unprocessed type: vk_platform category: include -structs['VK_MAKE_VERSION'] = None -structs['VK_API_VERSION'] = None -structs['VK_API_VERSION_1_0'] = None -structs['VK_VERSION_MAJOR'] = None -structs['VK_VERSION_MINOR'] = None -structs['VK_VERSION_PATCH'] = None -structs['VK_HEADER_VERSION'] = None -structs['VK_NULL_HANDLE'] = None -consts['VK_PIPELINE_CACHE_HEADER_VERSION_ONE'] = 'VkPipelineCacheHeaderVersion' -enums['VkPipelineCacheHeaderVersion'] = ['VK_PIPELINE_CACHE_HEADER_VERSION_ONE'] -consts['VK_LOD_CLAMP_NONE'] = None -consts['VK_REMAINING_MIP_LEVELS'] = None -consts['VK_REMAINING_ARRAY_LAYERS'] = None -consts['VK_WHOLE_SIZE'] = None +consts['VK_ACCESS_COLOR_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_HOST_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_HOST_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_INDEX_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_INDIRECT_COMMAND_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_INPUT_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_MEMORY_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_MEMORY_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_SHADER_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_SHADER_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_TRANSFER_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_TRANSFER_WRITE_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_UNIFORM_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT'] = 'VkAccessFlagBits' +consts['VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'] = 'VkAttachmentDescriptionFlagBits' +consts['VK_ATTACHMENT_LOAD_OP_CLEAR'] = 'VkAttachmentLoadOp' +consts['VK_ATTACHMENT_LOAD_OP_DONT_CARE'] = 'VkAttachmentLoadOp' +consts['VK_ATTACHMENT_LOAD_OP_LOAD'] = 'VkAttachmentLoadOp' +consts['VK_ATTACHMENT_STORE_OP_DONT_CARE'] = 'VkAttachmentStoreOp' +consts['VK_ATTACHMENT_STORE_OP_STORE'] = 'VkAttachmentStoreOp' consts['VK_ATTACHMENT_UNUSED'] = None -consts['VK_TRUE'] = None -consts['VK_FALSE'] = None -consts['VK_QUEUE_FAMILY_IGNORED'] = None -consts['VK_SUBPASS_EXTERNAL'] = None -consts['VK_SUCCESS'] = 'VkResult' -consts['VK_NOT_READY'] = 'VkResult' -consts['VK_TIMEOUT'] = 'VkResult' -consts['VK_EVENT_SET'] = 'VkResult' -consts['VK_EVENT_RESET'] = 'VkResult' -consts['VK_INCOMPLETE'] = 'VkResult' -consts['VK_ERROR_OUT_OF_HOST_MEMORY'] = 'VkResult' -consts['VK_ERROR_OUT_OF_DEVICE_MEMORY'] = 'VkResult' -consts['VK_ERROR_INITIALIZATION_FAILED'] = 'VkResult' +consts['VK_BLEND_FACTOR_CONSTANT_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_CONSTANT_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_DST_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_DST_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_SRC1_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_SRC1_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_SRC_ALPHA'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_SRC_ALPHA_SATURATE'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_SRC_COLOR'] = 'VkBlendFactor' +consts['VK_BLEND_FACTOR_ZERO'] = 'VkBlendFactor' +consts['VK_BLEND_OP_ADD'] = 'VkBlendOp' +consts['VK_BLEND_OP_MAX'] = 'VkBlendOp' +consts['VK_BLEND_OP_MIN'] = 'VkBlendOp' +consts['VK_BLEND_OP_REVERSE_SUBTRACT'] = 'VkBlendOp' +consts['VK_BLEND_OP_SUBTRACT'] = 'VkBlendOp' +consts['VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK'] = 'VkBorderColor' +consts['VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE'] = 'VkBorderColor' +consts['VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK'] = 'VkBorderColor' +consts['VK_BORDER_COLOR_INT_OPAQUE_BLACK'] = 'VkBorderColor' +consts['VK_BORDER_COLOR_INT_OPAQUE_WHITE'] = 'VkBorderColor' +consts['VK_BORDER_COLOR_INT_TRANSPARENT_BLACK'] = 'VkBorderColor' +consts['VK_BUFFER_CREATE_SPARSE_ALIASED_BIT'] = 'VkBufferCreateFlagBits' +consts['VK_BUFFER_CREATE_SPARSE_BINDING_BIT'] = 'VkBufferCreateFlagBits' +consts['VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT'] = 'VkBufferCreateFlagBits' +consts['VK_BUFFER_USAGE_INDEX_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_STORAGE_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_TRANSFER_DST_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_TRANSFER_SRC_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_BUFFER_USAGE_VERTEX_BUFFER_BIT'] = 'VkBufferUsageFlagBits' +consts['VK_COLOR_COMPONENT_A_BIT'] = 'VkColorComponentFlagBits' +consts['VK_COLOR_COMPONENT_B_BIT'] = 'VkColorComponentFlagBits' +consts['VK_COLOR_COMPONENT_G_BIT'] = 'VkColorComponentFlagBits' +consts['VK_COLOR_COMPONENT_R_BIT'] = 'VkColorComponentFlagBits' +consts['VK_COMMAND_BUFFER_LEVEL_PRIMARY'] = 'VkCommandBufferLevel' +consts['VK_COMMAND_BUFFER_LEVEL_SECONDARY'] = 'VkCommandBufferLevel' +consts['VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT'] = 'VkCommandBufferResetFlagBits' +consts['VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'] = 'VkCommandBufferUsageFlagBits' +consts['VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'] = 'VkCommandBufferUsageFlagBits' +consts['VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'] = 'VkCommandBufferUsageFlagBits' +consts['VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'] = 'VkCommandPoolCreateFlagBits' +consts['VK_COMMAND_POOL_CREATE_TRANSIENT_BIT'] = 'VkCommandPoolCreateFlagBits' +consts['VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT'] = 'VkCommandPoolResetFlagBits' +consts['VK_COMPARE_OP_ALWAYS'] = 'VkCompareOp' +consts['VK_COMPARE_OP_EQUAL'] = 'VkCompareOp' +consts['VK_COMPARE_OP_GREATER'] = 'VkCompareOp' +consts['VK_COMPARE_OP_GREATER_OR_EQUAL'] = 'VkCompareOp' +consts['VK_COMPARE_OP_LESS'] = 'VkCompareOp' +consts['VK_COMPARE_OP_LESS_OR_EQUAL'] = 'VkCompareOp' +consts['VK_COMPARE_OP_NEVER'] = 'VkCompareOp' +consts['VK_COMPARE_OP_NOT_EQUAL'] = 'VkCompareOp' +consts['VK_COMPONENT_SWIZZLE_A'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_B'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_G'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_IDENTITY'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_ONE'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_R'] = 'VkComponentSwizzle' +consts['VK_COMPONENT_SWIZZLE_ZERO'] = 'VkComponentSwizzle' +consts['VK_CULL_MODE_BACK_BIT'] = 'VkCullModeFlagBits' +consts['VK_CULL_MODE_FRONT_AND_BACK'] = 'VkCullModeFlagBits' +consts['VK_CULL_MODE_FRONT_BIT'] = 'VkCullModeFlagBits' +consts['VK_CULL_MODE_NONE'] = 'VkCullModeFlagBits' +consts['VK_DEPENDENCY_BY_REGION_BIT'] = 'VkDependencyFlagBits' +consts['VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'] = 'VkDescriptorPoolCreateFlagBits' +consts['VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_SAMPLER'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_STORAGE_BUFFER'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_STORAGE_IMAGE'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'] = 'VkDescriptorType' +consts['VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'] = 'VkDescriptorType' +consts['VK_DYNAMIC_STATE_BLEND_CONSTANTS'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_DEPTH_BIAS'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_DEPTH_BOUNDS'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_LINE_WIDTH'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_SCISSOR'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_STENCIL_REFERENCE'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_STENCIL_WRITE_MASK'] = 'VkDynamicState' +consts['VK_DYNAMIC_STATE_VIEWPORT'] = 'VkDynamicState' consts['VK_ERROR_DEVICE_LOST'] = 'VkResult' -consts['VK_ERROR_MEMORY_MAP_FAILED'] = 'VkResult' -consts['VK_ERROR_LAYER_NOT_PRESENT'] = 'VkResult' consts['VK_ERROR_EXTENSION_NOT_PRESENT'] = 'VkResult' consts['VK_ERROR_FEATURE_NOT_PRESENT'] = 'VkResult' -consts['VK_ERROR_INCOMPATIBLE_DRIVER'] = 'VkResult' -consts['VK_ERROR_TOO_MANY_OBJECTS'] = 'VkResult' consts['VK_ERROR_FORMAT_NOT_SUPPORTED'] = 'VkResult' -consts['VK_ERROR_SURFACE_LOST_KHR'] = 'VkResult' +consts['VK_ERROR_INCOMPATIBLE_DISPLAY_KHR'] = 'VkResult' +consts['VK_ERROR_INCOMPATIBLE_DRIVER'] = 'VkResult' +consts['VK_ERROR_INITIALIZATION_FAILED'] = 'VkResult' +consts['VK_ERROR_INVALID_SHADER_NV'] = 'VkResult' +consts['VK_ERROR_LAYER_NOT_PRESENT'] = 'VkResult' +consts['VK_ERROR_MEMORY_MAP_FAILED'] = 'VkResult' consts['VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'] = 'VkResult' -consts['VK_SUBOPTIMAL_KHR'] = 'VkResult' consts['VK_ERROR_OUT_OF_DATE_KHR'] = 'VkResult' -consts['VK_ERROR_INCOMPATIBLE_DISPLAY_KHR'] = 'VkResult' +consts['VK_ERROR_OUT_OF_DEVICE_MEMORY'] = 'VkResult' +consts['VK_ERROR_OUT_OF_HOST_MEMORY'] = 'VkResult' +consts['VK_ERROR_SURFACE_LOST_KHR'] = 'VkResult' +consts['VK_ERROR_TOO_MANY_OBJECTS'] = 'VkResult' consts['VK_ERROR_VALIDATION_FAILED_EXT'] = 'VkResult' -consts['VK_ERROR_INVALID_SHADER_NV'] = 'VkResult' -consts['VK_NV_EXTENSION_1_ERROR'] = 'VkResult' -enums['VkResult'] = ['VK_SUCCESS', 'VK_NOT_READY', 'VK_TIMEOUT', 'VK_EVENT_SET', 'VK_EVENT_RESET', 'VK_INCOMPLETE', 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_MEMORY_MAP_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_FORMAT_NOT_SUPPORTED', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_SUBOPTIMAL_KHR', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_VALIDATION_FAILED_EXT', 'VK_ERROR_INVALID_SHADER_NV', 'VK_NV_EXTENSION_1_ERROR'] -consts['VK_STRUCTURE_TYPE_APPLICATION_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_SUBMIT_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_BIND_SPARSE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_FENCE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_EVENT_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_MEMORY_BARRIER'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PRESENT_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'] = 'VkStructureType' -consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] = 'VkStructureType' -enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] -# Unprocessed type: void -# Unprocessed type: uint32_t -# Unprocessed type: VkFlags category: basetype -flags['VkInstanceCreateFlags'] = None -# Unprocessed type: char -structs['VkApplicationInfo'] = ['sType', 'pNext', 'pApplicationName', 'applicationVersion', 'pEngineName', 'engineVersion', 'apiVersion'] -structs['VkInstanceCreateInfo'] = ['sType', 'pNext', 'flags', 'pApplicationInfo', 'enabledLayerCount', 'ppEnabledLayerNames', 'enabledExtensionCount', 'ppEnabledExtensionNames'] -# Unprocessed type: size_t -consts['VK_SYSTEM_ALLOCATION_SCOPE_COMMAND'] = 'VkSystemAllocationScope' -consts['VK_SYSTEM_ALLOCATION_SCOPE_OBJECT'] = 'VkSystemAllocationScope' -consts['VK_SYSTEM_ALLOCATION_SCOPE_CACHE'] = 'VkSystemAllocationScope' -consts['VK_SYSTEM_ALLOCATION_SCOPE_DEVICE'] = 'VkSystemAllocationScope' -consts['VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE'] = 'VkSystemAllocationScope' -enums['VkSystemAllocationScope'] = ['VK_SYSTEM_ALLOCATION_SCOPE_COMMAND', 'VK_SYSTEM_ALLOCATION_SCOPE_OBJECT', 'VK_SYSTEM_ALLOCATION_SCOPE_CACHE', 'VK_SYSTEM_ALLOCATION_SCOPE_DEVICE', 'VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE'] -funcpointers['PFN_vkAllocationFunction'] = None -funcpointers['PFN_vkReallocationFunction'] = None -funcpointers['PFN_vkFreeFunction'] = None -consts['VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE'] = 'VkInternalAllocationType' -enums['VkInternalAllocationType'] = ['VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE'] -funcpointers['PFN_vkInternalAllocationNotification'] = None -funcpointers['PFN_vkInternalFreeNotification'] = None -structs['VkAllocationCallbacks'] = ['pUserData', 'pfnAllocation', 'pfnReallocation', 'pfnFree', 'pfnInternalAllocation', 'pfnInternalFree'] -structs['VK_DEFINE_HANDLE'] = None -structs['VkInstance'] = None -protos['vkCreateInstance'] = ['pCreateInfo', 'pAllocator', 'pInstance'] -protos['vkDestroyInstance'] = ['instance', 'pAllocator'] -structs['VkPhysicalDevice'] = None -protos['vkEnumeratePhysicalDevices'] = ['instance', 'pPhysicalDeviceCount', 'pPhysicalDevices'] -# Unprocessed type: VkBool32 category: basetype -structs['VkPhysicalDeviceFeatures'] = ['robustBufferAccess', 'fullDrawIndexUint32', 'imageCubeArray', 'independentBlend', 'geometryShader', 'tessellationShader', 'sampleRateShading', 'dualSrcBlend', 'logicOp', 'multiDrawIndirect', 'drawIndirectFirstInstance', 'depthClamp', 'depthBiasClamp', 'fillModeNonSolid', 'depthBounds', 'wideLines', 'largePoints', 'alphaToOne', 'multiViewport', 'samplerAnisotropy', 'textureCompressionETC2', 'textureCompressionASTC_LDR', 'textureCompressionBC', 'occlusionQueryPrecise', 'pipelineStatisticsQuery', 'vertexPipelineStoresAndAtomics', 'fragmentStoresAndAtomics', 'shaderTessellationAndGeometryPointSize', 'shaderImageGatherExtended', 'shaderStorageImageExtendedFormats', 'shaderStorageImageMultisample', 'shaderStorageImageReadWithoutFormat', 'shaderStorageImageWriteWithoutFormat', 'shaderUniformBufferArrayDynamicIndexing', 'shaderSampledImageArrayDynamicIndexing', 'shaderStorageBufferArrayDynamicIndexing', 'shaderStorageImageArrayDynamicIndexing', 'shaderClipDistance', 'shaderCullDistance', 'shaderFloat64', 'shaderInt64', 'shaderInt16', 'shaderResourceResidency', 'shaderResourceMinLod', 'sparseBinding', 'sparseResidencyBuffer', 'sparseResidencyImage2D', 'sparseResidencyImage3D', 'sparseResidency2Samples', 'sparseResidency4Samples', 'sparseResidency8Samples', 'sparseResidency16Samples', 'sparseResidencyAliased', 'variableMultisampleRate', 'inheritedQueries'] -protos['vkGetPhysicalDeviceFeatures'] = ['physicalDevice', 'pFeatures'] -consts['VK_FORMAT_UNDEFINED'] = 'VkFormat' -consts['VK_FORMAT_R4G4_UNORM_PACK8'] = 'VkFormat' -consts['VK_FORMAT_R4G4B4A4_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_B4G4R4A4_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_R5G6B5_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_B5G6R5_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_R5G5B5A1_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_B5G5R5A1_UNORM_PACK16'] = 'VkFormat' +consts['VK_EVENT_RESET'] = 'VkResult' +consts['VK_EVENT_SET'] = 'VkResult' +consts['VK_FALSE'] = None +consts['VK_FENCE_CREATE_SIGNALED_BIT'] = 'VkFenceCreateFlagBits' +consts['VK_FILTER_CUBIC_IMG'] = 'VkFilter' +consts['VK_FILTER_LINEAR'] = 'VkFilter' +consts['VK_FILTER_NEAREST'] = 'VkFilter' consts['VK_FORMAT_A1R5G5B5_UNORM_PACK16'] = 'VkFormat' -consts['VK_FORMAT_R8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R8_UINT'] = 'VkFormat' -consts['VK_FORMAT_R8_SINT'] = 'VkFormat' -consts['VK_FORMAT_R8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_R8G8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8_UINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8_SINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_UINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_SINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_UINT'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_SINT'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_UINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_SINT'] = 'VkFormat' -consts['VK_FORMAT_R8G8B8A8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_UNORM'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_SNORM'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_USCALED'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_UINT'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_SINT'] = 'VkFormat' -consts['VK_FORMAT_B8G8R8A8_SRGB'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_UNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_SNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_USCALED_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_SSCALED_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_UINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_SINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A8B8G8R8_SRGB_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_UNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_SNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_USCALED_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_SSCALED_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_UINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2R10G10B10_SINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2B10G10R10_UNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2B10G10R10_SINT_PACK32'] = 'VkFormat' consts['VK_FORMAT_A2B10G10R10_SNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2B10G10R10_USCALED_PACK32'] = 'VkFormat' consts['VK_FORMAT_A2B10G10R10_SSCALED_PACK32'] = 'VkFormat' consts['VK_FORMAT_A2B10G10R10_UINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_A2B10G10R10_SINT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_R16_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R16_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R16_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R16_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R16_UINT'] = 'VkFormat' -consts['VK_FORMAT_R16_SINT'] = 'VkFormat' -consts['VK_FORMAT_R16_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R16G16_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16_UINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16_SINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_UINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_SINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_UNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_SNORM'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_USCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_SSCALED'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_UINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_SINT'] = 'VkFormat' -consts['VK_FORMAT_R16G16B16A16_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R32_UINT'] = 'VkFormat' -consts['VK_FORMAT_R32_SINT'] = 'VkFormat' -consts['VK_FORMAT_R32_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R32G32_UINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32_SINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32_UINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32_SINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32A32_UINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32A32_SINT'] = 'VkFormat' -consts['VK_FORMAT_R32G32B32A32_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R64_UINT'] = 'VkFormat' -consts['VK_FORMAT_R64_SINT'] = 'VkFormat' -consts['VK_FORMAT_R64_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R64G64_UINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64_SINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64_UINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64_SINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64A64_UINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64A64_SINT'] = 'VkFormat' -consts['VK_FORMAT_R64G64B64A64_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_A2B10G10R10_UNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2B10G10R10_USCALED_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_SINT_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_SNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_SSCALED_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_UINT_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_UNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A2R10G10B10_USCALED_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_SINT_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_SNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_SRGB_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_SSCALED_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_UINT_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_UNORM_PACK32'] = 'VkFormat' +consts['VK_FORMAT_A8B8G8R8_USCALED_PACK32'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x10_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x10_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x5_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x5_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x6_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x6_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x8_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_10x8_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_12x10_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_12x10_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_12x12_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_12x12_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_4x4_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_4x4_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_5x4_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_5x4_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_5x5_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_5x5_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_6x5_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_6x5_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_6x6_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_6x6_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x5_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x5_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x6_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x6_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x8_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ASTC_8x8_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_B10G11R11_UFLOAT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_E5B9G9R9_UFLOAT_PACK32'] = 'VkFormat' -consts['VK_FORMAT_D16_UNORM'] = 'VkFormat' -consts['VK_FORMAT_X8_D24_UNORM_PACK32'] = 'VkFormat' -consts['VK_FORMAT_D32_SFLOAT'] = 'VkFormat' -consts['VK_FORMAT_S8_UINT'] = 'VkFormat' -consts['VK_FORMAT_D16_UNORM_S8_UINT'] = 'VkFormat' -consts['VK_FORMAT_D24_UNORM_S8_UINT'] = 'VkFormat' -consts['VK_FORMAT_D32_SFLOAT_S8_UINT'] = 'VkFormat' -consts['VK_FORMAT_BC1_RGB_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC1_RGB_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC1_RGBA_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_B4G4R4A4_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_B5G5R5A1_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_B5G6R5_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_SINT'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_UINT'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8A8_USCALED'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_SINT'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_UINT'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_B8G8R8_USCALED'] = 'VkFormat' consts['VK_FORMAT_BC1_RGBA_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC2_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC1_RGBA_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC1_RGB_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC1_RGB_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC2_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC3_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC2_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC3_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC4_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC3_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC4_SNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC5_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC4_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC5_SNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC6H_UFLOAT_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC5_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC6H_SFLOAT_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_BC7_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC6H_UFLOAT_BLOCK'] = 'VkFormat' consts['VK_FORMAT_BC7_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_BC7_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_D16_UNORM'] = 'VkFormat' +consts['VK_FORMAT_D16_UNORM_S8_UINT'] = 'VkFormat' +consts['VK_FORMAT_D24_UNORM_S8_UINT'] = 'VkFormat' +consts['VK_FORMAT_D32_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_D32_SFLOAT_S8_UINT'] = 'VkFormat' +consts['VK_FORMAT_E5B9G9R9_UFLOAT_PACK32'] = 'VkFormat' +consts['VK_FORMAT_EAC_R11G11_SNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_EAC_R11G11_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_EAC_R11_SNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_EAC_R11_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK'] = 'VkFormat' consts['VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_EAC_R11_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_EAC_R11_SNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_EAC_R11G11_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_EAC_R11G11_SNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_4x4_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_4x4_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_5x4_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_5x4_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_5x5_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_5x5_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_6x5_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_6x5_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_6x6_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_6x6_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x5_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x5_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x6_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x6_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x8_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_8x8_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x5_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x5_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x6_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x6_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x8_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x8_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x10_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_10x10_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_12x10_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_12x10_SRGB_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_12x12_UNORM_BLOCK'] = 'VkFormat' -consts['VK_FORMAT_ASTC_12x12_SRGB_BLOCK'] = 'VkFormat' -enums['VkFormat'] = ['VK_FORMAT_UNDEFINED', 'VK_FORMAT_R4G4_UNORM_PACK8', 'VK_FORMAT_R4G4B4A4_UNORM_PACK16', 'VK_FORMAT_B4G4R4A4_UNORM_PACK16', 'VK_FORMAT_R5G6B5_UNORM_PACK16', 'VK_FORMAT_B5G6R5_UNORM_PACK16', 'VK_FORMAT_R5G5B5A1_UNORM_PACK16', 'VK_FORMAT_B5G5R5A1_UNORM_PACK16', 'VK_FORMAT_A1R5G5B5_UNORM_PACK16', 'VK_FORMAT_R8_UNORM', 'VK_FORMAT_R8_SNORM', 'VK_FORMAT_R8_USCALED', 'VK_FORMAT_R8_SSCALED', 'VK_FORMAT_R8_UINT', 'VK_FORMAT_R8_SINT', 'VK_FORMAT_R8_SRGB', 'VK_FORMAT_R8G8_UNORM', 'VK_FORMAT_R8G8_SNORM', 'VK_FORMAT_R8G8_USCALED', 'VK_FORMAT_R8G8_SSCALED', 'VK_FORMAT_R8G8_UINT', 'VK_FORMAT_R8G8_SINT', 'VK_FORMAT_R8G8_SRGB', 'VK_FORMAT_R8G8B8_UNORM', 'VK_FORMAT_R8G8B8_SNORM', 'VK_FORMAT_R8G8B8_USCALED', 'VK_FORMAT_R8G8B8_SSCALED', 'VK_FORMAT_R8G8B8_UINT', 'VK_FORMAT_R8G8B8_SINT', 'VK_FORMAT_R8G8B8_SRGB', 'VK_FORMAT_B8G8R8_UNORM', 'VK_FORMAT_B8G8R8_SNORM', 'VK_FORMAT_B8G8R8_USCALED', 'VK_FORMAT_B8G8R8_SSCALED', 'VK_FORMAT_B8G8R8_UINT', 'VK_FORMAT_B8G8R8_SINT', 'VK_FORMAT_B8G8R8_SRGB', 'VK_FORMAT_R8G8B8A8_UNORM', 'VK_FORMAT_R8G8B8A8_SNORM', 'VK_FORMAT_R8G8B8A8_USCALED', 'VK_FORMAT_R8G8B8A8_SSCALED', 'VK_FORMAT_R8G8B8A8_UINT', 'VK_FORMAT_R8G8B8A8_SINT', 'VK_FORMAT_R8G8B8A8_SRGB', 'VK_FORMAT_B8G8R8A8_UNORM', 'VK_FORMAT_B8G8R8A8_SNORM', 'VK_FORMAT_B8G8R8A8_USCALED', 'VK_FORMAT_B8G8R8A8_SSCALED', 'VK_FORMAT_B8G8R8A8_UINT', 'VK_FORMAT_B8G8R8A8_SINT', 'VK_FORMAT_B8G8R8A8_SRGB', 'VK_FORMAT_A8B8G8R8_UNORM_PACK32', 'VK_FORMAT_A8B8G8R8_SNORM_PACK32', 'VK_FORMAT_A8B8G8R8_USCALED_PACK32', 'VK_FORMAT_A8B8G8R8_SSCALED_PACK32', 'VK_FORMAT_A8B8G8R8_UINT_PACK32', 'VK_FORMAT_A8B8G8R8_SINT_PACK32', 'VK_FORMAT_A8B8G8R8_SRGB_PACK32', 'VK_FORMAT_A2R10G10B10_UNORM_PACK32', 'VK_FORMAT_A2R10G10B10_SNORM_PACK32', 'VK_FORMAT_A2R10G10B10_USCALED_PACK32', 'VK_FORMAT_A2R10G10B10_SSCALED_PACK32', 'VK_FORMAT_A2R10G10B10_UINT_PACK32', 'VK_FORMAT_A2R10G10B10_SINT_PACK32', 'VK_FORMAT_A2B10G10R10_UNORM_PACK32', 'VK_FORMAT_A2B10G10R10_SNORM_PACK32', 'VK_FORMAT_A2B10G10R10_USCALED_PACK32', 'VK_FORMAT_A2B10G10R10_SSCALED_PACK32', 'VK_FORMAT_A2B10G10R10_UINT_PACK32', 'VK_FORMAT_A2B10G10R10_SINT_PACK32', 'VK_FORMAT_R16_UNORM', 'VK_FORMAT_R16_SNORM', 'VK_FORMAT_R16_USCALED', 'VK_FORMAT_R16_SSCALED', 'VK_FORMAT_R16_UINT', 'VK_FORMAT_R16_SINT', 'VK_FORMAT_R16_SFLOAT', 'VK_FORMAT_R16G16_UNORM', 'VK_FORMAT_R16G16_SNORM', 'VK_FORMAT_R16G16_USCALED', 'VK_FORMAT_R16G16_SSCALED', 'VK_FORMAT_R16G16_UINT', 'VK_FORMAT_R16G16_SINT', 'VK_FORMAT_R16G16_SFLOAT', 'VK_FORMAT_R16G16B16_UNORM', 'VK_FORMAT_R16G16B16_SNORM', 'VK_FORMAT_R16G16B16_USCALED', 'VK_FORMAT_R16G16B16_SSCALED', 'VK_FORMAT_R16G16B16_UINT', 'VK_FORMAT_R16G16B16_SINT', 'VK_FORMAT_R16G16B16_SFLOAT', 'VK_FORMAT_R16G16B16A16_UNORM', 'VK_FORMAT_R16G16B16A16_SNORM', 'VK_FORMAT_R16G16B16A16_USCALED', 'VK_FORMAT_R16G16B16A16_SSCALED', 'VK_FORMAT_R16G16B16A16_UINT', 'VK_FORMAT_R16G16B16A16_SINT', 'VK_FORMAT_R16G16B16A16_SFLOAT', 'VK_FORMAT_R32_UINT', 'VK_FORMAT_R32_SINT', 'VK_FORMAT_R32_SFLOAT', 'VK_FORMAT_R32G32_UINT', 'VK_FORMAT_R32G32_SINT', 'VK_FORMAT_R32G32_SFLOAT', 'VK_FORMAT_R32G32B32_UINT', 'VK_FORMAT_R32G32B32_SINT', 'VK_FORMAT_R32G32B32_SFLOAT', 'VK_FORMAT_R32G32B32A32_UINT', 'VK_FORMAT_R32G32B32A32_SINT', 'VK_FORMAT_R32G32B32A32_SFLOAT', 'VK_FORMAT_R64_UINT', 'VK_FORMAT_R64_SINT', 'VK_FORMAT_R64_SFLOAT', 'VK_FORMAT_R64G64_UINT', 'VK_FORMAT_R64G64_SINT', 'VK_FORMAT_R64G64_SFLOAT', 'VK_FORMAT_R64G64B64_UINT', 'VK_FORMAT_R64G64B64_SINT', 'VK_FORMAT_R64G64B64_SFLOAT', 'VK_FORMAT_R64G64B64A64_UINT', 'VK_FORMAT_R64G64B64A64_SINT', 'VK_FORMAT_R64G64B64A64_SFLOAT', 'VK_FORMAT_B10G11R11_UFLOAT_PACK32', 'VK_FORMAT_E5B9G9R9_UFLOAT_PACK32', 'VK_FORMAT_D16_UNORM', 'VK_FORMAT_X8_D24_UNORM_PACK32', 'VK_FORMAT_D32_SFLOAT', 'VK_FORMAT_S8_UINT', 'VK_FORMAT_D16_UNORM_S8_UINT', 'VK_FORMAT_D24_UNORM_S8_UINT', 'VK_FORMAT_D32_SFLOAT_S8_UINT', 'VK_FORMAT_BC1_RGB_UNORM_BLOCK', 'VK_FORMAT_BC1_RGB_SRGB_BLOCK', 'VK_FORMAT_BC1_RGBA_UNORM_BLOCK', 'VK_FORMAT_BC1_RGBA_SRGB_BLOCK', 'VK_FORMAT_BC2_UNORM_BLOCK', 'VK_FORMAT_BC2_SRGB_BLOCK', 'VK_FORMAT_BC3_UNORM_BLOCK', 'VK_FORMAT_BC3_SRGB_BLOCK', 'VK_FORMAT_BC4_UNORM_BLOCK', 'VK_FORMAT_BC4_SNORM_BLOCK', 'VK_FORMAT_BC5_UNORM_BLOCK', 'VK_FORMAT_BC5_SNORM_BLOCK', 'VK_FORMAT_BC6H_UFLOAT_BLOCK', 'VK_FORMAT_BC6H_SFLOAT_BLOCK', 'VK_FORMAT_BC7_UNORM_BLOCK', 'VK_FORMAT_BC7_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK', 'VK_FORMAT_EAC_R11_UNORM_BLOCK', 'VK_FORMAT_EAC_R11_SNORM_BLOCK', 'VK_FORMAT_EAC_R11G11_UNORM_BLOCK', 'VK_FORMAT_EAC_R11G11_SNORM_BLOCK', 'VK_FORMAT_ASTC_4x4_UNORM_BLOCK', 'VK_FORMAT_ASTC_4x4_SRGB_BLOCK', 'VK_FORMAT_ASTC_5x4_UNORM_BLOCK', 'VK_FORMAT_ASTC_5x4_SRGB_BLOCK', 'VK_FORMAT_ASTC_5x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_5x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_6x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_6x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_6x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_6x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x8_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x8_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x8_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x8_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x10_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x10_SRGB_BLOCK', 'VK_FORMAT_ASTC_12x10_UNORM_BLOCK', 'VK_FORMAT_ASTC_12x10_SRGB_BLOCK', 'VK_FORMAT_ASTC_12x12_UNORM_BLOCK', 'VK_FORMAT_ASTC_12x12_SRGB_BLOCK'] -consts['VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK'] = 'VkFormat' +consts['VK_FORMAT_FEATURE_BLIT_DST_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_BLIT_SRC_BIT'] = 'VkFormatFeatureFlagBits' consts['VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'] = 'VkFormatFeatureFlagBits' consts['VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'] = 'VkFormatFeatureFlagBits' consts['VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_BLIT_SRC_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_BLIT_DST_BIT'] = 'VkFormatFeatureFlagBits' -consts['VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT'] = 'VkFormatFeatureFlagBits' consts['VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG'] = 'VkFormatFeatureFlagBits' -enums['VkFormatFeatureFlagBits'] = ['VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT', 'VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT', 'VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT', 'VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT', 'VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT', 'VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT', 'VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT', 'VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT', 'VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT', 'VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT', 'VK_FORMAT_FEATURE_BLIT_SRC_BIT', 'VK_FORMAT_FEATURE_BLIT_DST_BIT', 'VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT', 'VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG'] -flags['VkFormatFeatureFlags'] = 'VkFormatFeatureFlagBits' -structs['VkFormatProperties'] = ['linearTilingFeatures', 'optimalTilingFeatures', 'bufferFeatures'] -protos['vkGetPhysicalDeviceFormatProperties'] = ['physicalDevice', 'format', 'pFormatProperties'] +consts['VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT'] = 'VkFormatFeatureFlagBits' +consts['VK_FORMAT_R16G16B16A16_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_SINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_UINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16A16_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_SINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_UINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16B16_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R16G16_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R16G16_SINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R16G16_UINT'] = 'VkFormat' +consts['VK_FORMAT_R16G16_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R16G16_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R16_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R16_SINT'] = 'VkFormat' +consts['VK_FORMAT_R16_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R16_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R16_UINT'] = 'VkFormat' +consts['VK_FORMAT_R16_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R16_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32A32_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32A32_SINT'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32A32_UINT'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32_SINT'] = 'VkFormat' +consts['VK_FORMAT_R32G32B32_UINT'] = 'VkFormat' +consts['VK_FORMAT_R32G32_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R32G32_SINT'] = 'VkFormat' +consts['VK_FORMAT_R32G32_UINT'] = 'VkFormat' +consts['VK_FORMAT_R32_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R32_SINT'] = 'VkFormat' +consts['VK_FORMAT_R32_UINT'] = 'VkFormat' +consts['VK_FORMAT_R4G4B4A4_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_R4G4_UNORM_PACK8'] = 'VkFormat' +consts['VK_FORMAT_R5G5B5A1_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_R5G6B5_UNORM_PACK16'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64A64_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64A64_SINT'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64A64_UINT'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64_SINT'] = 'VkFormat' +consts['VK_FORMAT_R64G64B64_UINT'] = 'VkFormat' +consts['VK_FORMAT_R64G64_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R64G64_SINT'] = 'VkFormat' +consts['VK_FORMAT_R64G64_UINT'] = 'VkFormat' +consts['VK_FORMAT_R64_SFLOAT'] = 'VkFormat' +consts['VK_FORMAT_R64_SINT'] = 'VkFormat' +consts['VK_FORMAT_R64_UINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_SINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_UINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8A8_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_SINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_UINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8B8_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R8G8_SINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_R8G8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R8G8_UINT'] = 'VkFormat' +consts['VK_FORMAT_R8G8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R8G8_USCALED'] = 'VkFormat' +consts['VK_FORMAT_R8_SINT'] = 'VkFormat' +consts['VK_FORMAT_R8_SNORM'] = 'VkFormat' +consts['VK_FORMAT_R8_SRGB'] = 'VkFormat' +consts['VK_FORMAT_R8_SSCALED'] = 'VkFormat' +consts['VK_FORMAT_R8_UINT'] = 'VkFormat' +consts['VK_FORMAT_R8_UNORM'] = 'VkFormat' +consts['VK_FORMAT_R8_USCALED'] = 'VkFormat' +consts['VK_FORMAT_S8_UINT'] = 'VkFormat' +consts['VK_FORMAT_UNDEFINED'] = 'VkFormat' +consts['VK_FORMAT_X8_D24_UNORM_PACK32'] = 'VkFormat' +consts['VK_FRONT_FACE_CLOCKWISE'] = 'VkFrontFace' +consts['VK_FRONT_FACE_COUNTER_CLOCKWISE'] = 'VkFrontFace' +consts['VK_IMAGE_ASPECT_COLOR_BIT'] = 'VkImageAspectFlagBits' +consts['VK_IMAGE_ASPECT_DEPTH_BIT'] = 'VkImageAspectFlagBits' +consts['VK_IMAGE_ASPECT_METADATA_BIT'] = 'VkImageAspectFlagBits' +consts['VK_IMAGE_ASPECT_STENCIL_BIT'] = 'VkImageAspectFlagBits' +consts['VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT'] = 'VkImageCreateFlagBits' +consts['VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT'] = 'VkImageCreateFlagBits' +consts['VK_IMAGE_CREATE_SPARSE_ALIASED_BIT'] = 'VkImageCreateFlagBits' +consts['VK_IMAGE_CREATE_SPARSE_BINDING_BIT'] = 'VkImageCreateFlagBits' +consts['VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT'] = 'VkImageCreateFlagBits' +consts['VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_GENERAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_PREINITIALIZED'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_PRESENT_SRC_KHR'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'] = 'VkImageLayout' +consts['VK_IMAGE_LAYOUT_UNDEFINED'] = 'VkImageLayout' +consts['VK_IMAGE_TILING_LINEAR'] = 'VkImageTiling' +consts['VK_IMAGE_TILING_OPTIMAL'] = 'VkImageTiling' consts['VK_IMAGE_TYPE_1D'] = 'VkImageType' consts['VK_IMAGE_TYPE_2D'] = 'VkImageType' consts['VK_IMAGE_TYPE_3D'] = 'VkImageType' -enums['VkImageType'] = ['VK_IMAGE_TYPE_1D', 'VK_IMAGE_TYPE_2D', 'VK_IMAGE_TYPE_3D'] -consts['VK_IMAGE_TILING_OPTIMAL'] = 'VkImageTiling' -consts['VK_IMAGE_TILING_LINEAR'] = 'VkImageTiling' -enums['VkImageTiling'] = ['VK_IMAGE_TILING_OPTIMAL', 'VK_IMAGE_TILING_LINEAR'] -consts['VK_IMAGE_USAGE_TRANSFER_SRC_BIT'] = 'VkImageUsageFlagBits' -consts['VK_IMAGE_USAGE_TRANSFER_DST_BIT'] = 'VkImageUsageFlagBits' -consts['VK_IMAGE_USAGE_SAMPLED_BIT'] = 'VkImageUsageFlagBits' -consts['VK_IMAGE_USAGE_STORAGE_BIT'] = 'VkImageUsageFlagBits' consts['VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT'] = 'VkImageUsageFlagBits' consts['VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'] = 'VkImageUsageFlagBits' -consts['VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'] = 'VkImageUsageFlagBits' consts['VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT'] = 'VkImageUsageFlagBits' -enums['VkImageUsageFlagBits'] = ['VK_IMAGE_USAGE_TRANSFER_SRC_BIT', 'VK_IMAGE_USAGE_TRANSFER_DST_BIT', 'VK_IMAGE_USAGE_SAMPLED_BIT', 'VK_IMAGE_USAGE_STORAGE_BIT', 'VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT'] -flags['VkImageUsageFlags'] = 'VkImageUsageFlagBits' -consts['VK_IMAGE_CREATE_SPARSE_BINDING_BIT'] = 'VkImageCreateFlagBits' -consts['VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT'] = 'VkImageCreateFlagBits' -consts['VK_IMAGE_CREATE_SPARSE_ALIASED_BIT'] = 'VkImageCreateFlagBits' -consts['VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT'] = 'VkImageCreateFlagBits' -consts['VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT'] = 'VkImageCreateFlagBits' -enums['VkImageCreateFlagBits'] = ['VK_IMAGE_CREATE_SPARSE_BINDING_BIT', 'VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT', 'VK_IMAGE_CREATE_SPARSE_ALIASED_BIT', 'VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT', 'VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT'] -flags['VkImageCreateFlags'] = 'VkImageCreateFlagBits' -structs['VkExtent3D'] = ['width', 'height', 'depth'] -consts['VK_SAMPLE_COUNT_1_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_2_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_4_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_8_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_16_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_32_BIT'] = 'VkSampleCountFlagBits' -consts['VK_SAMPLE_COUNT_64_BIT'] = 'VkSampleCountFlagBits' -enums['VkSampleCountFlagBits'] = ['VK_SAMPLE_COUNT_1_BIT', 'VK_SAMPLE_COUNT_2_BIT', 'VK_SAMPLE_COUNT_4_BIT', 'VK_SAMPLE_COUNT_8_BIT', 'VK_SAMPLE_COUNT_16_BIT', 'VK_SAMPLE_COUNT_32_BIT', 'VK_SAMPLE_COUNT_64_BIT'] -flags['VkSampleCountFlags'] = 'VkSampleCountFlagBits' -# Unprocessed type: uint64_t -# Unprocessed type: VkDeviceSize category: basetype -structs['VkImageFormatProperties'] = ['maxExtent', 'maxMipLevels', 'maxArrayLayers', 'sampleCounts', 'maxResourceSize'] -protos['vkGetPhysicalDeviceImageFormatProperties'] = ['physicalDevice', 'format', 'type', 'tiling', 'usage', 'flags', 'pImageFormatProperties'] -consts['VK_PHYSICAL_DEVICE_TYPE_OTHER'] = 'VkPhysicalDeviceType' -consts['VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU'] = 'VkPhysicalDeviceType' -consts['VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU'] = 'VkPhysicalDeviceType' -consts['VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU'] = 'VkPhysicalDeviceType' -consts['VK_PHYSICAL_DEVICE_TYPE_CPU'] = 'VkPhysicalDeviceType' -enums['VkPhysicalDeviceType'] = ['VK_PHYSICAL_DEVICE_TYPE_OTHER', 'VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU', 'VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU', 'VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU', 'VK_PHYSICAL_DEVICE_TYPE_CPU'] -# Unprocessed type: uint8_t -# Unprocessed type: float -# Unprocessed type: int32_t -structs['VkPhysicalDeviceLimits'] = ['maxImageDimension1D', 'maxImageDimension2D', 'maxImageDimension3D', 'maxImageDimensionCube', 'maxImageArrayLayers', 'maxTexelBufferElements', 'maxUniformBufferRange', 'maxStorageBufferRange', 'maxPushConstantsSize', 'maxMemoryAllocationCount', 'maxSamplerAllocationCount', 'bufferImageGranularity', 'sparseAddressSpaceSize', 'maxBoundDescriptorSets', 'maxPerStageDescriptorSamplers', 'maxPerStageDescriptorUniformBuffers', 'maxPerStageDescriptorStorageBuffers', 'maxPerStageDescriptorSampledImages', 'maxPerStageDescriptorStorageImages', 'maxPerStageDescriptorInputAttachments', 'maxPerStageResources', 'maxDescriptorSetSamplers', 'maxDescriptorSetUniformBuffers', 'maxDescriptorSetUniformBuffersDynamic', 'maxDescriptorSetStorageBuffers', 'maxDescriptorSetStorageBuffersDynamic', 'maxDescriptorSetSampledImages', 'maxDescriptorSetStorageImages', 'maxDescriptorSetInputAttachments', 'maxVertexInputAttributes', 'maxVertexInputBindings', 'maxVertexInputAttributeOffset', 'maxVertexInputBindingStride', 'maxVertexOutputComponents', 'maxTessellationGenerationLevel', 'maxTessellationPatchSize', 'maxTessellationControlPerVertexInputComponents', 'maxTessellationControlPerVertexOutputComponents', 'maxTessellationControlPerPatchOutputComponents', 'maxTessellationControlTotalOutputComponents', 'maxTessellationEvaluationInputComponents', 'maxTessellationEvaluationOutputComponents', 'maxGeometryShaderInvocations', 'maxGeometryInputComponents', 'maxGeometryOutputComponents', 'maxGeometryOutputVertices', 'maxGeometryTotalOutputComponents', 'maxFragmentInputComponents', 'maxFragmentOutputAttachments', 'maxFragmentDualSrcAttachments', 'maxFragmentCombinedOutputResources', 'maxComputeSharedMemorySize', 'maxComputeWorkGroupCount', 'maxComputeWorkGroupInvocations', 'maxComputeWorkGroupSize', 'subPixelPrecisionBits', 'subTexelPrecisionBits', 'mipmapPrecisionBits', 'maxDrawIndexedIndexValue', 'maxDrawIndirectCount', 'maxSamplerLodBias', 'maxSamplerAnisotropy', 'maxViewports', 'maxViewportDimensions', 'viewportBoundsRange', 'viewportSubPixelBits', 'minMemoryMapAlignment', 'minTexelBufferOffsetAlignment', 'minUniformBufferOffsetAlignment', 'minStorageBufferOffsetAlignment', 'minTexelOffset', 'maxTexelOffset', 'minTexelGatherOffset', 'maxTexelGatherOffset', 'minInterpolationOffset', 'maxInterpolationOffset', 'subPixelInterpolationOffsetBits', 'maxFramebufferWidth', 'maxFramebufferHeight', 'maxFramebufferLayers', 'framebufferColorSampleCounts', 'framebufferDepthSampleCounts', 'framebufferStencilSampleCounts', 'framebufferNoAttachmentsSampleCounts', 'maxColorAttachments', 'sampledImageColorSampleCounts', 'sampledImageIntegerSampleCounts', 'sampledImageDepthSampleCounts', 'sampledImageStencilSampleCounts', 'storageImageSampleCounts', 'maxSampleMaskWords', 'timestampComputeAndGraphics', 'timestampPeriod', 'maxClipDistances', 'maxCullDistances', 'maxCombinedClipAndCullDistances', 'discreteQueuePriorities', 'pointSizeRange', 'lineWidthRange', 'pointSizeGranularity', 'lineWidthGranularity', 'strictLines', 'standardSampleLocations', 'optimalBufferCopyOffsetAlignment', 'optimalBufferCopyRowPitchAlignment', 'nonCoherentAtomSize'] -structs['VkPhysicalDeviceSparseProperties'] = ['residencyStandard2DBlockShape', 'residencyStandard2DMultisampleBlockShape', 'residencyStandard3DBlockShape', 'residencyAlignedMipSize', 'residencyNonResidentStrict'] +consts['VK_IMAGE_USAGE_SAMPLED_BIT'] = 'VkImageUsageFlagBits' +consts['VK_IMAGE_USAGE_STORAGE_BIT'] = 'VkImageUsageFlagBits' +consts['VK_IMAGE_USAGE_TRANSFER_DST_BIT'] = 'VkImageUsageFlagBits' +consts['VK_IMAGE_USAGE_TRANSFER_SRC_BIT'] = 'VkImageUsageFlagBits' +consts['VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'] = 'VkImageUsageFlagBits' +consts['VK_IMAGE_VIEW_TYPE_1D'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_1D_ARRAY'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_2D'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_2D_ARRAY'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_3D'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_CUBE'] = 'VkImageViewType' +consts['VK_IMAGE_VIEW_TYPE_CUBE_ARRAY'] = 'VkImageViewType' +consts['VK_INCOMPLETE'] = 'VkResult' +consts['VK_INDEX_TYPE_UINT16'] = 'VkIndexType' +consts['VK_INDEX_TYPE_UINT32'] = 'VkIndexType' +consts['VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE'] = 'VkInternalAllocationType' +consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME'] = None +consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION'] = None +consts['VK_LOD_CLAMP_NONE'] = None +consts['VK_LOGIC_OP_AND'] = 'VkLogicOp' +consts['VK_LOGIC_OP_AND_INVERTED'] = 'VkLogicOp' +consts['VK_LOGIC_OP_AND_REVERSE'] = 'VkLogicOp' +consts['VK_LOGIC_OP_CLEAR'] = 'VkLogicOp' +consts['VK_LOGIC_OP_COPY'] = 'VkLogicOp' +consts['VK_LOGIC_OP_COPY_INVERTED'] = 'VkLogicOp' +consts['VK_LOGIC_OP_EQUIVALENT'] = 'VkLogicOp' +consts['VK_LOGIC_OP_INVERT'] = 'VkLogicOp' +consts['VK_LOGIC_OP_NAND'] = 'VkLogicOp' +consts['VK_LOGIC_OP_NOR'] = 'VkLogicOp' +consts['VK_LOGIC_OP_NO_OP'] = 'VkLogicOp' +consts['VK_LOGIC_OP_OR'] = 'VkLogicOp' +consts['VK_LOGIC_OP_OR_INVERTED'] = 'VkLogicOp' +consts['VK_LOGIC_OP_OR_REVERSE'] = 'VkLogicOp' +consts['VK_LOGIC_OP_SET'] = 'VkLogicOp' +consts['VK_LOGIC_OP_XOR'] = 'VkLogicOp' +consts['VK_MAX_DESCRIPTION_SIZE'] = None +consts['VK_MAX_EXTENSION_NAME_SIZE'] = None +consts['VK_MAX_MEMORY_HEAPS'] = None +consts['VK_MAX_MEMORY_TYPES'] = None consts['VK_MAX_PHYSICAL_DEVICE_NAME_SIZE'] = None -consts['VK_UUID_SIZE'] = None -structs['VkPhysicalDeviceProperties'] = ['apiVersion', 'driverVersion', 'vendorID', 'deviceID', 'deviceType', 'deviceName', 'pipelineCacheUUID', 'limits', 'sparseProperties'] -protos['vkGetPhysicalDeviceProperties'] = ['physicalDevice', 'pProperties'] -consts['VK_QUEUE_GRAPHICS_BIT'] = 'VkQueueFlagBits' -consts['VK_QUEUE_COMPUTE_BIT'] = 'VkQueueFlagBits' -consts['VK_QUEUE_TRANSFER_BIT'] = 'VkQueueFlagBits' -consts['VK_QUEUE_SPARSE_BINDING_BIT'] = 'VkQueueFlagBits' -enums['VkQueueFlagBits'] = ['VK_QUEUE_GRAPHICS_BIT', 'VK_QUEUE_COMPUTE_BIT', 'VK_QUEUE_TRANSFER_BIT', 'VK_QUEUE_SPARSE_BINDING_BIT'] -flags['VkQueueFlags'] = 'VkQueueFlagBits' -structs['VkQueueFamilyProperties'] = ['queueFlags', 'queueCount', 'timestampValidBits', 'minImageTransferGranularity'] -protos['vkGetPhysicalDeviceQueueFamilyProperties'] = ['physicalDevice', 'pQueueFamilyPropertyCount', 'pQueueFamilyProperties'] +consts['VK_MEMORY_HEAP_DEVICE_LOCAL_BIT'] = 'VkMemoryHeapFlagBits' consts['VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT'] = 'VkMemoryPropertyFlagBits' -consts['VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT'] = 'VkMemoryPropertyFlagBits' -consts['VK_MEMORY_PROPERTY_HOST_COHERENT_BIT'] = 'VkMemoryPropertyFlagBits' consts['VK_MEMORY_PROPERTY_HOST_CACHED_BIT'] = 'VkMemoryPropertyFlagBits' +consts['VK_MEMORY_PROPERTY_HOST_COHERENT_BIT'] = 'VkMemoryPropertyFlagBits' +consts['VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT'] = 'VkMemoryPropertyFlagBits' consts['VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'] = 'VkMemoryPropertyFlagBits' -enums['VkMemoryPropertyFlagBits'] = ['VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT', 'VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT', 'VK_MEMORY_PROPERTY_HOST_COHERENT_BIT', 'VK_MEMORY_PROPERTY_HOST_CACHED_BIT', 'VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'] -flags['VkMemoryPropertyFlags'] = 'VkMemoryPropertyFlagBits' -structs['VkMemoryType'] = ['propertyFlags', 'heapIndex'] -consts['VK_MEMORY_HEAP_DEVICE_LOCAL_BIT'] = 'VkMemoryHeapFlagBits' -enums['VkMemoryHeapFlagBits'] = ['VK_MEMORY_HEAP_DEVICE_LOCAL_BIT'] -flags['VkMemoryHeapFlags'] = 'VkMemoryHeapFlagBits' -structs['VkMemoryHeap'] = ['size', 'flags'] -consts['VK_MAX_MEMORY_TYPES'] = None -consts['VK_MAX_MEMORY_HEAPS'] = None -structs['VkPhysicalDeviceMemoryProperties'] = ['memoryTypeCount', 'memoryTypes', 'memoryHeapCount', 'memoryHeaps'] -protos['vkGetPhysicalDeviceMemoryProperties'] = ['physicalDevice', 'pMemoryProperties'] -funcpointers['PFN_vkVoidFunction'] = None -protos['vkGetInstanceProcAddr'] = ['instance', 'pName'] -structs['VkDevice'] = None -protos['vkGetDeviceProcAddr'] = ['device', 'pName'] -flags['VkDeviceCreateFlags'] = None -flags['VkDeviceQueueCreateFlags'] = None -structs['VkDeviceQueueCreateInfo'] = ['sType', 'pNext', 'flags', 'queueFamilyIndex', 'queueCount', 'pQueuePriorities'] -structs['VkDeviceCreateInfo'] = ['sType', 'pNext', 'flags', 'queueCreateInfoCount', 'pQueueCreateInfos', 'enabledLayerCount', 'ppEnabledLayerNames', 'enabledExtensionCount', 'ppEnabledExtensionNames', 'pEnabledFeatures'] -protos['vkCreateDevice'] = ['physicalDevice', 'pCreateInfo', 'pAllocator', 'pDevice'] -protos['vkDestroyDevice'] = ['device', 'pAllocator'] -consts['VK_MAX_EXTENSION_NAME_SIZE'] = None -structs['VkExtensionProperties'] = ['extensionName', 'specVersion'] -protos['vkEnumerateInstanceExtensionProperties'] = ['pLayerName', 'pPropertyCount', 'pProperties'] -protos['vkEnumerateDeviceExtensionProperties'] = ['physicalDevice', 'pLayerName', 'pPropertyCount', 'pProperties'] -consts['VK_MAX_DESCRIPTION_SIZE'] = None -structs['VkLayerProperties'] = ['layerName', 'specVersion', 'implementationVersion', 'description'] -protos['vkEnumerateInstanceLayerProperties'] = ['pPropertyCount', 'pProperties'] -protos['vkEnumerateDeviceLayerProperties'] = ['physicalDevice', 'pPropertyCount', 'pProperties'] -structs['VkQueue'] = None -protos['vkGetDeviceQueue'] = ['device', 'queueFamilyIndex', 'queueIndex', 'pQueue'] -structs['VK_DEFINE_NON_DISPATCHABLE_HANDLE'] = None -structs['VkSemaphore'] = None -consts['VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_NOT_READY'] = 'VkResult' +consts['VK_NV_EXTENSION_1_ERROR'] = 'VkResult' +consts['VK_PHYSICAL_DEVICE_TYPE_CPU'] = 'VkPhysicalDeviceType' +consts['VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU'] = 'VkPhysicalDeviceType' +consts['VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU'] = 'VkPhysicalDeviceType' +consts['VK_PHYSICAL_DEVICE_TYPE_OTHER'] = 'VkPhysicalDeviceType' +consts['VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU'] = 'VkPhysicalDeviceType' +consts['VK_PIPELINE_BIND_POINT_COMPUTE'] = 'VkPipelineBindPoint' +consts['VK_PIPELINE_BIND_POINT_GRAPHICS'] = 'VkPipelineBindPoint' +consts['VK_PIPELINE_CACHE_HEADER_VERSION_ONE'] = 'VkPipelineCacheHeaderVersion' +consts['VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'] = 'VkPipelineCreateFlagBits' +consts['VK_PIPELINE_CREATE_DERIVATIVE_BIT'] = 'VkPipelineCreateFlagBits' +consts['VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT'] = 'VkPipelineCreateFlagBits' +consts['VK_PIPELINE_STAGE_ALL_COMMANDS_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT'] = 'VkPipelineStageFlagBits' consts['VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_VERTEX_INPUT_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_VERTEX_SHADER_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT'] = 'VkPipelineStageFlagBits' consts['VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_HOST_BIT'] = 'VkPipelineStageFlagBits' consts['VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT'] = 'VkPipelineStageFlagBits' consts['VK_PIPELINE_STAGE_TRANSFER_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_HOST_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT'] = 'VkPipelineStageFlagBits' -consts['VK_PIPELINE_STAGE_ALL_COMMANDS_BIT'] = 'VkPipelineStageFlagBits' -enums['VkPipelineStageFlagBits'] = ['VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT', 'VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT', 'VK_PIPELINE_STAGE_VERTEX_INPUT_BIT', 'VK_PIPELINE_STAGE_VERTEX_SHADER_BIT', 'VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT', 'VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', 'VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT', 'VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT', 'VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', 'VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT', 'VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT', 'VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT', 'VK_PIPELINE_STAGE_TRANSFER_BIT', 'VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT', 'VK_PIPELINE_STAGE_HOST_BIT', 'VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT', 'VK_PIPELINE_STAGE_ALL_COMMANDS_BIT'] -flags['VkPipelineStageFlags'] = 'VkPipelineStageFlagBits' -structs['VkCommandBuffer'] = None -structs['VkSubmitInfo'] = ['sType', 'pNext', 'waitSemaphoreCount', 'pWaitSemaphores', 'pWaitDstStageMask', 'commandBufferCount', 'pCommandBuffers', 'signalSemaphoreCount', 'pSignalSemaphores'] -structs['VkFence'] = None -protos['vkQueueSubmit'] = ['queue', 'submitCount', 'pSubmits', 'fence'] -protos['vkQueueWaitIdle'] = ['queue'] -protos['vkDeviceWaitIdle'] = ['device'] -structs['VkMemoryAllocateInfo'] = ['sType', 'pNext', 'allocationSize', 'memoryTypeIndex'] -structs['VkDeviceMemory'] = None -protos['vkAllocateMemory'] = ['device', 'pAllocateInfo', 'pAllocator', 'pMemory'] -protos['vkFreeMemory'] = ['device', 'memory', 'pAllocator'] -flags['VkMemoryMapFlags'] = None -protos['vkMapMemory'] = ['device', 'memory', 'offset', 'size', 'flags', 'ppData'] -protos['vkUnmapMemory'] = ['device', 'memory'] -structs['VkMappedMemoryRange'] = ['sType', 'pNext', 'memory', 'offset', 'size'] -protos['vkFlushMappedMemoryRanges'] = ['device', 'memoryRangeCount', 'pMemoryRanges'] -protos['vkInvalidateMappedMemoryRanges'] = ['device', 'memoryRangeCount', 'pMemoryRanges'] -protos['vkGetDeviceMemoryCommitment'] = ['device', 'memory', 'pCommittedMemoryInBytes'] -structs['VkBuffer'] = None -protos['vkBindBufferMemory'] = ['device', 'buffer', 'memory', 'memoryOffset'] -structs['VkImage'] = None -protos['vkBindImageMemory'] = ['device', 'image', 'memory', 'memoryOffset'] -structs['VkMemoryRequirements'] = ['size', 'alignment', 'memoryTypeBits'] -protos['vkGetBufferMemoryRequirements'] = ['device', 'buffer', 'pMemoryRequirements'] -protos['vkGetImageMemoryRequirements'] = ['device', 'image', 'pMemoryRequirements'] -consts['VK_IMAGE_ASPECT_COLOR_BIT'] = 'VkImageAspectFlagBits' -consts['VK_IMAGE_ASPECT_DEPTH_BIT'] = 'VkImageAspectFlagBits' -consts['VK_IMAGE_ASPECT_STENCIL_BIT'] = 'VkImageAspectFlagBits' -consts['VK_IMAGE_ASPECT_METADATA_BIT'] = 'VkImageAspectFlagBits' -enums['VkImageAspectFlagBits'] = ['VK_IMAGE_ASPECT_COLOR_BIT', 'VK_IMAGE_ASPECT_DEPTH_BIT', 'VK_IMAGE_ASPECT_STENCIL_BIT', 'VK_IMAGE_ASPECT_METADATA_BIT'] -flags['VkImageAspectFlags'] = 'VkImageAspectFlagBits' -consts['VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT'] = 'VkSparseImageFormatFlagBits' -consts['VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT'] = 'VkSparseImageFormatFlagBits' -consts['VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT'] = 'VkSparseImageFormatFlagBits' -enums['VkSparseImageFormatFlagBits'] = ['VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT', 'VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT', 'VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT'] -flags['VkSparseImageFormatFlags'] = 'VkSparseImageFormatFlagBits' -structs['VkSparseImageFormatProperties'] = ['aspectMask', 'imageGranularity', 'flags'] -structs['VkSparseImageMemoryRequirements'] = ['formatProperties', 'imageMipTailFirstLod', 'imageMipTailSize', 'imageMipTailOffset', 'imageMipTailStride'] -protos['vkGetImageSparseMemoryRequirements'] = ['device', 'image', 'pSparseMemoryRequirementCount', 'pSparseMemoryRequirements'] -protos['vkGetPhysicalDeviceSparseImageFormatProperties'] = ['physicalDevice', 'format', 'type', 'samples', 'usage', 'tiling', 'pPropertyCount', 'pProperties'] -consts['VK_SPARSE_MEMORY_BIND_METADATA_BIT'] = 'VkSparseMemoryBindFlagBits' -enums['VkSparseMemoryBindFlagBits'] = ['VK_SPARSE_MEMORY_BIND_METADATA_BIT'] -flags['VkSparseMemoryBindFlags'] = 'VkSparseMemoryBindFlagBits' -structs['VkSparseMemoryBind'] = ['resourceOffset', 'size', 'memory', 'memoryOffset', 'flags'] -structs['VkSparseBufferMemoryBindInfo'] = ['buffer', 'bindCount', 'pBinds'] -structs['VkSparseImageOpaqueMemoryBindInfo'] = ['image', 'bindCount', 'pBinds'] -structs['VkImageSubresource'] = ['aspectMask', 'mipLevel', 'arrayLayer'] -structs['VkOffset3D'] = ['x', 'y', 'z'] -structs['VkSparseImageMemoryBind'] = ['subresource', 'offset', 'extent', 'memory', 'memoryOffset', 'flags'] -structs['VkSparseImageMemoryBindInfo'] = ['image', 'bindCount', 'pBinds'] -structs['VkBindSparseInfo'] = ['sType', 'pNext', 'waitSemaphoreCount', 'pWaitSemaphores', 'bufferBindCount', 'pBufferBinds', 'imageOpaqueBindCount', 'pImageOpaqueBinds', 'imageBindCount', 'pImageBinds', 'signalSemaphoreCount', 'pSignalSemaphores'] -protos['vkQueueBindSparse'] = ['queue', 'bindInfoCount', 'pBindInfo', 'fence'] -consts['VK_FENCE_CREATE_SIGNALED_BIT'] = 'VkFenceCreateFlagBits' -enums['VkFenceCreateFlagBits'] = ['VK_FENCE_CREATE_SIGNALED_BIT'] -flags['VkFenceCreateFlags'] = 'VkFenceCreateFlagBits' -structs['VkFenceCreateInfo'] = ['sType', 'pNext', 'flags'] -protos['vkCreateFence'] = ['device', 'pCreateInfo', 'pAllocator', 'pFence'] -protos['vkDestroyFence'] = ['device', 'fence', 'pAllocator'] -protos['vkResetFences'] = ['device', 'fenceCount', 'pFences'] -protos['vkGetFenceStatus'] = ['device', 'fence'] -protos['vkWaitForFences'] = ['device', 'fenceCount', 'pFences', 'waitAll', 'timeout'] -flags['VkSemaphoreCreateFlags'] = None -structs['VkSemaphoreCreateInfo'] = ['sType', 'pNext', 'flags'] -protos['vkCreateSemaphore'] = ['device', 'pCreateInfo', 'pAllocator', 'pSemaphore'] -protos['vkDestroySemaphore'] = ['device', 'semaphore', 'pAllocator'] -flags['VkEventCreateFlags'] = None -structs['VkEventCreateInfo'] = ['sType', 'pNext', 'flags'] -structs['VkEvent'] = None -protos['vkCreateEvent'] = ['device', 'pCreateInfo', 'pAllocator', 'pEvent'] -protos['vkDestroyEvent'] = ['device', 'event', 'pAllocator'] -protos['vkGetEventStatus'] = ['device', 'event'] -protos['vkSetEvent'] = ['device', 'event'] -protos['vkResetEvent'] = ['device', 'event'] -flags['VkQueryPoolCreateFlags'] = None -consts['VK_QUERY_TYPE_OCCLUSION'] = 'VkQueryType' -consts['VK_QUERY_TYPE_PIPELINE_STATISTICS'] = 'VkQueryType' -consts['VK_QUERY_TYPE_TIMESTAMP'] = 'VkQueryType' -enums['VkQueryType'] = ['VK_QUERY_TYPE_OCCLUSION', 'VK_QUERY_TYPE_PIPELINE_STATISTICS', 'VK_QUERY_TYPE_TIMESTAMP'] -consts['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT'] = 'VkQueryPipelineStatisticFlagBits' -consts['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT'] = 'VkQueryPipelineStatisticFlagBits' -consts['VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' -consts['VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' -consts['VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_PIPELINE_STAGE_VERTEX_INPUT_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_PIPELINE_STAGE_VERTEX_SHADER_BIT'] = 'VkPipelineStageFlagBits' +consts['VK_POLYGON_MODE_FILL'] = 'VkPolygonMode' +consts['VK_POLYGON_MODE_LINE'] = 'VkPolygonMode' +consts['VK_POLYGON_MODE_POINT'] = 'VkPolygonMode' +consts['VK_PRIMITIVE_TOPOLOGY_LINE_LIST'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_LINE_STRIP'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_PATCH_LIST'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_POINT_LIST'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP'] = 'VkPrimitiveTopology' +consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'] = 'VkPrimitiveTopology' +consts['VK_QUERY_CONTROL_PRECISE_BIT'] = 'VkQueryControlFlagBits' consts['VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' consts['VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' consts['VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT'] = 'VkQueryPipelineStatisticFlagBits' +consts['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT'] = 'VkQueryPipelineStatisticFlagBits' consts['VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT'] = 'VkQueryPipelineStatisticFlagBits' consts['VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' -consts['VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' -enums['VkQueryPipelineStatisticFlagBits'] = ['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT'] -flags['VkQueryPipelineStatisticFlags'] = 'VkQueryPipelineStatisticFlagBits' -structs['VkQueryPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'queryType', 'queryCount', 'pipelineStatistics'] -structs['VkQueryPool'] = None -protos['vkCreateQueryPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pQueryPool'] -protos['vkDestroyQueryPool'] = ['device', 'queryPool', 'pAllocator'] +consts['VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT'] = 'VkQueryPipelineStatisticFlagBits' consts['VK_QUERY_RESULT_64_BIT'] = 'VkQueryResultFlagBits' +consts['VK_QUERY_RESULT_PARTIAL_BIT'] = 'VkQueryResultFlagBits' consts['VK_QUERY_RESULT_WAIT_BIT'] = 'VkQueryResultFlagBits' consts['VK_QUERY_RESULT_WITH_AVAILABILITY_BIT'] = 'VkQueryResultFlagBits' -consts['VK_QUERY_RESULT_PARTIAL_BIT'] = 'VkQueryResultFlagBits' -enums['VkQueryResultFlagBits'] = ['VK_QUERY_RESULT_64_BIT', 'VK_QUERY_RESULT_WAIT_BIT', 'VK_QUERY_RESULT_WITH_AVAILABILITY_BIT', 'VK_QUERY_RESULT_PARTIAL_BIT'] -flags['VkQueryResultFlags'] = 'VkQueryResultFlagBits' -protos['vkGetQueryPoolResults'] = ['device', 'queryPool', 'firstQuery', 'queryCount', 'dataSize', 'pData', 'stride', 'flags'] -consts['VK_BUFFER_CREATE_SPARSE_BINDING_BIT'] = 'VkBufferCreateFlagBits' -consts['VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT'] = 'VkBufferCreateFlagBits' -consts['VK_BUFFER_CREATE_SPARSE_ALIASED_BIT'] = 'VkBufferCreateFlagBits' -enums['VkBufferCreateFlagBits'] = ['VK_BUFFER_CREATE_SPARSE_BINDING_BIT', 'VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT', 'VK_BUFFER_CREATE_SPARSE_ALIASED_BIT'] -flags['VkBufferCreateFlags'] = 'VkBufferCreateFlagBits' -consts['VK_BUFFER_USAGE_TRANSFER_SRC_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_TRANSFER_DST_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_STORAGE_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_INDEX_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_VERTEX_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -consts['VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT'] = 'VkBufferUsageFlagBits' -enums['VkBufferUsageFlagBits'] = ['VK_BUFFER_USAGE_TRANSFER_SRC_BIT', 'VK_BUFFER_USAGE_TRANSFER_DST_BIT', 'VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT', 'VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT', 'VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT', 'VK_BUFFER_USAGE_STORAGE_BUFFER_BIT', 'VK_BUFFER_USAGE_INDEX_BUFFER_BIT', 'VK_BUFFER_USAGE_VERTEX_BUFFER_BIT', 'VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT'] -flags['VkBufferUsageFlags'] = 'VkBufferUsageFlagBits' -consts['VK_SHARING_MODE_EXCLUSIVE'] = 'VkSharingMode' +consts['VK_QUERY_TYPE_OCCLUSION'] = 'VkQueryType' +consts['VK_QUERY_TYPE_PIPELINE_STATISTICS'] = 'VkQueryType' +consts['VK_QUERY_TYPE_TIMESTAMP'] = 'VkQueryType' +consts['VK_QUEUE_COMPUTE_BIT'] = 'VkQueueFlagBits' +consts['VK_QUEUE_FAMILY_IGNORED'] = None +consts['VK_QUEUE_GRAPHICS_BIT'] = 'VkQueueFlagBits' +consts['VK_QUEUE_SPARSE_BINDING_BIT'] = 'VkQueueFlagBits' +consts['VK_QUEUE_TRANSFER_BIT'] = 'VkQueueFlagBits' +consts['VK_REMAINING_ARRAY_LAYERS'] = None +consts['VK_REMAINING_MIP_LEVELS'] = None +consts['VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'] = 'VkSamplerAddressMode' +consts['VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'] = 'VkSamplerAddressMode' +consts['VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT'] = 'VkSamplerAddressMode' +consts['VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'] = 'VkSamplerAddressMode' +consts['VK_SAMPLER_ADDRESS_MODE_REPEAT'] = 'VkSamplerAddressMode' +consts['VK_SAMPLER_MIPMAP_MODE_LINEAR'] = 'VkSamplerMipmapMode' +consts['VK_SAMPLER_MIPMAP_MODE_NEAREST'] = 'VkSamplerMipmapMode' +consts['VK_SAMPLE_COUNT_16_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_1_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_2_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_32_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_4_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_64_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SAMPLE_COUNT_8_BIT'] = 'VkSampleCountFlagBits' +consts['VK_SHADER_STAGE_ALL'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_ALL_GRAPHICS'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_COMPUTE_BIT'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_FRAGMENT_BIT'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_GEOMETRY_BIT'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT'] = 'VkShaderStageFlagBits' +consts['VK_SHADER_STAGE_VERTEX_BIT'] = 'VkShaderStageFlagBits' consts['VK_SHARING_MODE_CONCURRENT'] = 'VkSharingMode' -enums['VkSharingMode'] = ['VK_SHARING_MODE_EXCLUSIVE', 'VK_SHARING_MODE_CONCURRENT'] -structs['VkBufferCreateInfo'] = ['sType', 'pNext', 'flags', 'size', 'usage', 'sharingMode', 'queueFamilyIndexCount', 'pQueueFamilyIndices'] -protos['vkCreateBuffer'] = ['device', 'pCreateInfo', 'pAllocator', 'pBuffer'] -protos['vkDestroyBuffer'] = ['device', 'buffer', 'pAllocator'] -flags['VkBufferViewCreateFlags'] = None -structs['VkBufferViewCreateInfo'] = ['sType', 'pNext', 'flags', 'buffer', 'format', 'offset', 'range'] -structs['VkBufferView'] = None -protos['vkCreateBufferView'] = ['device', 'pCreateInfo', 'pAllocator', 'pView'] -protos['vkDestroyBufferView'] = ['device', 'bufferView', 'pAllocator'] -consts['VK_IMAGE_LAYOUT_UNDEFINED'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_GENERAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_PREINITIALIZED'] = 'VkImageLayout' -consts['VK_IMAGE_LAYOUT_PRESENT_SRC_KHR'] = 'VkImageLayout' -enums['VkImageLayout'] = ['VK_IMAGE_LAYOUT_UNDEFINED', 'VK_IMAGE_LAYOUT_GENERAL', 'VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL', 'VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL', 'VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', 'VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL', 'VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', 'VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', 'VK_IMAGE_LAYOUT_PREINITIALIZED', 'VK_IMAGE_LAYOUT_PRESENT_SRC_KHR'] -structs['VkImageCreateInfo'] = ['sType', 'pNext', 'flags', 'imageType', 'format', 'extent', 'mipLevels', 'arrayLayers', 'samples', 'tiling', 'usage', 'sharingMode', 'queueFamilyIndexCount', 'pQueueFamilyIndices', 'initialLayout'] -protos['vkCreateImage'] = ['device', 'pCreateInfo', 'pAllocator', 'pImage'] -protos['vkDestroyImage'] = ['device', 'image', 'pAllocator'] -structs['VkSubresourceLayout'] = ['offset', 'size', 'rowPitch', 'arrayPitch', 'depthPitch'] -protos['vkGetImageSubresourceLayout'] = ['device', 'image', 'pSubresource', 'pLayout'] -flags['VkImageViewCreateFlags'] = None -consts['VK_IMAGE_VIEW_TYPE_1D'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_2D'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_3D'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_CUBE'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_1D_ARRAY'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_2D_ARRAY'] = 'VkImageViewType' -consts['VK_IMAGE_VIEW_TYPE_CUBE_ARRAY'] = 'VkImageViewType' -enums['VkImageViewType'] = ['VK_IMAGE_VIEW_TYPE_1D', 'VK_IMAGE_VIEW_TYPE_2D', 'VK_IMAGE_VIEW_TYPE_3D', 'VK_IMAGE_VIEW_TYPE_CUBE', 'VK_IMAGE_VIEW_TYPE_1D_ARRAY', 'VK_IMAGE_VIEW_TYPE_2D_ARRAY', 'VK_IMAGE_VIEW_TYPE_CUBE_ARRAY'] -consts['VK_COMPONENT_SWIZZLE_IDENTITY'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_ZERO'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_ONE'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_R'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_G'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_B'] = 'VkComponentSwizzle' -consts['VK_COMPONENT_SWIZZLE_A'] = 'VkComponentSwizzle' -enums['VkComponentSwizzle'] = ['VK_COMPONENT_SWIZZLE_IDENTITY', 'VK_COMPONENT_SWIZZLE_ZERO', 'VK_COMPONENT_SWIZZLE_ONE', 'VK_COMPONENT_SWIZZLE_R', 'VK_COMPONENT_SWIZZLE_G', 'VK_COMPONENT_SWIZZLE_B', 'VK_COMPONENT_SWIZZLE_A'] -structs['VkComponentMapping'] = ['r', 'g', 'b', 'a'] -structs['VkImageSubresourceRange'] = ['aspectMask', 'baseMipLevel', 'levelCount', 'baseArrayLayer', 'layerCount'] -structs['VkImageViewCreateInfo'] = ['sType', 'pNext', 'flags', 'image', 'viewType', 'format', 'components', 'subresourceRange'] -structs['VkImageView'] = None -protos['vkCreateImageView'] = ['device', 'pCreateInfo', 'pAllocator', 'pView'] -protos['vkDestroyImageView'] = ['device', 'imageView', 'pAllocator'] -flags['VkShaderModuleCreateFlags'] = None -structs['VkShaderModuleCreateInfo'] = ['sType', 'pNext', 'flags', 'codeSize', 'pCode'] -structs['VkShaderModule'] = None -protos['vkCreateShaderModule'] = ['device', 'pCreateInfo', 'pAllocator', 'pShaderModule'] -protos['vkDestroyShaderModule'] = ['device', 'shaderModule', 'pAllocator'] -flags['VkPipelineCacheCreateFlags'] = None -structs['VkPipelineCacheCreateInfo'] = ['sType', 'pNext', 'flags', 'initialDataSize', 'pInitialData'] -structs['VkPipelineCache'] = None -protos['vkCreatePipelineCache'] = ['device', 'pCreateInfo', 'pAllocator', 'pPipelineCache'] -protos['vkDestroyPipelineCache'] = ['device', 'pipelineCache', 'pAllocator'] -protos['vkGetPipelineCacheData'] = ['device', 'pipelineCache', 'pDataSize', 'pData'] -protos['vkMergePipelineCaches'] = ['device', 'dstCache', 'srcCacheCount', 'pSrcCaches'] -consts['VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT'] = 'VkPipelineCreateFlagBits' -consts['VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'] = 'VkPipelineCreateFlagBits' -consts['VK_PIPELINE_CREATE_DERIVATIVE_BIT'] = 'VkPipelineCreateFlagBits' -enums['VkPipelineCreateFlagBits'] = ['VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT', 'VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT', 'VK_PIPELINE_CREATE_DERIVATIVE_BIT'] -flags['VkPipelineCreateFlags'] = 'VkPipelineCreateFlagBits' -flags['VkPipelineShaderStageCreateFlags'] = None -consts['VK_SHADER_STAGE_VERTEX_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_GEOMETRY_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_FRAGMENT_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_COMPUTE_BIT'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_ALL_GRAPHICS'] = 'VkShaderStageFlagBits' -consts['VK_SHADER_STAGE_ALL'] = 'VkShaderStageFlagBits' -enums['VkShaderStageFlagBits'] = ['VK_SHADER_STAGE_VERTEX_BIT', 'VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT', 'VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT', 'VK_SHADER_STAGE_GEOMETRY_BIT', 'VK_SHADER_STAGE_FRAGMENT_BIT', 'VK_SHADER_STAGE_COMPUTE_BIT', 'VK_SHADER_STAGE_ALL_GRAPHICS', 'VK_SHADER_STAGE_ALL'] -structs['VkSpecializationMapEntry'] = ['constantID', 'offset', 'size'] -structs['VkSpecializationInfo'] = ['mapEntryCount', 'pMapEntries', 'dataSize', 'pData'] -structs['VkPipelineShaderStageCreateInfo'] = ['sType', 'pNext', 'flags', 'stage', 'module', 'pName', 'pSpecializationInfo'] -flags['VkPipelineVertexInputStateCreateFlags'] = None -consts['VK_VERTEX_INPUT_RATE_VERTEX'] = 'VkVertexInputRate' -consts['VK_VERTEX_INPUT_RATE_INSTANCE'] = 'VkVertexInputRate' -enums['VkVertexInputRate'] = ['VK_VERTEX_INPUT_RATE_VERTEX', 'VK_VERTEX_INPUT_RATE_INSTANCE'] -structs['VkVertexInputBindingDescription'] = ['binding', 'stride', 'inputRate'] -structs['VkVertexInputAttributeDescription'] = ['location', 'binding', 'format', 'offset'] -structs['VkPipelineVertexInputStateCreateInfo'] = ['sType', 'pNext', 'flags', 'vertexBindingDescriptionCount', 'pVertexBindingDescriptions', 'vertexAttributeDescriptionCount', 'pVertexAttributeDescriptions'] -flags['VkPipelineInputAssemblyStateCreateFlags'] = None -consts['VK_PRIMITIVE_TOPOLOGY_POINT_LIST'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_LINE_LIST'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_LINE_STRIP'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'] = 'VkPrimitiveTopology' -consts['VK_PRIMITIVE_TOPOLOGY_PATCH_LIST'] = 'VkPrimitiveTopology' -enums['VkPrimitiveTopology'] = ['VK_PRIMITIVE_TOPOLOGY_POINT_LIST', 'VK_PRIMITIVE_TOPOLOGY_LINE_LIST', 'VK_PRIMITIVE_TOPOLOGY_LINE_STRIP', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN', 'VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_PATCH_LIST'] -structs['VkPipelineInputAssemblyStateCreateInfo'] = ['sType', 'pNext', 'flags', 'topology', 'primitiveRestartEnable'] -flags['VkPipelineTessellationStateCreateFlags'] = None -structs['VkPipelineTessellationStateCreateInfo'] = ['sType', 'pNext', 'flags', 'patchControlPoints'] -flags['VkPipelineViewportStateCreateFlags'] = None -structs['VkViewport'] = ['x', 'y', 'width', 'height', 'minDepth', 'maxDepth'] -structs['VkOffset2D'] = ['x', 'y'] -structs['VkExtent2D'] = ['width', 'height'] -structs['VkRect2D'] = ['offset', 'extent'] -structs['VkPipelineViewportStateCreateInfo'] = ['sType', 'pNext', 'flags', 'viewportCount', 'pViewports', 'scissorCount', 'pScissors'] -flags['VkPipelineRasterizationStateCreateFlags'] = None -consts['VK_POLYGON_MODE_FILL'] = 'VkPolygonMode' -consts['VK_POLYGON_MODE_LINE'] = 'VkPolygonMode' -consts['VK_POLYGON_MODE_POINT'] = 'VkPolygonMode' -enums['VkPolygonMode'] = ['VK_POLYGON_MODE_FILL', 'VK_POLYGON_MODE_LINE', 'VK_POLYGON_MODE_POINT'] -consts['VK_CULL_MODE_NONE'] = 'VkCullModeFlagBits' -consts['VK_CULL_MODE_FRONT_BIT'] = 'VkCullModeFlagBits' -consts['VK_CULL_MODE_BACK_BIT'] = 'VkCullModeFlagBits' -consts['VK_CULL_MODE_FRONT_AND_BACK'] = 'VkCullModeFlagBits' -enums['VkCullModeFlagBits'] = ['VK_CULL_MODE_NONE', 'VK_CULL_MODE_FRONT_BIT', 'VK_CULL_MODE_BACK_BIT', 'VK_CULL_MODE_FRONT_AND_BACK'] -flags['VkCullModeFlags'] = 'VkCullModeFlagBits' -consts['VK_FRONT_FACE_COUNTER_CLOCKWISE'] = 'VkFrontFace' -consts['VK_FRONT_FACE_CLOCKWISE'] = 'VkFrontFace' -enums['VkFrontFace'] = ['VK_FRONT_FACE_COUNTER_CLOCKWISE', 'VK_FRONT_FACE_CLOCKWISE'] -structs['VkPipelineRasterizationStateCreateInfo'] = ['sType', 'pNext', 'flags', 'depthClampEnable', 'rasterizerDiscardEnable', 'polygonMode', 'cullMode', 'frontFace', 'depthBiasEnable', 'depthBiasConstantFactor', 'depthBiasClamp', 'depthBiasSlopeFactor', 'lineWidth'] -flags['VkPipelineMultisampleStateCreateFlags'] = None -# Unprocessed type: VkSampleMask category: basetype -structs['VkPipelineMultisampleStateCreateInfo'] = ['sType', 'pNext', 'flags', 'rasterizationSamples', 'sampleShadingEnable', 'minSampleShading', 'pSampleMask', 'alphaToCoverageEnable', 'alphaToOneEnable'] -flags['VkPipelineDepthStencilStateCreateFlags'] = None -consts['VK_COMPARE_OP_NEVER'] = 'VkCompareOp' -consts['VK_COMPARE_OP_LESS'] = 'VkCompareOp' -consts['VK_COMPARE_OP_EQUAL'] = 'VkCompareOp' -consts['VK_COMPARE_OP_LESS_OR_EQUAL'] = 'VkCompareOp' -consts['VK_COMPARE_OP_GREATER'] = 'VkCompareOp' -consts['VK_COMPARE_OP_NOT_EQUAL'] = 'VkCompareOp' -consts['VK_COMPARE_OP_GREATER_OR_EQUAL'] = 'VkCompareOp' -consts['VK_COMPARE_OP_ALWAYS'] = 'VkCompareOp' -enums['VkCompareOp'] = ['VK_COMPARE_OP_NEVER', 'VK_COMPARE_OP_LESS', 'VK_COMPARE_OP_EQUAL', 'VK_COMPARE_OP_LESS_OR_EQUAL', 'VK_COMPARE_OP_GREATER', 'VK_COMPARE_OP_NOT_EQUAL', 'VK_COMPARE_OP_GREATER_OR_EQUAL', 'VK_COMPARE_OP_ALWAYS'] -consts['VK_STENCIL_OP_KEEP'] = 'VkStencilOp' -consts['VK_STENCIL_OP_ZERO'] = 'VkStencilOp' -consts['VK_STENCIL_OP_REPLACE'] = 'VkStencilOp' -consts['VK_STENCIL_OP_INCREMENT_AND_CLAMP'] = 'VkStencilOp' +consts['VK_SHARING_MODE_EXCLUSIVE'] = 'VkSharingMode' +consts['VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT'] = 'VkSparseImageFormatFlagBits' +consts['VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT'] = 'VkSparseImageFormatFlagBits' +consts['VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT'] = 'VkSparseImageFormatFlagBits' +consts['VK_SPARSE_MEMORY_BIND_METADATA_BIT'] = 'VkSparseMemoryBindFlagBits' +consts['VK_STENCIL_FACE_BACK_BIT'] = 'VkStencilFaceFlagBits' +consts['VK_STENCIL_FACE_FRONT_BIT'] = 'VkStencilFaceFlagBits' +consts['VK_STENCIL_FRONT_AND_BACK'] = 'VkStencilFaceFlagBits' consts['VK_STENCIL_OP_DECREMENT_AND_CLAMP'] = 'VkStencilOp' -consts['VK_STENCIL_OP_INVERT'] = 'VkStencilOp' -consts['VK_STENCIL_OP_INCREMENT_AND_WRAP'] = 'VkStencilOp' consts['VK_STENCIL_OP_DECREMENT_AND_WRAP'] = 'VkStencilOp' -enums['VkStencilOp'] = ['VK_STENCIL_OP_KEEP', 'VK_STENCIL_OP_ZERO', 'VK_STENCIL_OP_REPLACE', 'VK_STENCIL_OP_INCREMENT_AND_CLAMP', 'VK_STENCIL_OP_DECREMENT_AND_CLAMP', 'VK_STENCIL_OP_INVERT', 'VK_STENCIL_OP_INCREMENT_AND_WRAP', 'VK_STENCIL_OP_DECREMENT_AND_WRAP'] -structs['VkStencilOpState'] = ['failOp', 'passOp', 'depthFailOp', 'compareOp', 'compareMask', 'writeMask', 'reference'] -structs['VkPipelineDepthStencilStateCreateInfo'] = ['sType', 'pNext', 'flags', 'depthTestEnable', 'depthWriteEnable', 'depthCompareOp', 'depthBoundsTestEnable', 'stencilTestEnable', 'front', 'back', 'minDepthBounds', 'maxDepthBounds'] -flags['VkPipelineColorBlendStateCreateFlags'] = None -consts['VK_LOGIC_OP_CLEAR'] = 'VkLogicOp' -consts['VK_LOGIC_OP_AND'] = 'VkLogicOp' -consts['VK_LOGIC_OP_AND_REVERSE'] = 'VkLogicOp' -consts['VK_LOGIC_OP_COPY'] = 'VkLogicOp' -consts['VK_LOGIC_OP_AND_INVERTED'] = 'VkLogicOp' -consts['VK_LOGIC_OP_NO_OP'] = 'VkLogicOp' -consts['VK_LOGIC_OP_XOR'] = 'VkLogicOp' -consts['VK_LOGIC_OP_OR'] = 'VkLogicOp' -consts['VK_LOGIC_OP_NOR'] = 'VkLogicOp' -consts['VK_LOGIC_OP_EQUIVALENT'] = 'VkLogicOp' -consts['VK_LOGIC_OP_INVERT'] = 'VkLogicOp' -consts['VK_LOGIC_OP_OR_REVERSE'] = 'VkLogicOp' -consts['VK_LOGIC_OP_COPY_INVERTED'] = 'VkLogicOp' -consts['VK_LOGIC_OP_OR_INVERTED'] = 'VkLogicOp' -consts['VK_LOGIC_OP_NAND'] = 'VkLogicOp' -consts['VK_LOGIC_OP_SET'] = 'VkLogicOp' -enums['VkLogicOp'] = ['VK_LOGIC_OP_CLEAR', 'VK_LOGIC_OP_AND', 'VK_LOGIC_OP_AND_REVERSE', 'VK_LOGIC_OP_COPY', 'VK_LOGIC_OP_AND_INVERTED', 'VK_LOGIC_OP_NO_OP', 'VK_LOGIC_OP_XOR', 'VK_LOGIC_OP_OR', 'VK_LOGIC_OP_NOR', 'VK_LOGIC_OP_EQUIVALENT', 'VK_LOGIC_OP_INVERT', 'VK_LOGIC_OP_OR_REVERSE', 'VK_LOGIC_OP_COPY_INVERTED', 'VK_LOGIC_OP_OR_INVERTED', 'VK_LOGIC_OP_NAND', 'VK_LOGIC_OP_SET'] -consts['VK_BLEND_FACTOR_ZERO'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_SRC_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_DST_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_SRC_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_DST_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_CONSTANT_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_CONSTANT_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_SRC_ALPHA_SATURATE'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_SRC1_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_SRC1_ALPHA'] = 'VkBlendFactor' -consts['VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'] = 'VkBlendFactor' -enums['VkBlendFactor'] = ['VK_BLEND_FACTOR_ZERO', 'VK_BLEND_FACTOR_ONE', 'VK_BLEND_FACTOR_SRC_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR', 'VK_BLEND_FACTOR_DST_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR', 'VK_BLEND_FACTOR_SRC_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA', 'VK_BLEND_FACTOR_DST_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA', 'VK_BLEND_FACTOR_CONSTANT_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', 'VK_BLEND_FACTOR_CONSTANT_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', 'VK_BLEND_FACTOR_SRC_ALPHA_SATURATE', 'VK_BLEND_FACTOR_SRC1_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR', 'VK_BLEND_FACTOR_SRC1_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'] -consts['VK_BLEND_OP_ADD'] = 'VkBlendOp' -consts['VK_BLEND_OP_SUBTRACT'] = 'VkBlendOp' -consts['VK_BLEND_OP_REVERSE_SUBTRACT'] = 'VkBlendOp' -consts['VK_BLEND_OP_MIN'] = 'VkBlendOp' -consts['VK_BLEND_OP_MAX'] = 'VkBlendOp' -enums['VkBlendOp'] = ['VK_BLEND_OP_ADD', 'VK_BLEND_OP_SUBTRACT', 'VK_BLEND_OP_REVERSE_SUBTRACT', 'VK_BLEND_OP_MIN', 'VK_BLEND_OP_MAX'] -consts['VK_COLOR_COMPONENT_R_BIT'] = 'VkColorComponentFlagBits' -consts['VK_COLOR_COMPONENT_G_BIT'] = 'VkColorComponentFlagBits' -consts['VK_COLOR_COMPONENT_B_BIT'] = 'VkColorComponentFlagBits' -consts['VK_COLOR_COMPONENT_A_BIT'] = 'VkColorComponentFlagBits' -enums['VkColorComponentFlagBits'] = ['VK_COLOR_COMPONENT_R_BIT', 'VK_COLOR_COMPONENT_G_BIT', 'VK_COLOR_COMPONENT_B_BIT', 'VK_COLOR_COMPONENT_A_BIT'] -flags['VkColorComponentFlags'] = 'VkColorComponentFlagBits' -structs['VkPipelineColorBlendAttachmentState'] = ['blendEnable', 'srcColorBlendFactor', 'dstColorBlendFactor', 'colorBlendOp', 'srcAlphaBlendFactor', 'dstAlphaBlendFactor', 'alphaBlendOp', 'colorWriteMask'] -structs['VkPipelineColorBlendStateCreateInfo'] = ['sType', 'pNext', 'flags', 'logicOpEnable', 'logicOp', 'attachmentCount', 'pAttachments', 'blendConstants'] -flags['VkPipelineDynamicStateCreateFlags'] = None -consts['VK_DYNAMIC_STATE_VIEWPORT'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_SCISSOR'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_LINE_WIDTH'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_DEPTH_BIAS'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_BLEND_CONSTANTS'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_DEPTH_BOUNDS'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_STENCIL_WRITE_MASK'] = 'VkDynamicState' -consts['VK_DYNAMIC_STATE_STENCIL_REFERENCE'] = 'VkDynamicState' -enums['VkDynamicState'] = ['VK_DYNAMIC_STATE_VIEWPORT', 'VK_DYNAMIC_STATE_SCISSOR', 'VK_DYNAMIC_STATE_LINE_WIDTH', 'VK_DYNAMIC_STATE_DEPTH_BIAS', 'VK_DYNAMIC_STATE_BLEND_CONSTANTS', 'VK_DYNAMIC_STATE_DEPTH_BOUNDS', 'VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK', 'VK_DYNAMIC_STATE_STENCIL_WRITE_MASK', 'VK_DYNAMIC_STATE_STENCIL_REFERENCE'] -structs['VkPipelineDynamicStateCreateInfo'] = ['sType', 'pNext', 'flags', 'dynamicStateCount', 'pDynamicStates'] -structs['VkPipelineLayout'] = None -structs['VkRenderPass'] = None -structs['VkPipeline'] = None -structs['VkGraphicsPipelineCreateInfo'] = ['sType', 'pNext', 'flags', 'stageCount', 'pStages', 'pVertexInputState', 'pInputAssemblyState', 'pTessellationState', 'pViewportState', 'pRasterizationState', 'pMultisampleState', 'pDepthStencilState', 'pColorBlendState', 'pDynamicState', 'layout', 'renderPass', 'subpass', 'basePipelineHandle', 'basePipelineIndex'] -protos['vkCreateGraphicsPipelines'] = ['device', 'pipelineCache', 'createInfoCount', 'pCreateInfos', 'pAllocator', 'pPipelines'] -structs['VkComputePipelineCreateInfo'] = ['sType', 'pNext', 'flags', 'stage', 'layout', 'basePipelineHandle', 'basePipelineIndex'] -protos['vkCreateComputePipelines'] = ['device', 'pipelineCache', 'createInfoCount', 'pCreateInfos', 'pAllocator', 'pPipelines'] -protos['vkDestroyPipeline'] = ['device', 'pipeline', 'pAllocator'] -flags['VkPipelineLayoutCreateFlags'] = None -structs['VkDescriptorSetLayout'] = None -flags['VkShaderStageFlags'] = 'VkShaderStageFlagBits' -structs['VkPushConstantRange'] = ['stageFlags', 'offset', 'size'] -structs['VkPipelineLayoutCreateInfo'] = ['sType', 'pNext', 'flags', 'setLayoutCount', 'pSetLayouts', 'pushConstantRangeCount', 'pPushConstantRanges'] -protos['vkCreatePipelineLayout'] = ['device', 'pCreateInfo', 'pAllocator', 'pPipelineLayout'] -protos['vkDestroyPipelineLayout'] = ['device', 'pipelineLayout', 'pAllocator'] -flags['VkSamplerCreateFlags'] = None -consts['VK_FILTER_NEAREST'] = 'VkFilter' -consts['VK_FILTER_LINEAR'] = 'VkFilter' -consts['VK_FILTER_CUBIC_IMG'] = 'VkFilter' -enums['VkFilter'] = ['VK_FILTER_NEAREST', 'VK_FILTER_LINEAR', 'VK_FILTER_CUBIC_IMG'] -consts['VK_SAMPLER_MIPMAP_MODE_NEAREST'] = 'VkSamplerMipmapMode' -consts['VK_SAMPLER_MIPMAP_MODE_LINEAR'] = 'VkSamplerMipmapMode' -enums['VkSamplerMipmapMode'] = ['VK_SAMPLER_MIPMAP_MODE_NEAREST', 'VK_SAMPLER_MIPMAP_MODE_LINEAR'] -consts['VK_SAMPLER_ADDRESS_MODE_REPEAT'] = 'VkSamplerAddressMode' -consts['VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT'] = 'VkSamplerAddressMode' -consts['VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'] = 'VkSamplerAddressMode' -consts['VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'] = 'VkSamplerAddressMode' -consts['VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'] = 'VkSamplerAddressMode' -enums['VkSamplerAddressMode'] = ['VK_SAMPLER_ADDRESS_MODE_REPEAT', 'VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT', 'VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE', 'VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER', 'VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'] -consts['VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK'] = 'VkBorderColor' -consts['VK_BORDER_COLOR_INT_TRANSPARENT_BLACK'] = 'VkBorderColor' -consts['VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK'] = 'VkBorderColor' -consts['VK_BORDER_COLOR_INT_OPAQUE_BLACK'] = 'VkBorderColor' -consts['VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE'] = 'VkBorderColor' -consts['VK_BORDER_COLOR_INT_OPAQUE_WHITE'] = 'VkBorderColor' -enums['VkBorderColor'] = ['VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK', 'VK_BORDER_COLOR_INT_TRANSPARENT_BLACK', 'VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK', 'VK_BORDER_COLOR_INT_OPAQUE_BLACK', 'VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE', 'VK_BORDER_COLOR_INT_OPAQUE_WHITE'] -structs['VkSamplerCreateInfo'] = ['sType', 'pNext', 'flags', 'magFilter', 'minFilter', 'mipmapMode', 'addressModeU', 'addressModeV', 'addressModeW', 'mipLodBias', 'anisotropyEnable', 'maxAnisotropy', 'compareEnable', 'compareOp', 'minLod', 'maxLod', 'borderColor', 'unnormalizedCoordinates'] -structs['VkSampler'] = None -protos['vkCreateSampler'] = ['device', 'pCreateInfo', 'pAllocator', 'pSampler'] -protos['vkDestroySampler'] = ['device', 'sampler', 'pAllocator'] -flags['VkDescriptorSetLayoutCreateFlags'] = None -consts['VK_DESCRIPTOR_TYPE_SAMPLER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_STORAGE_IMAGE'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_STORAGE_BUFFER'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'] = 'VkDescriptorType' -consts['VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT'] = 'VkDescriptorType' -enums['VkDescriptorType'] = ['VK_DESCRIPTOR_TYPE_SAMPLER', 'VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER', 'VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE', 'VK_DESCRIPTOR_TYPE_STORAGE_IMAGE', 'VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER', 'VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER', 'VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER', 'VK_DESCRIPTOR_TYPE_STORAGE_BUFFER', 'VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC', 'VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC', 'VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT'] -structs['VkDescriptorSetLayoutBinding'] = ['binding', 'descriptorType', 'descriptorCount', 'stageFlags', 'pImmutableSamplers'] -structs['VkDescriptorSetLayoutCreateInfo'] = ['sType', 'pNext', 'flags', 'bindingCount', 'pBindings'] -protos['vkCreateDescriptorSetLayout'] = ['device', 'pCreateInfo', 'pAllocator', 'pSetLayout'] -protos['vkDestroyDescriptorSetLayout'] = ['device', 'descriptorSetLayout', 'pAllocator'] -consts['VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'] = 'VkDescriptorPoolCreateFlagBits' -enums['VkDescriptorPoolCreateFlagBits'] = ['VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'] -flags['VkDescriptorPoolCreateFlags'] = 'VkDescriptorPoolCreateFlagBits' -structs['VkDescriptorPoolSize'] = ['type', 'descriptorCount'] -structs['VkDescriptorPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'maxSets', 'poolSizeCount', 'pPoolSizes'] -structs['VkDescriptorPool'] = None -protos['vkCreateDescriptorPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pDescriptorPool'] -protos['vkDestroyDescriptorPool'] = ['device', 'descriptorPool', 'pAllocator'] -flags['VkDescriptorPoolResetFlags'] = None -protos['vkResetDescriptorPool'] = ['device', 'descriptorPool', 'flags'] -structs['VkDescriptorSetAllocateInfo'] = ['sType', 'pNext', 'descriptorPool', 'descriptorSetCount', 'pSetLayouts'] -structs['VkDescriptorSet'] = None -protos['vkAllocateDescriptorSets'] = ['device', 'pAllocateInfo', 'pDescriptorSets'] -protos['vkFreeDescriptorSets'] = ['device', 'descriptorPool', 'descriptorSetCount', 'pDescriptorSets'] -structs['VkDescriptorImageInfo'] = ['sampler', 'imageView', 'imageLayout'] -structs['VkDescriptorBufferInfo'] = ['buffer', 'offset', 'range'] -structs['VkWriteDescriptorSet'] = ['sType', 'pNext', 'dstSet', 'dstBinding', 'dstArrayElement', 'descriptorCount', 'descriptorType', 'pImageInfo', 'pBufferInfo', 'pTexelBufferView'] -structs['VkCopyDescriptorSet'] = ['sType', 'pNext', 'srcSet', 'srcBinding', 'srcArrayElement', 'dstSet', 'dstBinding', 'dstArrayElement', 'descriptorCount'] -protos['vkUpdateDescriptorSets'] = ['device', 'descriptorWriteCount', 'pDescriptorWrites', 'descriptorCopyCount', 'pDescriptorCopies'] -flags['VkFramebufferCreateFlags'] = None -structs['VkFramebufferCreateInfo'] = ['sType', 'pNext', 'flags', 'renderPass', 'attachmentCount', 'pAttachments', 'width', 'height', 'layers'] -structs['VkFramebuffer'] = None -protos['vkCreateFramebuffer'] = ['device', 'pCreateInfo', 'pAllocator', 'pFramebuffer'] -protos['vkDestroyFramebuffer'] = ['device', 'framebuffer', 'pAllocator'] -flags['VkRenderPassCreateFlags'] = None -consts['VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'] = 'VkAttachmentDescriptionFlagBits' +consts['VK_STENCIL_OP_INCREMENT_AND_CLAMP'] = 'VkStencilOp' +consts['VK_STENCIL_OP_INCREMENT_AND_WRAP'] = 'VkStencilOp' +consts['VK_STENCIL_OP_INVERT'] = 'VkStencilOp' +consts['VK_STENCIL_OP_KEEP'] = 'VkStencilOp' +consts['VK_STENCIL_OP_REPLACE'] = 'VkStencilOp' +consts['VK_STENCIL_OP_ZERO'] = 'VkStencilOp' +consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_APPLICATION_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_BIND_SPARSE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_EVENT_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_FENCE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_MEMORY_BARRIER'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_PRESENT_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_SUBMIT_INFO'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' +consts['VK_SUBOPTIMAL_KHR'] = 'VkResult' +consts['VK_SUBPASS_CONTENTS_INLINE'] = 'VkSubpassContents' +consts['VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'] = 'VkSubpassContents' +consts['VK_SUBPASS_EXTERNAL'] = None +consts['VK_SUCCESS'] = 'VkResult' +consts['VK_SYSTEM_ALLOCATION_SCOPE_CACHE'] = 'VkSystemAllocationScope' +consts['VK_SYSTEM_ALLOCATION_SCOPE_COMMAND'] = 'VkSystemAllocationScope' +consts['VK_SYSTEM_ALLOCATION_SCOPE_DEVICE'] = 'VkSystemAllocationScope' +consts['VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE'] = 'VkSystemAllocationScope' +consts['VK_SYSTEM_ALLOCATION_SCOPE_OBJECT'] = 'VkSystemAllocationScope' +consts['VK_TIMEOUT'] = 'VkResult' +consts['VK_TRUE'] = None +consts['VK_UUID_SIZE'] = None +consts['VK_VERTEX_INPUT_RATE_INSTANCE'] = 'VkVertexInputRate' +consts['VK_VERTEX_INPUT_RATE_VERTEX'] = 'VkVertexInputRate' +consts['VK_WHOLE_SIZE'] = None +enums = {} +enums['VkAccessFlagBits'] = ['VK_ACCESS_INDIRECT_COMMAND_READ_BIT', 'VK_ACCESS_INDEX_READ_BIT', 'VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT', 'VK_ACCESS_UNIFORM_READ_BIT', 'VK_ACCESS_INPUT_ATTACHMENT_READ_BIT', 'VK_ACCESS_SHADER_READ_BIT', 'VK_ACCESS_SHADER_WRITE_BIT', 'VK_ACCESS_COLOR_ATTACHMENT_READ_BIT', 'VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT', 'VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT', 'VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT', 'VK_ACCESS_TRANSFER_READ_BIT', 'VK_ACCESS_TRANSFER_WRITE_BIT', 'VK_ACCESS_HOST_READ_BIT', 'VK_ACCESS_HOST_WRITE_BIT', 'VK_ACCESS_MEMORY_READ_BIT', 'VK_ACCESS_MEMORY_WRITE_BIT'] enums['VkAttachmentDescriptionFlagBits'] = ['VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'] -flags['VkAttachmentDescriptionFlags'] = 'VkAttachmentDescriptionFlagBits' -consts['VK_ATTACHMENT_LOAD_OP_LOAD'] = 'VkAttachmentLoadOp' -consts['VK_ATTACHMENT_LOAD_OP_CLEAR'] = 'VkAttachmentLoadOp' -consts['VK_ATTACHMENT_LOAD_OP_DONT_CARE'] = 'VkAttachmentLoadOp' enums['VkAttachmentLoadOp'] = ['VK_ATTACHMENT_LOAD_OP_LOAD', 'VK_ATTACHMENT_LOAD_OP_CLEAR', 'VK_ATTACHMENT_LOAD_OP_DONT_CARE'] -consts['VK_ATTACHMENT_STORE_OP_STORE'] = 'VkAttachmentStoreOp' -consts['VK_ATTACHMENT_STORE_OP_DONT_CARE'] = 'VkAttachmentStoreOp' enums['VkAttachmentStoreOp'] = ['VK_ATTACHMENT_STORE_OP_STORE', 'VK_ATTACHMENT_STORE_OP_DONT_CARE'] -structs['VkAttachmentDescription'] = ['flags', 'format', 'samples', 'loadOp', 'storeOp', 'stencilLoadOp', 'stencilStoreOp', 'initialLayout', 'finalLayout'] -flags['VkSubpassDescriptionFlags'] = None -consts['VK_PIPELINE_BIND_POINT_GRAPHICS'] = 'VkPipelineBindPoint' -consts['VK_PIPELINE_BIND_POINT_COMPUTE'] = 'VkPipelineBindPoint' +enums['VkBlendFactor'] = ['VK_BLEND_FACTOR_ZERO', 'VK_BLEND_FACTOR_ONE', 'VK_BLEND_FACTOR_SRC_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR', 'VK_BLEND_FACTOR_DST_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR', 'VK_BLEND_FACTOR_SRC_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA', 'VK_BLEND_FACTOR_DST_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA', 'VK_BLEND_FACTOR_CONSTANT_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR', 'VK_BLEND_FACTOR_CONSTANT_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA', 'VK_BLEND_FACTOR_SRC_ALPHA_SATURATE', 'VK_BLEND_FACTOR_SRC1_COLOR', 'VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR', 'VK_BLEND_FACTOR_SRC1_ALPHA', 'VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'] +enums['VkBlendOp'] = ['VK_BLEND_OP_ADD', 'VK_BLEND_OP_SUBTRACT', 'VK_BLEND_OP_REVERSE_SUBTRACT', 'VK_BLEND_OP_MIN', 'VK_BLEND_OP_MAX'] +enums['VkBorderColor'] = ['VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK', 'VK_BORDER_COLOR_INT_TRANSPARENT_BLACK', 'VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK', 'VK_BORDER_COLOR_INT_OPAQUE_BLACK', 'VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE', 'VK_BORDER_COLOR_INT_OPAQUE_WHITE'] +enums['VkBufferCreateFlagBits'] = ['VK_BUFFER_CREATE_SPARSE_BINDING_BIT', 'VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT', 'VK_BUFFER_CREATE_SPARSE_ALIASED_BIT'] +enums['VkBufferUsageFlagBits'] = ['VK_BUFFER_USAGE_TRANSFER_SRC_BIT', 'VK_BUFFER_USAGE_TRANSFER_DST_BIT', 'VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT', 'VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT', 'VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT', 'VK_BUFFER_USAGE_STORAGE_BUFFER_BIT', 'VK_BUFFER_USAGE_INDEX_BUFFER_BIT', 'VK_BUFFER_USAGE_VERTEX_BUFFER_BIT', 'VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT'] +enums['VkColorComponentFlagBits'] = ['VK_COLOR_COMPONENT_R_BIT', 'VK_COLOR_COMPONENT_G_BIT', 'VK_COLOR_COMPONENT_B_BIT', 'VK_COLOR_COMPONENT_A_BIT'] +enums['VkCommandBufferLevel'] = ['VK_COMMAND_BUFFER_LEVEL_PRIMARY', 'VK_COMMAND_BUFFER_LEVEL_SECONDARY'] +enums['VkCommandBufferResetFlagBits'] = ['VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT'] +enums['VkCommandBufferUsageFlagBits'] = ['VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT', 'VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT', 'VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'] +enums['VkCommandPoolCreateFlagBits'] = ['VK_COMMAND_POOL_CREATE_TRANSIENT_BIT', 'VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'] +enums['VkCommandPoolResetFlagBits'] = ['VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT'] +enums['VkCompareOp'] = ['VK_COMPARE_OP_NEVER', 'VK_COMPARE_OP_LESS', 'VK_COMPARE_OP_EQUAL', 'VK_COMPARE_OP_LESS_OR_EQUAL', 'VK_COMPARE_OP_GREATER', 'VK_COMPARE_OP_NOT_EQUAL', 'VK_COMPARE_OP_GREATER_OR_EQUAL', 'VK_COMPARE_OP_ALWAYS'] +enums['VkComponentSwizzle'] = ['VK_COMPONENT_SWIZZLE_IDENTITY', 'VK_COMPONENT_SWIZZLE_ZERO', 'VK_COMPONENT_SWIZZLE_ONE', 'VK_COMPONENT_SWIZZLE_R', 'VK_COMPONENT_SWIZZLE_G', 'VK_COMPONENT_SWIZZLE_B', 'VK_COMPONENT_SWIZZLE_A'] +enums['VkCullModeFlagBits'] = ['VK_CULL_MODE_NONE', 'VK_CULL_MODE_FRONT_BIT', 'VK_CULL_MODE_BACK_BIT', 'VK_CULL_MODE_FRONT_AND_BACK'] +enums['VkDependencyFlagBits'] = ['VK_DEPENDENCY_BY_REGION_BIT'] +enums['VkDescriptorPoolCreateFlagBits'] = ['VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'] +enums['VkDescriptorType'] = ['VK_DESCRIPTOR_TYPE_SAMPLER', 'VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER', 'VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE', 'VK_DESCRIPTOR_TYPE_STORAGE_IMAGE', 'VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER', 'VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER', 'VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER', 'VK_DESCRIPTOR_TYPE_STORAGE_BUFFER', 'VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC', 'VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC', 'VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT'] +enums['VkDynamicState'] = ['VK_DYNAMIC_STATE_VIEWPORT', 'VK_DYNAMIC_STATE_SCISSOR', 'VK_DYNAMIC_STATE_LINE_WIDTH', 'VK_DYNAMIC_STATE_DEPTH_BIAS', 'VK_DYNAMIC_STATE_BLEND_CONSTANTS', 'VK_DYNAMIC_STATE_DEPTH_BOUNDS', 'VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK', 'VK_DYNAMIC_STATE_STENCIL_WRITE_MASK', 'VK_DYNAMIC_STATE_STENCIL_REFERENCE'] +enums['VkFenceCreateFlagBits'] = ['VK_FENCE_CREATE_SIGNALED_BIT'] +enums['VkFilter'] = ['VK_FILTER_NEAREST', 'VK_FILTER_LINEAR', 'VK_FILTER_CUBIC_IMG'] +enums['VkFormat'] = ['VK_FORMAT_UNDEFINED', 'VK_FORMAT_R4G4_UNORM_PACK8', 'VK_FORMAT_R4G4B4A4_UNORM_PACK16', 'VK_FORMAT_B4G4R4A4_UNORM_PACK16', 'VK_FORMAT_R5G6B5_UNORM_PACK16', 'VK_FORMAT_B5G6R5_UNORM_PACK16', 'VK_FORMAT_R5G5B5A1_UNORM_PACK16', 'VK_FORMAT_B5G5R5A1_UNORM_PACK16', 'VK_FORMAT_A1R5G5B5_UNORM_PACK16', 'VK_FORMAT_R8_UNORM', 'VK_FORMAT_R8_SNORM', 'VK_FORMAT_R8_USCALED', 'VK_FORMAT_R8_SSCALED', 'VK_FORMAT_R8_UINT', 'VK_FORMAT_R8_SINT', 'VK_FORMAT_R8_SRGB', 'VK_FORMAT_R8G8_UNORM', 'VK_FORMAT_R8G8_SNORM', 'VK_FORMAT_R8G8_USCALED', 'VK_FORMAT_R8G8_SSCALED', 'VK_FORMAT_R8G8_UINT', 'VK_FORMAT_R8G8_SINT', 'VK_FORMAT_R8G8_SRGB', 'VK_FORMAT_R8G8B8_UNORM', 'VK_FORMAT_R8G8B8_SNORM', 'VK_FORMAT_R8G8B8_USCALED', 'VK_FORMAT_R8G8B8_SSCALED', 'VK_FORMAT_R8G8B8_UINT', 'VK_FORMAT_R8G8B8_SINT', 'VK_FORMAT_R8G8B8_SRGB', 'VK_FORMAT_B8G8R8_UNORM', 'VK_FORMAT_B8G8R8_SNORM', 'VK_FORMAT_B8G8R8_USCALED', 'VK_FORMAT_B8G8R8_SSCALED', 'VK_FORMAT_B8G8R8_UINT', 'VK_FORMAT_B8G8R8_SINT', 'VK_FORMAT_B8G8R8_SRGB', 'VK_FORMAT_R8G8B8A8_UNORM', 'VK_FORMAT_R8G8B8A8_SNORM', 'VK_FORMAT_R8G8B8A8_USCALED', 'VK_FORMAT_R8G8B8A8_SSCALED', 'VK_FORMAT_R8G8B8A8_UINT', 'VK_FORMAT_R8G8B8A8_SINT', 'VK_FORMAT_R8G8B8A8_SRGB', 'VK_FORMAT_B8G8R8A8_UNORM', 'VK_FORMAT_B8G8R8A8_SNORM', 'VK_FORMAT_B8G8R8A8_USCALED', 'VK_FORMAT_B8G8R8A8_SSCALED', 'VK_FORMAT_B8G8R8A8_UINT', 'VK_FORMAT_B8G8R8A8_SINT', 'VK_FORMAT_B8G8R8A8_SRGB', 'VK_FORMAT_A8B8G8R8_UNORM_PACK32', 'VK_FORMAT_A8B8G8R8_SNORM_PACK32', 'VK_FORMAT_A8B8G8R8_USCALED_PACK32', 'VK_FORMAT_A8B8G8R8_SSCALED_PACK32', 'VK_FORMAT_A8B8G8R8_UINT_PACK32', 'VK_FORMAT_A8B8G8R8_SINT_PACK32', 'VK_FORMAT_A8B8G8R8_SRGB_PACK32', 'VK_FORMAT_A2R10G10B10_UNORM_PACK32', 'VK_FORMAT_A2R10G10B10_SNORM_PACK32', 'VK_FORMAT_A2R10G10B10_USCALED_PACK32', 'VK_FORMAT_A2R10G10B10_SSCALED_PACK32', 'VK_FORMAT_A2R10G10B10_UINT_PACK32', 'VK_FORMAT_A2R10G10B10_SINT_PACK32', 'VK_FORMAT_A2B10G10R10_UNORM_PACK32', 'VK_FORMAT_A2B10G10R10_SNORM_PACK32', 'VK_FORMAT_A2B10G10R10_USCALED_PACK32', 'VK_FORMAT_A2B10G10R10_SSCALED_PACK32', 'VK_FORMAT_A2B10G10R10_UINT_PACK32', 'VK_FORMAT_A2B10G10R10_SINT_PACK32', 'VK_FORMAT_R16_UNORM', 'VK_FORMAT_R16_SNORM', 'VK_FORMAT_R16_USCALED', 'VK_FORMAT_R16_SSCALED', 'VK_FORMAT_R16_UINT', 'VK_FORMAT_R16_SINT', 'VK_FORMAT_R16_SFLOAT', 'VK_FORMAT_R16G16_UNORM', 'VK_FORMAT_R16G16_SNORM', 'VK_FORMAT_R16G16_USCALED', 'VK_FORMAT_R16G16_SSCALED', 'VK_FORMAT_R16G16_UINT', 'VK_FORMAT_R16G16_SINT', 'VK_FORMAT_R16G16_SFLOAT', 'VK_FORMAT_R16G16B16_UNORM', 'VK_FORMAT_R16G16B16_SNORM', 'VK_FORMAT_R16G16B16_USCALED', 'VK_FORMAT_R16G16B16_SSCALED', 'VK_FORMAT_R16G16B16_UINT', 'VK_FORMAT_R16G16B16_SINT', 'VK_FORMAT_R16G16B16_SFLOAT', 'VK_FORMAT_R16G16B16A16_UNORM', 'VK_FORMAT_R16G16B16A16_SNORM', 'VK_FORMAT_R16G16B16A16_USCALED', 'VK_FORMAT_R16G16B16A16_SSCALED', 'VK_FORMAT_R16G16B16A16_UINT', 'VK_FORMAT_R16G16B16A16_SINT', 'VK_FORMAT_R16G16B16A16_SFLOAT', 'VK_FORMAT_R32_UINT', 'VK_FORMAT_R32_SINT', 'VK_FORMAT_R32_SFLOAT', 'VK_FORMAT_R32G32_UINT', 'VK_FORMAT_R32G32_SINT', 'VK_FORMAT_R32G32_SFLOAT', 'VK_FORMAT_R32G32B32_UINT', 'VK_FORMAT_R32G32B32_SINT', 'VK_FORMAT_R32G32B32_SFLOAT', 'VK_FORMAT_R32G32B32A32_UINT', 'VK_FORMAT_R32G32B32A32_SINT', 'VK_FORMAT_R32G32B32A32_SFLOAT', 'VK_FORMAT_R64_UINT', 'VK_FORMAT_R64_SINT', 'VK_FORMAT_R64_SFLOAT', 'VK_FORMAT_R64G64_UINT', 'VK_FORMAT_R64G64_SINT', 'VK_FORMAT_R64G64_SFLOAT', 'VK_FORMAT_R64G64B64_UINT', 'VK_FORMAT_R64G64B64_SINT', 'VK_FORMAT_R64G64B64_SFLOAT', 'VK_FORMAT_R64G64B64A64_UINT', 'VK_FORMAT_R64G64B64A64_SINT', 'VK_FORMAT_R64G64B64A64_SFLOAT', 'VK_FORMAT_B10G11R11_UFLOAT_PACK32', 'VK_FORMAT_E5B9G9R9_UFLOAT_PACK32', 'VK_FORMAT_D16_UNORM', 'VK_FORMAT_X8_D24_UNORM_PACK32', 'VK_FORMAT_D32_SFLOAT', 'VK_FORMAT_S8_UINT', 'VK_FORMAT_D16_UNORM_S8_UINT', 'VK_FORMAT_D24_UNORM_S8_UINT', 'VK_FORMAT_D32_SFLOAT_S8_UINT', 'VK_FORMAT_BC1_RGB_UNORM_BLOCK', 'VK_FORMAT_BC1_RGB_SRGB_BLOCK', 'VK_FORMAT_BC1_RGBA_UNORM_BLOCK', 'VK_FORMAT_BC1_RGBA_SRGB_BLOCK', 'VK_FORMAT_BC2_UNORM_BLOCK', 'VK_FORMAT_BC2_SRGB_BLOCK', 'VK_FORMAT_BC3_UNORM_BLOCK', 'VK_FORMAT_BC3_SRGB_BLOCK', 'VK_FORMAT_BC4_UNORM_BLOCK', 'VK_FORMAT_BC4_SNORM_BLOCK', 'VK_FORMAT_BC5_UNORM_BLOCK', 'VK_FORMAT_BC5_SNORM_BLOCK', 'VK_FORMAT_BC6H_UFLOAT_BLOCK', 'VK_FORMAT_BC6H_SFLOAT_BLOCK', 'VK_FORMAT_BC7_UNORM_BLOCK', 'VK_FORMAT_BC7_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK', 'VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK', 'VK_FORMAT_EAC_R11_UNORM_BLOCK', 'VK_FORMAT_EAC_R11_SNORM_BLOCK', 'VK_FORMAT_EAC_R11G11_UNORM_BLOCK', 'VK_FORMAT_EAC_R11G11_SNORM_BLOCK', 'VK_FORMAT_ASTC_4x4_UNORM_BLOCK', 'VK_FORMAT_ASTC_4x4_SRGB_BLOCK', 'VK_FORMAT_ASTC_5x4_UNORM_BLOCK', 'VK_FORMAT_ASTC_5x4_SRGB_BLOCK', 'VK_FORMAT_ASTC_5x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_5x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_6x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_6x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_6x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_6x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_8x8_UNORM_BLOCK', 'VK_FORMAT_ASTC_8x8_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x5_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x5_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x6_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x6_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x8_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x8_SRGB_BLOCK', 'VK_FORMAT_ASTC_10x10_UNORM_BLOCK', 'VK_FORMAT_ASTC_10x10_SRGB_BLOCK', 'VK_FORMAT_ASTC_12x10_UNORM_BLOCK', 'VK_FORMAT_ASTC_12x10_SRGB_BLOCK', 'VK_FORMAT_ASTC_12x12_UNORM_BLOCK', 'VK_FORMAT_ASTC_12x12_SRGB_BLOCK'] +enums['VkFormatFeatureFlagBits'] = ['VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT', 'VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT', 'VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT', 'VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT', 'VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT', 'VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT', 'VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT', 'VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT', 'VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT', 'VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT', 'VK_FORMAT_FEATURE_BLIT_SRC_BIT', 'VK_FORMAT_FEATURE_BLIT_DST_BIT', 'VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT', 'VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG'] +enums['VkFrontFace'] = ['VK_FRONT_FACE_COUNTER_CLOCKWISE', 'VK_FRONT_FACE_CLOCKWISE'] +enums['VkImageAspectFlagBits'] = ['VK_IMAGE_ASPECT_COLOR_BIT', 'VK_IMAGE_ASPECT_DEPTH_BIT', 'VK_IMAGE_ASPECT_STENCIL_BIT', 'VK_IMAGE_ASPECT_METADATA_BIT'] +enums['VkImageCreateFlagBits'] = ['VK_IMAGE_CREATE_SPARSE_BINDING_BIT', 'VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT', 'VK_IMAGE_CREATE_SPARSE_ALIASED_BIT', 'VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT', 'VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT'] +enums['VkImageLayout'] = ['VK_IMAGE_LAYOUT_UNDEFINED', 'VK_IMAGE_LAYOUT_GENERAL', 'VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL', 'VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL', 'VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', 'VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL', 'VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', 'VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', 'VK_IMAGE_LAYOUT_PREINITIALIZED', 'VK_IMAGE_LAYOUT_PRESENT_SRC_KHR'] +enums['VkImageTiling'] = ['VK_IMAGE_TILING_OPTIMAL', 'VK_IMAGE_TILING_LINEAR'] +enums['VkImageType'] = ['VK_IMAGE_TYPE_1D', 'VK_IMAGE_TYPE_2D', 'VK_IMAGE_TYPE_3D'] +enums['VkImageUsageFlagBits'] = ['VK_IMAGE_USAGE_TRANSFER_SRC_BIT', 'VK_IMAGE_USAGE_TRANSFER_DST_BIT', 'VK_IMAGE_USAGE_SAMPLED_BIT', 'VK_IMAGE_USAGE_STORAGE_BIT', 'VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT', 'VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT'] +enums['VkImageViewType'] = ['VK_IMAGE_VIEW_TYPE_1D', 'VK_IMAGE_VIEW_TYPE_2D', 'VK_IMAGE_VIEW_TYPE_3D', 'VK_IMAGE_VIEW_TYPE_CUBE', 'VK_IMAGE_VIEW_TYPE_1D_ARRAY', 'VK_IMAGE_VIEW_TYPE_2D_ARRAY', 'VK_IMAGE_VIEW_TYPE_CUBE_ARRAY'] +enums['VkIndexType'] = ['VK_INDEX_TYPE_UINT16', 'VK_INDEX_TYPE_UINT32'] +enums['VkInternalAllocationType'] = ['VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE'] +enums['VkLogicOp'] = ['VK_LOGIC_OP_CLEAR', 'VK_LOGIC_OP_AND', 'VK_LOGIC_OP_AND_REVERSE', 'VK_LOGIC_OP_COPY', 'VK_LOGIC_OP_AND_INVERTED', 'VK_LOGIC_OP_NO_OP', 'VK_LOGIC_OP_XOR', 'VK_LOGIC_OP_OR', 'VK_LOGIC_OP_NOR', 'VK_LOGIC_OP_EQUIVALENT', 'VK_LOGIC_OP_INVERT', 'VK_LOGIC_OP_OR_REVERSE', 'VK_LOGIC_OP_COPY_INVERTED', 'VK_LOGIC_OP_OR_INVERTED', 'VK_LOGIC_OP_NAND', 'VK_LOGIC_OP_SET'] +enums['VkMemoryHeapFlagBits'] = ['VK_MEMORY_HEAP_DEVICE_LOCAL_BIT'] +enums['VkMemoryPropertyFlagBits'] = ['VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT', 'VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT', 'VK_MEMORY_PROPERTY_HOST_COHERENT_BIT', 'VK_MEMORY_PROPERTY_HOST_CACHED_BIT', 'VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'] +enums['VkPhysicalDeviceType'] = ['VK_PHYSICAL_DEVICE_TYPE_OTHER', 'VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU', 'VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU', 'VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU', 'VK_PHYSICAL_DEVICE_TYPE_CPU'] enums['VkPipelineBindPoint'] = ['VK_PIPELINE_BIND_POINT_GRAPHICS', 'VK_PIPELINE_BIND_POINT_COMPUTE'] -structs['VkAttachmentReference'] = ['attachment', 'layout'] -structs['VkSubpassDescription'] = ['flags', 'pipelineBindPoint', 'inputAttachmentCount', 'pInputAttachments', 'colorAttachmentCount', 'pColorAttachments', 'pResolveAttachments', 'pDepthStencilAttachment', 'preserveAttachmentCount', 'pPreserveAttachments'] -consts['VK_ACCESS_INDIRECT_COMMAND_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_INDEX_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_UNIFORM_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_INPUT_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_SHADER_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_SHADER_WRITE_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_COLOR_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_TRANSFER_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_TRANSFER_WRITE_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_HOST_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_HOST_WRITE_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_MEMORY_READ_BIT'] = 'VkAccessFlagBits' -consts['VK_ACCESS_MEMORY_WRITE_BIT'] = 'VkAccessFlagBits' -enums['VkAccessFlagBits'] = ['VK_ACCESS_INDIRECT_COMMAND_READ_BIT', 'VK_ACCESS_INDEX_READ_BIT', 'VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT', 'VK_ACCESS_UNIFORM_READ_BIT', 'VK_ACCESS_INPUT_ATTACHMENT_READ_BIT', 'VK_ACCESS_SHADER_READ_BIT', 'VK_ACCESS_SHADER_WRITE_BIT', 'VK_ACCESS_COLOR_ATTACHMENT_READ_BIT', 'VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT', 'VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT', 'VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT', 'VK_ACCESS_TRANSFER_READ_BIT', 'VK_ACCESS_TRANSFER_WRITE_BIT', 'VK_ACCESS_HOST_READ_BIT', 'VK_ACCESS_HOST_WRITE_BIT', 'VK_ACCESS_MEMORY_READ_BIT', 'VK_ACCESS_MEMORY_WRITE_BIT'] +enums['VkPipelineCacheHeaderVersion'] = ['VK_PIPELINE_CACHE_HEADER_VERSION_ONE'] +enums['VkPipelineCreateFlagBits'] = ['VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT', 'VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT', 'VK_PIPELINE_CREATE_DERIVATIVE_BIT'] +enums['VkPipelineStageFlagBits'] = ['VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT', 'VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT', 'VK_PIPELINE_STAGE_VERTEX_INPUT_BIT', 'VK_PIPELINE_STAGE_VERTEX_SHADER_BIT', 'VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT', 'VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', 'VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT', 'VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT', 'VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', 'VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT', 'VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT', 'VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT', 'VK_PIPELINE_STAGE_TRANSFER_BIT', 'VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT', 'VK_PIPELINE_STAGE_HOST_BIT', 'VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT', 'VK_PIPELINE_STAGE_ALL_COMMANDS_BIT'] +enums['VkPolygonMode'] = ['VK_POLYGON_MODE_FILL', 'VK_POLYGON_MODE_LINE', 'VK_POLYGON_MODE_POINT'] +enums['VkPrimitiveTopology'] = ['VK_PRIMITIVE_TOPOLOGY_POINT_LIST', 'VK_PRIMITIVE_TOPOLOGY_LINE_LIST', 'VK_PRIMITIVE_TOPOLOGY_LINE_STRIP', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN', 'VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY', 'VK_PRIMITIVE_TOPOLOGY_PATCH_LIST'] +enums['VkQueryControlFlagBits'] = ['VK_QUERY_CONTROL_PRECISE_BIT'] +enums['VkQueryPipelineStatisticFlagBits'] = ['VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT', 'VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT', 'VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT'] +enums['VkQueryResultFlagBits'] = ['VK_QUERY_RESULT_64_BIT', 'VK_QUERY_RESULT_WAIT_BIT', 'VK_QUERY_RESULT_WITH_AVAILABILITY_BIT', 'VK_QUERY_RESULT_PARTIAL_BIT'] +enums['VkQueryType'] = ['VK_QUERY_TYPE_OCCLUSION', 'VK_QUERY_TYPE_PIPELINE_STATISTICS', 'VK_QUERY_TYPE_TIMESTAMP'] +enums['VkQueueFlagBits'] = ['VK_QUEUE_GRAPHICS_BIT', 'VK_QUEUE_COMPUTE_BIT', 'VK_QUEUE_TRANSFER_BIT', 'VK_QUEUE_SPARSE_BINDING_BIT'] +enums['VkResult'] = ['VK_SUCCESS', 'VK_NOT_READY', 'VK_TIMEOUT', 'VK_EVENT_SET', 'VK_EVENT_RESET', 'VK_INCOMPLETE', 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_MEMORY_MAP_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_FORMAT_NOT_SUPPORTED', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_SUBOPTIMAL_KHR', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_VALIDATION_FAILED_EXT', 'VK_ERROR_INVALID_SHADER_NV', 'VK_NV_EXTENSION_1_ERROR'] +enums['VkSampleCountFlagBits'] = ['VK_SAMPLE_COUNT_1_BIT', 'VK_SAMPLE_COUNT_2_BIT', 'VK_SAMPLE_COUNT_4_BIT', 'VK_SAMPLE_COUNT_8_BIT', 'VK_SAMPLE_COUNT_16_BIT', 'VK_SAMPLE_COUNT_32_BIT', 'VK_SAMPLE_COUNT_64_BIT'] +enums['VkSamplerAddressMode'] = ['VK_SAMPLER_ADDRESS_MODE_REPEAT', 'VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT', 'VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE', 'VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER', 'VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'] +enums['VkSamplerMipmapMode'] = ['VK_SAMPLER_MIPMAP_MODE_NEAREST', 'VK_SAMPLER_MIPMAP_MODE_LINEAR'] +enums['VkShaderStageFlagBits'] = ['VK_SHADER_STAGE_VERTEX_BIT', 'VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT', 'VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT', 'VK_SHADER_STAGE_GEOMETRY_BIT', 'VK_SHADER_STAGE_FRAGMENT_BIT', 'VK_SHADER_STAGE_COMPUTE_BIT', 'VK_SHADER_STAGE_ALL_GRAPHICS', 'VK_SHADER_STAGE_ALL'] +enums['VkSharingMode'] = ['VK_SHARING_MODE_EXCLUSIVE', 'VK_SHARING_MODE_CONCURRENT'] +enums['VkSparseImageFormatFlagBits'] = ['VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT', 'VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT', 'VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT'] +enums['VkSparseMemoryBindFlagBits'] = ['VK_SPARSE_MEMORY_BIND_METADATA_BIT'] +enums['VkStencilFaceFlagBits'] = ['VK_STENCIL_FACE_FRONT_BIT', 'VK_STENCIL_FACE_BACK_BIT', 'VK_STENCIL_FRONT_AND_BACK'] +enums['VkStencilOp'] = ['VK_STENCIL_OP_KEEP', 'VK_STENCIL_OP_ZERO', 'VK_STENCIL_OP_REPLACE', 'VK_STENCIL_OP_INCREMENT_AND_CLAMP', 'VK_STENCIL_OP_DECREMENT_AND_CLAMP', 'VK_STENCIL_OP_INVERT', 'VK_STENCIL_OP_INCREMENT_AND_WRAP', 'VK_STENCIL_OP_DECREMENT_AND_WRAP'] +enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT', 'VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV', 'VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV', 'VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV'] +enums['VkSubpassContents'] = ['VK_SUBPASS_CONTENTS_INLINE', 'VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'] +enums['VkSystemAllocationScope'] = ['VK_SYSTEM_ALLOCATION_SCOPE_COMMAND', 'VK_SYSTEM_ALLOCATION_SCOPE_OBJECT', 'VK_SYSTEM_ALLOCATION_SCOPE_CACHE', 'VK_SYSTEM_ALLOCATION_SCOPE_DEVICE', 'VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE'] +enums['VkVertexInputRate'] = ['VK_VERTEX_INPUT_RATE_VERTEX', 'VK_VERTEX_INPUT_RATE_INSTANCE'] +flags = {} flags['VkAccessFlags'] = 'VkAccessFlagBits' -consts['VK_DEPENDENCY_BY_REGION_BIT'] = 'VkDependencyFlagBits' -enums['VkDependencyFlagBits'] = ['VK_DEPENDENCY_BY_REGION_BIT'] -flags['VkDependencyFlags'] = 'VkDependencyFlagBits' -structs['VkSubpassDependency'] = ['srcSubpass', 'dstSubpass', 'srcStageMask', 'dstStageMask', 'srcAccessMask', 'dstAccessMask', 'dependencyFlags'] -structs['VkRenderPassCreateInfo'] = ['sType', 'pNext', 'flags', 'attachmentCount', 'pAttachments', 'subpassCount', 'pSubpasses', 'dependencyCount', 'pDependencies'] -protos['vkCreateRenderPass'] = ['device', 'pCreateInfo', 'pAllocator', 'pRenderPass'] -protos['vkDestroyRenderPass'] = ['device', 'renderPass', 'pAllocator'] -protos['vkGetRenderAreaGranularity'] = ['device', 'renderPass', 'pGranularity'] -consts['VK_COMMAND_POOL_CREATE_TRANSIENT_BIT'] = 'VkCommandPoolCreateFlagBits' -consts['VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'] = 'VkCommandPoolCreateFlagBits' -enums['VkCommandPoolCreateFlagBits'] = ['VK_COMMAND_POOL_CREATE_TRANSIENT_BIT', 'VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'] +flags['VkAttachmentDescriptionFlags'] = 'VkAttachmentDescriptionFlagBits' +flags['VkBufferCreateFlags'] = 'VkBufferCreateFlagBits' +flags['VkBufferUsageFlags'] = 'VkBufferUsageFlagBits' +flags['VkBufferViewCreateFlags'] = None +flags['VkColorComponentFlags'] = 'VkColorComponentFlagBits' +flags['VkCommandBufferResetFlags'] = 'VkCommandBufferResetFlagBits' +flags['VkCommandBufferUsageFlags'] = 'VkCommandBufferUsageFlagBits' flags['VkCommandPoolCreateFlags'] = 'VkCommandPoolCreateFlagBits' -structs['VkCommandPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'queueFamilyIndex'] -structs['VkCommandPool'] = None -protos['vkCreateCommandPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pCommandPool'] -protos['vkDestroyCommandPool'] = ['device', 'commandPool', 'pAllocator'] -consts['VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT'] = 'VkCommandPoolResetFlagBits' -enums['VkCommandPoolResetFlagBits'] = ['VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT'] flags['VkCommandPoolResetFlags'] = 'VkCommandPoolResetFlagBits' -protos['vkResetCommandPool'] = ['device', 'commandPool', 'flags'] -consts['VK_COMMAND_BUFFER_LEVEL_PRIMARY'] = 'VkCommandBufferLevel' -consts['VK_COMMAND_BUFFER_LEVEL_SECONDARY'] = 'VkCommandBufferLevel' -enums['VkCommandBufferLevel'] = ['VK_COMMAND_BUFFER_LEVEL_PRIMARY', 'VK_COMMAND_BUFFER_LEVEL_SECONDARY'] -structs['VkCommandBufferAllocateInfo'] = ['sType', 'pNext', 'commandPool', 'level', 'commandBufferCount'] -protos['vkAllocateCommandBuffers'] = ['device', 'pAllocateInfo', 'pCommandBuffers'] -protos['vkFreeCommandBuffers'] = ['device', 'commandPool', 'commandBufferCount', 'pCommandBuffers'] -consts['VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'] = 'VkCommandBufferUsageFlagBits' -consts['VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'] = 'VkCommandBufferUsageFlagBits' -consts['VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'] = 'VkCommandBufferUsageFlagBits' -enums['VkCommandBufferUsageFlagBits'] = ['VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT', 'VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT', 'VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'] -flags['VkCommandBufferUsageFlags'] = 'VkCommandBufferUsageFlagBits' -consts['VK_QUERY_CONTROL_PRECISE_BIT'] = 'VkQueryControlFlagBits' -enums['VkQueryControlFlagBits'] = ['VK_QUERY_CONTROL_PRECISE_BIT'] +flags['VkCullModeFlags'] = 'VkCullModeFlagBits' +flags['VkDependencyFlags'] = 'VkDependencyFlagBits' +flags['VkDescriptorPoolCreateFlags'] = 'VkDescriptorPoolCreateFlagBits' +flags['VkDescriptorPoolResetFlags'] = None +flags['VkDescriptorSetLayoutCreateFlags'] = None +flags['VkDeviceCreateFlags'] = None +flags['VkDeviceQueueCreateFlags'] = None +flags['VkEventCreateFlags'] = None +flags['VkFenceCreateFlags'] = 'VkFenceCreateFlagBits' +flags['VkFormatFeatureFlags'] = 'VkFormatFeatureFlagBits' +flags['VkFramebufferCreateFlags'] = None +flags['VkImageAspectFlags'] = 'VkImageAspectFlagBits' +flags['VkImageCreateFlags'] = 'VkImageCreateFlagBits' +flags['VkImageUsageFlags'] = 'VkImageUsageFlagBits' +flags['VkImageViewCreateFlags'] = None +flags['VkInstanceCreateFlags'] = None +flags['VkMemoryHeapFlags'] = 'VkMemoryHeapFlagBits' +flags['VkMemoryMapFlags'] = None +flags['VkMemoryPropertyFlags'] = 'VkMemoryPropertyFlagBits' +flags['VkPipelineCacheCreateFlags'] = None +flags['VkPipelineColorBlendStateCreateFlags'] = None +flags['VkPipelineCreateFlags'] = 'VkPipelineCreateFlagBits' +flags['VkPipelineDepthStencilStateCreateFlags'] = None +flags['VkPipelineDynamicStateCreateFlags'] = None +flags['VkPipelineInputAssemblyStateCreateFlags'] = None +flags['VkPipelineLayoutCreateFlags'] = None +flags['VkPipelineMultisampleStateCreateFlags'] = None +flags['VkPipelineRasterizationStateCreateFlags'] = None +flags['VkPipelineShaderStageCreateFlags'] = None +flags['VkPipelineStageFlags'] = 'VkPipelineStageFlagBits' +flags['VkPipelineTessellationStateCreateFlags'] = None +flags['VkPipelineVertexInputStateCreateFlags'] = None +flags['VkPipelineViewportStateCreateFlags'] = None flags['VkQueryControlFlags'] = 'VkQueryControlFlagBits' -structs['VkCommandBufferInheritanceInfo'] = ['sType', 'pNext', 'renderPass', 'subpass', 'framebuffer', 'occlusionQueryEnable', 'queryFlags', 'pipelineStatistics'] -structs['VkCommandBufferBeginInfo'] = ['sType', 'pNext', 'flags', 'pInheritanceInfo'] +flags['VkQueryPipelineStatisticFlags'] = 'VkQueryPipelineStatisticFlagBits' +flags['VkQueryPoolCreateFlags'] = None +flags['VkQueryResultFlags'] = 'VkQueryResultFlagBits' +flags['VkQueueFlags'] = 'VkQueueFlagBits' +flags['VkRenderPassCreateFlags'] = None +flags['VkSampleCountFlags'] = 'VkSampleCountFlagBits' +flags['VkSamplerCreateFlags'] = None +flags['VkSemaphoreCreateFlags'] = None +flags['VkShaderModuleCreateFlags'] = None +flags['VkShaderStageFlags'] = 'VkShaderStageFlagBits' +flags['VkSparseImageFormatFlags'] = 'VkSparseImageFormatFlagBits' +flags['VkSparseMemoryBindFlags'] = 'VkSparseMemoryBindFlagBits' +flags['VkStencilFaceFlags'] = 'VkStencilFaceFlagBits' +flags['VkSubpassDescriptionFlags'] = None +funcpointers = {} +funcpointers['PFN_vkAllocationFunction'] = None +funcpointers['PFN_vkFreeFunction'] = None +funcpointers['PFN_vkInternalAllocationNotification'] = None +funcpointers['PFN_vkInternalFreeNotification'] = None +funcpointers['PFN_vkReallocationFunction'] = None +funcpointers['PFN_vkVoidFunction'] = None +protos = {} +protos['vkAllocateCommandBuffers'] = ['device', 'pAllocateInfo', 'pCommandBuffers'] +protos['vkAllocateDescriptorSets'] = ['device', 'pAllocateInfo', 'pDescriptorSets'] +protos['vkAllocateMemory'] = ['device', 'pAllocateInfo', 'pAllocator', 'pMemory'] protos['vkBeginCommandBuffer'] = ['commandBuffer', 'pBeginInfo'] -protos['vkEndCommandBuffer'] = ['commandBuffer'] -consts['VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT'] = 'VkCommandBufferResetFlagBits' -enums['VkCommandBufferResetFlagBits'] = ['VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT'] -flags['VkCommandBufferResetFlags'] = 'VkCommandBufferResetFlagBits' -protos['vkResetCommandBuffer'] = ['commandBuffer', 'flags'] +protos['vkBindBufferMemory'] = ['device', 'buffer', 'memory', 'memoryOffset'] +protos['vkBindImageMemory'] = ['device', 'image', 'memory', 'memoryOffset'] +protos['vkCmdBeginQuery'] = ['commandBuffer', 'queryPool', 'query', 'flags'] +protos['vkCmdBeginRenderPass'] = ['commandBuffer', 'pRenderPassBegin', 'contents'] +protos['vkCmdBindDescriptorSets'] = ['commandBuffer', 'pipelineBindPoint', 'layout', 'firstSet', 'descriptorSetCount', 'pDescriptorSets', 'dynamicOffsetCount', 'pDynamicOffsets'] +protos['vkCmdBindIndexBuffer'] = ['commandBuffer', 'buffer', 'offset', 'indexType'] protos['vkCmdBindPipeline'] = ['commandBuffer', 'pipelineBindPoint', 'pipeline'] -protos['vkCmdSetViewport'] = ['commandBuffer', 'firstViewport', 'viewportCount', 'pViewports'] -protos['vkCmdSetScissor'] = ['commandBuffer', 'firstScissor', 'scissorCount', 'pScissors'] -protos['vkCmdSetLineWidth'] = ['commandBuffer', 'lineWidth'] -protos['vkCmdSetDepthBias'] = ['commandBuffer', 'depthBiasConstantFactor', 'depthBiasClamp', 'depthBiasSlopeFactor'] +protos['vkCmdBindVertexBuffers'] = ['commandBuffer', 'firstBinding', 'bindingCount', 'pBuffers', 'pOffsets'] +protos['vkCmdBlitImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions', 'filter'] +protos['vkCmdClearAttachments'] = ['commandBuffer', 'attachmentCount', 'pAttachments', 'rectCount', 'pRects'] +protos['vkCmdClearColorImage'] = ['commandBuffer', 'image', 'imageLayout', 'pColor', 'rangeCount', 'pRanges'] +protos['vkCmdClearDepthStencilImage'] = ['commandBuffer', 'image', 'imageLayout', 'pDepthStencil', 'rangeCount', 'pRanges'] +protos['vkCmdCopyBuffer'] = ['commandBuffer', 'srcBuffer', 'dstBuffer', 'regionCount', 'pRegions'] +protos['vkCmdCopyBufferToImage'] = ['commandBuffer', 'srcBuffer', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] +protos['vkCmdCopyImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] +protos['vkCmdCopyImageToBuffer'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstBuffer', 'regionCount', 'pRegions'] +protos['vkCmdCopyQueryPoolResults'] = ['commandBuffer', 'queryPool', 'firstQuery', 'queryCount', 'dstBuffer', 'dstOffset', 'stride', 'flags'] +protos['vkCmdDispatch'] = ['commandBuffer', 'x', 'y', 'z'] +protos['vkCmdDispatchIndirect'] = ['commandBuffer', 'buffer', 'offset'] +protos['vkCmdDraw'] = ['commandBuffer', 'vertexCount', 'instanceCount', 'firstVertex', 'firstInstance'] +protos['vkCmdDrawIndexed'] = ['commandBuffer', 'indexCount', 'instanceCount', 'firstIndex', 'vertexOffset', 'firstInstance'] +protos['vkCmdDrawIndexedIndirect'] = ['commandBuffer', 'buffer', 'offset', 'drawCount', 'stride'] +protos['vkCmdDrawIndirect'] = ['commandBuffer', 'buffer', 'offset', 'drawCount', 'stride'] +protos['vkCmdEndQuery'] = ['commandBuffer', 'queryPool', 'query'] +protos['vkCmdEndRenderPass'] = ['commandBuffer'] +protos['vkCmdExecuteCommands'] = ['commandBuffer', 'commandBufferCount', 'pCommandBuffers'] +protos['vkCmdFillBuffer'] = ['commandBuffer', 'dstBuffer', 'dstOffset', 'size', 'data'] +protos['vkCmdNextSubpass'] = ['commandBuffer', 'contents'] +protos['vkCmdPipelineBarrier'] = ['commandBuffer', 'srcStageMask', 'dstStageMask', 'dependencyFlags', 'memoryBarrierCount', 'pMemoryBarriers', 'bufferMemoryBarrierCount', 'pBufferMemoryBarriers', 'imageMemoryBarrierCount', 'pImageMemoryBarriers'] +protos['vkCmdPushConstants'] = ['commandBuffer', 'layout', 'stageFlags', 'offset', 'size', 'pValues'] +protos['vkCmdResetEvent'] = ['commandBuffer', 'event', 'stageMask'] +protos['vkCmdResetQueryPool'] = ['commandBuffer', 'queryPool', 'firstQuery', 'queryCount'] +protos['vkCmdResolveImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] protos['vkCmdSetBlendConstants'] = ['commandBuffer', 'blendConstants'] +protos['vkCmdSetDepthBias'] = ['commandBuffer', 'depthBiasConstantFactor', 'depthBiasClamp', 'depthBiasSlopeFactor'] protos['vkCmdSetDepthBounds'] = ['commandBuffer', 'minDepthBounds', 'maxDepthBounds'] -consts['VK_STENCIL_FACE_FRONT_BIT'] = 'VkStencilFaceFlagBits' -consts['VK_STENCIL_FACE_BACK_BIT'] = 'VkStencilFaceFlagBits' -consts['VK_STENCIL_FRONT_AND_BACK'] = 'VkStencilFaceFlagBits' -enums['VkStencilFaceFlagBits'] = ['VK_STENCIL_FACE_FRONT_BIT', 'VK_STENCIL_FACE_BACK_BIT', 'VK_STENCIL_FRONT_AND_BACK'] -flags['VkStencilFaceFlags'] = 'VkStencilFaceFlagBits' +protos['vkCmdSetEvent'] = ['commandBuffer', 'event', 'stageMask'] +protos['vkCmdSetLineWidth'] = ['commandBuffer', 'lineWidth'] +protos['vkCmdSetScissor'] = ['commandBuffer', 'firstScissor', 'scissorCount', 'pScissors'] protos['vkCmdSetStencilCompareMask'] = ['commandBuffer', 'faceMask', 'compareMask'] -protos['vkCmdSetStencilWriteMask'] = ['commandBuffer', 'faceMask', 'writeMask'] protos['vkCmdSetStencilReference'] = ['commandBuffer', 'faceMask', 'reference'] -protos['vkCmdBindDescriptorSets'] = ['commandBuffer', 'pipelineBindPoint', 'layout', 'firstSet', 'descriptorSetCount', 'pDescriptorSets', 'dynamicOffsetCount', 'pDynamicOffsets'] -consts['VK_INDEX_TYPE_UINT16'] = 'VkIndexType' -consts['VK_INDEX_TYPE_UINT32'] = 'VkIndexType' -enums['VkIndexType'] = ['VK_INDEX_TYPE_UINT16', 'VK_INDEX_TYPE_UINT32'] -protos['vkCmdBindIndexBuffer'] = ['commandBuffer', 'buffer', 'offset', 'indexType'] -protos['vkCmdBindVertexBuffers'] = ['commandBuffer', 'firstBinding', 'bindingCount', 'pBuffers', 'pOffsets'] -protos['vkCmdDraw'] = ['commandBuffer', 'vertexCount', 'instanceCount', 'firstVertex', 'firstInstance'] -protos['vkCmdDrawIndexed'] = ['commandBuffer', 'indexCount', 'instanceCount', 'firstIndex', 'vertexOffset', 'firstInstance'] -protos['vkCmdDrawIndirect'] = ['commandBuffer', 'buffer', 'offset', 'drawCount', 'stride'] -protos['vkCmdDrawIndexedIndirect'] = ['commandBuffer', 'buffer', 'offset', 'drawCount', 'stride'] -protos['vkCmdDispatch'] = ['commandBuffer', 'x', 'y', 'z'] -protos['vkCmdDispatchIndirect'] = ['commandBuffer', 'buffer', 'offset'] +protos['vkCmdSetStencilWriteMask'] = ['commandBuffer', 'faceMask', 'writeMask'] +protos['vkCmdSetViewport'] = ['commandBuffer', 'firstViewport', 'viewportCount', 'pViewports'] +protos['vkCmdUpdateBuffer'] = ['commandBuffer', 'dstBuffer', 'dstOffset', 'dataSize', 'pData'] +protos['vkCmdWaitEvents'] = ['commandBuffer', 'eventCount', 'pEvents', 'srcStageMask', 'dstStageMask', 'memoryBarrierCount', 'pMemoryBarriers', 'bufferMemoryBarrierCount', 'pBufferMemoryBarriers', 'imageMemoryBarrierCount', 'pImageMemoryBarriers'] +protos['vkCmdWriteTimestamp'] = ['commandBuffer', 'pipelineStage', 'queryPool', 'query'] +protos['vkCreateBuffer'] = ['device', 'pCreateInfo', 'pAllocator', 'pBuffer'] +protos['vkCreateBufferView'] = ['device', 'pCreateInfo', 'pAllocator', 'pView'] +protos['vkCreateCommandPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pCommandPool'] +protos['vkCreateComputePipelines'] = ['device', 'pipelineCache', 'createInfoCount', 'pCreateInfos', 'pAllocator', 'pPipelines'] +protos['vkCreateDescriptorPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pDescriptorPool'] +protos['vkCreateDescriptorSetLayout'] = ['device', 'pCreateInfo', 'pAllocator', 'pSetLayout'] +protos['vkCreateDevice'] = ['physicalDevice', 'pCreateInfo', 'pAllocator', 'pDevice'] +protos['vkCreateEvent'] = ['device', 'pCreateInfo', 'pAllocator', 'pEvent'] +protos['vkCreateFence'] = ['device', 'pCreateInfo', 'pAllocator', 'pFence'] +protos['vkCreateFramebuffer'] = ['device', 'pCreateInfo', 'pAllocator', 'pFramebuffer'] +protos['vkCreateGraphicsPipelines'] = ['device', 'pipelineCache', 'createInfoCount', 'pCreateInfos', 'pAllocator', 'pPipelines'] +protos['vkCreateImage'] = ['device', 'pCreateInfo', 'pAllocator', 'pImage'] +protos['vkCreateImageView'] = ['device', 'pCreateInfo', 'pAllocator', 'pView'] +protos['vkCreateInstance'] = ['pCreateInfo', 'pAllocator', 'pInstance'] +protos['vkCreatePipelineCache'] = ['device', 'pCreateInfo', 'pAllocator', 'pPipelineCache'] +protos['vkCreatePipelineLayout'] = ['device', 'pCreateInfo', 'pAllocator', 'pPipelineLayout'] +protos['vkCreateQueryPool'] = ['device', 'pCreateInfo', 'pAllocator', 'pQueryPool'] +protos['vkCreateRenderPass'] = ['device', 'pCreateInfo', 'pAllocator', 'pRenderPass'] +protos['vkCreateSampler'] = ['device', 'pCreateInfo', 'pAllocator', 'pSampler'] +protos['vkCreateSemaphore'] = ['device', 'pCreateInfo', 'pAllocator', 'pSemaphore'] +protos['vkCreateShaderModule'] = ['device', 'pCreateInfo', 'pAllocator', 'pShaderModule'] +protos['vkDestroyBuffer'] = ['device', 'buffer', 'pAllocator'] +protos['vkDestroyBufferView'] = ['device', 'bufferView', 'pAllocator'] +protos['vkDestroyCommandPool'] = ['device', 'commandPool', 'pAllocator'] +protos['vkDestroyDescriptorPool'] = ['device', 'descriptorPool', 'pAllocator'] +protos['vkDestroyDescriptorSetLayout'] = ['device', 'descriptorSetLayout', 'pAllocator'] +protos['vkDestroyDevice'] = ['device', 'pAllocator'] +protos['vkDestroyEvent'] = ['device', 'event', 'pAllocator'] +protos['vkDestroyFence'] = ['device', 'fence', 'pAllocator'] +protos['vkDestroyFramebuffer'] = ['device', 'framebuffer', 'pAllocator'] +protos['vkDestroyImage'] = ['device', 'image', 'pAllocator'] +protos['vkDestroyImageView'] = ['device', 'imageView', 'pAllocator'] +protos['vkDestroyInstance'] = ['instance', 'pAllocator'] +protos['vkDestroyPipeline'] = ['device', 'pipeline', 'pAllocator'] +protos['vkDestroyPipelineCache'] = ['device', 'pipelineCache', 'pAllocator'] +protos['vkDestroyPipelineLayout'] = ['device', 'pipelineLayout', 'pAllocator'] +protos['vkDestroyQueryPool'] = ['device', 'queryPool', 'pAllocator'] +protos['vkDestroyRenderPass'] = ['device', 'renderPass', 'pAllocator'] +protos['vkDestroySampler'] = ['device', 'sampler', 'pAllocator'] +protos['vkDestroySemaphore'] = ['device', 'semaphore', 'pAllocator'] +protos['vkDestroyShaderModule'] = ['device', 'shaderModule', 'pAllocator'] +protos['vkDeviceWaitIdle'] = ['device'] +protos['vkEndCommandBuffer'] = ['commandBuffer'] +protos['vkEnumerateDeviceExtensionProperties'] = ['physicalDevice', 'pLayerName', 'pPropertyCount', 'pProperties'] +protos['vkEnumerateDeviceLayerProperties'] = ['physicalDevice', 'pPropertyCount', 'pProperties'] +protos['vkEnumerateInstanceExtensionProperties'] = ['pLayerName', 'pPropertyCount', 'pProperties'] +protos['vkEnumerateInstanceLayerProperties'] = ['pPropertyCount', 'pProperties'] +protos['vkEnumeratePhysicalDevices'] = ['instance', 'pPhysicalDeviceCount', 'pPhysicalDevices'] +protos['vkFlushMappedMemoryRanges'] = ['device', 'memoryRangeCount', 'pMemoryRanges'] +protos['vkFreeCommandBuffers'] = ['device', 'commandPool', 'commandBufferCount', 'pCommandBuffers'] +protos['vkFreeDescriptorSets'] = ['device', 'descriptorPool', 'descriptorSetCount', 'pDescriptorSets'] +protos['vkFreeMemory'] = ['device', 'memory', 'pAllocator'] +protos['vkGetBufferMemoryRequirements'] = ['device', 'buffer', 'pMemoryRequirements'] +protos['vkGetDeviceMemoryCommitment'] = ['device', 'memory', 'pCommittedMemoryInBytes'] +protos['vkGetDeviceProcAddr'] = ['device', 'pName'] +protos['vkGetDeviceQueue'] = ['device', 'queueFamilyIndex', 'queueIndex', 'pQueue'] +protos['vkGetEventStatus'] = ['device', 'event'] +protos['vkGetFenceStatus'] = ['device', 'fence'] +protos['vkGetImageMemoryRequirements'] = ['device', 'image', 'pMemoryRequirements'] +protos['vkGetImageSparseMemoryRequirements'] = ['device', 'image', 'pSparseMemoryRequirementCount', 'pSparseMemoryRequirements'] +protos['vkGetImageSubresourceLayout'] = ['device', 'image', 'pSubresource', 'pLayout'] +protos['vkGetInstanceProcAddr'] = ['instance', 'pName'] +protos['vkGetPhysicalDeviceFeatures'] = ['physicalDevice', 'pFeatures'] +protos['vkGetPhysicalDeviceFormatProperties'] = ['physicalDevice', 'format', 'pFormatProperties'] +protos['vkGetPhysicalDeviceImageFormatProperties'] = ['physicalDevice', 'format', 'type', 'tiling', 'usage', 'flags', 'pImageFormatProperties'] +protos['vkGetPhysicalDeviceMemoryProperties'] = ['physicalDevice', 'pMemoryProperties'] +protos['vkGetPhysicalDeviceProperties'] = ['physicalDevice', 'pProperties'] +protos['vkGetPhysicalDeviceQueueFamilyProperties'] = ['physicalDevice', 'pQueueFamilyPropertyCount', 'pQueueFamilyProperties'] +protos['vkGetPhysicalDeviceSparseImageFormatProperties'] = ['physicalDevice', 'format', 'type', 'samples', 'usage', 'tiling', 'pPropertyCount', 'pProperties'] +protos['vkGetPipelineCacheData'] = ['device', 'pipelineCache', 'pDataSize', 'pData'] +protos['vkGetQueryPoolResults'] = ['device', 'queryPool', 'firstQuery', 'queryCount', 'dataSize', 'pData', 'stride', 'flags'] +protos['vkGetRenderAreaGranularity'] = ['device', 'renderPass', 'pGranularity'] +protos['vkInvalidateMappedMemoryRanges'] = ['device', 'memoryRangeCount', 'pMemoryRanges'] +protos['vkMapMemory'] = ['device', 'memory', 'offset', 'size', 'flags', 'ppData'] +protos['vkMergePipelineCaches'] = ['device', 'dstCache', 'srcCacheCount', 'pSrcCaches'] +protos['vkQueueBindSparse'] = ['queue', 'bindInfoCount', 'pBindInfo', 'fence'] +protos['vkQueueSubmit'] = ['queue', 'submitCount', 'pSubmits', 'fence'] +protos['vkQueueWaitIdle'] = ['queue'] +protos['vkResetCommandBuffer'] = ['commandBuffer', 'flags'] +protos['vkResetCommandPool'] = ['device', 'commandPool', 'flags'] +protos['vkResetDescriptorPool'] = ['device', 'descriptorPool', 'flags'] +protos['vkResetEvent'] = ['device', 'event'] +protos['vkResetFences'] = ['device', 'fenceCount', 'pFences'] +protos['vkSetEvent'] = ['device', 'event'] +protos['vkUnmapMemory'] = ['device', 'memory'] +protos['vkUpdateDescriptorSets'] = ['device', 'descriptorWriteCount', 'pDescriptorWrites', 'descriptorCopyCount', 'pDescriptorCopies'] +protos['vkWaitForFences'] = ['device', 'fenceCount', 'pFences', 'waitAll', 'timeout'] +structs = {} +structs['VkAllocationCallbacks'] = ['pUserData', 'pfnAllocation', 'pfnReallocation', 'pfnFree', 'pfnInternalAllocation', 'pfnInternalFree'] +structs['VkApplicationInfo'] = ['sType', 'pNext', 'pApplicationName', 'applicationVersion', 'pEngineName', 'engineVersion', 'apiVersion'] +structs['VkAttachmentDescription'] = ['flags', 'format', 'samples', 'loadOp', 'storeOp', 'stencilLoadOp', 'stencilStoreOp', 'initialLayout', 'finalLayout'] +structs['VkAttachmentReference'] = ['attachment', 'layout'] +structs['VkBindSparseInfo'] = ['sType', 'pNext', 'waitSemaphoreCount', 'pWaitSemaphores', 'bufferBindCount', 'pBufferBinds', 'imageOpaqueBindCount', 'pImageOpaqueBinds', 'imageBindCount', 'pImageBinds', 'signalSemaphoreCount', 'pSignalSemaphores'] structs['VkBufferCopy'] = ['srcOffset', 'dstOffset', 'size'] -protos['vkCmdCopyBuffer'] = ['commandBuffer', 'srcBuffer', 'dstBuffer', 'regionCount', 'pRegions'] -structs['VkImageSubresourceLayers'] = ['aspectMask', 'mipLevel', 'baseArrayLayer', 'layerCount'] -structs['VkImageCopy'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] -protos['vkCmdCopyImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets', 'dstSubresource', 'dstOffsets'] -protos['vkCmdBlitImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions', 'filter'] +structs['VkBufferCreateInfo'] = ['sType', 'pNext', 'flags', 'size', 'usage', 'sharingMode', 'queueFamilyIndexCount', 'pQueueFamilyIndices'] structs['VkBufferImageCopy'] = ['bufferOffset', 'bufferRowLength', 'bufferImageHeight', 'imageSubresource', 'imageOffset', 'imageExtent'] -protos['vkCmdCopyBufferToImage'] = ['commandBuffer', 'srcBuffer', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -protos['vkCmdCopyImageToBuffer'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstBuffer', 'regionCount', 'pRegions'] -protos['vkCmdUpdateBuffer'] = ['commandBuffer', 'dstBuffer', 'dstOffset', 'dataSize', 'pData'] -protos['vkCmdFillBuffer'] = ['commandBuffer', 'dstBuffer', 'dstOffset', 'size', 'data'] +structs['VkBufferMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask', 'srcQueueFamilyIndex', 'dstQueueFamilyIndex', 'buffer', 'offset', 'size'] +structs['VkBufferViewCreateInfo'] = ['sType', 'pNext', 'flags', 'buffer', 'format', 'offset', 'range'] +structs['VkClearAttachment'] = ['aspectMask', 'colorAttachment', 'clearValue'] structs['VkClearColorValue'] = ['float32', 'int32', 'uint32'] -protos['vkCmdClearColorImage'] = ['commandBuffer', 'image', 'imageLayout', 'pColor', 'rangeCount', 'pRanges'] structs['VkClearDepthStencilValue'] = ['depth', 'stencil'] -protos['vkCmdClearDepthStencilImage'] = ['commandBuffer', 'image', 'imageLayout', 'pDepthStencil', 'rangeCount', 'pRanges'] -structs['VkClearValue'] = ['color', 'depthStencil'] -structs['VkClearAttachment'] = ['aspectMask', 'colorAttachment', 'clearValue'] structs['VkClearRect'] = ['rect', 'baseArrayLayer', 'layerCount'] -protos['vkCmdClearAttachments'] = ['commandBuffer', 'attachmentCount', 'pAttachments', 'rectCount', 'pRects'] -structs['VkImageResolve'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] -protos['vkCmdResolveImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -protos['vkCmdSetEvent'] = ['commandBuffer', 'event', 'stageMask'] -protos['vkCmdResetEvent'] = ['commandBuffer', 'event', 'stageMask'] -structs['VkMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask'] -structs['VkBufferMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask', 'srcQueueFamilyIndex', 'dstQueueFamilyIndex', 'buffer', 'offset', 'size'] -structs['VkImageMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask', 'oldLayout', 'newLayout', 'srcQueueFamilyIndex', 'dstQueueFamilyIndex', 'image', 'subresourceRange'] -protos['vkCmdWaitEvents'] = ['commandBuffer', 'eventCount', 'pEvents', 'srcStageMask', 'dstStageMask', 'memoryBarrierCount', 'pMemoryBarriers', 'bufferMemoryBarrierCount', 'pBufferMemoryBarriers', 'imageMemoryBarrierCount', 'pImageMemoryBarriers'] -protos['vkCmdPipelineBarrier'] = ['commandBuffer', 'srcStageMask', 'dstStageMask', 'dependencyFlags', 'memoryBarrierCount', 'pMemoryBarriers', 'bufferMemoryBarrierCount', 'pBufferMemoryBarriers', 'imageMemoryBarrierCount', 'pImageMemoryBarriers'] -protos['vkCmdBeginQuery'] = ['commandBuffer', 'queryPool', 'query', 'flags'] -protos['vkCmdEndQuery'] = ['commandBuffer', 'queryPool', 'query'] -protos['vkCmdResetQueryPool'] = ['commandBuffer', 'queryPool', 'firstQuery', 'queryCount'] -protos['vkCmdWriteTimestamp'] = ['commandBuffer', 'pipelineStage', 'queryPool', 'query'] -protos['vkCmdCopyQueryPoolResults'] = ['commandBuffer', 'queryPool', 'firstQuery', 'queryCount', 'dstBuffer', 'dstOffset', 'stride', 'flags'] -protos['vkCmdPushConstants'] = ['commandBuffer', 'layout', 'stageFlags', 'offset', 'size', 'pValues'] -structs['VkRenderPassBeginInfo'] = ['sType', 'pNext', 'renderPass', 'framebuffer', 'renderArea', 'clearValueCount', 'pClearValues'] -consts['VK_SUBPASS_CONTENTS_INLINE'] = 'VkSubpassContents' -consts['VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'] = 'VkSubpassContents' -enums['VkSubpassContents'] = ['VK_SUBPASS_CONTENTS_INLINE', 'VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'] -protos['vkCmdBeginRenderPass'] = ['commandBuffer', 'pRenderPassBegin', 'contents'] -protos['vkCmdNextSubpass'] = ['commandBuffer', 'contents'] -protos['vkCmdEndRenderPass'] = ['commandBuffer'] -protos['vkCmdExecuteCommands'] = ['commandBuffer', 'commandBufferCount', 'pCommandBuffers'] +structs['VkClearValue'] = ['color', 'depthStencil'] +structs['VkCommandBufferAllocateInfo'] = ['sType', 'pNext', 'commandPool', 'level', 'commandBufferCount'] +structs['VkCommandBufferBeginInfo'] = ['sType', 'pNext', 'flags', 'pInheritanceInfo'] +structs['VkCommandBufferInheritanceInfo'] = ['sType', 'pNext', 'renderPass', 'subpass', 'framebuffer', 'occlusionQueryEnable', 'queryFlags', 'pipelineStatistics'] +structs['VkCommandPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'queueFamilyIndex'] +structs['VkComponentMapping'] = ['r', 'g', 'b', 'a'] +structs['VkComputePipelineCreateInfo'] = ['sType', 'pNext', 'flags', 'stage', 'layout', 'basePipelineHandle', 'basePipelineIndex'] +structs['VkCopyDescriptorSet'] = ['sType', 'pNext', 'srcSet', 'srcBinding', 'srcArrayElement', 'dstSet', 'dstBinding', 'dstArrayElement', 'descriptorCount'] +structs['VkDescriptorBufferInfo'] = ['buffer', 'offset', 'range'] +structs['VkDescriptorImageInfo'] = ['sampler', 'imageView', 'imageLayout'] +structs['VkDescriptorPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'maxSets', 'poolSizeCount', 'pPoolSizes'] +structs['VkDescriptorPoolSize'] = ['type', 'descriptorCount'] +structs['VkDescriptorSetAllocateInfo'] = ['sType', 'pNext', 'descriptorPool', 'descriptorSetCount', 'pSetLayouts'] +structs['VkDescriptorSetLayoutBinding'] = ['binding', 'descriptorType', 'descriptorCount', 'stageFlags', 'pImmutableSamplers'] +structs['VkDescriptorSetLayoutCreateInfo'] = ['sType', 'pNext', 'flags', 'bindingCount', 'pBindings'] +structs['VkDeviceCreateInfo'] = ['sType', 'pNext', 'flags', 'queueCreateInfoCount', 'pQueueCreateInfos', 'enabledLayerCount', 'ppEnabledLayerNames', 'enabledExtensionCount', 'ppEnabledExtensionNames', 'pEnabledFeatures'] +structs['VkDeviceQueueCreateInfo'] = ['sType', 'pNext', 'flags', 'queueFamilyIndex', 'queueCount', 'pQueuePriorities'] structs['VkDispatchIndirectCommand'] = ['x', 'y', 'z'] structs['VkDrawIndexedIndirectCommand'] = ['indexCount', 'instanceCount', 'firstIndex', 'vertexOffset', 'firstInstance'] structs['VkDrawIndirectCommand'] = ['vertexCount', 'instanceCount', 'firstVertex', 'firstInstance'] -consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION'] = None -consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME'] = None +structs['VkEventCreateInfo'] = ['sType', 'pNext', 'flags'] +structs['VkExtensionProperties'] = ['extensionName', 'specVersion'] +structs['VkExtent2D'] = ['width', 'height'] +structs['VkExtent3D'] = ['width', 'height', 'depth'] +structs['VkFenceCreateInfo'] = ['sType', 'pNext', 'flags'] +structs['VkFormatProperties'] = ['linearTilingFeatures', 'optimalTilingFeatures', 'bufferFeatures'] +structs['VkFramebufferCreateInfo'] = ['sType', 'pNext', 'flags', 'renderPass', 'attachmentCount', 'pAttachments', 'width', 'height', 'layers'] +structs['VkGraphicsPipelineCreateInfo'] = ['sType', 'pNext', 'flags', 'stageCount', 'pStages', 'pVertexInputState', 'pInputAssemblyState', 'pTessellationState', 'pViewportState', 'pRasterizationState', 'pMultisampleState', 'pDepthStencilState', 'pColorBlendState', 'pDynamicState', 'layout', 'renderPass', 'subpass', 'basePipelineHandle', 'basePipelineIndex'] +structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets', 'dstSubresource', 'dstOffsets'] +structs['VkImageCopy'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] +structs['VkImageCreateInfo'] = ['sType', 'pNext', 'flags', 'imageType', 'format', 'extent', 'mipLevels', 'arrayLayers', 'samples', 'tiling', 'usage', 'sharingMode', 'queueFamilyIndexCount', 'pQueueFamilyIndices', 'initialLayout'] +structs['VkImageFormatProperties'] = ['maxExtent', 'maxMipLevels', 'maxArrayLayers', 'sampleCounts', 'maxResourceSize'] +structs['VkImageMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask', 'oldLayout', 'newLayout', 'srcQueueFamilyIndex', 'dstQueueFamilyIndex', 'image', 'subresourceRange'] +structs['VkImageResolve'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] +structs['VkImageSubresource'] = ['aspectMask', 'mipLevel', 'arrayLayer'] +structs['VkImageSubresourceLayers'] = ['aspectMask', 'mipLevel', 'baseArrayLayer', 'layerCount'] +structs['VkImageSubresourceRange'] = ['aspectMask', 'baseMipLevel', 'levelCount', 'baseArrayLayer', 'layerCount'] +structs['VkImageViewCreateInfo'] = ['sType', 'pNext', 'flags', 'image', 'viewType', 'format', 'components', 'subresourceRange'] +structs['VkInstanceCreateInfo'] = ['sType', 'pNext', 'flags', 'pApplicationInfo', 'enabledLayerCount', 'ppEnabledLayerNames', 'enabledExtensionCount', 'ppEnabledExtensionNames'] +structs['VkLayerProperties'] = ['layerName', 'specVersion', 'implementationVersion', 'description'] +structs['VkMappedMemoryRange'] = ['sType', 'pNext', 'memory', 'offset', 'size'] +structs['VkMemoryAllocateInfo'] = ['sType', 'pNext', 'allocationSize', 'memoryTypeIndex'] +structs['VkMemoryBarrier'] = ['sType', 'pNext', 'srcAccessMask', 'dstAccessMask'] +structs['VkMemoryHeap'] = ['size', 'flags'] +structs['VkMemoryRequirements'] = ['size', 'alignment', 'memoryTypeBits'] +structs['VkMemoryType'] = ['propertyFlags', 'heapIndex'] +structs['VkOffset2D'] = ['x', 'y'] +structs['VkOffset3D'] = ['x', 'y', 'z'] +structs['VkPhysicalDeviceFeatures'] = ['robustBufferAccess', 'fullDrawIndexUint32', 'imageCubeArray', 'independentBlend', 'geometryShader', 'tessellationShader', 'sampleRateShading', 'dualSrcBlend', 'logicOp', 'multiDrawIndirect', 'drawIndirectFirstInstance', 'depthClamp', 'depthBiasClamp', 'fillModeNonSolid', 'depthBounds', 'wideLines', 'largePoints', 'alphaToOne', 'multiViewport', 'samplerAnisotropy', 'textureCompressionETC2', 'textureCompressionASTC_LDR', 'textureCompressionBC', 'occlusionQueryPrecise', 'pipelineStatisticsQuery', 'vertexPipelineStoresAndAtomics', 'fragmentStoresAndAtomics', 'shaderTessellationAndGeometryPointSize', 'shaderImageGatherExtended', 'shaderStorageImageExtendedFormats', 'shaderStorageImageMultisample', 'shaderStorageImageReadWithoutFormat', 'shaderStorageImageWriteWithoutFormat', 'shaderUniformBufferArrayDynamicIndexing', 'shaderSampledImageArrayDynamicIndexing', 'shaderStorageBufferArrayDynamicIndexing', 'shaderStorageImageArrayDynamicIndexing', 'shaderClipDistance', 'shaderCullDistance', 'shaderFloat64', 'shaderInt64', 'shaderInt16', 'shaderResourceResidency', 'shaderResourceMinLod', 'sparseBinding', 'sparseResidencyBuffer', 'sparseResidencyImage2D', 'sparseResidencyImage3D', 'sparseResidency2Samples', 'sparseResidency4Samples', 'sparseResidency8Samples', 'sparseResidency16Samples', 'sparseResidencyAliased', 'variableMultisampleRate', 'inheritedQueries'] +structs['VkPhysicalDeviceLimits'] = ['maxImageDimension1D', 'maxImageDimension2D', 'maxImageDimension3D', 'maxImageDimensionCube', 'maxImageArrayLayers', 'maxTexelBufferElements', 'maxUniformBufferRange', 'maxStorageBufferRange', 'maxPushConstantsSize', 'maxMemoryAllocationCount', 'maxSamplerAllocationCount', 'bufferImageGranularity', 'sparseAddressSpaceSize', 'maxBoundDescriptorSets', 'maxPerStageDescriptorSamplers', 'maxPerStageDescriptorUniformBuffers', 'maxPerStageDescriptorStorageBuffers', 'maxPerStageDescriptorSampledImages', 'maxPerStageDescriptorStorageImages', 'maxPerStageDescriptorInputAttachments', 'maxPerStageResources', 'maxDescriptorSetSamplers', 'maxDescriptorSetUniformBuffers', 'maxDescriptorSetUniformBuffersDynamic', 'maxDescriptorSetStorageBuffers', 'maxDescriptorSetStorageBuffersDynamic', 'maxDescriptorSetSampledImages', 'maxDescriptorSetStorageImages', 'maxDescriptorSetInputAttachments', 'maxVertexInputAttributes', 'maxVertexInputBindings', 'maxVertexInputAttributeOffset', 'maxVertexInputBindingStride', 'maxVertexOutputComponents', 'maxTessellationGenerationLevel', 'maxTessellationPatchSize', 'maxTessellationControlPerVertexInputComponents', 'maxTessellationControlPerVertexOutputComponents', 'maxTessellationControlPerPatchOutputComponents', 'maxTessellationControlTotalOutputComponents', 'maxTessellationEvaluationInputComponents', 'maxTessellationEvaluationOutputComponents', 'maxGeometryShaderInvocations', 'maxGeometryInputComponents', 'maxGeometryOutputComponents', 'maxGeometryOutputVertices', 'maxGeometryTotalOutputComponents', 'maxFragmentInputComponents', 'maxFragmentOutputAttachments', 'maxFragmentDualSrcAttachments', 'maxFragmentCombinedOutputResources', 'maxComputeSharedMemorySize', 'maxComputeWorkGroupCount', 'maxComputeWorkGroupInvocations', 'maxComputeWorkGroupSize', 'subPixelPrecisionBits', 'subTexelPrecisionBits', 'mipmapPrecisionBits', 'maxDrawIndexedIndexValue', 'maxDrawIndirectCount', 'maxSamplerLodBias', 'maxSamplerAnisotropy', 'maxViewports', 'maxViewportDimensions', 'viewportBoundsRange', 'viewportSubPixelBits', 'minMemoryMapAlignment', 'minTexelBufferOffsetAlignment', 'minUniformBufferOffsetAlignment', 'minStorageBufferOffsetAlignment', 'minTexelOffset', 'maxTexelOffset', 'minTexelGatherOffset', 'maxTexelGatherOffset', 'minInterpolationOffset', 'maxInterpolationOffset', 'subPixelInterpolationOffsetBits', 'maxFramebufferWidth', 'maxFramebufferHeight', 'maxFramebufferLayers', 'framebufferColorSampleCounts', 'framebufferDepthSampleCounts', 'framebufferStencilSampleCounts', 'framebufferNoAttachmentsSampleCounts', 'maxColorAttachments', 'sampledImageColorSampleCounts', 'sampledImageIntegerSampleCounts', 'sampledImageDepthSampleCounts', 'sampledImageStencilSampleCounts', 'storageImageSampleCounts', 'maxSampleMaskWords', 'timestampComputeAndGraphics', 'timestampPeriod', 'maxClipDistances', 'maxCullDistances', 'maxCombinedClipAndCullDistances', 'discreteQueuePriorities', 'pointSizeRange', 'lineWidthRange', 'pointSizeGranularity', 'lineWidthGranularity', 'strictLines', 'standardSampleLocations', 'optimalBufferCopyOffsetAlignment', 'optimalBufferCopyRowPitchAlignment', 'nonCoherentAtomSize'] +structs['VkPhysicalDeviceMemoryProperties'] = ['memoryTypeCount', 'memoryTypes', 'memoryHeapCount', 'memoryHeaps'] +structs['VkPhysicalDeviceProperties'] = ['apiVersion', 'driverVersion', 'vendorID', 'deviceID', 'deviceType', 'deviceName', 'pipelineCacheUUID', 'limits', 'sparseProperties'] +structs['VkPhysicalDeviceSparseProperties'] = ['residencyStandard2DBlockShape', 'residencyStandard2DMultisampleBlockShape', 'residencyStandard3DBlockShape', 'residencyAlignedMipSize', 'residencyNonResidentStrict'] +structs['VkPipelineCacheCreateInfo'] = ['sType', 'pNext', 'flags', 'initialDataSize', 'pInitialData'] +structs['VkPipelineColorBlendAttachmentState'] = ['blendEnable', 'srcColorBlendFactor', 'dstColorBlendFactor', 'colorBlendOp', 'srcAlphaBlendFactor', 'dstAlphaBlendFactor', 'alphaBlendOp', 'colorWriteMask'] +structs['VkPipelineColorBlendStateCreateInfo'] = ['sType', 'pNext', 'flags', 'logicOpEnable', 'logicOp', 'attachmentCount', 'pAttachments', 'blendConstants'] +structs['VkPipelineDepthStencilStateCreateInfo'] = ['sType', 'pNext', 'flags', 'depthTestEnable', 'depthWriteEnable', 'depthCompareOp', 'depthBoundsTestEnable', 'stencilTestEnable', 'front', 'back', 'minDepthBounds', 'maxDepthBounds'] +structs['VkPipelineDynamicStateCreateInfo'] = ['sType', 'pNext', 'flags', 'dynamicStateCount', 'pDynamicStates'] +structs['VkPipelineInputAssemblyStateCreateInfo'] = ['sType', 'pNext', 'flags', 'topology', 'primitiveRestartEnable'] +structs['VkPipelineLayoutCreateInfo'] = ['sType', 'pNext', 'flags', 'setLayoutCount', 'pSetLayouts', 'pushConstantRangeCount', 'pPushConstantRanges'] +structs['VkPipelineMultisampleStateCreateInfo'] = ['sType', 'pNext', 'flags', 'rasterizationSamples', 'sampleShadingEnable', 'minSampleShading', 'pSampleMask', 'alphaToCoverageEnable', 'alphaToOneEnable'] +structs['VkPipelineRasterizationStateCreateInfo'] = ['sType', 'pNext', 'flags', 'depthClampEnable', 'rasterizerDiscardEnable', 'polygonMode', 'cullMode', 'frontFace', 'depthBiasEnable', 'depthBiasConstantFactor', 'depthBiasClamp', 'depthBiasSlopeFactor', 'lineWidth'] +structs['VkPipelineShaderStageCreateInfo'] = ['sType', 'pNext', 'flags', 'stage', 'module', 'pName', 'pSpecializationInfo'] +structs['VkPipelineTessellationStateCreateInfo'] = ['sType', 'pNext', 'flags', 'patchControlPoints'] +structs['VkPipelineVertexInputStateCreateInfo'] = ['sType', 'pNext', 'flags', 'vertexBindingDescriptionCount', 'pVertexBindingDescriptions', 'vertexAttributeDescriptionCount', 'pVertexAttributeDescriptions'] +structs['VkPipelineViewportStateCreateInfo'] = ['sType', 'pNext', 'flags', 'viewportCount', 'pViewports', 'scissorCount', 'pScissors'] +structs['VkPushConstantRange'] = ['stageFlags', 'offset', 'size'] +structs['VkQueryPoolCreateInfo'] = ['sType', 'pNext', 'flags', 'queryType', 'queryCount', 'pipelineStatistics'] +structs['VkQueueFamilyProperties'] = ['queueFlags', 'queueCount', 'timestampValidBits', 'minImageTransferGranularity'] +structs['VkRect2D'] = ['offset', 'extent'] +structs['VkRenderPassBeginInfo'] = ['sType', 'pNext', 'renderPass', 'framebuffer', 'renderArea', 'clearValueCount', 'pClearValues'] +structs['VkRenderPassCreateInfo'] = ['sType', 'pNext', 'flags', 'attachmentCount', 'pAttachments', 'subpassCount', 'pSubpasses', 'dependencyCount', 'pDependencies'] +structs['VkSamplerCreateInfo'] = ['sType', 'pNext', 'flags', 'magFilter', 'minFilter', 'mipmapMode', 'addressModeU', 'addressModeV', 'addressModeW', 'mipLodBias', 'anisotropyEnable', 'maxAnisotropy', 'compareEnable', 'compareOp', 'minLod', 'maxLod', 'borderColor', 'unnormalizedCoordinates'] +structs['VkSemaphoreCreateInfo'] = ['sType', 'pNext', 'flags'] +structs['VkShaderModuleCreateInfo'] = ['sType', 'pNext', 'flags', 'codeSize', 'pCode'] +structs['VkSparseBufferMemoryBindInfo'] = ['buffer', 'bindCount', 'pBinds'] +structs['VkSparseImageFormatProperties'] = ['aspectMask', 'imageGranularity', 'flags'] +structs['VkSparseImageMemoryBind'] = ['subresource', 'offset', 'extent', 'memory', 'memoryOffset', 'flags'] +structs['VkSparseImageMemoryBindInfo'] = ['image', 'bindCount', 'pBinds'] +structs['VkSparseImageMemoryRequirements'] = ['formatProperties', 'imageMipTailFirstLod', 'imageMipTailSize', 'imageMipTailOffset', 'imageMipTailStride'] +structs['VkSparseImageOpaqueMemoryBindInfo'] = ['image', 'bindCount', 'pBinds'] +structs['VkSparseMemoryBind'] = ['resourceOffset', 'size', 'memory', 'memoryOffset', 'flags'] +structs['VkSpecializationInfo'] = ['mapEntryCount', 'pMapEntries', 'dataSize', 'pData'] +structs['VkSpecializationMapEntry'] = ['constantID', 'offset', 'size'] +structs['VkStencilOpState'] = ['failOp', 'passOp', 'depthFailOp', 'compareOp', 'compareMask', 'writeMask', 'reference'] +structs['VkSubmitInfo'] = ['sType', 'pNext', 'waitSemaphoreCount', 'pWaitSemaphores', 'pWaitDstStageMask', 'commandBufferCount', 'pCommandBuffers', 'signalSemaphoreCount', 'pSignalSemaphores'] +structs['VkSubpassDependency'] = ['srcSubpass', 'dstSubpass', 'srcStageMask', 'dstStageMask', 'srcAccessMask', 'dstAccessMask', 'dependencyFlags'] +structs['VkSubpassDescription'] = ['flags', 'pipelineBindPoint', 'inputAttachmentCount', 'pInputAttachments', 'colorAttachmentCount', 'pColorAttachments', 'pResolveAttachments', 'pDepthStencilAttachment', 'preserveAttachmentCount', 'pPreserveAttachments'] +structs['VkSubresourceLayout'] = ['offset', 'size', 'rowPitch', 'arrayPitch', 'depthPitch'] +structs['VkVertexInputAttributeDescription'] = ['location', 'binding', 'format', 'offset'] +structs['VkVertexInputBindingDescription'] = ['binding', 'stride', 'inputRate'] +structs['VkViewport'] = ['x', 'y', 'width', 'height', 'minDepth', 'maxDepth'] +structs['VkWriteDescriptorSet'] = ['sType', 'pNext', 'dstSet', 'dstBinding', 'dstArrayElement', 'descriptorCount', 'descriptorType', 'pImageInfo', 'pBufferInfo', 'pTexelBufferView'] +handles = {} +handles['VkBuffer'] = None +handles['VkBufferView'] = None +handles['VkCommandBuffer'] = None +handles['VkCommandPool'] = None +handles['VkDescriptorPool'] = None +handles['VkDescriptorSet'] = None +handles['VkDescriptorSetLayout'] = None +handles['VkDevice'] = None +handles['VkDeviceMemory'] = None +handles['VkEvent'] = None +handles['VkFence'] = None +handles['VkFramebuffer'] = None +handles['VkImage'] = None +handles['VkImageView'] = None +handles['VkInstance'] = None +handles['VkPhysicalDevice'] = None +handles['VkPipeline'] = None +handles['VkPipelineCache'] = None +handles['VkPipelineLayout'] = None +handles['VkQueryPool'] = None +handles['VkQueue'] = None +handles['VkRenderPass'] = None +handles['VkSampler'] = None +handles['VkSemaphore'] = None +handles['VkShaderModule'] = None +defines = {} +defines['VK_API_VERSION'] = None +defines['VK_API_VERSION_1_0'] = None +defines['VK_DEFINE_HANDLE'] = None +defines['VK_DEFINE_NON_DISPATCHABLE_HANDLE'] = None +defines['VK_HEADER_VERSION'] = None +defines['VK_MAKE_VERSION'] = None +defines['VK_NULL_HANDLE'] = None +defines['VK_VERSION_MAJOR'] = None +defines['VK_VERSION_MINOR'] = None +defines['VK_VERSION_PATCH'] = None +typeCategory = {} +typeCategory['PFN_vkAllocationFunction'] = 'funcpointer' +typeCategory['PFN_vkFreeFunction'] = 'funcpointer' +typeCategory['PFN_vkInternalAllocationNotification'] = 'funcpointer' +typeCategory['PFN_vkInternalFreeNotification'] = 'funcpointer' +typeCategory['PFN_vkReallocationFunction'] = 'funcpointer' +typeCategory['PFN_vkVoidFunction'] = 'funcpointer' +typeCategory['VK_API_VERSION'] = 'define' +typeCategory['VK_API_VERSION_1_0'] = 'define' +typeCategory['VK_ATTACHMENT_UNUSED'] = 'consts' +typeCategory['VK_DEFINE_HANDLE'] = 'define' +typeCategory['VK_DEFINE_NON_DISPATCHABLE_HANDLE'] = 'define' +typeCategory['VK_FALSE'] = 'consts' +typeCategory['VK_HEADER_VERSION'] = 'define' +typeCategory['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME'] = 'consts' +typeCategory['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION'] = 'consts' +typeCategory['VK_LOD_CLAMP_NONE'] = 'consts' +typeCategory['VK_MAKE_VERSION'] = 'define' +typeCategory['VK_MAX_DESCRIPTION_SIZE'] = 'consts' +typeCategory['VK_MAX_EXTENSION_NAME_SIZE'] = 'consts' +typeCategory['VK_MAX_MEMORY_HEAPS'] = 'consts' +typeCategory['VK_MAX_MEMORY_TYPES'] = 'consts' +typeCategory['VK_MAX_PHYSICAL_DEVICE_NAME_SIZE'] = 'consts' +typeCategory['VK_NULL_HANDLE'] = 'define' +typeCategory['VK_QUEUE_FAMILY_IGNORED'] = 'consts' +typeCategory['VK_REMAINING_ARRAY_LAYERS'] = 'consts' +typeCategory['VK_REMAINING_MIP_LEVELS'] = 'consts' +typeCategory['VK_SUBPASS_EXTERNAL'] = 'consts' +typeCategory['VK_TRUE'] = 'consts' +typeCategory['VK_UUID_SIZE'] = 'consts' +typeCategory['VK_VERSION_MAJOR'] = 'define' +typeCategory['VK_VERSION_MINOR'] = 'define' +typeCategory['VK_VERSION_PATCH'] = 'define' +typeCategory['VK_WHOLE_SIZE'] = 'consts' +typeCategory['VkAccessFlags'] = 'bitmask' +typeCategory['VkAllocationCallbacks'] = 'struct' +typeCategory['VkApplicationInfo'] = 'struct' +typeCategory['VkAttachmentDescription'] = 'struct' +typeCategory['VkAttachmentDescriptionFlags'] = 'bitmask' +typeCategory['VkAttachmentReference'] = 'struct' +typeCategory['VkBindSparseInfo'] = 'struct' +typeCategory['VkBool32'] = 'basetype' +typeCategory['VkBuffer'] = 'handle' +typeCategory['VkBufferCopy'] = 'struct' +typeCategory['VkBufferCreateFlags'] = 'bitmask' +typeCategory['VkBufferCreateInfo'] = 'struct' +typeCategory['VkBufferImageCopy'] = 'struct' +typeCategory['VkBufferMemoryBarrier'] = 'struct' +typeCategory['VkBufferUsageFlags'] = 'bitmask' +typeCategory['VkBufferView'] = 'handle' +typeCategory['VkBufferViewCreateFlags'] = 'bitmask' +typeCategory['VkBufferViewCreateInfo'] = 'struct' +typeCategory['VkClearAttachment'] = 'struct' +typeCategory['VkClearColorValue'] = 'union' +typeCategory['VkClearDepthStencilValue'] = 'struct' +typeCategory['VkClearRect'] = 'struct' +typeCategory['VkClearValue'] = 'union' +typeCategory['VkColorComponentFlags'] = 'bitmask' +typeCategory['VkCommandBuffer'] = 'handle' +typeCategory['VkCommandBufferAllocateInfo'] = 'struct' +typeCategory['VkCommandBufferBeginInfo'] = 'struct' +typeCategory['VkCommandBufferInheritanceInfo'] = 'struct' +typeCategory['VkCommandBufferResetFlags'] = 'bitmask' +typeCategory['VkCommandBufferUsageFlags'] = 'bitmask' +typeCategory['VkCommandPool'] = 'handle' +typeCategory['VkCommandPoolCreateFlags'] = 'bitmask' +typeCategory['VkCommandPoolCreateInfo'] = 'struct' +typeCategory['VkCommandPoolResetFlags'] = 'bitmask' +typeCategory['VkComponentMapping'] = 'struct' +typeCategory['VkComputePipelineCreateInfo'] = 'struct' +typeCategory['VkCopyDescriptorSet'] = 'struct' +typeCategory['VkCullModeFlags'] = 'bitmask' +typeCategory['VkDependencyFlags'] = 'bitmask' +typeCategory['VkDescriptorBufferInfo'] = 'struct' +typeCategory['VkDescriptorImageInfo'] = 'struct' +typeCategory['VkDescriptorPool'] = 'handle' +typeCategory['VkDescriptorPoolCreateFlags'] = 'bitmask' +typeCategory['VkDescriptorPoolCreateInfo'] = 'struct' +typeCategory['VkDescriptorPoolResetFlags'] = 'bitmask' +typeCategory['VkDescriptorPoolSize'] = 'struct' +typeCategory['VkDescriptorSet'] = 'handle' +typeCategory['VkDescriptorSetAllocateInfo'] = 'struct' +typeCategory['VkDescriptorSetLayout'] = 'handle' +typeCategory['VkDescriptorSetLayoutBinding'] = 'struct' +typeCategory['VkDescriptorSetLayoutCreateFlags'] = 'bitmask' +typeCategory['VkDescriptorSetLayoutCreateInfo'] = 'struct' +typeCategory['VkDevice'] = 'handle' +typeCategory['VkDeviceCreateFlags'] = 'bitmask' +typeCategory['VkDeviceCreateInfo'] = 'struct' +typeCategory['VkDeviceMemory'] = 'handle' +typeCategory['VkDeviceQueueCreateFlags'] = 'bitmask' +typeCategory['VkDeviceQueueCreateInfo'] = 'struct' +typeCategory['VkDeviceSize'] = 'basetype' +typeCategory['VkDispatchIndirectCommand'] = 'struct' +typeCategory['VkDrawIndexedIndirectCommand'] = 'struct' +typeCategory['VkDrawIndirectCommand'] = 'struct' +typeCategory['VkEvent'] = 'handle' +typeCategory['VkEventCreateFlags'] = 'bitmask' +typeCategory['VkEventCreateInfo'] = 'struct' +typeCategory['VkExtensionProperties'] = 'struct' +typeCategory['VkExtent2D'] = 'struct' +typeCategory['VkExtent3D'] = 'struct' +typeCategory['VkFence'] = 'handle' +typeCategory['VkFenceCreateFlags'] = 'bitmask' +typeCategory['VkFenceCreateInfo'] = 'struct' +typeCategory['VkFlags'] = 'basetype' +typeCategory['VkFormatFeatureFlags'] = 'bitmask' +typeCategory['VkFormatProperties'] = 'struct' +typeCategory['VkFramebuffer'] = 'handle' +typeCategory['VkFramebufferCreateFlags'] = 'bitmask' +typeCategory['VkFramebufferCreateInfo'] = 'struct' +typeCategory['VkGraphicsPipelineCreateInfo'] = 'struct' +typeCategory['VkImage'] = 'handle' +typeCategory['VkImageAspectFlags'] = 'bitmask' +typeCategory['VkImageBlit'] = 'struct' +typeCategory['VkImageCopy'] = 'struct' +typeCategory['VkImageCreateFlags'] = 'bitmask' +typeCategory['VkImageCreateInfo'] = 'struct' +typeCategory['VkImageFormatProperties'] = 'struct' +typeCategory['VkImageMemoryBarrier'] = 'struct' +typeCategory['VkImageResolve'] = 'struct' +typeCategory['VkImageSubresource'] = 'struct' +typeCategory['VkImageSubresourceLayers'] = 'struct' +typeCategory['VkImageSubresourceRange'] = 'struct' +typeCategory['VkImageUsageFlags'] = 'bitmask' +typeCategory['VkImageView'] = 'handle' +typeCategory['VkImageViewCreateFlags'] = 'bitmask' +typeCategory['VkImageViewCreateInfo'] = 'struct' +typeCategory['VkInstance'] = 'handle' +typeCategory['VkInstanceCreateFlags'] = 'bitmask' +typeCategory['VkInstanceCreateInfo'] = 'struct' +typeCategory['VkLayerProperties'] = 'struct' +typeCategory['VkMappedMemoryRange'] = 'struct' +typeCategory['VkMemoryAllocateInfo'] = 'struct' +typeCategory['VkMemoryBarrier'] = 'struct' +typeCategory['VkMemoryHeap'] = 'struct' +typeCategory['VkMemoryHeapFlags'] = 'bitmask' +typeCategory['VkMemoryMapFlags'] = 'bitmask' +typeCategory['VkMemoryPropertyFlags'] = 'bitmask' +typeCategory['VkMemoryRequirements'] = 'struct' +typeCategory['VkMemoryType'] = 'struct' +typeCategory['VkOffset2D'] = 'struct' +typeCategory['VkOffset3D'] = 'struct' +typeCategory['VkPhysicalDevice'] = 'handle' +typeCategory['VkPhysicalDeviceFeatures'] = 'struct' +typeCategory['VkPhysicalDeviceLimits'] = 'struct' +typeCategory['VkPhysicalDeviceMemoryProperties'] = 'struct' +typeCategory['VkPhysicalDeviceProperties'] = 'struct' +typeCategory['VkPhysicalDeviceSparseProperties'] = 'struct' +typeCategory['VkPipeline'] = 'handle' +typeCategory['VkPipelineCache'] = 'handle' +typeCategory['VkPipelineCacheCreateFlags'] = 'bitmask' +typeCategory['VkPipelineCacheCreateInfo'] = 'struct' +typeCategory['VkPipelineColorBlendAttachmentState'] = 'struct' +typeCategory['VkPipelineColorBlendStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineColorBlendStateCreateInfo'] = 'struct' +typeCategory['VkPipelineCreateFlags'] = 'bitmask' +typeCategory['VkPipelineDepthStencilStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineDepthStencilStateCreateInfo'] = 'struct' +typeCategory['VkPipelineDynamicStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineDynamicStateCreateInfo'] = 'struct' +typeCategory['VkPipelineInputAssemblyStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineInputAssemblyStateCreateInfo'] = 'struct' +typeCategory['VkPipelineLayout'] = 'handle' +typeCategory['VkPipelineLayoutCreateFlags'] = 'bitmask' +typeCategory['VkPipelineLayoutCreateInfo'] = 'struct' +typeCategory['VkPipelineMultisampleStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineMultisampleStateCreateInfo'] = 'struct' +typeCategory['VkPipelineRasterizationStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineRasterizationStateCreateInfo'] = 'struct' +typeCategory['VkPipelineShaderStageCreateFlags'] = 'bitmask' +typeCategory['VkPipelineShaderStageCreateInfo'] = 'struct' +typeCategory['VkPipelineStageFlags'] = 'bitmask' +typeCategory['VkPipelineTessellationStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineTessellationStateCreateInfo'] = 'struct' +typeCategory['VkPipelineVertexInputStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineVertexInputStateCreateInfo'] = 'struct' +typeCategory['VkPipelineViewportStateCreateFlags'] = 'bitmask' +typeCategory['VkPipelineViewportStateCreateInfo'] = 'struct' +typeCategory['VkPushConstantRange'] = 'struct' +typeCategory['VkQueryControlFlags'] = 'bitmask' +typeCategory['VkQueryPipelineStatisticFlags'] = 'bitmask' +typeCategory['VkQueryPool'] = 'handle' +typeCategory['VkQueryPoolCreateFlags'] = 'bitmask' +typeCategory['VkQueryPoolCreateInfo'] = 'struct' +typeCategory['VkQueryResultFlags'] = 'bitmask' +typeCategory['VkQueue'] = 'handle' +typeCategory['VkQueueFamilyProperties'] = 'struct' +typeCategory['VkQueueFlags'] = 'bitmask' +typeCategory['VkRect2D'] = 'struct' +typeCategory['VkRenderPass'] = 'handle' +typeCategory['VkRenderPassBeginInfo'] = 'struct' +typeCategory['VkRenderPassCreateFlags'] = 'bitmask' +typeCategory['VkRenderPassCreateInfo'] = 'struct' +typeCategory['VkSampleCountFlags'] = 'bitmask' +typeCategory['VkSampleMask'] = 'basetype' +typeCategory['VkSampler'] = 'handle' +typeCategory['VkSamplerCreateFlags'] = 'bitmask' +typeCategory['VkSamplerCreateInfo'] = 'struct' +typeCategory['VkSemaphore'] = 'handle' +typeCategory['VkSemaphoreCreateFlags'] = 'bitmask' +typeCategory['VkSemaphoreCreateInfo'] = 'struct' +typeCategory['VkShaderModule'] = 'handle' +typeCategory['VkShaderModuleCreateFlags'] = 'bitmask' +typeCategory['VkShaderModuleCreateInfo'] = 'struct' +typeCategory['VkShaderStageFlags'] = 'bitmask' +typeCategory['VkSparseBufferMemoryBindInfo'] = 'struct' +typeCategory['VkSparseImageFormatFlags'] = 'bitmask' +typeCategory['VkSparseImageFormatProperties'] = 'struct' +typeCategory['VkSparseImageMemoryBind'] = 'struct' +typeCategory['VkSparseImageMemoryBindInfo'] = 'struct' +typeCategory['VkSparseImageMemoryRequirements'] = 'struct' +typeCategory['VkSparseImageOpaqueMemoryBindInfo'] = 'struct' +typeCategory['VkSparseMemoryBind'] = 'struct' +typeCategory['VkSparseMemoryBindFlags'] = 'bitmask' +typeCategory['VkSpecializationInfo'] = 'struct' +typeCategory['VkSpecializationMapEntry'] = 'struct' +typeCategory['VkStencilFaceFlags'] = 'bitmask' +typeCategory['VkStencilOpState'] = 'struct' +typeCategory['VkSubmitInfo'] = 'struct' +typeCategory['VkSubpassDependency'] = 'struct' +typeCategory['VkSubpassDescription'] = 'struct' +typeCategory['VkSubpassDescriptionFlags'] = 'bitmask' +typeCategory['VkSubresourceLayout'] = 'struct' +typeCategory['VkVertexInputAttributeDescription'] = 'struct' +typeCategory['VkVertexInputBindingDescription'] = 'struct' +typeCategory['VkViewport'] = 'struct' +typeCategory['VkWriteDescriptorSet'] = 'struct' +typeCategory['char'] = None +typeCategory['float'] = None +typeCategory['int32_t'] = None +typeCategory['size_t'] = None +typeCategory['uint32_t'] = None +typeCategory['uint64_t'] = None +typeCategory['uint8_t'] = None +typeCategory['vkAllocateCommandBuffers'] = 'protos' +typeCategory['vkAllocateDescriptorSets'] = 'protos' +typeCategory['vkAllocateMemory'] = 'protos' +typeCategory['vkBeginCommandBuffer'] = 'protos' +typeCategory['vkBindBufferMemory'] = 'protos' +typeCategory['vkBindImageMemory'] = 'protos' +typeCategory['vkCmdBeginQuery'] = 'protos' +typeCategory['vkCmdBeginRenderPass'] = 'protos' +typeCategory['vkCmdBindDescriptorSets'] = 'protos' +typeCategory['vkCmdBindIndexBuffer'] = 'protos' +typeCategory['vkCmdBindPipeline'] = 'protos' +typeCategory['vkCmdBindVertexBuffers'] = 'protos' +typeCategory['vkCmdBlitImage'] = 'protos' +typeCategory['vkCmdClearAttachments'] = 'protos' +typeCategory['vkCmdClearColorImage'] = 'protos' +typeCategory['vkCmdClearDepthStencilImage'] = 'protos' +typeCategory['vkCmdCopyBuffer'] = 'protos' +typeCategory['vkCmdCopyBufferToImage'] = 'protos' +typeCategory['vkCmdCopyImage'] = 'protos' +typeCategory['vkCmdCopyImageToBuffer'] = 'protos' +typeCategory['vkCmdCopyQueryPoolResults'] = 'protos' +typeCategory['vkCmdDispatch'] = 'protos' +typeCategory['vkCmdDispatchIndirect'] = 'protos' +typeCategory['vkCmdDraw'] = 'protos' +typeCategory['vkCmdDrawIndexed'] = 'protos' +typeCategory['vkCmdDrawIndexedIndirect'] = 'protos' +typeCategory['vkCmdDrawIndirect'] = 'protos' +typeCategory['vkCmdEndQuery'] = 'protos' +typeCategory['vkCmdEndRenderPass'] = 'protos' +typeCategory['vkCmdExecuteCommands'] = 'protos' +typeCategory['vkCmdFillBuffer'] = 'protos' +typeCategory['vkCmdNextSubpass'] = 'protos' +typeCategory['vkCmdPipelineBarrier'] = 'protos' +typeCategory['vkCmdPushConstants'] = 'protos' +typeCategory['vkCmdResetEvent'] = 'protos' +typeCategory['vkCmdResetQueryPool'] = 'protos' +typeCategory['vkCmdResolveImage'] = 'protos' +typeCategory['vkCmdSetBlendConstants'] = 'protos' +typeCategory['vkCmdSetDepthBias'] = 'protos' +typeCategory['vkCmdSetDepthBounds'] = 'protos' +typeCategory['vkCmdSetEvent'] = 'protos' +typeCategory['vkCmdSetLineWidth'] = 'protos' +typeCategory['vkCmdSetScissor'] = 'protos' +typeCategory['vkCmdSetStencilCompareMask'] = 'protos' +typeCategory['vkCmdSetStencilReference'] = 'protos' +typeCategory['vkCmdSetStencilWriteMask'] = 'protos' +typeCategory['vkCmdSetViewport'] = 'protos' +typeCategory['vkCmdUpdateBuffer'] = 'protos' +typeCategory['vkCmdWaitEvents'] = 'protos' +typeCategory['vkCmdWriteTimestamp'] = 'protos' +typeCategory['vkCreateBuffer'] = 'protos' +typeCategory['vkCreateBufferView'] = 'protos' +typeCategory['vkCreateCommandPool'] = 'protos' +typeCategory['vkCreateComputePipelines'] = 'protos' +typeCategory['vkCreateDescriptorPool'] = 'protos' +typeCategory['vkCreateDescriptorSetLayout'] = 'protos' +typeCategory['vkCreateDevice'] = 'protos' +typeCategory['vkCreateEvent'] = 'protos' +typeCategory['vkCreateFence'] = 'protos' +typeCategory['vkCreateFramebuffer'] = 'protos' +typeCategory['vkCreateGraphicsPipelines'] = 'protos' +typeCategory['vkCreateImage'] = 'protos' +typeCategory['vkCreateImageView'] = 'protos' +typeCategory['vkCreateInstance'] = 'protos' +typeCategory['vkCreatePipelineCache'] = 'protos' +typeCategory['vkCreatePipelineLayout'] = 'protos' +typeCategory['vkCreateQueryPool'] = 'protos' +typeCategory['vkCreateRenderPass'] = 'protos' +typeCategory['vkCreateSampler'] = 'protos' +typeCategory['vkCreateSemaphore'] = 'protos' +typeCategory['vkCreateShaderModule'] = 'protos' +typeCategory['vkDestroyBuffer'] = 'protos' +typeCategory['vkDestroyBufferView'] = 'protos' +typeCategory['vkDestroyCommandPool'] = 'protos' +typeCategory['vkDestroyDescriptorPool'] = 'protos' +typeCategory['vkDestroyDescriptorSetLayout'] = 'protos' +typeCategory['vkDestroyDevice'] = 'protos' +typeCategory['vkDestroyEvent'] = 'protos' +typeCategory['vkDestroyFence'] = 'protos' +typeCategory['vkDestroyFramebuffer'] = 'protos' +typeCategory['vkDestroyImage'] = 'protos' +typeCategory['vkDestroyImageView'] = 'protos' +typeCategory['vkDestroyInstance'] = 'protos' +typeCategory['vkDestroyPipeline'] = 'protos' +typeCategory['vkDestroyPipelineCache'] = 'protos' +typeCategory['vkDestroyPipelineLayout'] = 'protos' +typeCategory['vkDestroyQueryPool'] = 'protos' +typeCategory['vkDestroyRenderPass'] = 'protos' +typeCategory['vkDestroySampler'] = 'protos' +typeCategory['vkDestroySemaphore'] = 'protos' +typeCategory['vkDestroyShaderModule'] = 'protos' +typeCategory['vkDeviceWaitIdle'] = 'protos' +typeCategory['vkEndCommandBuffer'] = 'protos' +typeCategory['vkEnumerateDeviceExtensionProperties'] = 'protos' +typeCategory['vkEnumerateDeviceLayerProperties'] = 'protos' +typeCategory['vkEnumerateInstanceExtensionProperties'] = 'protos' +typeCategory['vkEnumerateInstanceLayerProperties'] = 'protos' +typeCategory['vkEnumeratePhysicalDevices'] = 'protos' +typeCategory['vkFlushMappedMemoryRanges'] = 'protos' +typeCategory['vkFreeCommandBuffers'] = 'protos' +typeCategory['vkFreeDescriptorSets'] = 'protos' +typeCategory['vkFreeMemory'] = 'protos' +typeCategory['vkGetBufferMemoryRequirements'] = 'protos' +typeCategory['vkGetDeviceMemoryCommitment'] = 'protos' +typeCategory['vkGetDeviceProcAddr'] = 'protos' +typeCategory['vkGetDeviceQueue'] = 'protos' +typeCategory['vkGetEventStatus'] = 'protos' +typeCategory['vkGetFenceStatus'] = 'protos' +typeCategory['vkGetImageMemoryRequirements'] = 'protos' +typeCategory['vkGetImageSparseMemoryRequirements'] = 'protos' +typeCategory['vkGetImageSubresourceLayout'] = 'protos' +typeCategory['vkGetInstanceProcAddr'] = 'protos' +typeCategory['vkGetPhysicalDeviceFeatures'] = 'protos' +typeCategory['vkGetPhysicalDeviceFormatProperties'] = 'protos' +typeCategory['vkGetPhysicalDeviceImageFormatProperties'] = 'protos' +typeCategory['vkGetPhysicalDeviceMemoryProperties'] = 'protos' +typeCategory['vkGetPhysicalDeviceProperties'] = 'protos' +typeCategory['vkGetPhysicalDeviceQueueFamilyProperties'] = 'protos' +typeCategory['vkGetPhysicalDeviceSparseImageFormatProperties'] = 'protos' +typeCategory['vkGetPipelineCacheData'] = 'protos' +typeCategory['vkGetQueryPoolResults'] = 'protos' +typeCategory['vkGetRenderAreaGranularity'] = 'protos' +typeCategory['vkInvalidateMappedMemoryRanges'] = 'protos' +typeCategory['vkMapMemory'] = 'protos' +typeCategory['vkMergePipelineCaches'] = 'protos' +typeCategory['vkQueueBindSparse'] = 'protos' +typeCategory['vkQueueSubmit'] = 'protos' +typeCategory['vkQueueWaitIdle'] = 'protos' +typeCategory['vkResetCommandBuffer'] = 'protos' +typeCategory['vkResetCommandPool'] = 'protos' +typeCategory['vkResetDescriptorPool'] = 'protos' +typeCategory['vkResetEvent'] = 'protos' +typeCategory['vkResetFences'] = 'protos' +typeCategory['vkSetEvent'] = 'protos' +typeCategory['vkUnmapMemory'] = 'protos' +typeCategory['vkUpdateDescriptorSets'] = 'protos' +typeCategory['vkWaitForFences'] = 'protos' +typeCategory['vk_platform'] = 'include' +typeCategory['void'] = None +mapDict = {} +mapDict['PFN_vkAllocationFunction'] = {'VkAllocationCallbacks': None} +mapDict['PFN_vkFreeFunction'] = {'VkAllocationCallbacks': None} +mapDict['PFN_vkInternalAllocationNotification'] = {'VkAllocationCallbacks': None} +mapDict['PFN_vkInternalFreeNotification'] = {'VkAllocationCallbacks': None} +mapDict['PFN_vkReallocationFunction'] = {'VkAllocationCallbacks': None} +mapDict['VkAccessFlagBits'] = {'VkAccessFlags': None} +mapDict['VkAccessFlags'] = {'VkBufferMemoryBarrier': None, 'VkImageMemoryBarrier': None, 'VkSubpassDependency': None, 'VkMemoryBarrier': None, 'VkAccessFlagBits': None} +mapDict['VkAllocationCallbacks'] = {'vkDestroyCommandPool': None, 'vkCreateFence': None, 'vkCreatePipelineCache': None, 'vkCreatePipelineLayout': None, 'vkDestroyShaderModule': None, 'vkDestroyFence': None, 'vkCreateEvent': None, 'vkDestroyBuffer': None, 'vkDestroyPipelineLayout': None, 'PFN_vkInternalFreeNotification': None, 'vkDestroyDevice': None, 'vkCreateImageView': None, 'vkCreateCommandPool': None, 'vkDestroySampler': None, 'vkCreateShaderModule': None, 'vkDestroyRenderPass': None, 'vkDestroyImageView': None, 'vkCreateSampler': None, 'vkCreateBufferView': None, 'vkDestroySemaphore': None, 'PFN_vkReallocationFunction': None, 'vkAllocateMemory': None, 'vkCreateDescriptorSetLayout': None, 'vkDestroyEvent': None, 'vkCreateDevice': None, 'vkDestroyQueryPool': None, 'vkDestroyDescriptorPool': None, 'vkCreateComputePipelines': None, 'vkCreateImage': None, 'vkDestroyDescriptorSetLayout': None, 'PFN_vkFreeFunction': None, 'vkCreateDescriptorPool': None, 'vkCreateSemaphore': None, 'vkDestroyInstance': None, 'PFN_vkInternalAllocationNotification': None, 'vkCreateGraphicsPipelines': None, 'vkDestroyFramebuffer': None, 'vkDestroyPipelineCache': None, 'vkCreateQueryPool': None, 'vkFreeMemory': None, 'vkDestroyPipeline': None, 'vkCreateFramebuffer': None, 'vkDestroyImage': None, 'vkCreateInstance': None, 'PFN_vkAllocationFunction': None, 'vkDestroyBufferView': None, 'vkCreateRenderPass': None, 'vkCreateBuffer': None} +mapDict['VkApplicationInfo'] = {'VkStructureType': None, 'VkInstanceCreateInfo': None} +mapDict['VkAttachmentDescription'] = {'VkFormat': None, 'VkSampleCountFlagBits': None, 'VkAttachmentStoreOp': None, 'VkRenderPassCreateInfo': None, 'VkAttachmentDescriptionFlags': None, 'VkImageLayout': None, 'VkAttachmentLoadOp': None} +mapDict['VkAttachmentDescriptionFlagBits'] = {'VkAttachmentDescriptionFlags': None} +mapDict['VkAttachmentDescriptionFlags'] = {'VkAttachmentDescription': None, 'VkAttachmentDescriptionFlagBits': None} +mapDict['VkAttachmentLoadOp'] = {'VkAttachmentDescription': None} +mapDict['VkAttachmentReference'] = {'VkImageLayout': None, 'VkSubpassDescription': None} +mapDict['VkAttachmentStoreOp'] = {'VkAttachmentDescription': None} +mapDict['VkBindSparseInfo'] = {'VkSparseImageMemoryBindInfo': None, 'VkSemaphore': None, 'VkSparseBufferMemoryBindInfo': None, 'VkStructureType': None, 'VkSparseImageOpaqueMemoryBindInfo': None, 'vkQueueBindSparse': None} +mapDict['VkBlendFactor'] = {'VkPipelineColorBlendAttachmentState': None} +mapDict['VkBlendOp'] = {'VkPipelineColorBlendAttachmentState': None} +mapDict['VkBool32'] = {'VkPhysicalDeviceLimits': None, 'VkPipelineColorBlendStateCreateInfo': None, 'VkPipelineMultisampleStateCreateInfo': None, 'VkPhysicalDeviceFeatures': None, 'VkPipelineColorBlendAttachmentState': None, 'VkPipelineInputAssemblyStateCreateInfo': None, 'VkPipelineRasterizationStateCreateInfo': None, 'vkWaitForFences': None, 'VkPhysicalDeviceSparseProperties': None, 'VkSamplerCreateInfo': None, 'VkCommandBufferInheritanceInfo': None, 'VkPipelineDepthStencilStateCreateInfo': None} +mapDict['VkBorderColor'] = {'VkSamplerCreateInfo': None} +mapDict['VkBuffer'] = {'vkCmdBindVertexBuffers': None, 'VkBufferMemoryBarrier': None, 'vkDestroyBuffer': None, 'VkSparseBufferMemoryBindInfo': None, 'vkCmdCopyImageToBuffer': None, 'vkBindBufferMemory': None, 'vkCmdDrawIndexedIndirect': None, 'vkCmdCopyQueryPoolResults': None, 'VkBufferViewCreateInfo': None, 'vkCmdFillBuffer': None, 'vkGetBufferMemoryRequirements': None, 'vkCmdBindIndexBuffer': None, 'VkDescriptorBufferInfo': None, 'vkCmdCopyBufferToImage': None, 'vkCmdUpdateBuffer': None, 'vkCmdDispatchIndirect': None, 'vkCmdDrawIndirect': None, 'vkCmdCopyBuffer': None, 'vkCreateBuffer': None} +mapDict['VkBufferCopy'] = {'vkCmdCopyBuffer': None, 'VkDeviceSize': None} +mapDict['VkBufferCreateFlagBits'] = {'VkBufferCreateFlags': None} +mapDict['VkBufferCreateFlags'] = {'VkBufferCreateFlagBits': None, 'VkBufferCreateInfo': None} +mapDict['VkBufferCreateInfo'] = {'VkBufferCreateFlags': None, 'vkCreateBuffer': None, 'VkStructureType': None, 'VkSharingMode': None, 'VkDeviceSize': None, 'VkBufferUsageFlags': None} +mapDict['VkBufferImageCopy'] = {'vkCmdCopyImageToBuffer': None, 'vkCmdCopyBufferToImage': None, 'VkImageSubresourceLayers': None, 'VkOffset3D': None, 'VkDeviceSize': None, 'VkExtent3D': None} +mapDict['VkBufferMemoryBarrier'] = {'VkBuffer': None, 'VkAccessFlags': None, 'vkCmdWaitEvents': None, 'vkCmdPipelineBarrier': None, 'VkStructureType': None, 'VkDeviceSize': None} +mapDict['VkBufferUsageFlagBits'] = {'VkBufferUsageFlags': None} +mapDict['VkBufferUsageFlags'] = {'VkBufferUsageFlagBits': None, 'VkBufferCreateInfo': None} +mapDict['VkBufferView'] = {'vkCreateBufferView': None, 'vkDestroyBufferView': None, 'VkWriteDescriptorSet': None} +mapDict['VkBufferViewCreateFlags'] = {'VkBufferViewCreateInfo': None} +mapDict['VkBufferViewCreateInfo'] = {'VkBuffer': None, 'vkCreateBufferView': None, 'VkFormat': None, 'VkStructureType': None, 'VkBufferViewCreateFlags': None, 'VkDeviceSize': None} +mapDict['VkClearAttachment'] = {'VkImageAspectFlags': None, 'VkClearValue': None, 'vkCmdClearAttachments': None} +mapDict['VkClearColorValue'] = {'vkCmdClearColorImage': None, 'VkClearValue': None} +mapDict['VkClearDepthStencilValue'] = {'vkCmdClearDepthStencilImage': None, 'VkClearValue': None} +mapDict['VkClearRect'] = {'VkRect2D': None, 'vkCmdClearAttachments': None} +mapDict['VkClearValue'] = {'VkClearColorValue': None, 'VkClearAttachment': None, 'VkClearDepthStencilValue': None, 'VkRenderPassBeginInfo': None} +mapDict['VkColorComponentFlagBits'] = {'VkColorComponentFlags': None} +mapDict['VkColorComponentFlags'] = {'VkPipelineColorBlendAttachmentState': None, 'VkColorComponentFlagBits': None} +mapDict['VkCommandBuffer'] = {'vkCmdClearColorImage': None, 'vkCmdCopyBuffer': None, 'vkCmdDrawIndexed': None, 'vkCmdNextSubpass': None, 'vkCmdSetScissor': None, 'vkCmdCopyQueryPoolResults': None, 'vkCmdClearAttachments': None, 'vkCmdBindPipeline': None, 'vkCmdSetLineWidth': None, 'vkCmdDrawIndexedIndirect': None, 'vkCmdDispatchIndirect': None, 'vkCmdResetQueryPool': None, 'vkCmdWaitEvents': None, 'vkFreeCommandBuffers': None, 'vkCmdResolveImage': None, 'vkCmdDraw': None, 'vkCmdClearDepthStencilImage': None, 'vkCmdDrawIndirect': None, 'vkCmdSetBlendConstants': None, 'vkBeginCommandBuffer': None, 'vkCmdCopyBufferToImage': None, 'vkCmdPushConstants': None, 'VkSubmitInfo': None, 'vkCmdDispatch': None, 'vkCmdSetDepthBias': None, 'vkCmdSetViewport': None, 'vkCmdBindVertexBuffers': None, 'vkCmdExecuteCommands': None, 'vkCmdPipelineBarrier': None, 'vkCmdBindDescriptorSets': None, 'vkCmdCopyImageToBuffer': None, 'vkCmdSetStencilReference': None, 'vkCmdUpdateBuffer': None, 'vkCmdFillBuffer': None, 'vkEndCommandBuffer': None, 'vkResetCommandBuffer': None, 'vkCmdResetEvent': None, 'vkCmdWriteTimestamp': None, 'vkCmdSetEvent': None, 'vkCmdBeginQuery': None, 'vkCmdEndQuery': None, 'vkCmdSetStencilCompareMask': None, 'vkCmdBeginRenderPass': None, 'vkCmdSetStencilWriteMask': None, 'vkCmdEndRenderPass': None, 'vkAllocateCommandBuffers': None, 'vkCmdBindIndexBuffer': None, 'vkCmdCopyImage': None, 'vkCmdBlitImage': None, 'vkCmdSetDepthBounds': None} +mapDict['VkCommandBufferAllocateInfo'] = {'VkStructureType': None, 'vkAllocateCommandBuffers': None, 'VkCommandBufferLevel': None, 'VkCommandPool': None} +mapDict['VkCommandBufferBeginInfo'] = {'vkBeginCommandBuffer': None, 'VkStructureType': None, 'VkCommandBufferInheritanceInfo': None, 'VkCommandBufferUsageFlags': None} +mapDict['VkCommandBufferInheritanceInfo'] = {'VkCommandBufferBeginInfo': None, 'VkQueryControlFlags': None, 'VkFramebuffer': None, 'VkStructureType': None, 'VkRenderPass': None, 'VkBool32': None, 'VkQueryPipelineStatisticFlags': None} +mapDict['VkCommandBufferLevel'] = {'VkCommandBufferAllocateInfo': None} +mapDict['VkCommandBufferResetFlagBits'] = {'VkCommandBufferResetFlags': None} +mapDict['VkCommandBufferResetFlags'] = {'vkResetCommandBuffer': None, 'VkCommandBufferResetFlagBits': None} +mapDict['VkCommandBufferUsageFlagBits'] = {'VkCommandBufferUsageFlags': None} +mapDict['VkCommandBufferUsageFlags'] = {'VkCommandBufferUsageFlagBits': None, 'VkCommandBufferBeginInfo': None} +mapDict['VkCommandPool'] = {'vkCreateCommandPool': None, 'vkDestroyCommandPool': None, 'vkResetCommandPool': None, 'VkCommandBufferAllocateInfo': None, 'vkFreeCommandBuffers': None} +mapDict['VkCommandPoolCreateFlagBits'] = {'VkCommandPoolCreateFlags': None} +mapDict['VkCommandPoolCreateFlags'] = {'VkCommandPoolCreateFlagBits': None, 'VkCommandPoolCreateInfo': None} +mapDict['VkCommandPoolCreateInfo'] = {'vkCreateCommandPool': None, 'VkStructureType': None, 'VkCommandPoolCreateFlags': None} +mapDict['VkCommandPoolResetFlagBits'] = {'VkCommandPoolResetFlags': None} +mapDict['VkCommandPoolResetFlags'] = {'vkResetCommandPool': None, 'VkCommandPoolResetFlagBits': None} +mapDict['VkCompareOp'] = {'VkSamplerCreateInfo': None, 'VkPipelineDepthStencilStateCreateInfo': None, 'VkStencilOpState': None} +mapDict['VkComponentMapping'] = {'VkComponentSwizzle': None, 'VkImageViewCreateInfo': None} +mapDict['VkComponentSwizzle'] = {'VkComponentMapping': None} +mapDict['VkComputePipelineCreateInfo'] = {'VkPipelineShaderStageCreateInfo': None, 'vkCreateComputePipelines': None, 'VkPipeline': None, 'VkPipelineCreateFlags': None, 'VkStructureType': None, 'VkPipelineLayout': None} +mapDict['VkCopyDescriptorSet'] = {'vkUpdateDescriptorSets': None, 'VkStructureType': None, 'VkDescriptorSet': None} +mapDict['VkCullModeFlagBits'] = {'VkCullModeFlags': None} +mapDict['VkCullModeFlags'] = {'VkPipelineRasterizationStateCreateInfo': None, 'VkCullModeFlagBits': None} +mapDict['VkDependencyFlagBits'] = {'VkDependencyFlags': None} +mapDict['VkDependencyFlags'] = {'vkCmdPipelineBarrier': None, 'VkSubpassDependency': None, 'VkDependencyFlagBits': None} +mapDict['VkDescriptorBufferInfo'] = {'VkBuffer': None, 'VkWriteDescriptorSet': None, 'VkDeviceSize': None} +mapDict['VkDescriptorImageInfo'] = {'VkWriteDescriptorSet': None, 'VkImageLayout': None, 'VkImageView': None, 'VkSampler': None} +mapDict['VkDescriptorPool'] = {'vkCreateDescriptorPool': None, 'vkDestroyDescriptorPool': None, 'VkDescriptorSetAllocateInfo': None, 'vkResetDescriptorPool': None, 'vkFreeDescriptorSets': None} +mapDict['VkDescriptorPoolCreateFlagBits'] = {'VkDescriptorPoolCreateFlags': None} +mapDict['VkDescriptorPoolCreateFlags'] = {'VkDescriptorPoolCreateInfo': None, 'VkDescriptorPoolCreateFlagBits': None} +mapDict['VkDescriptorPoolCreateInfo'] = {'vkCreateDescriptorPool': None, 'VkStructureType': None, 'VkDescriptorPoolSize': None, 'VkDescriptorPoolCreateFlags': None} +mapDict['VkDescriptorPoolResetFlags'] = {'vkResetDescriptorPool': None} +mapDict['VkDescriptorPoolSize'] = {'VkDescriptorType': None, 'VkDescriptorPoolCreateInfo': None} +mapDict['VkDescriptorSet'] = {'vkCmdBindDescriptorSets': None, 'VkWriteDescriptorSet': None, 'VkCopyDescriptorSet': None, 'vkAllocateDescriptorSets': None, 'vkFreeDescriptorSets': None} +mapDict['VkDescriptorSetAllocateInfo'] = {'VkDescriptorSetLayout': None, 'VkDescriptorPool': None, 'VkStructureType': None, 'vkAllocateDescriptorSets': None} +mapDict['VkDescriptorSetLayout'] = {'vkDestroyDescriptorSetLayout': None, 'vkCreateDescriptorSetLayout': None, 'VkPipelineLayoutCreateInfo': None, 'VkDescriptorSetAllocateInfo': None} +mapDict['VkDescriptorSetLayoutBinding'] = {'VkDescriptorType': None, 'VkShaderStageFlags': None, 'VkDescriptorSetLayoutCreateInfo': None, 'VkSampler': None} +mapDict['VkDescriptorSetLayoutCreateFlags'] = {'VkDescriptorSetLayoutCreateInfo': None} +mapDict['VkDescriptorSetLayoutCreateInfo'] = {'VkStructureType': None, 'vkCreateDescriptorSetLayout': None, 'VkDescriptorSetLayoutCreateFlags': None, 'VkDescriptorSetLayoutBinding': None} +mapDict['VkDescriptorType'] = {'VkWriteDescriptorSet': None, 'VkDescriptorPoolSize': None, 'VkDescriptorSetLayoutBinding': None} +mapDict['VkDevice'] = {'vkDestroyCommandPool': None, 'vkCreateFence': None, 'vkCreatePipelineCache': None, 'vkCreatePipelineLayout': None, 'vkAllocateDescriptorSets': None, 'vkDestroyShaderModule': None, 'vkDestroyFence': None, 'vkDeviceWaitIdle': None, 'vkWaitForFences': None, 'vkGetFenceStatus': None, 'vkGetDeviceProcAddr': None, 'vkDestroyPipeline': None, 'vkInvalidateMappedMemoryRanges': None, 'vkFlushMappedMemoryRanges': None, 'vkGetDeviceQueue': None, 'vkDestroyPipelineLayout': None, 'vkDestroyDevice': None, 'vkUnmapMemory': None, 'vkCreateImageView': None, 'vkCreateSampler': None, 'vkBindImageMemory': None, 'vkDestroySampler': None, 'vkCreateShaderModule': None, 'vkDestroyRenderPass': None, 'vkBindBufferMemory': None, 'vkDestroyImageView': None, 'vkGetImageSubresourceLayout': None, 'vkCreateBufferView': None, 'vkDestroySemaphore': None, 'vkCreateDevice': None, 'vkCreateEvent': None, 'vkAllocateMemory': None, 'vkResetCommandPool': None, 'vkCreateDescriptorSetLayout': None, 'vkDestroyEvent': None, 'vkDestroyQueryPool': None, 'vkUpdateDescriptorSets': None, 'vkDestroyDescriptorPool': None, 'vkCreateComputePipelines': None, 'vkCreateImage': None, 'vkGetPipelineCacheData': None, 'vkGetImageMemoryRequirements': None, 'vkGetRenderAreaGranularity': None, 'vkResetEvent': None, 'vkSetEvent': None, 'vkCreateDescriptorPool': None, 'vkMapMemory': None, 'vkFreeDescriptorSets': None, 'vkCreateGraphicsPipelines': None, 'vkGetQueryPoolResults': None, 'vkDestroyDescriptorSetLayout': None, 'vkResetFences': None, 'vkDestroyFramebuffer': None, 'vkGetImageSparseMemoryRequirements': None, 'vkCreateCommandPool': None, 'vkGetDeviceMemoryCommitment': None, 'vkResetDescriptorPool': None, 'vkGetEventStatus': None, 'vkDestroyPipelineCache': None, 'vkFreeCommandBuffers': None, 'vkCreateQueryPool': None, 'vkFreeMemory': None, 'vkDestroyBuffer': None, 'vkCreateFramebuffer': None, 'vkGetBufferMemoryRequirements': None, 'vkDestroyImage': None, 'vkAllocateCommandBuffers': None, 'vkCreateSemaphore': None, 'vkDestroyBufferView': None, 'vkMergePipelineCaches': None, 'vkCreateRenderPass': None, 'vkCreateBuffer': None} +mapDict['VkDeviceCreateFlags'] = {'VkDeviceCreateInfo': None} +mapDict['VkDeviceCreateInfo'] = {'VkDeviceCreateFlags': None, 'VkStructureType': None, 'VkPhysicalDeviceFeatures': None, 'VkDeviceQueueCreateInfo': None, 'vkCreateDevice': None} +mapDict['VkDeviceMemory'] = {'VkMappedMemoryRange': None, 'vkMapMemory': None, 'vkUnmapMemory': None, 'vkGetDeviceMemoryCommitment': None, 'vkAllocateMemory': None, 'vkBindImageMemory': None, 'vkBindBufferMemory': None, 'VkSparseImageMemoryBind': None, 'vkFreeMemory': None, 'VkSparseMemoryBind': None} +mapDict['VkDeviceQueueCreateFlags'] = {'VkDeviceQueueCreateInfo': None} +mapDict['VkDeviceQueueCreateInfo'] = {'VkDeviceCreateInfo': None, 'VkStructureType': None, 'VkDeviceQueueCreateFlags': None} +mapDict['VkDeviceSize'] = {'vkCmdBindVertexBuffers': None, 'VkMemoryRequirements': None, 'VkBufferCopy': None, 'VkBufferImageCopy': None, 'vkCmdUpdateBuffer': None, 'vkCmdCopyQueryPoolResults': None, 'VkBufferViewCreateInfo': None, 'vkCmdFillBuffer': None, 'VkMappedMemoryRange': None, 'VkDescriptorBufferInfo': None, 'VkMemoryAllocateInfo': None, 'VkSparseImageMemoryBind': None, 'vkCmdDispatchIndirect': None, 'vkGetQueryPoolResults': None, 'VkSubresourceLayout': None, 'VkSparseMemoryBind': None, 'VkPhysicalDeviceLimits': None, 'vkMapMemory': None, 'VkBufferMemoryBarrier': None, 'vkGetDeviceMemoryCommitment': None, 'VkImageFormatProperties': None, 'VkMemoryHeap': None, 'vkBindImageMemory': None, 'vkBindBufferMemory': None, 'vkCmdDrawIndexedIndirect': None, 'vkCmdDrawIndirect': None, 'vkCmdBindIndexBuffer': None, 'VkBufferCreateInfo': None, 'VkSparseImageMemoryRequirements': None} +mapDict['VkDynamicState'] = {'VkPipelineDynamicStateCreateInfo': None} +mapDict['VkEvent'] = {'vkGetEventStatus': None, 'vkCmdResetEvent': None, 'vkCmdWaitEvents': None, 'vkCmdSetEvent': None, 'vkCreateEvent': None, 'vkResetEvent': None, 'vkDestroyEvent': None, 'vkSetEvent': None} +mapDict['VkEventCreateFlags'] = {'VkEventCreateInfo': None} +mapDict['VkEventCreateInfo'] = {'VkStructureType': None, 'VkEventCreateFlags': None, 'vkCreateEvent': None} +mapDict['VkExtensionProperties'] = {'vkEnumerateDeviceExtensionProperties': None, 'vkEnumerateInstanceExtensionProperties': None} +mapDict['VkExtent2D'] = {'vkGetRenderAreaGranularity': None, 'VkRect2D': None} +mapDict['VkExtent3D'] = {'VkBufferImageCopy': None, 'VkImageResolve': None, 'VkImageFormatProperties': None, 'VkSparseImageMemoryBind': None, 'VkSparseImageFormatProperties': None, 'VkQueueFamilyProperties': None, 'VkImageCreateInfo': None, 'VkImageCopy': None} +mapDict['VkFence'] = {'vkResetFences': None, 'vkDestroyFence': None, 'vkCreateFence': None, 'vkWaitForFences': None, 'vkQueueSubmit': None, 'vkGetFenceStatus': None, 'vkQueueBindSparse': None} +mapDict['VkFenceCreateFlagBits'] = {'VkFenceCreateFlags': None} +mapDict['VkFenceCreateFlags'] = {'VkFenceCreateFlagBits': None, 'VkFenceCreateInfo': None} +mapDict['VkFenceCreateInfo'] = {'VkStructureType': None, 'vkCreateFence': None, 'VkFenceCreateFlags': None} +mapDict['VkFilter'] = {'VkSamplerCreateInfo': None, 'vkCmdBlitImage': None} +mapDict['VkFormat'] = {'vkGetPhysicalDeviceFormatProperties': None, 'VkVertexInputAttributeDescription': None, 'vkGetPhysicalDeviceImageFormatProperties': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None, 'VkAttachmentDescription': None, 'VkImageViewCreateInfo': None, 'VkImageCreateInfo': None, 'VkBufferViewCreateInfo': None} +mapDict['VkFormatFeatureFlagBits'] = {'VkFormatFeatureFlags': None} +mapDict['VkFormatFeatureFlags'] = {'VkFormatProperties': None, 'VkFormatFeatureFlagBits': None} +mapDict['VkFormatProperties'] = {'vkGetPhysicalDeviceFormatProperties': None, 'VkFormatFeatureFlags': None} +mapDict['VkFramebuffer'] = {'vkCreateFramebuffer': None, 'vkDestroyFramebuffer': None, 'VkCommandBufferInheritanceInfo': None, 'VkRenderPassBeginInfo': None} +mapDict['VkFramebufferCreateFlags'] = {'VkFramebufferCreateInfo': None} +mapDict['VkFramebufferCreateInfo'] = {'vkCreateFramebuffer': None, 'VkStructureType': None, 'VkRenderPass': None, 'VkImageView': None, 'VkFramebufferCreateFlags': None} +mapDict['VkFrontFace'] = {'VkPipelineRasterizationStateCreateInfo': None} +mapDict['VkGraphicsPipelineCreateInfo'] = {'VkPipelineShaderStageCreateInfo': None, 'VkPipelineTessellationStateCreateInfo': None, 'VkRenderPass': None, 'VkPipelineDepthStencilStateCreateInfo': None, 'VkPipelineMultisampleStateCreateInfo': None, 'VkPipelineCreateFlags': None, 'VkPipelineDynamicStateCreateInfo': None, 'VkStructureType': None, 'VkPipelineLayout': None, 'VkPipelineInputAssemblyStateCreateInfo': None, 'VkPipelineRasterizationStateCreateInfo': None, 'VkPipelineVertexInputStateCreateInfo': None, 'vkCreateGraphicsPipelines': None, 'VkPipeline': None, 'VkPipelineViewportStateCreateInfo': None, 'VkPipelineColorBlendStateCreateInfo': None} +mapDict['VkImage'] = {'vkCmdClearColorImage': None, 'VkImageMemoryBarrier': None, 'vkGetImageSparseMemoryRequirements': None, 'vkCreateImage': None, 'vkBindImageMemory': None, 'vkGetImageMemoryRequirements': None, 'vkCmdCopyImageToBuffer': None, 'VkImageViewCreateInfo': None, 'vkCmdResolveImage': None, 'vkGetImageSubresourceLayout': None, 'vkCmdClearDepthStencilImage': None, 'VkSparseImageMemoryBindInfo': None, 'vkDestroyImage': None, 'vkCmdCopyImage': None, 'vkCmdCopyBufferToImage': None, 'VkSparseImageOpaqueMemoryBindInfo': None, 'vkCmdBlitImage': None} +mapDict['VkImageAspectFlagBits'] = {'VkImageAspectFlags': None} +mapDict['VkImageAspectFlags'] = {'VkImageSubresourceLayers': None, 'VkClearAttachment': None, 'VkImageSubresource': None, 'VkImageAspectFlagBits': None, 'VkImageSubresourceRange': None, 'VkSparseImageFormatProperties': None} +mapDict['VkImageBlit'] = {'VkImageSubresourceLayers': None, 'VkOffset3D': None, 'vkCmdBlitImage': None} +mapDict['VkImageCopy'] = {'VkImageSubresourceLayers': None, 'VkOffset3D': None, 'vkCmdCopyImage': None, 'VkExtent3D': None} +mapDict['VkImageCreateFlagBits'] = {'VkImageCreateFlags': None} +mapDict['VkImageCreateFlags'] = {'vkGetPhysicalDeviceImageFormatProperties': None, 'VkImageCreateInfo': None, 'VkImageCreateFlagBits': None} +mapDict['VkImageCreateInfo'] = {'VkSharingMode': None, 'VkFormat': None, 'VkImageTiling': None, 'VkImageUsageFlags': None, 'VkSampleCountFlagBits': None, 'VkImageLayout': None, 'vkCreateImage': None, 'VkStructureType': None, 'VkImageCreateFlags': None, 'VkImageType': None, 'VkExtent3D': None} +mapDict['VkImageFormatProperties'] = {'VkSampleCountFlags': None, 'vkGetPhysicalDeviceImageFormatProperties': None, 'VkDeviceSize': None, 'VkExtent3D': None} +mapDict['VkImageLayout'] = {'vkCmdClearColorImage': None, 'vkCmdClearDepthStencilImage': None, 'vkCmdCopyImageToBuffer': None, 'vkCmdResolveImage': None, 'VkAttachmentDescription': None, 'VkImageMemoryBarrier': None, 'vkCmdCopyImage': None, 'VkAttachmentReference': None, 'VkDescriptorImageInfo': None, 'VkImageCreateInfo': None, 'vkCmdBlitImage': None, 'vkCmdCopyBufferToImage': None} +mapDict['VkImageMemoryBarrier'] = {'VkAccessFlags': None, 'vkCmdWaitEvents': None, 'VkImageSubresourceRange': None, 'VkImage': None, 'vkCmdPipelineBarrier': None, 'VkStructureType': None, 'VkImageLayout': None} +mapDict['VkImageResolve'] = {'VkImageSubresourceLayers': None, 'VkOffset3D': None, 'vkCmdResolveImage': None, 'VkExtent3D': None} +mapDict['VkImageSubresource'] = {'vkGetImageSubresourceLayout': None, 'VkImageAspectFlags': None, 'VkSparseImageMemoryBind': None} +mapDict['VkImageSubresourceLayers'] = {'VkBufferImageCopy': None, 'VkImageBlit': None, 'VkImageAspectFlags': None, 'VkImageResolve': None, 'VkImageCopy': None} +mapDict['VkImageSubresourceRange'] = {'vkCmdClearColorImage': None, 'vkCmdClearDepthStencilImage': None, 'VkImageMemoryBarrier': None, 'VkImageAspectFlags': None, 'VkImageViewCreateInfo': None} +mapDict['VkImageTiling'] = {'vkGetPhysicalDeviceImageFormatProperties': None, 'VkImageCreateInfo': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None} +mapDict['VkImageType'] = {'vkGetPhysicalDeviceImageFormatProperties': None, 'VkImageCreateInfo': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None} +mapDict['VkImageUsageFlagBits'] = {'VkImageUsageFlags': None} +mapDict['VkImageUsageFlags'] = {'VkImageUsageFlagBits': None, 'vkGetPhysicalDeviceImageFormatProperties': None, 'VkImageCreateInfo': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None} +mapDict['VkImageView'] = {'VkFramebufferCreateInfo': None, 'VkDescriptorImageInfo': None, 'vkCreateImageView': None, 'vkDestroyImageView': None} +mapDict['VkImageViewCreateFlags'] = {'VkImageViewCreateInfo': None} +mapDict['VkImageViewCreateInfo'] = {'VkFormat': None, 'vkCreateImageView': None, 'VkImageSubresourceRange': None, 'VkImage': None, 'VkImageViewCreateFlags': None, 'VkStructureType': None, 'VkImageViewType': None, 'VkComponentMapping': None} +mapDict['VkImageViewType'] = {'VkImageViewCreateInfo': None} +mapDict['VkIndexType'] = {'vkCmdBindIndexBuffer': None} +mapDict['VkInstance'] = {'vkEnumeratePhysicalDevices': None, 'vkDestroyInstance': None, 'vkGetInstanceProcAddr': None, 'vkCreateInstance': None} +mapDict['VkInstanceCreateFlags'] = {'VkInstanceCreateInfo': None} +mapDict['VkInstanceCreateInfo'] = {'VkStructureType': None, 'VkInstanceCreateFlags': None, 'vkCreateInstance': None, 'VkApplicationInfo': None} +mapDict['VkLayerProperties'] = {'vkEnumerateInstanceLayerProperties': None, 'vkEnumerateDeviceLayerProperties': None} +mapDict['VkLogicOp'] = {'VkPipelineColorBlendStateCreateInfo': None} +mapDict['VkMappedMemoryRange'] = {'VkStructureType': None, 'VkDeviceMemory': None, 'vkInvalidateMappedMemoryRanges': None, 'vkFlushMappedMemoryRanges': None, 'VkDeviceSize': None} +mapDict['VkMemoryAllocateInfo'] = {'VkStructureType': None, 'vkAllocateMemory': None, 'VkDeviceSize': None} +mapDict['VkMemoryBarrier'] = {'vkCmdPipelineBarrier': None, 'VkAccessFlags': None, 'VkStructureType': None, 'vkCmdWaitEvents': None} +mapDict['VkMemoryHeap'] = {'VkPhysicalDeviceMemoryProperties': None, 'VkDeviceSize': None, 'VkMemoryHeapFlags': None} +mapDict['VkMemoryHeapFlagBits'] = {'VkMemoryHeapFlags': None} +mapDict['VkMemoryHeapFlags'] = {'VkMemoryHeapFlagBits': None, 'VkMemoryHeap': None} +mapDict['VkMemoryMapFlags'] = {'vkMapMemory': None} +mapDict['VkMemoryPropertyFlagBits'] = {'VkMemoryPropertyFlags': None} +mapDict['VkMemoryPropertyFlags'] = {'VkMemoryPropertyFlagBits': None, 'VkMemoryType': None} +mapDict['VkMemoryRequirements'] = {'vkGetBufferMemoryRequirements': None, 'vkGetImageMemoryRequirements': None, 'VkDeviceSize': None} +mapDict['VkMemoryType'] = {'VkMemoryPropertyFlags': None, 'VkPhysicalDeviceMemoryProperties': None} +mapDict['VkOffset2D'] = {'VkRect2D': None} +mapDict['VkOffset3D'] = {'VkBufferImageCopy': None, 'VkImageBlit': None, 'VkImageResolve': None, 'VkSparseImageMemoryBind': None, 'VkImageCopy': None} +mapDict['VkPhysicalDevice'] = {'vkGetPhysicalDeviceFormatProperties': None, 'vkGetPhysicalDeviceQueueFamilyProperties': None, 'vkGetPhysicalDeviceFeatures': None, 'vkGetPhysicalDeviceImageFormatProperties': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None, 'vkEnumerateDeviceLayerProperties': None, 'vkGetPhysicalDeviceMemoryProperties': None, 'vkEnumeratePhysicalDevices': None, 'vkEnumerateDeviceExtensionProperties': None, 'vkGetPhysicalDeviceProperties': None, 'vkCreateDevice': None} +mapDict['VkPhysicalDeviceFeatures'] = {'VkDeviceCreateInfo': None, 'vkGetPhysicalDeviceFeatures': None, 'VkBool32': None} +mapDict['VkPhysicalDeviceLimits'] = {'VkPhysicalDeviceProperties': None, 'VkBool32': None, 'VkDeviceSize': None, 'VkSampleCountFlags': None} +mapDict['VkPhysicalDeviceMemoryProperties'] = {'VkMemoryHeap': None, 'vkGetPhysicalDeviceMemoryProperties': None, 'VkMemoryType': None} +mapDict['VkPhysicalDeviceProperties'] = {'vkGetPhysicalDeviceProperties': None, 'VkPhysicalDeviceLimits': None, 'VkPhysicalDeviceSparseProperties': None, 'VkPhysicalDeviceType': None} +mapDict['VkPhysicalDeviceSparseProperties'] = {'VkPhysicalDeviceProperties': None, 'VkBool32': None} +mapDict['VkPhysicalDeviceType'] = {'VkPhysicalDeviceProperties': None} +mapDict['VkPipeline'] = {'vkCreateComputePipelines': None, 'vkCmdBindPipeline': None, 'VkGraphicsPipelineCreateInfo': None, 'VkComputePipelineCreateInfo': None, 'vkCreateGraphicsPipelines': None, 'vkDestroyPipeline': None} +mapDict['VkPipelineBindPoint'] = {'vkCmdBindPipeline': None, 'VkSubpassDescription': None, 'vkCmdBindDescriptorSets': None} +mapDict['VkPipelineCache'] = {'vkMergePipelineCaches': None, 'vkCreateComputePipelines': None, 'vkCreatePipelineCache': None, 'vkGetPipelineCacheData': None, 'vkCreateGraphicsPipelines': None, 'vkDestroyPipelineCache': None} +mapDict['VkPipelineCacheCreateFlags'] = {'VkPipelineCacheCreateInfo': None} +mapDict['VkPipelineCacheCreateInfo'] = {'VkStructureType': None, 'vkCreatePipelineCache': None, 'VkPipelineCacheCreateFlags': None} +mapDict['VkPipelineColorBlendAttachmentState'] = {'VkPipelineColorBlendStateCreateInfo': None, 'VkColorComponentFlags': None, 'VkBlendFactor': None, 'VkBool32': None, 'VkBlendOp': None} +mapDict['VkPipelineColorBlendStateCreateFlags'] = {'VkPipelineColorBlendStateCreateInfo': None} +mapDict['VkPipelineColorBlendStateCreateInfo'] = {'VkPipelineColorBlendAttachmentState': None, 'VkPipelineColorBlendStateCreateFlags': None, 'VkLogicOp': None, 'VkGraphicsPipelineCreateInfo': None, 'VkStructureType': None, 'VkBool32': None} +mapDict['VkPipelineCreateFlagBits'] = {'VkPipelineCreateFlags': None} +mapDict['VkPipelineCreateFlags'] = {'VkPipelineCreateFlagBits': None, 'VkComputePipelineCreateInfo': None, 'VkGraphicsPipelineCreateInfo': None} +mapDict['VkPipelineDepthStencilStateCreateFlags'] = {'VkPipelineDepthStencilStateCreateInfo': None} +mapDict['VkPipelineDepthStencilStateCreateInfo'] = {'VkPipelineDepthStencilStateCreateFlags': None, 'VkGraphicsPipelineCreateInfo': None, 'VkStencilOpState': None, 'VkStructureType': None, 'VkBool32': None, 'VkCompareOp': None} +mapDict['VkPipelineDynamicStateCreateFlags'] = {'VkPipelineDynamicStateCreateInfo': None} +mapDict['VkPipelineDynamicStateCreateInfo'] = {'VkGraphicsPipelineCreateInfo': None, 'VkStructureType': None, 'VkDynamicState': None, 'VkPipelineDynamicStateCreateFlags': None} +mapDict['VkPipelineInputAssemblyStateCreateFlags'] = {'VkPipelineInputAssemblyStateCreateInfo': None} +mapDict['VkPipelineInputAssemblyStateCreateInfo'] = {'VkGraphicsPipelineCreateInfo': None, 'VkPipelineInputAssemblyStateCreateFlags': None, 'VkStructureType': None, 'VkBool32': None, 'VkPrimitiveTopology': None} +mapDict['VkPipelineLayout'] = {'vkDestroyPipelineLayout': None, 'VkGraphicsPipelineCreateInfo': None, 'VkComputePipelineCreateInfo': None, 'vkCreatePipelineLayout': None, 'vkCmdBindDescriptorSets': None, 'vkCmdPushConstants': None} +mapDict['VkPipelineLayoutCreateFlags'] = {'VkPipelineLayoutCreateInfo': None} +mapDict['VkPipelineLayoutCreateInfo'] = {'VkDescriptorSetLayout': None, 'VkStructureType': None, 'VkPushConstantRange': None, 'vkCreatePipelineLayout': None, 'VkPipelineLayoutCreateFlags': None} +mapDict['VkPipelineMultisampleStateCreateFlags'] = {'VkPipelineMultisampleStateCreateInfo': None} +mapDict['VkPipelineMultisampleStateCreateInfo'] = {'VkPipelineMultisampleStateCreateFlags': None, 'VkSampleCountFlagBits': None, 'VkGraphicsPipelineCreateInfo': None, 'VkStructureType': None, 'VkSampleMask': None, 'VkBool32': None} +mapDict['VkPipelineRasterizationStateCreateFlags'] = {'VkPipelineRasterizationStateCreateInfo': None} +mapDict['VkPipelineRasterizationStateCreateInfo'] = {'VkCullModeFlags': None, 'VkBool32': None, 'VkGraphicsPipelineCreateInfo': None, 'VkFrontFace': None, 'VkStructureType': None, 'VkPipelineRasterizationStateCreateFlags': None, 'VkPolygonMode': None} +mapDict['VkPipelineShaderStageCreateFlags'] = {'VkPipelineShaderStageCreateInfo': None} +mapDict['VkPipelineShaderStageCreateInfo'] = {'VkComputePipelineCreateInfo': None, 'VkGraphicsPipelineCreateInfo': None, 'VkPipelineShaderStageCreateFlags': None, 'VkShaderStageFlagBits': None, 'VkStructureType': None, 'VkSpecializationInfo': None, 'VkShaderModule': None} +mapDict['VkPipelineStageFlagBits'] = {'VkPipelineStageFlags': None, 'vkCmdWriteTimestamp': None} +mapDict['VkPipelineStageFlags'] = {'VkSubpassDependency': None, 'VkSubmitInfo': None, 'vkCmdWaitEvents': None, 'vkCmdResetEvent': None, 'vkCmdPipelineBarrier': None, 'VkPipelineStageFlagBits': None, 'vkCmdSetEvent': None} +mapDict['VkPipelineTessellationStateCreateFlags'] = {'VkPipelineTessellationStateCreateInfo': None} +mapDict['VkPipelineTessellationStateCreateInfo'] = {'VkStructureType': None, 'VkPipelineTessellationStateCreateFlags': None, 'VkGraphicsPipelineCreateInfo': None} +mapDict['VkPipelineVertexInputStateCreateFlags'] = {'VkPipelineVertexInputStateCreateInfo': None} +mapDict['VkPipelineVertexInputStateCreateInfo'] = {'VkVertexInputAttributeDescription': None, 'VkStructureType': None, 'VkVertexInputBindingDescription': None, 'VkGraphicsPipelineCreateInfo': None, 'VkPipelineVertexInputStateCreateFlags': None} +mapDict['VkPipelineViewportStateCreateFlags'] = {'VkPipelineViewportStateCreateInfo': None} +mapDict['VkPipelineViewportStateCreateInfo'] = {'VkGraphicsPipelineCreateInfo': None, 'VkStructureType': None, 'VkRect2D': None, 'VkPipelineViewportStateCreateFlags': None, 'VkViewport': None} +mapDict['VkPolygonMode'] = {'VkPipelineRasterizationStateCreateInfo': None} +mapDict['VkPrimitiveTopology'] = {'VkPipelineInputAssemblyStateCreateInfo': None} +mapDict['VkPushConstantRange'] = {'VkShaderStageFlags': None, 'VkPipelineLayoutCreateInfo': None} +mapDict['VkQueryControlFlagBits'] = {'VkQueryControlFlags': None} +mapDict['VkQueryControlFlags'] = {'VkQueryControlFlagBits': None, 'VkCommandBufferInheritanceInfo': None, 'vkCmdBeginQuery': None} +mapDict['VkQueryPipelineStatisticFlagBits'] = {'VkQueryPipelineStatisticFlags': None} +mapDict['VkQueryPipelineStatisticFlags'] = {'VkQueryPoolCreateInfo': None, 'VkCommandBufferInheritanceInfo': None, 'VkQueryPipelineStatisticFlagBits': None} +mapDict['VkQueryPool'] = {'vkDestroyQueryPool': None, 'vkCmdResetQueryPool': None, 'vkCmdEndQuery': None, 'vkCmdBeginQuery': None, 'vkGetQueryPoolResults': None, 'vkCreateQueryPool': None, 'vkCmdCopyQueryPoolResults': None, 'vkCmdWriteTimestamp': None} +mapDict['VkQueryPoolCreateFlags'] = {'VkQueryPoolCreateInfo': None} +mapDict['VkQueryPoolCreateInfo'] = {'VkQueryType': None, 'VkStructureType': None, 'VkQueryPoolCreateFlags': None, 'VkQueryPipelineStatisticFlags': None, 'vkCreateQueryPool': None} +mapDict['VkQueryResultFlagBits'] = {'VkQueryResultFlags': None} +mapDict['VkQueryResultFlags'] = {'VkQueryResultFlagBits': None, 'vkGetQueryPoolResults': None, 'vkCmdCopyQueryPoolResults': None} +mapDict['VkQueryType'] = {'VkQueryPoolCreateInfo': None} +mapDict['VkQueue'] = {'vkGetDeviceQueue': None, 'vkQueueWaitIdle': None, 'vkQueueBindSparse': None, 'vkQueueSubmit': None} +mapDict['VkQueueFamilyProperties'] = {'vkGetPhysicalDeviceQueueFamilyProperties': None, 'VkQueueFlags': None, 'VkExtent3D': None} +mapDict['VkQueueFlagBits'] = {'VkQueueFlags': None} +mapDict['VkQueueFlags'] = {'VkQueueFamilyProperties': None, 'VkQueueFlagBits': None} +mapDict['VkRect2D'] = {'VkOffset2D': None, 'vkCmdSetScissor': None, 'VkExtent2D': None, 'VkClearRect': None, 'VkRenderPassBeginInfo': None, 'VkPipelineViewportStateCreateInfo': None} +mapDict['VkRenderPass'] = {'vkDestroyRenderPass': None, 'vkCreateRenderPass': None, 'VkGraphicsPipelineCreateInfo': None, 'VkFramebufferCreateInfo': None, 'vkGetRenderAreaGranularity': None, 'VkCommandBufferInheritanceInfo': None, 'VkRenderPassBeginInfo': None} +mapDict['VkRenderPassBeginInfo'] = {'VkRect2D': None, 'VkFramebuffer': None, 'vkCmdBeginRenderPass': None, 'VkStructureType': None, 'VkRenderPass': None, 'VkClearValue': None} +mapDict['VkRenderPassCreateFlags'] = {'VkRenderPassCreateInfo': None} +mapDict['VkRenderPassCreateInfo'] = {'VkSubpassDependency': None, 'VkRenderPassCreateFlags': None, 'VkAttachmentDescription': None, 'VkStructureType': None, 'vkCreateRenderPass': None, 'VkSubpassDescription': None} +mapDict['VkSampleCountFlagBits'] = {'VkAttachmentDescription': None, 'VkPipelineMultisampleStateCreateInfo': None, 'VkImageCreateInfo': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None, 'VkSampleCountFlags': None} +mapDict['VkSampleCountFlags'] = {'VkPhysicalDeviceLimits': None, 'VkImageFormatProperties': None, 'VkSampleCountFlagBits': None} +mapDict['VkSampleMask'] = {'VkPipelineMultisampleStateCreateInfo': None} +mapDict['VkSampler'] = {'vkCreateSampler': None, 'vkDestroySampler': None, 'VkDescriptorImageInfo': None, 'VkDescriptorSetLayoutBinding': None} +mapDict['VkSamplerAddressMode'] = {'VkSamplerCreateInfo': None} +mapDict['VkSamplerCreateFlags'] = {'VkSamplerCreateInfo': None} +mapDict['VkSamplerCreateInfo'] = {'VkSamplerCreateFlags': None, 'vkCreateSampler': None, 'VkBorderColor': None, 'VkSamplerAddressMode': None, 'VkFilter': None, 'VkStructureType': None, 'VkSamplerMipmapMode': None, 'VkBool32': None, 'VkCompareOp': None} +mapDict['VkSamplerMipmapMode'] = {'VkSamplerCreateInfo': None} +mapDict['VkSemaphore'] = {'vkCreateSemaphore': None, 'vkDestroySemaphore': None, 'VkSubmitInfo': None, 'VkBindSparseInfo': None} +mapDict['VkSemaphoreCreateFlags'] = {'VkSemaphoreCreateInfo': None} +mapDict['VkSemaphoreCreateInfo'] = {'vkCreateSemaphore': None, 'VkStructureType': None, 'VkSemaphoreCreateFlags': None} +mapDict['VkShaderModule'] = {'vkDestroyShaderModule': None, 'VkPipelineShaderStageCreateInfo': None, 'vkCreateShaderModule': None} +mapDict['VkShaderModuleCreateFlags'] = {'VkShaderModuleCreateInfo': None} +mapDict['VkShaderModuleCreateInfo'] = {'VkStructureType': None, 'VkShaderModuleCreateFlags': None, 'vkCreateShaderModule': None} +mapDict['VkShaderStageFlagBits'] = {'VkPipelineShaderStageCreateInfo': None, 'VkShaderStageFlags': None} +mapDict['VkShaderStageFlags'] = {'VkShaderStageFlagBits': None, 'VkPushConstantRange': None, 'VkDescriptorSetLayoutBinding': None, 'vkCmdPushConstants': None} +mapDict['VkSharingMode'] = {'VkBufferCreateInfo': None, 'VkImageCreateInfo': None} +mapDict['VkSparseBufferMemoryBindInfo'] = {'VkBuffer': None, 'VkBindSparseInfo': None, 'VkSparseMemoryBind': None} +mapDict['VkSparseImageFormatFlagBits'] = {'VkSparseImageFormatFlags': None} +mapDict['VkSparseImageFormatFlags'] = {'VkSparseImageFormatProperties': None, 'VkSparseImageFormatFlagBits': None} +mapDict['VkSparseImageFormatProperties'] = {'VkSparseImageFormatFlags': None, 'VkImageAspectFlags': None, 'vkGetPhysicalDeviceSparseImageFormatProperties': None, 'VkSparseImageMemoryRequirements': None, 'VkExtent3D': None} +mapDict['VkSparseImageMemoryBind'] = {'VkSparseImageMemoryBindInfo': None, 'VkImageSubresource': None, 'VkSparseMemoryBindFlags': None, 'VkDeviceMemory': None, 'VkOffset3D': None, 'VkDeviceSize': None, 'VkExtent3D': None} +mapDict['VkSparseImageMemoryBindInfo'] = {'VkBindSparseInfo': None, 'VkSparseImageMemoryBind': None, 'VkImage': None} +mapDict['VkSparseImageMemoryRequirements'] = {'VkSparseImageFormatProperties': None, 'vkGetImageSparseMemoryRequirements': None, 'VkDeviceSize': None} +mapDict['VkSparseImageOpaqueMemoryBindInfo'] = {'VkBindSparseInfo': None, 'VkSparseMemoryBind': None, 'VkImage': None} +mapDict['VkSparseMemoryBind'] = {'VkSparseImageOpaqueMemoryBindInfo': None, 'VkDeviceMemory': None, 'VkSparseMemoryBindFlags': None, 'VkDeviceSize': None, 'VkSparseBufferMemoryBindInfo': None} +mapDict['VkSparseMemoryBindFlagBits'] = {'VkSparseMemoryBindFlags': None} +mapDict['VkSparseMemoryBindFlags'] = {'VkSparseMemoryBindFlagBits': None, 'VkSparseImageMemoryBind': None, 'VkSparseMemoryBind': None} +mapDict['VkSpecializationInfo'] = {'VkPipelineShaderStageCreateInfo': None, 'VkSpecializationMapEntry': None} +mapDict['VkSpecializationMapEntry'] = {'VkSpecializationInfo': None} +mapDict['VkStencilFaceFlagBits'] = {'VkStencilFaceFlags': None} +mapDict['VkStencilFaceFlags'] = {'vkCmdSetStencilWriteMask': None, 'VkStencilFaceFlagBits': None, 'vkCmdSetStencilReference': None, 'vkCmdSetStencilCompareMask': None} +mapDict['VkStencilOp'] = {'VkStencilOpState': None} +mapDict['VkStencilOpState'] = {'VkStencilOp': None, 'VkPipelineDepthStencilStateCreateInfo': None, 'VkCompareOp': None} +mapDict['VkStructureType'] = {'VkPipelineMultisampleStateCreateInfo': None, 'VkFramebufferCreateInfo': None, 'VkDescriptorSetLayoutCreateInfo': None, 'VkImageViewCreateInfo': None, 'VkApplicationInfo': None, 'VkImageMemoryBarrier': None, 'VkMemoryAllocateInfo': None, 'VkPipelineVertexInputStateCreateInfo': None, 'VkEventCreateInfo': None, 'VkCommandPoolCreateInfo': None, 'VkBufferMemoryBarrier': None, 'VkPipelineColorBlendStateCreateInfo': None, 'VkWriteDescriptorSet': None, 'VkDeviceQueueCreateInfo': None, 'VkRenderPassBeginInfo': None, 'VkSemaphoreCreateInfo': None, 'VkPipelineInputAssemblyStateCreateInfo': None, 'VkPipelineRasterizationStateCreateInfo': None, 'VkBufferCreateInfo': None, 'VkSubmitInfo': None, 'VkCommandBufferAllocateInfo': None, 'VkPipelineViewportStateCreateInfo': None, 'VkPipelineShaderStageCreateInfo': None, 'VkPipelineTessellationStateCreateInfo': None, 'VkDescriptorPoolCreateInfo': None, 'VkPipelineDepthStencilStateCreateInfo': None, 'VkPipelineDynamicStateCreateInfo': None, 'VkFenceCreateInfo': None, 'VkBufferViewCreateInfo': None, 'VkMappedMemoryRange': None, 'VkCommandBufferBeginInfo': None, 'VkPipelineLayoutCreateInfo': None, 'VkMemoryBarrier': None, 'VkCommandBufferInheritanceInfo': None, 'VkDescriptorSetAllocateInfo': None, 'VkImageCreateInfo': None, 'VkPipelineCacheCreateInfo': None, 'VkComputePipelineCreateInfo': None, 'VkGraphicsPipelineCreateInfo': None, 'VkBindSparseInfo': None, 'VkQueryPoolCreateInfo': None, 'VkCopyDescriptorSet': None, 'VkInstanceCreateInfo': None, 'VkRenderPassCreateInfo': None, 'VkDeviceCreateInfo': None, 'VkSamplerCreateInfo': None, 'VkShaderModuleCreateInfo': None} +mapDict['VkSubmitInfo'] = {'VkPipelineStageFlags': None, 'VkStructureType': None, 'VkCommandBuffer': None, 'VkSemaphore': None, 'vkQueueSubmit': None} +mapDict['VkSubpassContents'] = {'vkCmdBeginRenderPass': None, 'vkCmdNextSubpass': None} +mapDict['VkSubpassDependency'] = {'VkRenderPassCreateInfo': None, 'VkPipelineStageFlags': None, 'VkDependencyFlags': None, 'VkAccessFlags': None} +mapDict['VkSubpassDescription'] = {'VkRenderPassCreateInfo': None, 'VkPipelineBindPoint': None, 'VkSubpassDescriptionFlags': None, 'VkAttachmentReference': None} +mapDict['VkSubpassDescriptionFlags'] = {'VkSubpassDescription': None} +mapDict['VkSubresourceLayout'] = {'vkGetImageSubresourceLayout': None, 'VkDeviceSize': None} +mapDict['VkVertexInputAttributeDescription'] = {'VkFormat': None, 'VkPipelineVertexInputStateCreateInfo': None} +mapDict['VkVertexInputBindingDescription'] = {'VkVertexInputRate': None, 'VkPipelineVertexInputStateCreateInfo': None} +mapDict['VkVertexInputRate'] = {'VkVertexInputBindingDescription': None} +mapDict['VkViewport'] = {'vkCmdSetViewport': None, 'VkPipelineViewportStateCreateInfo': None} +mapDict['VkWriteDescriptorSet'] = {'vkUpdateDescriptorSets': None, 'VkDescriptorBufferInfo': None, 'VkDescriptorSet': None, 'VkBufferView': None, 'VkDescriptorType': None, 'VkStructureType': None, 'VkDescriptorImageInfo': None} +mapDict['vkAllocateCommandBuffers'] = {'VkDevice': None, 'VkCommandBuffer': None, 'VkCommandBufferAllocateInfo': None} +mapDict['vkAllocateDescriptorSets'] = {'VkDevice': None, 'VkDescriptorSetAllocateInfo': None, 'VkDescriptorSet': None} +mapDict['vkAllocateMemory'] = {'VkDevice': None, 'VkDeviceMemory': None, 'VkAllocationCallbacks': None, 'VkMemoryAllocateInfo': None} +mapDict['vkBeginCommandBuffer'] = {'VkCommandBuffer': None, 'VkCommandBufferBeginInfo': None} +mapDict['vkBindBufferMemory'] = {'VkBuffer': None, 'VkDevice': None, 'VkDeviceMemory': None, 'VkDeviceSize': None} +mapDict['vkBindImageMemory'] = {'VkDevice': None, 'VkDeviceMemory': None, 'VkDeviceSize': None, 'VkImage': None} +mapDict['vkCmdBeginQuery'] = {'VkQueryPool': None, 'VkQueryControlFlags': None, 'VkCommandBuffer': None} +mapDict['vkCmdBeginRenderPass'] = {'VkSubpassContents': None, 'VkCommandBuffer': None, 'VkRenderPassBeginInfo': None} +mapDict['vkCmdBindDescriptorSets'] = {'VkPipelineBindPoint': None, 'VkCommandBuffer': None, 'VkDescriptorSet': None, 'VkPipelineLayout': None} +mapDict['vkCmdBindIndexBuffer'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkIndexType': None, 'VkDeviceSize': None} +mapDict['vkCmdBindPipeline'] = {'VkPipelineBindPoint': None, 'VkCommandBuffer': None, 'VkPipeline': None} +mapDict['vkCmdBindVertexBuffers'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdBlitImage'] = {'VkImageBlit': None, 'VkImageLayout': None, 'VkCommandBuffer': None, 'VkFilter': None, 'VkImage': None} +mapDict['vkCmdClearAttachments'] = {'VkClearRect': None, 'VkClearAttachment': None, 'VkCommandBuffer': None} +mapDict['vkCmdClearColorImage'] = {'VkImageLayout': None, 'VkCommandBuffer': None, 'VkClearColorValue': None, 'VkImageSubresourceRange': None, 'VkImage': None} +mapDict['vkCmdClearDepthStencilImage'] = {'VkImageLayout': None, 'VkCommandBuffer': None, 'VkClearDepthStencilValue': None, 'VkImageSubresourceRange': None, 'VkImage': None} +mapDict['vkCmdCopyBuffer'] = {'VkBuffer': None, 'VkBufferCopy': None, 'VkCommandBuffer': None} +mapDict['vkCmdCopyBufferToImage'] = {'VkBuffer': None, 'VkImageLayout': None, 'VkCommandBuffer': None, 'VkBufferImageCopy': None, 'VkImage': None} +mapDict['vkCmdCopyImage'] = {'VkImageCopy': None, 'VkImageLayout': None, 'VkCommandBuffer': None, 'VkImage': None} +mapDict['vkCmdCopyImageToBuffer'] = {'VkBuffer': None, 'VkImageLayout': None, 'VkCommandBuffer': None, 'VkBufferImageCopy': None, 'VkImage': None} +mapDict['vkCmdCopyQueryPoolResults'] = {'VkQueryPool': None, 'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None, 'VkQueryResultFlags': None} +mapDict['vkCmdDispatch'] = {'VkCommandBuffer': None} +mapDict['vkCmdDispatchIndirect'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdDraw'] = {'VkCommandBuffer': None} +mapDict['vkCmdDrawIndexed'] = {'VkCommandBuffer': None} +mapDict['vkCmdDrawIndexedIndirect'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdDrawIndirect'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdEndQuery'] = {'VkQueryPool': None, 'VkCommandBuffer': None} +mapDict['vkCmdEndRenderPass'] = {'VkCommandBuffer': None} +mapDict['vkCmdExecuteCommands'] = {'VkCommandBuffer': None} +mapDict['vkCmdFillBuffer'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdNextSubpass'] = {'VkSubpassContents': None, 'VkCommandBuffer': None} +mapDict['vkCmdPipelineBarrier'] = {'VkImageMemoryBarrier': None, 'VkBufferMemoryBarrier': None, 'VkPipelineStageFlags': None, 'VkCommandBuffer': None, 'VkDependencyFlags': None, 'VkMemoryBarrier': None} +mapDict['vkCmdPushConstants'] = {'VkShaderStageFlags': None, 'VkCommandBuffer': None, 'VkPipelineLayout': None} +mapDict['vkCmdResetEvent'] = {'VkPipelineStageFlags': None, 'VkCommandBuffer': None, 'VkEvent': None} +mapDict['vkCmdResetQueryPool'] = {'VkQueryPool': None, 'VkCommandBuffer': None} +mapDict['vkCmdResolveImage'] = {'VkImageLayout': None, 'VkCommandBuffer': None, 'VkImageResolve': None, 'VkImage': None} +mapDict['vkCmdSetBlendConstants'] = {'VkCommandBuffer': None} +mapDict['vkCmdSetDepthBias'] = {'VkCommandBuffer': None} +mapDict['vkCmdSetDepthBounds'] = {'VkCommandBuffer': None} +mapDict['vkCmdSetEvent'] = {'VkPipelineStageFlags': None, 'VkCommandBuffer': None, 'VkEvent': None} +mapDict['vkCmdSetLineWidth'] = {'VkCommandBuffer': None} +mapDict['vkCmdSetScissor'] = {'VkCommandBuffer': None, 'VkRect2D': None} +mapDict['vkCmdSetStencilCompareMask'] = {'VkCommandBuffer': None, 'VkStencilFaceFlags': None} +mapDict['vkCmdSetStencilReference'] = {'VkCommandBuffer': None, 'VkStencilFaceFlags': None} +mapDict['vkCmdSetStencilWriteMask'] = {'VkCommandBuffer': None, 'VkStencilFaceFlags': None} +mapDict['vkCmdSetViewport'] = {'VkCommandBuffer': None, 'VkViewport': None} +mapDict['vkCmdUpdateBuffer'] = {'VkBuffer': None, 'VkCommandBuffer': None, 'VkDeviceSize': None} +mapDict['vkCmdWaitEvents'] = {'VkImageMemoryBarrier': None, 'VkBufferMemoryBarrier': None, 'VkEvent': None, 'VkPipelineStageFlags': None, 'VkCommandBuffer': None, 'VkMemoryBarrier': None} +mapDict['vkCmdWriteTimestamp'] = {'VkQueryPool': None, 'VkCommandBuffer': None, 'VkPipelineStageFlagBits': None} +mapDict['vkCreateBuffer'] = {'VkBuffer': None, 'VkDevice': None, 'VkAllocationCallbacks': None, 'VkBufferCreateInfo': None} +mapDict['vkCreateBufferView'] = {'VkDevice': None, 'VkBufferView': None, 'VkAllocationCallbacks': None, 'VkBufferViewCreateInfo': None} +mapDict['vkCreateCommandPool'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkCommandPoolCreateInfo': None, 'VkCommandPool': None} +mapDict['vkCreateComputePipelines'] = {'VkDevice': None, 'VkPipeline': None, 'VkAllocationCallbacks': None, 'VkPipelineCache': None, 'VkComputePipelineCreateInfo': None} +mapDict['vkCreateDescriptorPool'] = {'VkDevice': None, 'VkDescriptorPoolCreateInfo': None, 'VkAllocationCallbacks': None, 'VkDescriptorPool': None} +mapDict['vkCreateDescriptorSetLayout'] = {'VkDescriptorSetLayout': None, 'VkDevice': None, 'VkDescriptorSetLayoutCreateInfo': None, 'VkAllocationCallbacks': None} +mapDict['vkCreateDevice'] = {'VkDeviceCreateInfo': None, 'VkAllocationCallbacks': None, 'VkPhysicalDevice': None, 'VkDevice': None} +mapDict['vkCreateEvent'] = {'VkDevice': None, 'VkEvent': None, 'VkAllocationCallbacks': None, 'VkEventCreateInfo': None} +mapDict['vkCreateFence'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkFence': None, 'VkFenceCreateInfo': None} +mapDict['vkCreateFramebuffer'] = {'VkFramebufferCreateInfo': None, 'VkDevice': None, 'VkAllocationCallbacks': None, 'VkFramebuffer': None} +mapDict['vkCreateGraphicsPipelines'] = {'VkDevice': None, 'VkPipeline': None, 'VkAllocationCallbacks': None, 'VkPipelineCache': None, 'VkGraphicsPipelineCreateInfo': None} +mapDict['vkCreateImage'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkImageCreateInfo': None, 'VkImage': None} +mapDict['vkCreateImageView'] = {'VkDevice': None, 'VkImageView': None, 'VkAllocationCallbacks': None, 'VkImageViewCreateInfo': None} +mapDict['vkCreateInstance'] = {'VkInstance': None, 'VkAllocationCallbacks': None, 'VkInstanceCreateInfo': None} +mapDict['vkCreatePipelineCache'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkPipelineCacheCreateInfo': None, 'VkPipelineCache': None} +mapDict['vkCreatePipelineLayout'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkPipelineLayoutCreateInfo': None, 'VkPipelineLayout': None} +mapDict['vkCreateQueryPool'] = {'VkQueryPool': None, 'VkDevice': None, 'VkQueryPoolCreateInfo': None, 'VkAllocationCallbacks': None} +mapDict['vkCreateRenderPass'] = {'VkRenderPassCreateInfo': None, 'VkDevice': None, 'VkRenderPass': None, 'VkAllocationCallbacks': None} +mapDict['vkCreateSampler'] = {'VkDevice': None, 'VkSamplerCreateInfo': None, 'VkAllocationCallbacks': None, 'VkSampler': None} +mapDict['vkCreateSemaphore'] = {'VkSemaphoreCreateInfo': None, 'VkDevice': None, 'VkAllocationCallbacks': None, 'VkSemaphore': None} +mapDict['vkCreateShaderModule'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkShaderModuleCreateInfo': None, 'VkShaderModule': None} +mapDict['vkDestroyBuffer'] = {'VkBuffer': None, 'VkDevice': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyBufferView'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkBufferView': None} +mapDict['vkDestroyCommandPool'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkCommandPool': None} +mapDict['vkDestroyDescriptorPool'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkDescriptorPool': None} +mapDict['vkDestroyDescriptorSetLayout'] = {'VkDescriptorSetLayout': None, 'VkDevice': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyDevice'] = {'VkDevice': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyEvent'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkEvent': None} +mapDict['vkDestroyFence'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkFence': None} +mapDict['vkDestroyFramebuffer'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkFramebuffer': None} +mapDict['vkDestroyImage'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkImage': None} +mapDict['vkDestroyImageView'] = {'VkDevice': None, 'VkImageView': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyInstance'] = {'VkInstance': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyPipeline'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkPipeline': None} +mapDict['vkDestroyPipelineCache'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkPipelineCache': None} +mapDict['vkDestroyPipelineLayout'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkPipelineLayout': None} +mapDict['vkDestroyQueryPool'] = {'VkQueryPool': None, 'VkDevice': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroyRenderPass'] = {'VkDevice': None, 'VkRenderPass': None, 'VkAllocationCallbacks': None} +mapDict['vkDestroySampler'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkSampler': None} +mapDict['vkDestroySemaphore'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkSemaphore': None} +mapDict['vkDestroyShaderModule'] = {'VkDevice': None, 'VkAllocationCallbacks': None, 'VkShaderModule': None} +mapDict['vkDeviceWaitIdle'] = {'VkDevice': None} +mapDict['vkEndCommandBuffer'] = {'VkCommandBuffer': None} +mapDict['vkEnumerateDeviceExtensionProperties'] = {'VkExtensionProperties': None, 'VkPhysicalDevice': None} +mapDict['vkEnumerateDeviceLayerProperties'] = {'VkLayerProperties': None, 'VkPhysicalDevice': None} +mapDict['vkEnumerateInstanceExtensionProperties'] = {'VkExtensionProperties': None} +mapDict['vkEnumerateInstanceLayerProperties'] = {'VkLayerProperties': None} +mapDict['vkEnumeratePhysicalDevices'] = {'VkInstance': None, 'VkPhysicalDevice': None} +mapDict['vkFlushMappedMemoryRanges'] = {'VkDevice': None, 'VkMappedMemoryRange': None} +mapDict['vkFreeCommandBuffers'] = {'VkDevice': None, 'VkCommandBuffer': None, 'VkCommandPool': None} +mapDict['vkFreeDescriptorSets'] = {'VkDevice': None, 'VkDescriptorSet': None, 'VkDescriptorPool': None} +mapDict['vkFreeMemory'] = {'VkDevice': None, 'VkDeviceMemory': None, 'VkAllocationCallbacks': None} +mapDict['vkGetBufferMemoryRequirements'] = {'VkBuffer': None, 'VkDevice': None, 'VkMemoryRequirements': None} +mapDict['vkGetDeviceMemoryCommitment'] = {'VkDevice': None, 'VkDeviceMemory': None, 'VkDeviceSize': None} +mapDict['vkGetDeviceProcAddr'] = {'VkDevice': None} +mapDict['vkGetDeviceQueue'] = {'VkDevice': None, 'VkQueue': None} +mapDict['vkGetEventStatus'] = {'VkDevice': None, 'VkEvent': None} +mapDict['vkGetFenceStatus'] = {'VkDevice': None, 'VkFence': None} +mapDict['vkGetImageMemoryRequirements'] = {'VkDevice': None, 'VkMemoryRequirements': None, 'VkImage': None} +mapDict['vkGetImageSparseMemoryRequirements'] = {'VkDevice': None, 'VkSparseImageMemoryRequirements': None, 'VkImage': None} +mapDict['vkGetImageSubresourceLayout'] = {'VkDevice': None, 'VkSubresourceLayout': None, 'VkImageSubresource': None, 'VkImage': None} +mapDict['vkGetInstanceProcAddr'] = {'VkInstance': None} +mapDict['vkGetPhysicalDeviceFeatures'] = {'VkPhysicalDeviceFeatures': None, 'VkPhysicalDevice': None} +mapDict['vkGetPhysicalDeviceFormatProperties'] = {'VkFormatProperties': None, 'VkFormat': None, 'VkPhysicalDevice': None} +mapDict['vkGetPhysicalDeviceImageFormatProperties'] = {'VkFormat': None, 'VkImageTiling': None, 'VkImageUsageFlags': None, 'VkImageFormatProperties': None, 'VkPhysicalDevice': None, 'VkImageCreateFlags': None, 'VkImageType': None} +mapDict['vkGetPhysicalDeviceMemoryProperties'] = {'VkPhysicalDevice': None, 'VkPhysicalDeviceMemoryProperties': None} +mapDict['vkGetPhysicalDeviceProperties'] = {'VkPhysicalDeviceProperties': None, 'VkPhysicalDevice': None} +mapDict['vkGetPhysicalDeviceQueueFamilyProperties'] = {'VkQueueFamilyProperties': None, 'VkPhysicalDevice': None} +mapDict['vkGetPhysicalDeviceSparseImageFormatProperties'] = {'VkFormat': None, 'VkPhysicalDevice': None, 'VkImageUsageFlags': None, 'VkSampleCountFlagBits': None, 'VkSparseImageFormatProperties': None, 'VkImageTiling': None, 'VkImageType': None} +mapDict['vkGetPipelineCacheData'] = {'VkDevice': None, 'VkPipelineCache': None} +mapDict['vkGetQueryPoolResults'] = {'VkQueryPool': None, 'VkDevice': None, 'VkDeviceSize': None, 'VkQueryResultFlags': None} +mapDict['vkGetRenderAreaGranularity'] = {'VkDevice': None, 'VkRenderPass': None, 'VkExtent2D': None} +mapDict['vkInvalidateMappedMemoryRanges'] = {'VkDevice': None, 'VkMappedMemoryRange': None} +mapDict['vkMapMemory'] = {'VkDevice': None, 'VkDeviceMemory': None, 'VkMemoryMapFlags': None, 'VkDeviceSize': None} +mapDict['vkMergePipelineCaches'] = {'VkDevice': None, 'VkPipelineCache': None} +mapDict['vkQueueBindSparse'] = {'VkQueue': None, 'VkBindSparseInfo': None, 'VkFence': None} +mapDict['vkQueueSubmit'] = {'VkSubmitInfo': None, 'VkQueue': None, 'VkFence': None} +mapDict['vkQueueWaitIdle'] = {'VkQueue': None} +mapDict['vkResetCommandBuffer'] = {'VkCommandBufferResetFlags': None, 'VkCommandBuffer': None} +mapDict['vkResetCommandPool'] = {'VkDevice': None, 'VkCommandPoolResetFlags': None, 'VkCommandPool': None} +mapDict['vkResetDescriptorPool'] = {'VkDevice': None, 'VkDescriptorPoolResetFlags': None, 'VkDescriptorPool': None} +mapDict['vkResetEvent'] = {'VkDevice': None, 'VkEvent': None} +mapDict['vkResetFences'] = {'VkDevice': None, 'VkFence': None} +mapDict['vkSetEvent'] = {'VkDevice': None, 'VkEvent': None} +mapDict['vkUnmapMemory'] = {'VkDevice': None, 'VkDeviceMemory': None} +mapDict['vkUpdateDescriptorSets'] = {'VkDevice': None, 'VkCopyDescriptorSet': None, 'VkWriteDescriptorSet': None} +mapDict['vkWaitForFences'] = {'VkDevice': None, 'VkBool32': None, 'VkFence': None} diff --git a/doc/specs/vulkan/vkspec.txt b/doc/specs/vulkan/vkspec.txt index f4de8be602..9bdf3fca49 100644 --- a/doc/specs/vulkan/vkspec.txt +++ b/doc/specs/vulkan/vkspec.txt @@ -107,6 +107,8 @@ include::appendices/extensions.txt[] include::appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt[] +include::appendices/boilerplate.txt[] + include::appendices/invariance.txt[] include::appendices/glossary.txt[] diff --git a/out/genRef.html b/out/genRef.html new file mode 100644 index 0000000000..1a460326ad --- /dev/null +++ b/out/genRef.html @@ -0,0 +1,28 @@ + + +Vulkan Spec Sandbox - autogenerated reference page index + + +

        Vulkan Spec Sandbox - autogenerated reference page index

        + +

        This is the vulkan spec sandbox for the 'genRef' branch, showing + autogenerated API reference pages.

        + + + + diff --git a/src/spec/Makefile b/src/spec/Makefile index 8c999d14cd..5961dfc581 100644 --- a/src/spec/Makefile +++ b/src/spec/Makefile @@ -71,8 +71,8 @@ $(DOCINCLUDES): $(VKH_DEPENDS) # Generate API Python dictionaries from XML. # These are used in validating spec / man pages. -$(DOCPYSRC): $(VKH_DEPENDS) - $(PYTHON) genvk.py $(GENOPTS) $@ +pydoc $(DOCPYSRC): $(VKH_DEPENDS) + $(PYTHON) genvk.py $(GENOPTS) $(DOCPYSRC) # Generate API Asciidoc validity include files from XML. $(DOCVALIDITY): $(VKH_DEPENDS) @@ -131,13 +131,20 @@ clean: # Remove not just intermediate and junk files, but generated targets # (installed header & asciidoc includes) clobber: clean - -rm -f $(HEADERS) $(DOCINCLUDES) - -rm -f $(OUTDIR)/readme.pdf - -rm -f $(DOCROOT)/vkapi.py - -rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt - -rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt - -rm -f $(DOCVALIDITY) - -rm -f $(DOCROOT)/validity/protos/*.txt - -rm -f $(DOCROOT)/validity/structs/*.txt - -rm -f $(DOCHOSTSYNCTABLE) - -rm -f $(DOCROOT)/hostsynctable/*.txt + -rm -f $(HEADERS) + -rm -f $(OUTDIR)/readme.pdf \ + $(DOCROOT)/vkapi.py + -rm -f $(DOCINCLUDES) \ + $(DOCROOT)/basetypes/*.txt \ + $(DOCROOT)/defines/*.txt \ + $(DOCROOT)/enums/*.txt \ + $(DOCROOT)/flags/*.txt \ + $(DOCROOT)/funcpointers/*.txt \ + $(DOCROOT)/handles/*.txt \ + $(DOCROOT)/protos/*.txt \ + $(DOCROOT)/structs/*.txt + -rm -f $(DOCVALIDITY) \ + $(DOCROOT)/validity/protos/*.txt \ + $(DOCROOT)/validity/structs/*.txt + -rm -f $(DOCHOSTSYNCTABLE) \ + $(DOCROOT)/hostsynctable/*.txt diff --git a/src/spec/cgenerator.py b/src/spec/cgenerator.py new file mode 100644 index 0000000000..0f15942f1d --- /dev/null +++ b/src/spec/cgenerator.py @@ -0,0 +1,346 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-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 os,re,sys +from generator import * + +# CGeneratorOptions - subclass of GeneratorOptions. +# +# Adds options used by COutputGenerator objects during C language header +# generation. +# +# Additional members +# prefixText - list of strings to prefix generated header with +# (usually a copyright statement + calling convention macros). +# protectFile - True if multiple inclusion protection should be +# generated (based on the filename) around the entire header. +# protectFeature - True if #ifndef..#endif protection should be +# generated around a feature interface in the header file. +# genFuncPointers - True if function pointer typedefs should be +# generated +# protectProto - If conditional protection should be generated +# around prototype declarations, set to either '#ifdef' +# to require opt-in (#ifdef protectProtoStr) or '#ifndef' +# to require opt-out (#ifndef protectProtoStr). Otherwise +# set to None. +# protectProtoStr - #ifdef/#ifndef symbol to use around prototype +# declarations, if protectProto is set +# apicall - string to use for the function declaration prefix, +# such as APICALL on Windows. +# apientry - string to use for the calling convention macro, +# in typedefs, such as APIENTRY. +# apientryp - string to use for the calling convention macro +# in function pointer typedefs, such as APIENTRYP. +# indentFuncProto - True if prototype declarations should put each +# parameter on a separate line +# indentFuncPointer - True if typedefed function pointers should put each +# parameter on a separate line +# alignFuncParam - if nonzero and parameters are being put on a +# separate line, align parameter names at the specified column +class CGeneratorOptions(GeneratorOptions): + """Represents options during C interface generation for headers""" + def __init__(self, + filename = None, + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + sortProcedure = regSortFeatures, + prefixText = "", + genFuncPointers = True, + protectFile = True, + protectFeature = True, + protectProto = None, + protectProtoStr = None, + apicall = '', + apientry = '', + apientryp = '', + indentFuncProto = True, + indentFuncPointer = False, + alignFuncParam = 0): + GeneratorOptions.__init__(self, filename, apiname, profile, + versions, emitversions, defaultExtensions, + addExtensions, removeExtensions, sortProcedure) + self.prefixText = prefixText + self.genFuncPointers = genFuncPointers + self.protectFile = protectFile + self.protectFeature = protectFeature + self.protectProto = protectProto + self.protectProtoStr = protectProtoStr + self.apicall = apicall + self.apientry = apientry + self.apientryp = apientryp + self.indentFuncProto = indentFuncProto + self.indentFuncPointer = indentFuncPointer + self.alignFuncParam = alignFuncParam + +# COutputGenerator - subclass of OutputGenerator. +# Generates C-language API interfaces. +# +# ---- methods ---- +# COutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# ---- methods overriding base class ---- +# beginFile(genOpts) +# endFile() +# beginFeature(interface, emit) +# endFeature() +# genType(typeinfo,name) +# genStruct(typeinfo,name) +# genGroup(groupinfo,name) +# genEnum(enuminfo, name) +# genCmd(cmdinfo) +class COutputGenerator(OutputGenerator): + """Generate specified API interfaces in a specific style, such as a C header""" + # This is an ordered list of sections in the header file. + TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum', + 'group', 'bitmask', 'funcpointer', 'struct'] + ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command'] + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + # Internal state - accumulators for different inner block text + self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) + # + def beginFile(self, genOpts): + OutputGenerator.beginFile(self, genOpts) + # C-specific + # + # Multiple inclusion protection & C++ wrappers. + if (genOpts.protectFile and self.genOpts.filename): + headerSym = re.sub('\.h', '_h_', + os.path.basename(self.genOpts.filename)).upper() + write('#ifndef', headerSym, file=self.outFile) + write('#define', headerSym, '1', file=self.outFile) + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('extern "C" {', file=self.outFile) + write('#endif', file=self.outFile) + self.newline() + # + # User-supplied prefix text, if any (list of strings) + if (genOpts.prefixText): + for s in genOpts.prefixText: + write(s, file=self.outFile) + # + # Some boilerplate describing what was generated - this + # will probably be removed later since the extensions + # pattern may be very long. + # write('/* Generated C header for:', file=self.outFile) + # write(' * API:', genOpts.apiname, file=self.outFile) + # if (genOpts.profile): + # write(' * Profile:', genOpts.profile, file=self.outFile) + # write(' * Versions considered:', genOpts.versions, file=self.outFile) + # write(' * Versions emitted:', genOpts.emitversions, file=self.outFile) + # write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile) + # write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile) + # write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile) + # write(' */', file=self.outFile) + def endFile(self): + # C-specific + # Finish C++ wrapper and multiple inclusion protection + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('}', file=self.outFile) + write('#endif', file=self.outFile) + if (self.genOpts.protectFile and self.genOpts.filename): + self.newline() + write('#endif', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFile(self) + def beginFeature(self, interface, emit): + # Start processing in superclass + OutputGenerator.beginFeature(self, interface, emit) + # C-specific + # Accumulate includes, defines, types, enums, function pointer typedefs, + # end function prototypes separately for this feature. They're only + # printed in endFeature(). + self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) + def endFeature(self): + # C-specific + # Actually write the interface to the output file. + if (self.emit): + self.newline() + if (self.genOpts.protectFeature): + write('#ifndef', self.featureName, file=self.outFile) + # If type declarations are needed by other features based on + # this one, it may be necessary to suppress the ExtraProtect, + # or move it below the 'for section...' loop. + if (self.featureExtraProtect != None): + write('#ifdef', self.featureExtraProtect, file=self.outFile) + write('#define', self.featureName, '1', file=self.outFile) + for section in self.TYPE_SECTIONS: + contents = self.sections[section] + if contents: + write('\n'.join(contents), file=self.outFile) + self.newline() + if (self.genOpts.genFuncPointers and self.sections['commandPointer']): + write('\n'.join(self.sections['commandPointer']), file=self.outFile) + self.newline() + if (self.sections['command']): + if (self.genOpts.protectProto): + write(self.genOpts.protectProto, + self.genOpts.protectProtoStr, file=self.outFile) + write('\n'.join(self.sections['command']), end='', file=self.outFile) + if (self.genOpts.protectProto): + write('#endif', file=self.outFile) + else: + self.newline() + if (self.featureExtraProtect != None): + write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile) + if (self.genOpts.protectFeature): + write('#endif /*', self.featureName, '*/', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFeature(self) + # + # Append a definition to the specified section + def appendSection(self, section, text): + # self.sections[section].append('SECTION: ' + section + '\n') + self.sections[section].append(text) + # + # Type generation + def genType(self, typeinfo, name): + OutputGenerator.genType(self, typeinfo, name) + typeElem = typeinfo.elem + # If the type is a struct type, traverse the imbedded tags + # generating a structure. Otherwise, emit the tag text. + category = typeElem.get('category') + if (category == 'struct' or category == 'union'): + self.genStruct(typeinfo, name) + else: + # Replace tags with an APIENTRY-style string + # (from self.genOpts). Copy other text through unchanged. + # If the resulting text is an empty string, don't emit it. + s = noneStr(typeElem.text) + for elem in typeElem: + if (elem.tag == 'apientry'): + s += self.genOpts.apientry + noneStr(elem.tail) + else: + s += noneStr(elem.text) + noneStr(elem.tail) + if s: + # Add extra newline after multi-line entries. + if '\n' in s: + s += '\n' + self.appendSection(category, s) + # + # Struct (e.g. C "struct" type) generation. + # This is a special case of the tag where the contents are + # interpreted as a set of tags instead of freeform C + # C type declarations. The tags are just like + # tags - they are a declaration of a struct or union member. + # Only simple member declarations are supported (no nested + # structs etc.) + def genStruct(self, typeinfo, typeName): + OutputGenerator.genStruct(self, typeinfo, typeName) + body = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n' + # paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam) + targetLen = 0; + for member in typeinfo.elem.findall('.//member'): + targetLen = max(targetLen, self.getCParamTypeLength(member)) + for member in typeinfo.elem.findall('.//member'): + body += self.makeCParamDecl(member, targetLen + 4) + body += ';\n' + body += '} ' + typeName + ';\n' + self.appendSection('struct', body) + # + # Group (e.g. C "enum" type) generation. + # These are concatenated together with other types. + def genGroup(self, groupinfo, groupName): + OutputGenerator.genGroup(self, groupinfo, groupName) + groupElem = groupinfo.elem + + expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper() + + expandPrefix = expandName + expandSuffix = '' + expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName) + if expandSuffixMatch: + expandSuffix = '_' + expandSuffixMatch.group() + # Strip off the suffix from the prefix + expandPrefix = expandName.rsplit(expandSuffix, 1)[0] + + # Prefix + body = "\ntypedef enum " + groupName + " {\n" + + isEnum = ('FLAG_BITS' not in expandPrefix) + + # Loop over the nested 'enum' tags. Keep track of the minimum and + # maximum numeric values, if they can be determined; but only for + # core API enumerants, not extension enumerants. This is inferred + # by looking for 'extends' attributes. + minName = None + for elem in groupElem.findall('enum'): + # Convert the value to an integer and use that to track min/max. + # Values of form -(number) are accepted but nothing more complex. + # Should catch exceptions here for more complex constructs. Not yet. + (numVal,strVal) = self.enumToValue(elem, True) + name = elem.get('name') + + # Extension enumerants are only included if they are requested + # in addExtensions or match defaultExtensions. + if (elem.get('extname') is None or + re.match(self.genOpts.addExtensions,elem.get('extname')) is not None or + self.genOpts.defaultExtensions == elem.get('supported')): + body += " " + name + " = " + strVal + ",\n" + + if (isEnum and elem.get('extends') is None): + if (minName == None): + minName = maxName = name + minValue = maxValue = numVal + elif (numVal < minValue): + minName = name + minValue = numVal + elif (numVal > maxValue): + maxName = name + maxValue = numVal + # Generate min/max value tokens and a range-padding enum. Need some + # additional padding to generate correct names... + if isEnum: + body += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n" + body += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n" + body += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n" + + body += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n" + + # Postfix + body += "} " + groupName + ";" + if groupElem.get('type') == 'bitmask': + section = 'bitmask' + else: + section = 'group' + self.appendSection(section, body) + # Enumerant generation + # tags may specify their values in several ways, but are usually + # just integers. + def genEnum(self, enuminfo, name): + OutputGenerator.genEnum(self, enuminfo, name) + (numVal,strVal) = self.enumToValue(enuminfo.elem, False) + body = '#define ' + name.ljust(33) + ' ' + strVal + self.appendSection('enum', body) + # + # Command generation + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + # + decls = self.makeCDecls(cmdinfo.elem) + self.appendSection('command', decls[0] + '\n') + if (self.genOpts.genFuncPointers): + self.appendSection('commandPointer', decls[1]) diff --git a/src/spec/docgenerator.py b/src/spec/docgenerator.py new file mode 100644 index 0000000000..ff14a876dd --- /dev/null +++ b/src/spec/docgenerator.py @@ -0,0 +1,270 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-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 os,re,sys +from generator import * + +# DocGeneratorOptions - subclass of GeneratorOptions. +# +# Shares many members with CGeneratorOptions, since +# both are writing C-style declarations: +# +# prefixText - list of strings to prefix generated header with +# (usually a copyright statement + calling convention macros). +# apicall - string to use for the function declaration prefix, +# such as APICALL on Windows. +# apientry - string to use for the calling convention macro, +# in typedefs, such as APIENTRY. +# apientryp - string to use for the calling convention macro +# in function pointer typedefs, such as APIENTRYP. +# genDirectory - directory into which to generate include files +# indentFuncProto - True if prototype declarations should put each +# parameter on a separate line +# indentFuncPointer - True if typedefed function pointers should put each +# parameter on a separate line +# alignFuncParam - if nonzero and parameters are being put on a +# separate line, align parameter names at the specified column +# +# Additional members: +# +class DocGeneratorOptions(GeneratorOptions): + """Represents options during C interface generation for Asciidoc""" + def __init__(self, + filename = None, + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + sortProcedure = regSortFeatures, + prefixText = "", + apicall = '', + apientry = '', + apientryp = '', + genDirectory = 'gen', + indentFuncProto = True, + indentFuncPointer = False, + alignFuncParam = 0, + expandEnumerants = True): + GeneratorOptions.__init__(self, filename, apiname, profile, + versions, emitversions, defaultExtensions, + addExtensions, removeExtensions, sortProcedure) + self.prefixText = prefixText + self.apicall = apicall + self.apientry = apientry + self.apientryp = apientryp + self.genDirectory = genDirectory + self.indentFuncProto = indentFuncProto + self.indentFuncPointer = indentFuncPointer + self.alignFuncParam = alignFuncParam + self.expandEnumerants = expandEnumerants + +# DocOutputGenerator - subclass of OutputGenerator. +# Generates AsciiDoc includes with C-language API interfaces, for reference +# pages and the Vulkan specification. Similar to COutputGenerator, but +# each interface is written into a different file as determined by the +# options, only actual C types are emitted, and none of the boilerplate +# preprocessor code is emitted. +# +# ---- methods ---- +# DocOutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# ---- methods overriding base class ---- +# beginFile(genOpts) +# endFile() +# beginFeature(interface, emit) +# endFeature() +# genType(typeinfo,name) +# genStruct(typeinfo,name) +# genGroup(groupinfo,name) +# genEnum(enuminfo, name) +# genCmd(cmdinfo) +class DocOutputGenerator(OutputGenerator): + """Generate specified API interfaces in a specific style, such as a C header""" + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + # + def beginFile(self, genOpts): + OutputGenerator.beginFile(self, genOpts) + def endFile(self): + OutputGenerator.endFile(self) + def beginFeature(self, interface, emit): + # Start processing in superclass + OutputGenerator.beginFeature(self, interface, emit) + def endFeature(self): + # Finish processing in superclass + OutputGenerator.endFeature(self) + # + # Generate an include file + # + # directory - subdirectory to put file in + # basename - base name of the file + # contents - contents of the file (Asciidoc boilerplate aside) + def writeInclude(self, directory, basename, contents): + # Create file + filename = self.genOpts.genDirectory + '/' + directory + '/' + basename + '.txt' + self.logMsg('diag', '# Generating include file:', filename) + fp = open(filename, 'w') + # Asciidoc anchor + write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) + write('ifndef::doctype-manpage[]', file=fp) + write('[[{0},{0}]]'.format(basename), file=fp) + write('["source","{basebackend@docbook:c++:cpp}",title=""]', file=fp) + write('endif::doctype-manpage[]', file=fp) + write('ifdef::doctype-manpage[]', file=fp) + write('["source","{basebackend@docbook:c++:cpp}"]', file=fp) + write('endif::doctype-manpage[]', file=fp) + write('------------------------------------------------------------------------------', file=fp) + write(contents, file=fp) + write('------------------------------------------------------------------------------', file=fp) + fp.close() + # + # Type generation + def genType(self, typeinfo, name): + OutputGenerator.genType(self, typeinfo, name) + typeElem = typeinfo.elem + # If the type is a struct type, traverse the imbedded tags + # generating a structure. Otherwise, emit the tag text. + category = typeElem.get('category') + if (category == 'struct' or category == 'union'): + self.genStruct(typeinfo, name) + else: + # Replace tags with an APIENTRY-style string + # (from self.genOpts). Copy other text through unchanged. + # If the resulting text is an empty string, don't emit it. + s = noneStr(typeElem.text) + for elem in typeElem: + if (elem.tag == 'apientry'): + s += self.genOpts.apientry + noneStr(elem.tail) + else: + s += noneStr(elem.text) + noneStr(elem.tail) + if (len(s) > 0): + if (category in OutputGenerator.categoryToPath.keys()): + self.writeInclude(OutputGenerator.categoryToPath[category], + name, s + '\n') + else: + self.logMsg('diag', '# NOT writing include file for type:', + name, 'category: ', category) + else: + self.logMsg('diag', '# NOT writing empty include file for type', name) + # + # Struct (e.g. C "struct" type) generation. + # This is a special case of the tag where the contents are + # interpreted as a set of tags instead of freeform C + # C type declarations. The tags are just like + # tags - they are a declaration of a struct or union member. + # Only simple member declarations are supported (no nested + # structs etc.) + def genStruct(self, typeinfo, typeName): + OutputGenerator.genStruct(self, typeinfo, typeName) + s = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n' + # paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam) + targetLen = 0; + for member in typeinfo.elem.findall('.//member'): + targetLen = max(targetLen, self.getCParamTypeLength(member)) + for member in typeinfo.elem.findall('.//member'): + s += self.makeCParamDecl(member, targetLen + 4) + s += ';\n' + s += '} ' + typeName + ';' + self.writeInclude('structs', typeName, s) + # + # Group (e.g. C "enum" type) generation. + # These are concatenated together with other types. + def genGroup(self, groupinfo, groupName): + OutputGenerator.genGroup(self, groupinfo, groupName) + groupElem = groupinfo.elem + + # See if we need min/max/num/padding at end + expand = self.genOpts.expandEnumerants + + if expand: + expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper() + isEnum = ('FLAG_BITS' not in expandName) + + expandPrefix = expandName + expandSuffix = '' + + # Look for a suffix + expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName) + if expandSuffixMatch: + expandSuffix = '_' + expandSuffixMatch.group() + # Strip off the suffix from the prefix + expandPrefix = expandName.rsplit(expandSuffix, 1)[0] + + # Prefix + s = "typedef enum " + groupName + " {\n" + + # Loop over the nested 'enum' tags. Keep track of the minimum and + # maximum numeric values, if they can be determined. + minName = None + for elem in groupElem.findall('enum'): + # Convert the value to an integer and use that to track min/max. + # Values of form -(number) are accepted but nothing more complex. + # Should catch exceptions here for more complex constructs. Not yet. + (numVal,strVal) = self.enumToValue(elem, True) + name = elem.get('name') + + # Extension enumerants are only included if they are requested + # in addExtensions or match defaultExtensions. + if (elem.get('extname') is None or + re.match(self.genOpts.addExtensions,elem.get('extname')) is not None or + self.genOpts.defaultExtensions == elem.get('supported')): + s += " " + name + " = " + strVal + ",\n" + + if (expand and isEnum and elem.get('extends') is None): + if (minName == None): + minName = maxName = name + minValue = maxValue = numVal + elif (numVal < minValue): + minName = name + minValue = numVal + elif (numVal > maxValue): + maxName = name + maxValue = numVal + # Generate min/max value tokens and a range-padding enum. Need some + # additional padding to generate correct names... + if (expand): + s += "\n" + if isEnum: + s += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n" + s += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n" + s += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n" + + s += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n" + # Postfix + s += "} " + groupName + ";" + self.writeInclude('enums', groupName, s) + # Enumerant generation + # tags may specify their values in several ways, but are usually + # just integers. + def genEnum(self, enuminfo, name): + OutputGenerator.genEnum(self, enuminfo, name) + (numVal,strVal) = self.enumToValue(enuminfo.elem, False) + s = '#define ' + name.ljust(33) + ' ' + strVal + self.logMsg('diag', '# NOT writing compile-time constant', name) + # self.writeInclude('consts', name, s) + # + # Command generation + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + # + decls = self.makeCDecls(cmdinfo.elem) + self.writeInclude('protos', name, decls[0]) diff --git a/src/spec/generator.py b/src/spec/generator.py index be88e88c60..564bc252e1 100644 --- a/src/spec/generator.py +++ b/src/spec/generator.py @@ -39,6 +39,11 @@ def enquote(str): else: return None +# apiName - returns True if name is a Vulkan name (vk/Vk/VK prefix, or a +# function pointer type), False otherwise. +def apiName(str): + return str[0:2].lower() == 'vk' or str[0:3] == 'PFN' + # Primary sort key for regSortFeatures. # Sorts by category of the feature name string: # Core API features (those defined with a tag) @@ -137,136 +142,6 @@ def emptyRegex(self,pat): else: return pat -# CGeneratorOptions - subclass of GeneratorOptions. -# -# Adds options used by COutputGenerator objects during C language header -# generation. -# -# Additional members -# prefixText - list of strings to prefix generated header with -# (usually a copyright statement + calling convention macros). -# protectFile - True if multiple inclusion protection should be -# generated (based on the filename) around the entire header. -# protectFeature - True if #ifndef..#endif protection should be -# generated around a feature interface in the header file. -# genFuncPointers - True if function pointer typedefs should be -# generated -# protectProto - If conditional protection should be generated -# around prototype declarations, set to either '#ifdef' -# to require opt-in (#ifdef protectProtoStr) or '#ifndef' -# to require opt-out (#ifndef protectProtoStr). Otherwise -# set to None. -# protectProtoStr - #ifdef/#ifndef symbol to use around prototype -# declarations, if protectProto is set -# apicall - string to use for the function declaration prefix, -# such as APICALL on Windows. -# apientry - string to use for the calling convention macro, -# in typedefs, such as APIENTRY. -# apientryp - string to use for the calling convention macro -# in function pointer typedefs, such as APIENTRYP. -# indentFuncProto - True if prototype declarations should put each -# parameter on a separate line -# indentFuncPointer - True if typedefed function pointers should put each -# parameter on a separate line -# alignFuncParam - if nonzero and parameters are being put on a -# separate line, align parameter names at the specified column -class CGeneratorOptions(GeneratorOptions): - """Represents options during C interface generation for headers""" - def __init__(self, - filename = None, - apiname = None, - profile = None, - versions = '.*', - emitversions = '.*', - defaultExtensions = None, - addExtensions = None, - removeExtensions = None, - sortProcedure = regSortFeatures, - prefixText = "", - genFuncPointers = True, - protectFile = True, - protectFeature = True, - protectProto = None, - protectProtoStr = None, - apicall = '', - apientry = '', - apientryp = '', - indentFuncProto = True, - indentFuncPointer = False, - alignFuncParam = 0): - GeneratorOptions.__init__(self, filename, apiname, profile, - versions, emitversions, defaultExtensions, - addExtensions, removeExtensions, sortProcedure) - self.prefixText = prefixText - self.genFuncPointers = genFuncPointers - self.protectFile = protectFile - self.protectFeature = protectFeature - self.protectProto = protectProto - self.protectProtoStr = protectProtoStr - self.apicall = apicall - self.apientry = apientry - self.apientryp = apientryp - self.indentFuncProto = indentFuncProto - self.indentFuncPointer = indentFuncPointer - self.alignFuncParam = alignFuncParam - -# DocGeneratorOptions - subclass of GeneratorOptions. -# -# Shares many members with CGeneratorOptions, since -# both are writing C-style declarations: -# -# prefixText - list of strings to prefix generated header with -# (usually a copyright statement + calling convention macros). -# apicall - string to use for the function declaration prefix, -# such as APICALL on Windows. -# apientry - string to use for the calling convention macro, -# in typedefs, such as APIENTRY. -# apientryp - string to use for the calling convention macro -# in function pointer typedefs, such as APIENTRYP. -# genDirectory - directory into which to generate include files -# indentFuncProto - True if prototype declarations should put each -# parameter on a separate line -# indentFuncPointer - True if typedefed function pointers should put each -# parameter on a separate line -# alignFuncParam - if nonzero and parameters are being put on a -# separate line, align parameter names at the specified column -# -# Additional members: -# -class DocGeneratorOptions(GeneratorOptions): - """Represents options during C interface generation for Asciidoc""" - def __init__(self, - filename = None, - apiname = None, - profile = None, - versions = '.*', - emitversions = '.*', - defaultExtensions = None, - addExtensions = None, - removeExtensions = None, - sortProcedure = regSortFeatures, - prefixText = "", - apicall = '', - apientry = '', - apientryp = '', - genDirectory = 'gen', - indentFuncProto = True, - indentFuncPointer = False, - alignFuncParam = 0, - expandEnumerants = True): - GeneratorOptions.__init__(self, filename, apiname, profile, - versions, emitversions, defaultExtensions, - addExtensions, removeExtensions, sortProcedure) - self.prefixText = prefixText - self.apicall = apicall - self.apientry = apientry - self.apientryp = apientryp - self.genDirectory = genDirectory - self.indentFuncProto = indentFuncProto - self.indentFuncPointer = indentFuncPointer - self.alignFuncParam = alignFuncParam - self.expandEnumerants = expandEnumerants - # OutputGenerator - base class for generating API interfaces. # Manages basic logic, logging, and output file control # Derived classes actually generate formatted output. @@ -307,6 +182,18 @@ def __init__(self, # class OutputGenerator: """Generate specified API interfaces in a specific style, such as a C header""" + # + # categoryToPath - map XML 'category' to include file directory name + categoryToPath = { + 'bitmask' : 'flags', + 'enum' : 'enums', + 'funcpointer' : 'funcpointers', + 'handle' : 'handles', + 'define' : 'defines', + 'basetype' : 'basetypes', + } + # + # Constructor def __init__(self, errFile = sys.stderr, warnFile = sys.stderr, @@ -581,1743 +468,3 @@ def newline(self): def setRegistry(self, registry): self.registry = registry # - -# COutputGenerator - subclass of OutputGenerator. -# Generates C-language API interfaces. -# -# ---- methods ---- -# COutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# beginFile(genOpts) -# endFile() -# beginFeature(interface, emit) -# endFeature() -# genType(typeinfo,name) -# genStruct(typeinfo,name) -# genGroup(groupinfo,name) -# genEnum(enuminfo, name) -# genCmd(cmdinfo) -class COutputGenerator(OutputGenerator): - """Generate specified API interfaces in a specific style, such as a C header""" - # This is an ordered list of sections in the header file. - TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum', - 'group', 'bitmask', 'funcpointer', 'struct'] - ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command'] - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - # Internal state - accumulators for different inner block text - self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) - # - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - # C-specific - # - # Multiple inclusion protection & C++ wrappers. - if (genOpts.protectFile and self.genOpts.filename): - headerSym = re.sub('\.h', '_h_', - os.path.basename(self.genOpts.filename)).upper() - write('#ifndef', headerSym, file=self.outFile) - write('#define', headerSym, '1', file=self.outFile) - self.newline() - write('#ifdef __cplusplus', file=self.outFile) - write('extern "C" {', file=self.outFile) - write('#endif', file=self.outFile) - self.newline() - # - # User-supplied prefix text, if any (list of strings) - if (genOpts.prefixText): - for s in genOpts.prefixText: - write(s, file=self.outFile) - # - # Some boilerplate describing what was generated - this - # will probably be removed later since the extensions - # pattern may be very long. - # write('/* Generated C header for:', file=self.outFile) - # write(' * API:', genOpts.apiname, file=self.outFile) - # if (genOpts.profile): - # write(' * Profile:', genOpts.profile, file=self.outFile) - # write(' * Versions considered:', genOpts.versions, file=self.outFile) - # write(' * Versions emitted:', genOpts.emitversions, file=self.outFile) - # write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile) - # write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile) - # write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile) - # write(' */', file=self.outFile) - def endFile(self): - # C-specific - # Finish C++ wrapper and multiple inclusion protection - self.newline() - write('#ifdef __cplusplus', file=self.outFile) - write('}', file=self.outFile) - write('#endif', file=self.outFile) - if (self.genOpts.protectFile and self.genOpts.filename): - self.newline() - write('#endif', file=self.outFile) - # Finish processing in superclass - OutputGenerator.endFile(self) - def beginFeature(self, interface, emit): - # Start processing in superclass - OutputGenerator.beginFeature(self, interface, emit) - # C-specific - # Accumulate includes, defines, types, enums, function pointer typedefs, - # end function prototypes separately for this feature. They're only - # printed in endFeature(). - self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) - def endFeature(self): - # C-specific - # Actually write the interface to the output file. - if (self.emit): - self.newline() - if (self.genOpts.protectFeature): - write('#ifndef', self.featureName, file=self.outFile) - # If type declarations are needed by other features based on - # this one, it may be necessary to suppress the ExtraProtect, - # or move it below the 'for section...' loop. - if (self.featureExtraProtect != None): - write('#ifdef', self.featureExtraProtect, file=self.outFile) - write('#define', self.featureName, '1', file=self.outFile) - for section in self.TYPE_SECTIONS: - contents = self.sections[section] - if contents: - write('\n'.join(contents), file=self.outFile) - self.newline() - if (self.genOpts.genFuncPointers and self.sections['commandPointer']): - write('\n'.join(self.sections['commandPointer']), file=self.outFile) - self.newline() - if (self.sections['command']): - if (self.genOpts.protectProto): - write(self.genOpts.protectProto, - self.genOpts.protectProtoStr, file=self.outFile) - write('\n'.join(self.sections['command']), end='', file=self.outFile) - if (self.genOpts.protectProto): - write('#endif', file=self.outFile) - else: - self.newline() - if (self.featureExtraProtect != None): - write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile) - if (self.genOpts.protectFeature): - write('#endif /*', self.featureName, '*/', file=self.outFile) - # Finish processing in superclass - OutputGenerator.endFeature(self) - # - # Append a definition to the specified section - def appendSection(self, section, text): - # self.sections[section].append('SECTION: ' + section + '\n') - self.sections[section].append(text) - # - # Type generation - def genType(self, typeinfo, name): - OutputGenerator.genType(self, typeinfo, name) - typeElem = typeinfo.elem - # If the type is a struct type, traverse the imbedded tags - # generating a structure. Otherwise, emit the tag text. - category = typeElem.get('category') - if (category == 'struct' or category == 'union'): - self.genStruct(typeinfo, name) - else: - # Replace tags with an APIENTRY-style string - # (from self.genOpts). Copy other text through unchanged. - # If the resulting text is an empty string, don't emit it. - s = noneStr(typeElem.text) - for elem in typeElem: - if (elem.tag == 'apientry'): - s += self.genOpts.apientry + noneStr(elem.tail) - else: - s += noneStr(elem.text) + noneStr(elem.tail) - if s: - # Add extra newline after multi-line entries. - if '\n' in s: - s += '\n' - self.appendSection(category, s) - # - # Struct (e.g. C "struct" type) generation. - # This is a special case of the tag where the contents are - # interpreted as a set of tags instead of freeform C - # C type declarations. The tags are just like - # tags - they are a declaration of a struct or union member. - # Only simple member declarations are supported (no nested - # structs etc.) - def genStruct(self, typeinfo, typeName): - OutputGenerator.genStruct(self, typeinfo, typeName) - body = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n' - # paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam) - targetLen = 0; - for member in typeinfo.elem.findall('.//member'): - targetLen = max(targetLen, self.getCParamTypeLength(member)) - for member in typeinfo.elem.findall('.//member'): - body += self.makeCParamDecl(member, targetLen + 4) - body += ';\n' - body += '} ' + typeName + ';\n' - self.appendSection('struct', body) - # - # Group (e.g. C "enum" type) generation. - # These are concatenated together with other types. - def genGroup(self, groupinfo, groupName): - OutputGenerator.genGroup(self, groupinfo, groupName) - groupElem = groupinfo.elem - - expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper() - - expandPrefix = expandName - expandSuffix = '' - expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName) - if expandSuffixMatch: - expandSuffix = '_' + expandSuffixMatch.group() - # Strip off the suffix from the prefix - expandPrefix = expandName.rsplit(expandSuffix, 1)[0] - - # Prefix - body = "\ntypedef enum " + groupName + " {\n" - - isEnum = ('FLAG_BITS' not in expandPrefix) - - # Loop over the nested 'enum' tags. Keep track of the minimum and - # maximum numeric values, if they can be determined; but only for - # core API enumerants, not extension enumerants. This is inferred - # by looking for 'extends' attributes. - minName = None - for elem in groupElem.findall('enum'): - # Convert the value to an integer and use that to track min/max. - # Values of form -(number) are accepted but nothing more complex. - # Should catch exceptions here for more complex constructs. Not yet. - (numVal,strVal) = self.enumToValue(elem, True) - name = elem.get('name') - - # Extension enumerants are only included if they are requested - # in addExtensions or match defaultExtensions. - if (elem.get('extname') is None or - re.match(self.genOpts.addExtensions,elem.get('extname')) is not None or - self.genOpts.defaultExtensions == elem.get('supported')): - body += " " + name + " = " + strVal + ",\n" - - if (isEnum and elem.get('extends') is None): - if (minName == None): - minName = maxName = name - minValue = maxValue = numVal - elif (numVal < minValue): - minName = name - minValue = numVal - elif (numVal > maxValue): - maxName = name - maxValue = numVal - # Generate min/max value tokens and a range-padding enum. Need some - # additional padding to generate correct names... - if isEnum: - body += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n" - body += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n" - body += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n" - - body += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n" - - # Postfix - body += "} " + groupName + ";" - if groupElem.get('type') == 'bitmask': - section = 'bitmask' - else: - section = 'group' - self.appendSection(section, body) - # Enumerant generation - # tags may specify their values in several ways, but are usually - # just integers. - def genEnum(self, enuminfo, name): - OutputGenerator.genEnum(self, enuminfo, name) - (numVal,strVal) = self.enumToValue(enuminfo.elem, False) - body = '#define ' + name.ljust(33) + ' ' + strVal - self.appendSection('enum', body) - # - # Command generation - def genCmd(self, cmdinfo, name): - OutputGenerator.genCmd(self, cmdinfo, name) - # - decls = self.makeCDecls(cmdinfo.elem) - self.appendSection('command', decls[0] + '\n') - if (self.genOpts.genFuncPointers): - self.appendSection('commandPointer', decls[1]) - -# DocOutputGenerator - subclass of OutputGenerator. -# Generates AsciiDoc includes with C-language API interfaces, for reference -# pages and the Vulkan specification. Similar to COutputGenerator, but -# each interface is written into a different file as determined by the -# options, only actual C types are emitted, and none of the boilerplate -# preprocessor code is emitted. -# -# ---- methods ---- -# DocOutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# beginFile(genOpts) -# endFile() -# beginFeature(interface, emit) -# endFeature() -# genType(typeinfo,name) -# genStruct(typeinfo,name) -# genGroup(groupinfo,name) -# genEnum(enuminfo, name) -# genCmd(cmdinfo) -class DocOutputGenerator(OutputGenerator): - """Generate specified API interfaces in a specific style, such as a C header""" - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - # - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - def endFile(self): - OutputGenerator.endFile(self) - def beginFeature(self, interface, emit): - # Start processing in superclass - OutputGenerator.beginFeature(self, interface, emit) - def endFeature(self): - # Finish processing in superclass - OutputGenerator.endFeature(self) - # - # Generate an include file - # - # directory - subdirectory to put file in - # basename - base name of the file - # contents - contents of the file (Asciidoc boilerplate aside) - def writeInclude(self, directory, basename, contents): - # Create file - filename = self.genOpts.genDirectory + '/' + directory + '/' + basename + '.txt' - self.logMsg('diag', '# Generating include file:', filename) - fp = open(filename, 'w') - # Asciidoc anchor - write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) - write('ifndef::doctype-manpage[]', file=fp) - write('[[{0},{0}]]'.format(basename), file=fp) - write('["source","{basebackend@docbook:c++:cpp}",title=""]', file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('["source","{basebackend@docbook:c++:cpp}"]', file=fp) - write('endif::doctype-manpage[]', file=fp) - write('------------------------------------------------------------------------------', file=fp) - write(contents, file=fp) - write('------------------------------------------------------------------------------', file=fp) - fp.close() - # - # Type generation - def genType(self, typeinfo, name): - OutputGenerator.genType(self, typeinfo, name) - typeElem = typeinfo.elem - # If the type is a struct type, traverse the imbedded tags - # generating a structure. Otherwise, emit the tag text. - category = typeElem.get('category') - if (category == 'struct' or category == 'union'): - self.genStruct(typeinfo, name) - else: - # Replace tags with an APIENTRY-style string - # (from self.genOpts). Copy other text through unchanged. - # If the resulting text is an empty string, don't emit it. - s = noneStr(typeElem.text) - for elem in typeElem: - if (elem.tag == 'apientry'): - s += self.genOpts.apientry + noneStr(elem.tail) - else: - s += noneStr(elem.text) + noneStr(elem.tail) - if (len(s) > 0): - if (category == 'bitmask'): - self.writeInclude('flags', name, s + '\n') - elif (category == 'enum'): - self.writeInclude('enums', name, s + '\n') - elif (category == 'funcpointer'): - self.writeInclude('funcpointers', name, s+ '\n') - else: - self.logMsg('diag', '# NOT writing include file for type:', - name, 'category: ', category) - else: - self.logMsg('diag', '# NOT writing empty include file for type', name) - # - # Struct (e.g. C "struct" type) generation. - # This is a special case of the tag where the contents are - # interpreted as a set of tags instead of freeform C - # C type declarations. The tags are just like - # tags - they are a declaration of a struct or union member. - # Only simple member declarations are supported (no nested - # structs etc.) - def genStruct(self, typeinfo, typeName): - OutputGenerator.genStruct(self, typeinfo, typeName) - s = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n' - # paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam) - targetLen = 0; - for member in typeinfo.elem.findall('.//member'): - targetLen = max(targetLen, self.getCParamTypeLength(member)) - for member in typeinfo.elem.findall('.//member'): - s += self.makeCParamDecl(member, targetLen + 4) - s += ';\n' - s += '} ' + typeName + ';' - self.writeInclude('structs', typeName, s) - # - # Group (e.g. C "enum" type) generation. - # These are concatenated together with other types. - def genGroup(self, groupinfo, groupName): - OutputGenerator.genGroup(self, groupinfo, groupName) - groupElem = groupinfo.elem - - # See if we need min/max/num/padding at end - expand = self.genOpts.expandEnumerants - - if expand: - expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper() - isEnum = ('FLAG_BITS' not in expandName) - - expandPrefix = expandName - expandSuffix = '' - - # Look for a suffix - expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName) - if expandSuffixMatch: - expandSuffix = '_' + expandSuffixMatch.group() - # Strip off the suffix from the prefix - expandPrefix = expandName.rsplit(expandSuffix, 1)[0] - - # Prefix - s = "typedef enum " + groupName + " {\n" - - # Loop over the nested 'enum' tags. Keep track of the minimum and - # maximum numeric values, if they can be determined. - minName = None - for elem in groupElem.findall('enum'): - # Convert the value to an integer and use that to track min/max. - # Values of form -(number) are accepted but nothing more complex. - # Should catch exceptions here for more complex constructs. Not yet. - (numVal,strVal) = self.enumToValue(elem, True) - name = elem.get('name') - - # Extension enumerants are only included if they are requested - # in addExtensions or match defaultExtensions. - if (elem.get('extname') is None or - re.match(self.genOpts.addExtensions,elem.get('extname')) is not None or - self.genOpts.defaultExtensions == elem.get('supported')): - s += " " + name + " = " + strVal + ",\n" - - if (expand and isEnum and elem.get('extends') is None): - if (minName == None): - minName = maxName = name - minValue = maxValue = numVal - elif (numVal < minValue): - minName = name - minValue = numVal - elif (numVal > maxValue): - maxName = name - maxValue = numVal - # Generate min/max value tokens and a range-padding enum. Need some - # additional padding to generate correct names... - if (expand): - s += "\n" - if isEnum: - s += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n" - s += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n" - s += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n" - - s += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n" - # Postfix - s += "} " + groupName + ";" - self.writeInclude('enums', groupName, s) - # Enumerant generation - # tags may specify their values in several ways, but are usually - # just integers. - def genEnum(self, enuminfo, name): - OutputGenerator.genEnum(self, enuminfo, name) - (numVal,strVal) = self.enumToValue(enuminfo.elem, False) - s = '#define ' + name.ljust(33) + ' ' + strVal - self.logMsg('diag', '# NOT writing compile-time constant', name) - # self.writeInclude('consts', name, s) - # - # Command generation - def genCmd(self, cmdinfo, name): - OutputGenerator.genCmd(self, cmdinfo, name) - # - decls = self.makeCDecls(cmdinfo.elem) - self.writeInclude('protos', name, decls[0]) - -# PyOutputGenerator - subclass of OutputGenerator. -# Generates Python data structures describing API names. -# Similar to DocOutputGenerator, but writes a single -# file. -# -# ---- methods ---- -# PyOutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# beginFile(genOpts) -# endFile() -# genType(typeinfo,name) -# genStruct(typeinfo,name) -# genGroup(groupinfo,name) -# genEnum(enuminfo, name) -# genCmd(cmdinfo) -class PyOutputGenerator(OutputGenerator): - """Generate specified API interfaces in a specific style, such as a C header""" - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - # - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - for dict in [ 'flags', 'enums', 'structs', 'consts', 'enums', - 'consts', 'protos', 'funcpointers' ]: - write(dict, '= {}', file=self.outFile) - def endFile(self): - OutputGenerator.endFile(self) - # - # Add a name from the interface - # - # dict - type of name (see beginFile above) - # name - name to add - # value - A serializable Python value for the name - def addName(self, dict, name, value=None): - write(dict + "['" + name + "'] = ", value, file=self.outFile) - # - # Type generation - # For 'struct' or 'union' types, defer to genStruct() to - # add to the dictionary. - # For 'bitmask' types, add the type name to the 'flags' dictionary, - # with the value being the corresponding 'enums' name defining - # the acceptable flag bits. - # For 'enum' types, add the type name to the 'enums' dictionary, - # with the value being '@STOPHERE@' (because this case seems - # never to happen). - # For 'funcpointer' types, add the type name to the 'funcpointers' - # dictionary. - # For 'handle' and 'define' types, add the handle or #define name - # to the 'struct' dictionary, because that's how the spec sources - # tag these types even though they aren't structs. - def genType(self, typeinfo, name): - OutputGenerator.genType(self, typeinfo, name) - typeElem = typeinfo.elem - # If the type is a struct type, traverse the imbedded tags - # generating a structure. Otherwise, emit the tag text. - category = typeElem.get('category') - if (category == 'struct' or category == 'union'): - self.genStruct(typeinfo, name) - else: - # Extract the type name - # (from self.genOpts). Copy other text through unchanged. - # If the resulting text is an empty string, don't emit it. - count = len(noneStr(typeElem.text)) - for elem in typeElem: - count += len(noneStr(elem.text)) + len(noneStr(elem.tail)) - if (count > 0): - if (category == 'bitmask'): - requiredEnum = typeElem.get('requires') - self.addName('flags', name, enquote(requiredEnum)) - elif (category == 'enum'): - # This case never seems to come up! - # @enums C 'enum' name Dictionary of enumerant names - self.addName('enums', name, enquote('@STOPHERE@')) - elif (category == 'funcpointer'): - self.addName('funcpointers', name, None) - elif (category == 'handle' or category == 'define'): - self.addName('structs', name, None) - else: - write('# Unprocessed type:', name, 'category:', category, file=self.outFile) - else: - write('# Unprocessed type:', name, file=self.outFile) - # - # Struct (e.g. C "struct" type) generation. - # - # Add the struct name to the 'structs' dictionary, with the - # value being an ordered list of the struct member names. - def genStruct(self, typeinfo, typeName): - OutputGenerator.genStruct(self, typeinfo, typeName) - - members = [member.text for member in typeinfo.elem.findall('.//member/name')] - self.addName('structs', typeName, members) - # - # Group (e.g. C "enum" type) generation. - # These are concatenated together with other types. - # - # Add the enum type name to the 'enums' dictionary, with - # the value being an ordered list of the enumerant names. - # Add each enumerant name to the 'consts' dictionary, with - # the value being the enum type the enumerant is part of. - def genGroup(self, groupinfo, groupName): - OutputGenerator.genGroup(self, groupinfo, groupName) - groupElem = groupinfo.elem - - # @enums C 'enum' name Dictionary of enumerant names - # @consts C enumerant/const name Name of corresponding 'enums' key - - # Loop over the nested 'enum' tags. Keep track of the minimum and - # maximum numeric values, if they can be determined. - enumerants = [elem.get('name') for elem in groupElem.findall('enum')] - for name in enumerants: - self.addName('consts', name, enquote(groupName)) - self.addName('enums', groupName, enumerants) - # Enumerant generation (compile-time constants) - # - # Add the constant name to the 'consts' dictionary, with the - # value being None to indicate that the constant isn't - # an enumeration value. - def genEnum(self, enuminfo, name): - OutputGenerator.genEnum(self, enuminfo, name) - - # @consts C enumerant/const name Name of corresponding 'enums' key - - self.addName('consts', name, None) - # - # Command generation - # - # Add the command name to the 'protos' dictionary, with the - # value being an ordered list of the parameter names. - def genCmd(self, cmdinfo, name): - OutputGenerator.genCmd(self, cmdinfo, name) - - params = [param.text for param in cmdinfo.elem.findall('param/name')] - self.addName('protos', name, params) - -# ValidityOutputGenerator - subclass of OutputGenerator. -# Generates AsciiDoc includes of valid usage information, for reference -# pages and the Vulkan specification. Similar to DocOutputGenerator. -# -# ---- methods ---- -# ValidityOutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# beginFile(genOpts) -# endFile() -# beginFeature(interface, emit) -# endFeature() -# genCmd(cmdinfo) -class ValidityOutputGenerator(OutputGenerator): - """Generate specified API interfaces in a specific style, such as a C header""" - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - def endFile(self): - OutputGenerator.endFile(self) - def beginFeature(self, interface, emit): - # Start processing in superclass - OutputGenerator.beginFeature(self, interface, emit) - def endFeature(self): - # Finish processing in superclass - OutputGenerator.endFeature(self) - - def makeParameterName(self, name): - return 'pname:' + name - - def makeStructName(self, name): - return 'sname:' + name - - def makeBaseTypeName(self, name): - return 'basetype:' + name - - def makeEnumerationName(self, name): - return 'elink:' + name - - def makeEnumerantName(self, name): - return 'ename:' + name - - def makeFLink(self, name): - return 'flink:' + name - - # - # Generate an include file - # - # directory - subdirectory to put file in - # basename - base name of the file - # contents - contents of the file (Asciidoc boilerplate aside) - def writeInclude(self, directory, basename, validity, threadsafety, commandpropertiesentry, successcodes, errorcodes): - # Create file - filename = self.genOpts.genDirectory + '/' + directory + '/' + basename + '.txt' - self.logMsg('diag', '# Generating include file:', filename) - fp = open(filename, 'w') - # Asciidoc anchor - write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) - - # Valid Usage - if validity is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('.Valid Usage', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('Valid Usage', file=fp) - write('-----------', file=fp) - write('endif::doctype-manpage[]', file=fp) - write(validity, file=fp, end='') - write('ifndef::doctype-manpage[]', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('', file=fp) - - # Host Synchronization - if threadsafety is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('.Host Synchronization', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('Host Synchronization', file=fp) - write('--------------------', file=fp) - write('endif::doctype-manpage[]', file=fp) - write(threadsafety, file=fp, end='') - write('ifndef::doctype-manpage[]', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('', file=fp) - - # Command Properties - contained within a block, to avoid table numbering - if commandpropertiesentry is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('.Command Properties', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('Command Properties', file=fp) - write('------------------', file=fp) - write('endif::doctype-manpage[]', file=fp) - write('[options="header", width="100%"]', file=fp) - write('|=====================', file=fp) - write('|Command Buffer Levels|Render Pass Scope|Supported Queue Types', file=fp) - write(commandpropertiesentry, file=fp) - write('|=====================', file=fp) - write('ifndef::doctype-manpage[]', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('', file=fp) - - # Success Codes - contained within a block, to avoid table numbering - if successcodes is not None or errorcodes is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('.Return Codes', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('Return Codes', file=fp) - write('------------', file=fp) - write('endif::doctype-manpage[]', file=fp) - if successcodes is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('<>::', file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('On success, this command returns::', file=fp) - write('endif::doctype-manpage[]', file=fp) - write(successcodes, file=fp) - if errorcodes is not None: - write('ifndef::doctype-manpage[]', file=fp) - write('<>::', file=fp) - write('endif::doctype-manpage[]', file=fp) - write('ifdef::doctype-manpage[]', file=fp) - write('On failure, this command returns::', file=fp) - write('endif::doctype-manpage[]', file=fp) - write(errorcodes, file=fp) - write('ifndef::doctype-manpage[]', file=fp) - write('*' * 80, file=fp) - write('endif::doctype-manpage[]', file=fp) - write('', file=fp) - - fp.close() - - # - # Check if the parameter passed in is a pointer - def paramIsPointer(self, param): - ispointer = False - paramtype = param.find('type') - if paramtype.tail is not None and '*' in paramtype.tail: - ispointer = True - - return ispointer - - # - # Check if the parameter passed in is a static array - def paramIsStaticArray(self, param): - if param.find('name').tail is not None: - if param.find('name').tail[0] == '[': - return True - - # - # Get the length of a parameter that's been identified as a static array - def staticArrayLength(self, param): - paramname = param.find('name') - paramenumsize = param.find('enum') - - if paramenumsize is not None: - return paramenumsize.text - else: - return paramname.tail[1:-1] - - # - # Check if the parameter passed in is a pointer to an array - def paramIsArray(self, param): - return param.attrib.get('len') is not None - - # - # Get the parent of a handle object - def getHandleParent(self, typename): - types = self.registry.tree.findall("types/type") - for elem in types: - if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename: - return elem.attrib.get('parent') - - # - # Check if a parent object is dispatchable or not - def isHandleTypeDispatchable(self, handlename): - handle = self.registry.tree.find("types/type/[name='" + handlename + "'][@category='handle']") - if handle is not None and handle.find('type').text == 'VK_DEFINE_HANDLE': - return True - else: - return False - - def isHandleOptional(self, param, params): - - # See if the handle is optional - isOptional = False - - # Simple, if it's optional, return true - if param.attrib.get('optional') is not None: - return True - - # If no validity is being generated, it usually means that validity is complex and not absolute, so let's say yes. - if param.attrib.get('noautovalidity') is not None: - return True - - # If the parameter is an array and we haven't already returned, find out if any of the len parameters are optional - if self.paramIsArray(param): - lengths = param.attrib.get('len').split(',') - for length in lengths: - if (length) != 'null-terminated' and (length) != '1': - for otherparam in params: - if otherparam.find('name').text == length: - if otherparam.attrib.get('optional') is not None: - return True - - return False - # - # Get the category of a type - def getTypeCategory(self, typename): - types = self.registry.tree.findall("types/type") - for elem in types: - if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename: - return elem.attrib.get('category') - - # - # Make a chunk of text for the end of a parameter if it is an array - def makeAsciiDocPreChunk(self, param, params): - paramname = param.find('name') - paramtype = param.find('type') - - # General pre-amble. Check optionality and add stuff. - asciidoc = '* ' - - if self.paramIsStaticArray(param): - asciidoc += 'Any given element of ' - - elif self.paramIsArray(param): - lengths = param.attrib.get('len').split(',') - - # Find all the parameters that are called out as optional, so we can document that they might be zero, and the array may be ignored - optionallengths = [] - for length in lengths: - if (length) != 'null-terminated' and (length) != '1': - for otherparam in params: - if otherparam.find('name').text == length: - if otherparam.attrib.get('optional') is not None: - if self.paramIsPointer(otherparam): - optionallengths.append('the value referenced by ' + self.makeParameterName(length)) - else: - optionallengths.append(self.makeParameterName(length)) - - # Document that these arrays may be ignored if any of the length values are 0 - if len(optionallengths) != 0 or param.attrib.get('optional') is not None: - asciidoc += 'If ' - - - if len(optionallengths) != 0: - if len(optionallengths) == 1: - - asciidoc += optionallengths[0] - asciidoc += ' is ' - - else: - asciidoc += ' or '.join(optionallengths) - asciidoc += ' are ' - - asciidoc += 'not `0`, ' - - if len(optionallengths) != 0 and param.attrib.get('optional') is not None: - asciidoc += 'and ' - - if param.attrib.get('optional') is not None: - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' is not `NULL`, ' - - elif param.attrib.get('optional') is not None: - # Don't generate this stub for bitflags - if self.getTypeCategory(paramtype.text) != 'bitmask': - if param.attrib.get('optional').split(',')[0] == 'true': - asciidoc += 'If ' - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' is not ' - if self.paramIsArray(param) or self.paramIsPointer(param) or self.isHandleTypeDispatchable(paramtype.text): - asciidoc += '`NULL`' - elif self.getTypeCategory(paramtype.text) == 'handle': - asciidoc += 'sname:VK_NULL_HANDLE' - else: - asciidoc += '`0`' - - asciidoc += ', ' - - return asciidoc - - # - # Make the generic asciidoc line chunk portion used for all parameters. - # May return an empty string if nothing to validate. - def createValidationLineForParameterIntroChunk(self, param, params, typetext): - asciidoc = '' - paramname = param.find('name') - paramtype = param.find('type') - - asciidoc += self.makeAsciiDocPreChunk(param, params) - - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' must: be ' - - if self.paramIsArray(param): - # Arrays. These are hard to get right, apparently - - lengths = param.attrib.get('len').split(',') - - if (lengths[0]) == 'null-terminated': - asciidoc += 'a null-terminated ' - elif (lengths[0]) == '1': - asciidoc += 'a pointer to ' - else: - asciidoc += 'a pointer to an array of ' - - # Handle equations, which are currently denoted with latex - if 'latexmath:' in lengths[0]: - asciidoc += lengths[0] - else: - asciidoc += self.makeParameterName(lengths[0]) - asciidoc += ' ' - - for length in lengths[1:]: - if (length) == 'null-terminated': # This should always be the last thing. If it ever isn't for some bizarre reason, then this will need some massaging. - asciidoc += 'null-terminated ' - elif (length) == '1': - asciidoc += 'pointers to ' - else: - asciidoc += 'pointers to arrays of ' - # Handle equations, which are currently denoted with latex - if 'latex:' in length: - asciidoc += length - else: - asciidoc += self.makeParameterName(length) - asciidoc += ' ' - - # Void pointers don't actually point at anything - remove the word "to" - if paramtype.text == 'void': - if lengths[-1] == '1': - if len(lengths) > 1: - asciidoc = asciidoc[:-5] # Take care of the extra s added by the post array chunk function. #HACK# - else: - asciidoc = asciidoc[:-4] - else: - # An array of void values is a byte array. - asciidoc += 'byte' - - elif paramtype.text == 'char': - # A null terminated array of chars is a string - if lengths[-1] == 'null-terminated': - asciidoc += 'string' - else: - # Else it's just a bunch of chars - asciidoc += 'char value' - elif param.text is not None: - # If a value is "const" that means it won't get modified, so it must be valid going into the function. - if 'const' in param.text: - typecategory = self.getTypeCategory(paramtype.text) - if (typecategory != 'struct' and typecategory != 'union' and typecategory != 'basetype' and typecategory is not None) or not self.isStructAlwaysValid(paramtype.text): - asciidoc += 'valid ' - - asciidoc += typetext - - # pluralize - if len(lengths) > 1 or (lengths[0] != '1' and lengths[0] != 'null-terminated'): - asciidoc += 's' - - elif self.paramIsPointer(param): - # Handle pointers - which are really special case arrays (i.e. they don't have a length) - pointercount = paramtype.tail.count('*') - - # Could be multi-level pointers (e.g. ppData - pointer to a pointer). Handle that. - for i in range(0, pointercount): - asciidoc += 'a pointer to ' - - if paramtype.text == 'void': - # If there's only one pointer, it's optional, and it doesn't point at anything in particular - we don't need any language. - if pointercount == 1 and param.attrib.get('optional') is not None: - return '' # early return - else: - # Pointer to nothing in particular - delete the " to " portion - asciidoc = asciidoc[:-4] - else: - # Add an article for English semantic win - asciidoc += 'a ' - - # If a value is "const" that means it won't get modified, so it must be valid going into the function. - if param.text is not None and paramtype.text != 'void': - if 'const' in param.text: - asciidoc += 'valid ' - - asciidoc += typetext - - else: - # Non-pointer, non-optional things must be valid - asciidoc += 'a valid ' - asciidoc += typetext - - if asciidoc != '': - asciidoc += '\n' - - # Add additional line for non-optional bitmasks - if self.getTypeCategory(paramtype.text) == 'bitmask': - if param.attrib.get('optional') is None: - asciidoc += '* ' - if self.paramIsArray(param): - asciidoc += 'Each element of ' - asciidoc += 'pname:' - asciidoc += paramname.text - asciidoc += ' mustnot: be `0`' - asciidoc += '\n' - - return asciidoc - - def makeAsciiDocLineForParameter(self, param, params, typetext): - if param.attrib.get('noautovalidity') is not None: - return '' - asciidoc = self.createValidationLineForParameterIntroChunk(param, params, typetext) - - return asciidoc - - # Try to do check if a structure is always considered valid (i.e. there's no rules to its acceptance) - def isStructAlwaysValid(self, structname): - - struct = self.registry.tree.find("types/type[@name='" + structname + "']") - - params = struct.findall('member') - validity = struct.find('validity') - - if validity is not None: - return False - - for param in params: - paramname = param.find('name') - paramtype = param.find('type') - typecategory = self.getTypeCategory(paramtype.text) - - if paramname.text == 'pNext': - return False - - if paramname.text == 'sType': - return False - - if paramtype.text == 'void' or paramtype.text == 'char' or self.paramIsArray(param) or self.paramIsPointer(param): - if self.makeAsciiDocLineForParameter(param, params, '') != '': - return False - elif typecategory == 'handle' or typecategory == 'enum' or typecategory == 'bitmask' or param.attrib.get('returnedonly') == 'true': - return False - elif typecategory == 'struct' or typecategory == 'union': - if self.isStructAlwaysValid(paramtype.text) is False: - return False - - return True - - # - # Make an entire asciidoc line for a given parameter - def createValidationLineForParameter(self, param, params, typecategory): - asciidoc = '' - paramname = param.find('name') - paramtype = param.find('type') - - if paramtype.text == 'void' or paramtype.text == 'char': - # Chars and void are special cases - needs care inside the generator functions - # A null-terminated char array is a string, else it's chars. - # An array of void values is a byte array, a void pointer is just a pointer to nothing in particular - asciidoc += self.makeAsciiDocLineForParameter(param, params, '') - elif typecategory == 'bitmask': - bitsname = paramtype.text.replace('Flags', 'FlagBits') - if self.registry.tree.find("enums[@name='" + bitsname + "']") is None: - asciidoc += '* ' - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' must: be `0`' - asciidoc += '\n' - else: - if self.paramIsArray(param): - asciidoc += self.makeAsciiDocLineForParameter(param, params, 'combinations of ' + self.makeEnumerationName(bitsname) + ' value') - else: - asciidoc += self.makeAsciiDocLineForParameter(param, params, 'combination of ' + self.makeEnumerationName(bitsname) + ' values') - elif typecategory == 'handle': - asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' handle') - elif typecategory == 'enum': - asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeEnumerationName(paramtype.text) + ' value') - elif typecategory == 'struct': - if (self.paramIsArray(param) or self.paramIsPointer(param)) or not self.isStructAlwaysValid(paramtype.text): - asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' structure') - elif typecategory == 'union': - if (self.paramIsArray(param) or self.paramIsPointer(param)) or not self.isStructAlwaysValid(paramtype.text): - asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' union') - elif self.paramIsArray(param) or self.paramIsPointer(param): - asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeBaseTypeName(paramtype.text) + ' value') - - return asciidoc - - # - # Make an asciidoc validity entry for a handle's parent object - def makeAsciiDocHandleParent(self, param, params): - asciidoc = '' - paramname = param.find('name') - paramtype = param.find('type') - - # Deal with handle parents - handleparent = self.getHandleParent(paramtype.text) - if handleparent is not None: - parentreference = None - for otherparam in params: - if otherparam.find('type').text == handleparent: - parentreference = otherparam.find('name').text - if parentreference is not None: - asciidoc += '* ' - - if self.isHandleOptional(param, params): - if self.paramIsArray(param): - asciidoc += 'Each element of ' - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' that is a valid handle' - else: - asciidoc += 'If ' - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' is a valid handle, it' - else: - if self.paramIsArray(param): - asciidoc += 'Each element of ' - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' must: have been created, allocated or retrieved from ' - asciidoc += self.makeParameterName(parentreference) - - asciidoc += '\n' - return asciidoc - - # - # Generate an asciidoc validity line for the sType value of a struct - def makeStructureType(self, blockname, param): - asciidoc = '* ' - paramname = param.find('name') - paramtype = param.find('type') - - asciidoc += self.makeParameterName(paramname.text) - asciidoc += ' must: be ' - - structuretype = '' - for elem in re.findall(r'(([A-Z][a-z]+)|([A-Z][A-Z]+))', blockname): - if elem[0] == 'Vk': - structuretype += 'VK_STRUCTURE_TYPE_' - else: - structuretype += elem[0].upper() - structuretype += '_' - - asciidoc += self.makeEnumerantName(structuretype[:-1]) - asciidoc += '\n' - - return asciidoc - - # - # Generate an asciidoc validity line for the pNext value of a struct - def makeStructureExtensionPointer(self, param): - asciidoc = '* ' - paramname = param.find('name') - paramtype = param.find('type') - - asciidoc += self.makeParameterName(paramname.text) - - validextensionstructs = param.attrib.get('validextensionstructs') - asciidoc += ' must: be `NULL`' - if validextensionstructs is not None: - extensionstructs = [] - # Check each structure name and skip it if not required by the - # generator. This allows tagging extension structs in the XML - # that are only included in validity when needed for the spec - # being targeted. - for struct in validextensionstructs.split(','): - # Unpleasantly breaks encapsulation. Should be a method in the registry class - type = self.registry.lookupElementInfo(struct, self.registry.typedict) - if (type == None): - self.logMsg('warn', 'makeStructureExtensionPointer: struct', struct, 'is in a validextensionstructs= attribute but is not in the registry') - elif (type.required): - extensionstructs.append('slink:' + struct) - else: - self.logMsg('diag', 'makeStructureExtensionPointer: struct', struct, 'IS NOT required') - if len(extensionstructs) > 0: - asciidoc += ', or a pointer to a valid instance of ' - if len(extensionstructs) == 1: - asciidoc += extensionstructs[0] - else: - asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1] - - asciidoc += '\n' - - return asciidoc - - # - # Generate all the valid usage information for a given struct or command - def makeValidUsageStatements(self, cmd, blockname, params, usages): - # Start the asciidoc block for this - asciidoc = '' - - handles = [] - anyparentedhandlesoptional = False - parentdictionary = {} - arraylengths = set() - for param in params: - paramname = param.find('name') - paramtype = param.find('type') - - # Get the type's category - typecategory = self.getTypeCategory(paramtype.text) - - # Generate language to independently validate a parameter - if paramtype.text == 'VkStructureType' and paramname.text == 'sType': - asciidoc += self.makeStructureType(blockname, param) - elif paramtype.text == 'void' and paramname.text == 'pNext': - asciidoc += self.makeStructureExtensionPointer(param) - else: - asciidoc += self.createValidationLineForParameter(param, params, typecategory) - - # Ensure that any parenting is properly validated, and list that a handle was found - if typecategory == 'handle': - # Don't detect a parent for return values! - if not self.paramIsPointer(param) or (param.text is not None and 'const' in param.text): - parent = self.getHandleParent(paramtype.text) - if parent is not None: - handles.append(param) - - # If any param is optional, it affects the output - if self.isHandleOptional(param, params): - anyparentedhandlesoptional = True - - # Find the first dispatchable parent - ancestor = parent - while ancestor is not None and not self.isHandleTypeDispatchable(ancestor): - ancestor = self.getHandleParent(ancestor) - - # If one was found, add this parameter to the parent dictionary - if ancestor is not None: - if ancestor not in parentdictionary: - parentdictionary[ancestor] = [] - - if self.paramIsArray(param): - parentdictionary[ancestor].append('the elements of ' + self.makeParameterName(paramname.text)) - else: - parentdictionary[ancestor].append(self.makeParameterName(paramname.text)) - - # Get the array length for this parameter - arraylength = param.attrib.get('len') - if arraylength is not None: - for onelength in arraylength.split(','): - arraylengths.add(onelength) - - # For any vkQueue* functions, there might be queue type data - if 'vkQueue' in blockname: - # The queue type must be valid - queuetypes = cmd.attrib.get('queues') - if queuetypes is not None: - queuebits = [] - for queuetype in re.findall(r'([^,]+)', queuetypes): - queuebits.append(queuetype.replace('_',' ')) - - asciidoc += '* ' - asciidoc += 'The pname:queue must: support ' - if len(queuebits) == 1: - asciidoc += queuebits[0] - else: - asciidoc += (', ').join(queuebits[:-1]) - asciidoc += ' or ' - asciidoc += queuebits[-1] - asciidoc += ' operations' - asciidoc += '\n' - - if 'vkCmd' in blockname: - # The commandBuffer parameter must be being recorded - asciidoc += '* ' - asciidoc += 'pname:commandBuffer must: be in the recording state' - asciidoc += '\n' - - # The queue type must be valid - queuetypes = cmd.attrib.get('queues') - queuebits = [] - for queuetype in re.findall(r'([^,]+)', queuetypes): - queuebits.append(queuetype.replace('_',' ')) - - asciidoc += '* ' - asciidoc += 'The sname:VkCommandPool that pname:commandBuffer was allocated from must: support ' - if len(queuebits) == 1: - asciidoc += queuebits[0] - else: - asciidoc += (', ').join(queuebits[:-1]) - asciidoc += ' or ' - asciidoc += queuebits[-1] - asciidoc += ' operations' - asciidoc += '\n' - - # Must be called inside/outside a renderpass appropriately - renderpass = cmd.attrib.get('renderpass') - - if renderpass != 'both': - asciidoc += '* This command must: only be called ' - asciidoc += renderpass - asciidoc += ' of a render pass instance' - asciidoc += '\n' - - # Must be in the right level command buffer - cmdbufferlevel = cmd.attrib.get('cmdbufferlevel') - - if cmdbufferlevel != 'primary,secondary': - asciidoc += '* pname:commandBuffer must: be a ' - asciidoc += cmdbufferlevel - asciidoc += ' sname:VkCommandBuffer' - asciidoc += '\n' - - # Any non-optional arraylengths should specify they must be greater than 0 - for param in params: - paramname = param.find('name') - - for arraylength in arraylengths: - if paramname.text == arraylength and param.attrib.get('optional') is None: - # Get all the array dependencies - arrays = cmd.findall("param/[@len='" + arraylength + "'][@optional='true']") - - # Get all the optional array dependencies, including those not generating validity for some reason - optionalarrays = cmd.findall("param/[@len='" + arraylength + "'][@optional='true']") - optionalarrays.extend(cmd.findall("param/[@len='" + arraylength + "'][@noautovalidity='true']")) - - asciidoc += '* ' - - # Allow lengths to be arbitrary if all their dependents are optional - if len(optionalarrays) == len(arrays) and len(optionalarrays) != 0: - asciidoc += 'If ' - if len(optionalarrays) > 1: - asciidoc += 'any of ' - - for array in optionalarrays[:-1]: - asciidoc += self.makeParameterName(optionalarrays.find('name').text) - asciidoc += ', ' - - if len(optionalarrays) > 1: - asciidoc += 'and ' - asciidoc += self.makeParameterName(optionalarrays[-1].find('name').text) - asciidoc += ' are ' - else: - asciidoc += self.makeParameterName(optionalarrays[-1].find('name').text) - asciidoc += ' is ' - - asciidoc += 'not `NULL`, ' - - if self.paramIsPointer(param): - asciidoc += 'the value referenced by ' - - elif self.paramIsPointer(param): - asciidoc += 'The value referenced by ' - - asciidoc += self.makeParameterName(arraylength) - asciidoc += ' must: be greater than `0`' - asciidoc += '\n' - - # Find the parents of all objects referenced in this command - for param in handles: - asciidoc += self.makeAsciiDocHandleParent(param, params) - - # Find the common ancestors of objects - noancestorscount = 0 - while noancestorscount < len(parentdictionary): - noancestorscount = 0 - oldparentdictionary = parentdictionary.copy() - for parent in oldparentdictionary.items(): - ancestor = self.getHandleParent(parent[0]) - - while ancestor is not None and ancestor not in parentdictionary: - ancestor = self.getHandleParent(ancestor) - - if ancestor is not None: - parentdictionary[ancestor] += parentdictionary.pop(parent[0]) - else: - # No ancestors possible - so count it up - noancestorscount += 1 - - # Add validation language about common ancestors - for parent in parentdictionary.items(): - if len(parent[1]) > 1: - parentlanguage = '* ' - - parentlanguage += 'Each of ' - parentlanguage += ", ".join(parent[1][:-1]) - parentlanguage += ' and ' - parentlanguage += parent[1][-1] - if anyparentedhandlesoptional is True: - parentlanguage += ' that are valid handles' - parentlanguage += ' must: have been created, allocated or retrieved from the same ' - parentlanguage += self.makeStructName(parent[0]) - parentlanguage += '\n' - - # Capitalize and add to the main language - asciidoc += parentlanguage - - # Add in any plain-text validation language that should be added - for usage in usages: - asciidoc += '* ' - asciidoc += usage - asciidoc += '\n' - - # In case there's nothing to report, return None - if asciidoc == '': - return None - # Delimit the asciidoc block - return asciidoc - - def makeThreadSafetyBlock(self, cmd, paramtext): - """Generate C function pointer typedef for Element""" - paramdecl = '' - - # For any vkCmd* functions, the commandBuffer parameter must be being recorded - if cmd.find('proto/name') is not None and 'vkCmd' in cmd.find('proto/name'): - paramdecl += '* ' - paramdecl += 'The sname:VkCommandPool that pname:commandBuffer was created from' - paramdecl += '\n' - - # Find and add any parameters that are thread unsafe - explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]") - if (explicitexternsyncparams is not None): - for param in explicitexternsyncparams: - externsyncattribs = param.attrib.get('externsync') - paramname = param.find('name') - for externsyncattrib in externsyncattribs.split(','): - paramdecl += '* ' - paramdecl += 'Host access to ' - if externsyncattrib == 'true': - if self.paramIsArray(param): - paramdecl += 'each member of ' + self.makeParameterName(paramname.text) - elif self.paramIsPointer(param): - paramdecl += 'the object referenced by ' + self.makeParameterName(paramname.text) - else: - paramdecl += self.makeParameterName(paramname.text) - else: - paramdecl += 'pname:' - paramdecl += externsyncattrib - paramdecl += ' must: be externally synchronized\n' - - # Find and add any "implicit" parameters that are thread unsafe - implicitexternsyncparams = cmd.find('implicitexternsyncparams') - if (implicitexternsyncparams is not None): - for elem in implicitexternsyncparams: - paramdecl += '* ' - paramdecl += 'Host access to ' - paramdecl += elem.text - paramdecl += ' must: be externally synchronized\n' - - if (paramdecl == ''): - return None - else: - return paramdecl - - def makeCommandPropertiesTableEntry(self, cmd, name): - - if 'vkCmd' in name: - # Must be called inside/outside a renderpass appropriately - cmdbufferlevel = cmd.attrib.get('cmdbufferlevel') - cmdbufferlevel = (' + \n').join(cmdbufferlevel.title().split(',')) - - renderpass = cmd.attrib.get('renderpass') - renderpass = renderpass.capitalize() - - queues = cmd.attrib.get('queues') - queues = (' + \n').join(queues.upper().split(',')) - - return '|' + cmdbufferlevel + '|' + renderpass + '|' + queues - elif 'vkQueue' in name: - # Must be called inside/outside a renderpass appropriately - - queues = cmd.attrib.get('queues') - if queues is None: - queues = 'Any' - else: - queues = (' + \n').join(queues.upper().split(',')) - - return '|-|-|' + queues - - return None - - def makeSuccessCodes(self, cmd, name): - - successcodes = cmd.attrib.get('successcodes') - if successcodes is not None: - - successcodeentry = '' - successcodes = successcodes.split(',') - return '* ename:' + '\n* ename:'.join(successcodes) - - return None - - def makeErrorCodes(self, cmd, name): - - errorcodes = cmd.attrib.get('errorcodes') - if errorcodes is not None: - - errorcodeentry = '' - errorcodes = errorcodes.split(',') - return '* ename:' + '\n* ename:'.join(errorcodes) - - return None - - # - # Command generation - def genCmd(self, cmdinfo, name): - OutputGenerator.genCmd(self, cmdinfo, name) - # - # Get all the parameters - params = cmdinfo.elem.findall('param') - usageelements = cmdinfo.elem.findall('validity/usage') - usages = [] - - for usage in usageelements: - usages.append(usage.text) - for usage in cmdinfo.additionalValidity: - usages.append(usage.text) - for usage in cmdinfo.removedValidity: - usages.remove(usage.text) - - validity = self.makeValidUsageStatements(cmdinfo.elem, name, params, usages) - threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param') - commandpropertiesentry = self.makeCommandPropertiesTableEntry(cmdinfo.elem, name) - successcodes = self.makeSuccessCodes(cmdinfo.elem, name) - errorcodes = self.makeErrorCodes(cmdinfo.elem, name) - - self.writeInclude('validity/protos', name, validity, threadsafety, commandpropertiesentry, successcodes, errorcodes) - - # - # Struct Generation - def genStruct(self, typeinfo, typename): - OutputGenerator.genStruct(self, typeinfo, typename) - - # Anything that's only ever returned can't be set by the user, so shouldn't have any validity information. - if typeinfo.elem.attrib.get('returnedonly') is None: - params = typeinfo.elem.findall('member') - - usageelements = typeinfo.elem.findall('validity/usage') - usages = [] - - for usage in usageelements: - usages.append(usage.text) - for usage in typeinfo.additionalValidity: - usages.append(usage.text) - for usage in typeinfo.removedValidity: - usages.remove(usage.text) - - validity = self.makeValidUsageStatements(typeinfo.elem, typename, params, usages) - threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member') - - self.writeInclude('validity/structs', typename, validity, threadsafety, None, None, None) - else: - # Still generate files for return only structs, in case this state changes later - self.writeInclude('validity/structs', typename, None, None, None, None, None) - - # - # Type Generation - def genType(self, typeinfo, typename): - OutputGenerator.genType(self, typeinfo, typename) - - category = typeinfo.elem.get('category') - if (category == 'struct' or category == 'union'): - self.genStruct(typeinfo, typename) - -# HostSynchronizationOutputGenerator - subclass of OutputGenerator. -# Generates AsciiDoc includes of the externsync parameter table for the -# fundamentals chapter of the Vulkan specification. Similar to -# DocOutputGenerator. -# -# ---- methods ---- -# HostSynchronizationOutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# genCmd(cmdinfo) -class HostSynchronizationOutputGenerator(OutputGenerator): - # Generate Host Synchronized Parameters in a table at the top of the spec - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - - threadsafety = {'parameters': '', 'parameterlists': '', 'implicit': ''} - - def makeParameterName(self, name): - return 'pname:' + name - - def makeFLink(self, name): - return 'flink:' + name - - # - # Generate an include file - # - # directory - subdirectory to put file in - # basename - base name of the file - # contents - contents of the file (Asciidoc boilerplate aside) - def writeInclude(self): - - if self.threadsafety['parameters'] is not None: - # Create file - filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/parameters.txt' - self.logMsg('diag', '# Generating include file:', filename) - fp = open(filename, 'w') - - # Host Synchronization - write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) - write('.Externally Synchronized Parameters', file=fp) - write('*' * 80, file=fp) - write(self.threadsafety['parameters'], file=fp, end='') - write('*' * 80, file=fp) - write('', file=fp) - - if self.threadsafety['parameterlists'] is not None: - # Create file - filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/parameterlists.txt' - self.logMsg('diag', '# Generating include file:', filename) - fp = open(filename, 'w') - - # Host Synchronization - write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) - write('.Externally Synchronized Parameter Lists', file=fp) - write('*' * 80, file=fp) - write(self.threadsafety['parameterlists'], file=fp, end='') - write('*' * 80, file=fp) - write('', file=fp) - - if self.threadsafety['implicit'] is not None: - # Create file - filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/implicit.txt' - self.logMsg('diag', '# Generating include file:', filename) - fp = open(filename, 'w') - - # Host Synchronization - write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) - write('.Implicit Externally Synchronized Parameters', file=fp) - write('*' * 80, file=fp) - write(self.threadsafety['implicit'], file=fp, end='') - write('*' * 80, file=fp) - write('', file=fp) - - fp.close() - - # - # Check if the parameter passed in is a pointer to an array - def paramIsArray(self, param): - return param.attrib.get('len') is not None - - # Check if the parameter passed in is a pointer - def paramIsPointer(self, param): - ispointer = False - paramtype = param.find('type') - if paramtype.tail is not None and '*' in paramtype.tail: - ispointer = True - - return ispointer - - # Turn the "name[].member[]" notation into plain English. - def makeThreadDereferenceHumanReadable(self, dereference): - matches = re.findall(r"[\w]+[^\w]*",dereference) - stringval = '' - for match in reversed(matches): - if '->' in match or '.' in match: - stringval += 'member of ' - if '[]' in match: - stringval += 'each element of ' - - stringval += 'the ' - stringval += self.makeParameterName(re.findall(r"[\w]+",match)[0]) - stringval += ' ' - - stringval += 'parameter' - - return stringval[0].upper() + stringval[1:] - - def makeThreadSafetyBlocks(self, cmd, paramtext): - protoname = cmd.find('proto/name').text - - # Find and add any parameters that are thread unsafe - explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]") - if (explicitexternsyncparams is not None): - for param in explicitexternsyncparams: - externsyncattribs = param.attrib.get('externsync') - paramname = param.find('name') - for externsyncattrib in externsyncattribs.split(','): - - tempstring = '* ' - if externsyncattrib == 'true': - if self.paramIsArray(param): - tempstring += 'Each element of the ' - elif self.paramIsPointer(param): - tempstring += 'The object referenced by the ' - else: - tempstring += 'The ' - - tempstring += self.makeParameterName(paramname.text) - tempstring += ' parameter' - - else: - tempstring += self.makeThreadDereferenceHumanReadable(externsyncattrib) - - tempstring += ' in ' - tempstring += self.makeFLink(protoname) - tempstring += '\n' - - - if ' element of ' in tempstring: - self.threadsafety['parameterlists'] += tempstring - else: - self.threadsafety['parameters'] += tempstring - - - # Find and add any "implicit" parameters that are thread unsafe - implicitexternsyncparams = cmd.find('implicitexternsyncparams') - if (implicitexternsyncparams is not None): - for elem in implicitexternsyncparams: - self.threadsafety['implicit'] += '* ' - self.threadsafety['implicit'] += elem.text[0].upper() - self.threadsafety['implicit'] += elem.text[1:] - self.threadsafety['implicit'] += ' in ' - self.threadsafety['implicit'] += self.makeFLink(protoname) - self.threadsafety['implicit'] += '\n' - - - # For any vkCmd* functions, the commandBuffer parameter must be being recorded - if protoname is not None and 'vkCmd' in protoname: - self.threadsafety['implicit'] += '* ' - self.threadsafety['implicit'] += 'The sname:VkCommandPool that pname:commandBuffer was allocated from, in ' - self.threadsafety['implicit'] += self.makeFLink(protoname) - - self.threadsafety['implicit'] += '\n' - - # - # Command generation - def genCmd(self, cmdinfo, name): - OutputGenerator.genCmd(self, cmdinfo, name) - # - # Get all thh parameters - params = cmdinfo.elem.findall('param') - usages = cmdinfo.elem.findall('validity/usage') - - self.makeThreadSafetyBlocks(cmdinfo.elem, 'param') - - self.writeInclude() diff --git a/src/spec/genvk.py b/src/spec/genvk.py index 334090c367..a07b56000b 100755 --- a/src/spec/genvk.py +++ b/src/spec/genvk.py @@ -16,7 +16,12 @@ import sys, time, pdb, string, cProfile from reg import * -from generator import write, CGeneratorOptions, COutputGenerator, DocGeneratorOptions, DocOutputGenerator, PyOutputGenerator, ValidityOutputGenerator, HostSynchronizationOutputGenerator +from generator import write +from cgenerator import CGeneratorOptions, COutputGenerator +from docgenerator import DocGeneratorOptions, DocOutputGenerator +from pygenerator import PyOutputGenerator +from validitygenerator import ValidityOutputGenerator +from hostsyncgenerator import HostSynchronizationOutputGenerator # debug - start header generation in debugger # dump - dump registry after loading diff --git a/src/spec/hostsyncgenerator.py b/src/spec/hostsyncgenerator.py new file mode 100644 index 0000000000..1b4ed0c0a8 --- /dev/null +++ b/src/spec/hostsyncgenerator.py @@ -0,0 +1,198 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-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 os,re,sys +from generator import * + +# HostSynchronizationOutputGenerator - subclass of OutputGenerator. +# Generates AsciiDoc includes of the externsync parameter table for the +# fundamentals chapter of the Vulkan specification. Similar to +# DocOutputGenerator. +# +# ---- methods ---- +# HostSynchronizationOutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# ---- methods overriding base class ---- +# genCmd(cmdinfo) +class HostSynchronizationOutputGenerator(OutputGenerator): + # Generate Host Synchronized Parameters in a table at the top of the spec + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + + threadsafety = {'parameters': '', 'parameterlists': '', 'implicit': ''} + + def makeParameterName(self, name): + return 'pname:' + name + + def makeFLink(self, name): + return 'flink:' + name + + # + # Generate an include file + # + # directory - subdirectory to put file in + # basename - base name of the file + # contents - contents of the file (Asciidoc boilerplate aside) + def writeInclude(self): + + if self.threadsafety['parameters'] is not None: + # Create file + filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/parameters.txt' + self.logMsg('diag', '# Generating include file:', filename) + fp = open(filename, 'w') + + # Host Synchronization + write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) + write('.Externally Synchronized Parameters', file=fp) + write('*' * 80, file=fp) + write(self.threadsafety['parameters'], file=fp, end='') + write('*' * 80, file=fp) + write('', file=fp) + + if self.threadsafety['parameterlists'] is not None: + # Create file + filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/parameterlists.txt' + self.logMsg('diag', '# Generating include file:', filename) + fp = open(filename, 'w') + + # Host Synchronization + write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) + write('.Externally Synchronized Parameter Lists', file=fp) + write('*' * 80, file=fp) + write(self.threadsafety['parameterlists'], file=fp, end='') + write('*' * 80, file=fp) + write('', file=fp) + + if self.threadsafety['implicit'] is not None: + # Create file + filename = self.genOpts.genDirectory + '/' + self.genOpts.filename + '/implicit.txt' + self.logMsg('diag', '# Generating include file:', filename) + fp = open(filename, 'w') + + # Host Synchronization + write('// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry', file=fp) + write('.Implicit Externally Synchronized Parameters', file=fp) + write('*' * 80, file=fp) + write(self.threadsafety['implicit'], file=fp, end='') + write('*' * 80, file=fp) + write('', file=fp) + + fp.close() + + # + # Check if the parameter passed in is a pointer to an array + def paramIsArray(self, param): + return param.attrib.get('len') is not None + + # Check if the parameter passed in is a pointer + def paramIsPointer(self, param): + ispointer = False + paramtype = param.find('type') + if paramtype.tail is not None and '*' in paramtype.tail: + ispointer = True + + return ispointer + + # Turn the "name[].member[]" notation into plain English. + def makeThreadDereferenceHumanReadable(self, dereference): + matches = re.findall(r"[\w]+[^\w]*",dereference) + stringval = '' + for match in reversed(matches): + if '->' in match or '.' in match: + stringval += 'member of ' + if '[]' in match: + stringval += 'each element of ' + + stringval += 'the ' + stringval += self.makeParameterName(re.findall(r"[\w]+",match)[0]) + stringval += ' ' + + stringval += 'parameter' + + return stringval[0].upper() + stringval[1:] + + def makeThreadSafetyBlocks(self, cmd, paramtext): + protoname = cmd.find('proto/name').text + + # Find and add any parameters that are thread unsafe + explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]") + if (explicitexternsyncparams is not None): + for param in explicitexternsyncparams: + externsyncattribs = param.attrib.get('externsync') + paramname = param.find('name') + for externsyncattrib in externsyncattribs.split(','): + + tempstring = '* ' + if externsyncattrib == 'true': + if self.paramIsArray(param): + tempstring += 'Each element of the ' + elif self.paramIsPointer(param): + tempstring += 'The object referenced by the ' + else: + tempstring += 'The ' + + tempstring += self.makeParameterName(paramname.text) + tempstring += ' parameter' + + else: + tempstring += self.makeThreadDereferenceHumanReadable(externsyncattrib) + + tempstring += ' in ' + tempstring += self.makeFLink(protoname) + tempstring += '\n' + + + if ' element of ' in tempstring: + self.threadsafety['parameterlists'] += tempstring + else: + self.threadsafety['parameters'] += tempstring + + + # Find and add any "implicit" parameters that are thread unsafe + implicitexternsyncparams = cmd.find('implicitexternsyncparams') + if (implicitexternsyncparams is not None): + for elem in implicitexternsyncparams: + self.threadsafety['implicit'] += '* ' + self.threadsafety['implicit'] += elem.text[0].upper() + self.threadsafety['implicit'] += elem.text[1:] + self.threadsafety['implicit'] += ' in ' + self.threadsafety['implicit'] += self.makeFLink(protoname) + self.threadsafety['implicit'] += '\n' + + + # For any vkCmd* functions, the commandBuffer parameter must be being recorded + if protoname is not None and 'vkCmd' in protoname: + self.threadsafety['implicit'] += '* ' + self.threadsafety['implicit'] += 'The sname:VkCommandPool that pname:commandBuffer was allocated from, in ' + self.threadsafety['implicit'] += self.makeFLink(protoname) + + self.threadsafety['implicit'] += '\n' + + # + # Command generation + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + # + # Get all thh parameters + params = cmdinfo.elem.findall('param') + usages = cmdinfo.elem.findall('validity/usage') + + self.makeThreadSafetyBlocks(cmdinfo.elem, 'param') + + self.writeInclude() diff --git a/src/spec/pygenerator.py b/src/spec/pygenerator.py new file mode 100644 index 0000000000..bb06fb9650 --- /dev/null +++ b/src/spec/pygenerator.py @@ -0,0 +1,242 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-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 os,re,sys +from generator import * + +# PyOutputGenerator - subclass of OutputGenerator. +# Generates Python data structures describing API names and relationships. +# Similar to DocOutputGenerator, but writes a single file. +# +# ---- methods ---- +# PyOutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# ---- methods overriding base class ---- +# beginFile(genOpts) +# endFile() +# genType(typeinfo,name) +# genStruct(typeinfo,name) +# genGroup(groupinfo,name) +# genEnum(enuminfo, name) +# genCmd(cmdinfo) +class PyOutputGenerator(OutputGenerator): + """Generate specified API interfaces in a specific style, such as a C header""" + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + # + def beginFile(self, genOpts): + OutputGenerator.beginFile(self, genOpts) + # + # Dictionaries are keyed by the name of the entity (e.g. + # self.structs is keyed by structure names). Values are + # the names of related entities (e.g. structs contain + # a list of type names of members, enums contain a list + # of enumerants belong to the enumerated type, etc.), or + # just None if there are no directly related entities. + # + # Collect the mappings, then emit the Python script in endFile + self.basetypes = {} + self.consts = {} + self.enums = {} + self.flags = {} + self.funcpointers = {} + self.protos = {} + self.structs = {} + self.handles = {} + self.defines = {} + # Dictionary containing the type of a type name + # (e.g. the string name of the dictionary with its contents). + self.typeCategory = {} + self.mapDict = {} + def endFile(self): + # Print out all the dictionaries as Python strings. + # Could just print(dict) but that's not human-readable + dicts = [ [ self.basetypes, 'basetypes' ], + [ self.consts, 'consts' ], + [ self.enums, 'enums' ], + [ self.flags, 'flags' ], + [ self.funcpointers, 'funcpointers' ], + [ self.protos, 'protos' ], + [ self.structs, 'structs' ], + [ self.handles, 'handles' ], + [ self.defines, 'defines' ], + [ self.typeCategory, 'typeCategory' ] ] + for (dict, name) in dicts: + write(name + ' = {}', file=self.outFile) + for key in sorted(dict.keys()): + write(name + '[' + enquote(key) + '] = ', dict[key], file=self.outFile) + + # Dictionary containing the relationships of a type + # (e.g. a dictionary with each related type as keys). + write('mapDict = {}', file=self.outFile) + + # Could just print(self.mapDict), but prefer something human-readable + for baseType in sorted(self.mapDict.keys()): + write('mapDict[' + enquote(baseType) + '] = ', self.mapDict[baseType], file=self.outFile) + + OutputGenerator.endFile(self) + # Add a string entry to the dictionary, quoting it so it gets printed + # out correctly in self.endFile() + def addName(self, dict, name, value): + dict[name] = enquote(value) + # Add a mapping between types to mapDict. Only include Vulkan types, + # so we don't end up with a lot of useless uint32_t and void types. + def addMapping(self, baseType, refType): + if (not apiName(baseType) or not apiName(refType)): + self.logMsg('diag', 'PyOutputGenerator::addMapping: IGNORE map from', baseType, '<->', refType) + return + else: + self.logMsg('diag', 'PyOutputGenerator::addMapping: map from', baseType, '<->', refType) + + if (not baseType in self.mapDict.keys()): + baseDict = {} + self.mapDict[baseType] = baseDict + else: + baseDict = self.mapDict[baseType] + if (not refType in self.mapDict.keys()): + refDict = {} + self.mapDict[refType] = refDict + else: + refDict = self.mapDict[refType] + + baseDict[refType] = None + refDict[baseType] = None + # + # Type generation + # For 'struct' or 'union' types, defer to genStruct() to + # add to the dictionary. + # For 'bitmask' types, add the type name to the 'flags' dictionary, + # with the value being the corresponding 'enums' name defining + # the acceptable flag bits. + # For 'enum' types, add the type name to the 'enums' dictionary, + # with the value being '@STOPHERE@' (because this case seems + # never to happen). + # For 'funcpointer' types, add the type name to the 'funcpointers' + # dictionary. + # For 'handle' and 'define' types, add the handle or #define name + # to the 'struct' dictionary, because that's how the spec sources + # tag these types even though they aren't structs. + def genType(self, typeinfo, name): + OutputGenerator.genType(self, typeinfo, name) + typeElem = typeinfo.elem + # If the type is a struct type, traverse the imbedded tags + # generating a structure. Otherwise, emit the tag text. + category = typeElem.get('category') + + # Add a typeCategory{} entry for the category of this type. + self.addName(self.typeCategory, name, category) + + if (category == 'struct' or category == 'union'): + self.genStruct(typeinfo, name) + else: + # Extract the type name + # (from self.genOpts). Copy other text through unchanged. + # If the resulting text is an empty string, don't emit it. + count = len(noneStr(typeElem.text)) + for elem in typeElem: + count += len(noneStr(elem.text)) + len(noneStr(elem.tail)) + if (count > 0): + if (category == 'bitmask'): + requiredEnum = typeElem.get('requires') + self.addName(self.flags, name, requiredEnum) + + # This happens when the Flags type is defined, but no + # FlagBits are defined yet. + if (requiredEnum != None): + self.addMapping(name, requiredEnum) + elif (category == 'enum'): + # This case does not seem to come up. It nominally would + # result from + # , + # but the output generator doesn't emit them directly. + self.logMsg('warn', 'PyOutputGenerator::genType: invalid \'enum\' category for name:', name) + elif (category == 'funcpointer'): + self.funcpointers[name] = None + elif (category == 'handle'): + self.handles[name] = None + elif (category == 'define'): + self.defines[name] = None + elif (category == 'basetype'): + # Don't add an entry for base types that aren't Vulkan types + # e.g. VkBool32 gets one, uint32_t does not + if (apiName(name)): + self.basetypes[name] = None + self.addName(self.typeCategory, name, 'basetype') + else: + self.logMsg('warn', 'PyOutputGenerator::genType: unprocessed type:', name, 'category:', category) + else: + self.logMsg('warn', 'PyOutputGenerator::genType: unprocessed type:', name) + # + # Struct (e.g. C "struct" type) generation. + # + # Add the struct name to the 'structs' dictionary, with the + # value being an ordered list of the struct member names. + def genStruct(self, typeinfo, typeName): + OutputGenerator.genStruct(self, typeinfo, typeName) + + members = [member.text for member in typeinfo.elem.findall('.//member/name')] + self.structs[typeName] = members + memberTypes = [member.text for member in typeinfo.elem.findall('.//member/type')] + for type in memberTypes: + self.addMapping(typeName, type) + # + # Group (e.g. C "enum" type) generation. + # These are concatenated together with other types. + # + # Add the enum type name to the 'enums' dictionary, with + # the value being an ordered list of the enumerant names. + # Add each enumerant name to the 'consts' dictionary, with + # the value being the enum type the enumerant is part of. + def genGroup(self, groupinfo, groupName): + OutputGenerator.genGroup(self, groupinfo, groupName) + groupElem = groupinfo.elem + + # Loop over the nested 'enum' tags. + enumerants = [elem.get('name') for elem in groupElem.findall('enum')] + for name in enumerants: + self.addName(self.consts, name, groupName) + self.enums[groupName] = enumerants + # Enumerant generation (compile-time constants) + # + # Add the constant name to the 'consts' dictionary, with the + # value being None to indicate that the constant isn't + # an enumeration value. + def genEnum(self, enuminfo, name): + OutputGenerator.genEnum(self, enuminfo, name) + + # Add a typeCategory{} entry for the category of this type. + self.addName(self.typeCategory, name, 'consts') + + self.consts[name] = None + # + # Command generation + # + # Add the command name to the 'protos' dictionary, with the + # value being an ordered list of the parameter names. + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + + # Add a typeCategory{} entry for the category of this type. + self.addName(self.typeCategory, name, 'protos') + + params = [param.text for param in cmdinfo.elem.findall('param/name')] + self.protos[name] = params + paramTypes = [param.text for param in cmdinfo.elem.findall('param/type')] + for type in paramTypes: + self.addMapping(name, type) diff --git a/src/spec/readme.tex b/src/spec/readme.tex index 83a141353e..377d7b1ade 100644 --- a/src/spec/readme.tex +++ b/src/spec/readme.tex @@ -467,7 +467,7 @@ \subsubsection{Structure types - \attr{category} "struct" or "union"} \subsubsection{All other types} -If the \attr{category} attribute is one of \code{basetype}, \code{bitfield}, +If the \attr{category} attribute is one of \code{basetype}, \code{bitmask}, \code{define}, \code{funcpointer}, \code{group}, \code{handle} or \code{include}, or is not specified, \tag{type} contains text which is legal C code for a type declaration. It may also contain embedded tags: @@ -1201,7 +1201,7 @@ \subsection{Examples of Extension Enumerants} + name="VK_KHR_EXTENSION_BIT"/> @@ -1214,7 +1214,7 @@ \subsection{Examples of Extension Enumerants} >::', file=fp) + write('endif::doctype-manpage[]', file=fp) + write('ifdef::doctype-manpage[]', file=fp) + write('On success, this command returns::', file=fp) + write('endif::doctype-manpage[]', file=fp) + write(successcodes, file=fp) + if errorcodes is not None: + write('ifndef::doctype-manpage[]', file=fp) + write('<>::', file=fp) + write('endif::doctype-manpage[]', file=fp) + write('ifdef::doctype-manpage[]', file=fp) + write('On failure, this command returns::', file=fp) + write('endif::doctype-manpage[]', file=fp) + write(errorcodes, file=fp) + write('ifndef::doctype-manpage[]', file=fp) + write('*' * 80, file=fp) + write('endif::doctype-manpage[]', file=fp) + write('', file=fp) + + fp.close() + + # + # Check if the parameter passed in is a pointer + def paramIsPointer(self, param): + ispointer = False + paramtype = param.find('type') + if paramtype.tail is not None and '*' in paramtype.tail: + ispointer = True + + return ispointer + + # + # Check if the parameter passed in is a static array + def paramIsStaticArray(self, param): + if param.find('name').tail is not None: + if param.find('name').tail[0] == '[': + return True + + # + # Get the length of a parameter that's been identified as a static array + def staticArrayLength(self, param): + paramname = param.find('name') + paramenumsize = param.find('enum') + + if paramenumsize is not None: + return paramenumsize.text + else: + return paramname.tail[1:-1] + + # + # Check if the parameter passed in is a pointer to an array + def paramIsArray(self, param): + return param.attrib.get('len') is not None + + # + # Get the parent of a handle object + def getHandleParent(self, typename): + types = self.registry.tree.findall("types/type") + for elem in types: + if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename: + return elem.attrib.get('parent') + + # + # Check if a parent object is dispatchable or not + def isHandleTypeDispatchable(self, handlename): + handle = self.registry.tree.find("types/type/[name='" + handlename + "'][@category='handle']") + if handle is not None and handle.find('type').text == 'VK_DEFINE_HANDLE': + return True + else: + return False + + def isHandleOptional(self, param, params): + + # See if the handle is optional + isOptional = False + + # Simple, if it's optional, return true + if param.attrib.get('optional') is not None: + return True + + # If no validity is being generated, it usually means that validity is complex and not absolute, so let's say yes. + if param.attrib.get('noautovalidity') is not None: + return True + + # If the parameter is an array and we haven't already returned, find out if any of the len parameters are optional + if self.paramIsArray(param): + lengths = param.attrib.get('len').split(',') + for length in lengths: + if (length) != 'null-terminated' and (length) != '1': + for otherparam in params: + if otherparam.find('name').text == length: + if otherparam.attrib.get('optional') is not None: + return True + + return False + # + # Get the category of a type + def getTypeCategory(self, typename): + types = self.registry.tree.findall("types/type") + for elem in types: + if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename: + return elem.attrib.get('category') + + # + # Make a chunk of text for the end of a parameter if it is an array + def makeAsciiDocPreChunk(self, param, params): + paramname = param.find('name') + paramtype = param.find('type') + + # General pre-amble. Check optionality and add stuff. + asciidoc = '* ' + + if self.paramIsStaticArray(param): + asciidoc += 'Any given element of ' + + elif self.paramIsArray(param): + lengths = param.attrib.get('len').split(',') + + # Find all the parameters that are called out as optional, so we can document that they might be zero, and the array may be ignored + optionallengths = [] + for length in lengths: + if (length) != 'null-terminated' and (length) != '1': + for otherparam in params: + if otherparam.find('name').text == length: + if otherparam.attrib.get('optional') is not None: + if self.paramIsPointer(otherparam): + optionallengths.append('the value referenced by ' + self.makeParameterName(length)) + else: + optionallengths.append(self.makeParameterName(length)) + + # Document that these arrays may be ignored if any of the length values are 0 + if len(optionallengths) != 0 or param.attrib.get('optional') is not None: + asciidoc += 'If ' + + + if len(optionallengths) != 0: + if len(optionallengths) == 1: + + asciidoc += optionallengths[0] + asciidoc += ' is ' + + else: + asciidoc += ' or '.join(optionallengths) + asciidoc += ' are ' + + asciidoc += 'not `0`, ' + + if len(optionallengths) != 0 and param.attrib.get('optional') is not None: + asciidoc += 'and ' + + if param.attrib.get('optional') is not None: + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' is not `NULL`, ' + + elif param.attrib.get('optional') is not None: + # Don't generate this stub for bitflags + if self.getTypeCategory(paramtype.text) != 'bitmask': + if param.attrib.get('optional').split(',')[0] == 'true': + asciidoc += 'If ' + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' is not ' + if self.paramIsArray(param) or self.paramIsPointer(param) or self.isHandleTypeDispatchable(paramtype.text): + asciidoc += '`NULL`' + elif self.getTypeCategory(paramtype.text) == 'handle': + asciidoc += 'dlink:VK_NULL_HANDLE' + else: + asciidoc += '`0`' + + asciidoc += ', ' + + return asciidoc + + # + # Make the generic asciidoc line chunk portion used for all parameters. + # May return an empty string if nothing to validate. + def createValidationLineForParameterIntroChunk(self, param, params, typetext): + asciidoc = '' + paramname = param.find('name') + paramtype = param.find('type') + + asciidoc += self.makeAsciiDocPreChunk(param, params) + + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' must: be ' + + if self.paramIsArray(param): + # Arrays. These are hard to get right, apparently + + lengths = param.attrib.get('len').split(',') + + if (lengths[0]) == 'null-terminated': + asciidoc += 'a null-terminated ' + elif (lengths[0]) == '1': + asciidoc += 'a pointer to ' + else: + asciidoc += 'a pointer to an array of ' + + # Handle equations, which are currently denoted with latex + if 'latexmath:' in lengths[0]: + asciidoc += lengths[0] + else: + asciidoc += self.makeParameterName(lengths[0]) + asciidoc += ' ' + + for length in lengths[1:]: + if (length) == 'null-terminated': # This should always be the last thing. If it ever isn't for some bizarre reason, then this will need some massaging. + asciidoc += 'null-terminated ' + elif (length) == '1': + asciidoc += 'pointers to ' + else: + asciidoc += 'pointers to arrays of ' + # Handle equations, which are currently denoted with latex + if 'latex:' in length: + asciidoc += length + else: + asciidoc += self.makeParameterName(length) + asciidoc += ' ' + + # Void pointers don't actually point at anything - remove the word "to" + if paramtype.text == 'void': + if lengths[-1] == '1': + if len(lengths) > 1: + asciidoc = asciidoc[:-5] # Take care of the extra s added by the post array chunk function. #HACK# + else: + asciidoc = asciidoc[:-4] + else: + # An array of void values is a byte array. + asciidoc += 'byte' + + elif paramtype.text == 'char': + # A null terminated array of chars is a string + if lengths[-1] == 'null-terminated': + asciidoc += 'string' + else: + # Else it's just a bunch of chars + asciidoc += 'char value' + elif param.text is not None: + # If a value is "const" that means it won't get modified, so it must be valid going into the function. + if 'const' in param.text: + typecategory = self.getTypeCategory(paramtype.text) + if (typecategory != 'struct' and typecategory != 'union' and typecategory != 'basetype' and typecategory is not None) or not self.isStructAlwaysValid(paramtype.text): + asciidoc += 'valid ' + + asciidoc += typetext + + # pluralize + if len(lengths) > 1 or (lengths[0] != '1' and lengths[0] != 'null-terminated'): + asciidoc += 's' + + elif self.paramIsPointer(param): + # Handle pointers - which are really special case arrays (i.e. they don't have a length) + pointercount = paramtype.tail.count('*') + + # Could be multi-level pointers (e.g. ppData - pointer to a pointer). Handle that. + for i in range(0, pointercount): + asciidoc += 'a pointer to ' + + if paramtype.text == 'void': + # If there's only one pointer, it's optional, and it doesn't point at anything in particular - we don't need any language. + if pointercount == 1 and param.attrib.get('optional') is not None: + return '' # early return + else: + # Pointer to nothing in particular - delete the " to " portion + asciidoc = asciidoc[:-4] + else: + # Add an article for English semantic win + asciidoc += 'a ' + + # If a value is "const" that means it won't get modified, so it must be valid going into the function. + if param.text is not None and paramtype.text != 'void': + if 'const' in param.text: + asciidoc += 'valid ' + + asciidoc += typetext + + else: + # Non-pointer, non-optional things must be valid + asciidoc += 'a valid ' + asciidoc += typetext + + if asciidoc != '': + asciidoc += '\n' + + # Add additional line for non-optional bitmasks + if self.getTypeCategory(paramtype.text) == 'bitmask': + if param.attrib.get('optional') is None: + asciidoc += '* ' + if self.paramIsArray(param): + asciidoc += 'Each element of ' + asciidoc += 'pname:' + asciidoc += paramname.text + asciidoc += ' mustnot: be `0`' + asciidoc += '\n' + + return asciidoc + + def makeAsciiDocLineForParameter(self, param, params, typetext): + if param.attrib.get('noautovalidity') is not None: + return '' + asciidoc = self.createValidationLineForParameterIntroChunk(param, params, typetext) + + return asciidoc + + # Try to do check if a structure is always considered valid (i.e. there's no rules to its acceptance) + def isStructAlwaysValid(self, structname): + + struct = self.registry.tree.find("types/type[@name='" + structname + "']") + + params = struct.findall('member') + validity = struct.find('validity') + + if validity is not None: + return False + + for param in params: + paramname = param.find('name') + paramtype = param.find('type') + typecategory = self.getTypeCategory(paramtype.text) + + if paramname.text == 'pNext': + return False + + if paramname.text == 'sType': + return False + + if paramtype.text == 'void' or paramtype.text == 'char' or self.paramIsArray(param) or self.paramIsPointer(param): + if self.makeAsciiDocLineForParameter(param, params, '') != '': + return False + elif typecategory == 'handle' or typecategory == 'enum' or typecategory == 'bitmask' or param.attrib.get('returnedonly') == 'true': + return False + elif typecategory == 'struct' or typecategory == 'union': + if self.isStructAlwaysValid(paramtype.text) is False: + return False + + return True + + # + # Make an entire asciidoc line for a given parameter + def createValidationLineForParameter(self, param, params, typecategory): + asciidoc = '' + paramname = param.find('name') + paramtype = param.find('type') + + if paramtype.text == 'void' or paramtype.text == 'char': + # Chars and void are special cases - needs care inside the generator functions + # A null-terminated char array is a string, else it's chars. + # An array of void values is a byte array, a void pointer is just a pointer to nothing in particular + asciidoc += self.makeAsciiDocLineForParameter(param, params, '') + elif typecategory == 'bitmask': + bitsname = paramtype.text.replace('Flags', 'FlagBits') + if self.registry.tree.find("enums[@name='" + bitsname + "']") is None: + asciidoc += '* ' + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' must: be `0`' + asciidoc += '\n' + else: + if self.paramIsArray(param): + asciidoc += self.makeAsciiDocLineForParameter(param, params, 'combinations of ' + self.makeEnumerationName(bitsname) + ' value') + else: + asciidoc += self.makeAsciiDocLineForParameter(param, params, 'combination of ' + self.makeEnumerationName(bitsname) + ' values') + elif typecategory == 'handle': + asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' handle') + elif typecategory == 'enum': + asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeEnumerationName(paramtype.text) + ' value') + elif typecategory == 'struct': + if (self.paramIsArray(param) or self.paramIsPointer(param)) or not self.isStructAlwaysValid(paramtype.text): + asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' structure') + elif typecategory == 'union': + if (self.paramIsArray(param) or self.paramIsPointer(param)) or not self.isStructAlwaysValid(paramtype.text): + asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeStructName(paramtype.text) + ' union') + elif self.paramIsArray(param) or self.paramIsPointer(param): + asciidoc += self.makeAsciiDocLineForParameter(param, params, self.makeBaseTypeName(paramtype.text) + ' value') + + return asciidoc + + # + # Make an asciidoc validity entry for a handle's parent object + def makeAsciiDocHandleParent(self, param, params): + asciidoc = '' + paramname = param.find('name') + paramtype = param.find('type') + + # Deal with handle parents + handleparent = self.getHandleParent(paramtype.text) + if handleparent is not None: + parentreference = None + for otherparam in params: + if otherparam.find('type').text == handleparent: + parentreference = otherparam.find('name').text + if parentreference is not None: + asciidoc += '* ' + + if self.isHandleOptional(param, params): + if self.paramIsArray(param): + asciidoc += 'Each element of ' + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' that is a valid handle' + else: + asciidoc += 'If ' + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' is a valid handle, it' + else: + if self.paramIsArray(param): + asciidoc += 'Each element of ' + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' must: have been created, allocated or retrieved from ' + asciidoc += self.makeParameterName(parentreference) + + asciidoc += '\n' + return asciidoc + + # + # Generate an asciidoc validity line for the sType value of a struct + def makeStructureType(self, blockname, param): + asciidoc = '* ' + paramname = param.find('name') + paramtype = param.find('type') + + asciidoc += self.makeParameterName(paramname.text) + asciidoc += ' must: be ' + + structuretype = '' + for elem in re.findall(r'(([A-Z][a-z]+)|([A-Z][A-Z]+))', blockname): + if elem[0] == 'Vk': + structuretype += 'VK_STRUCTURE_TYPE_' + else: + structuretype += elem[0].upper() + structuretype += '_' + + asciidoc += self.makeEnumerantName(structuretype[:-1]) + asciidoc += '\n' + + return asciidoc + + # + # Generate an asciidoc validity line for the pNext value of a struct + def makeStructureExtensionPointer(self, param): + asciidoc = '* ' + paramname = param.find('name') + paramtype = param.find('type') + + asciidoc += self.makeParameterName(paramname.text) + + validextensionstructs = param.attrib.get('validextensionstructs') + asciidoc += ' must: be `NULL`' + if validextensionstructs is not None: + extensionstructs = [] + # Check each structure name and skip it if not required by the + # generator. This allows tagging extension structs in the XML + # that are only included in validity when needed for the spec + # being targeted. + for struct in validextensionstructs.split(','): + # Unpleasantly breaks encapsulation. Should be a method in the registry class + type = self.registry.lookupElementInfo(struct, self.registry.typedict) + if (type == None): + self.logMsg('warn', 'makeStructureExtensionPointer: struct', struct, 'is in a validextensionstructs= attribute but is not in the registry') + elif (type.required): + extensionstructs.append('slink:' + struct) + else: + self.logMsg('diag', 'makeStructureExtensionPointer: struct', struct, 'IS NOT required') + if len(extensionstructs) > 0: + asciidoc += ', or a pointer to a valid instance of ' + if len(extensionstructs) == 1: + asciidoc += extensionstructs[0] + else: + asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1] + + asciidoc += '\n' + + return asciidoc + + # + # Generate all the valid usage information for a given struct or command + def makeValidUsageStatements(self, cmd, blockname, params, usages): + # Start the asciidoc block for this + asciidoc = '' + + handles = [] + anyparentedhandlesoptional = False + parentdictionary = {} + arraylengths = set() + for param in params: + paramname = param.find('name') + paramtype = param.find('type') + + # Get the type's category + typecategory = self.getTypeCategory(paramtype.text) + + # Generate language to independently validate a parameter + if paramtype.text == 'VkStructureType' and paramname.text == 'sType': + asciidoc += self.makeStructureType(blockname, param) + elif paramtype.text == 'void' and paramname.text == 'pNext': + asciidoc += self.makeStructureExtensionPointer(param) + else: + asciidoc += self.createValidationLineForParameter(param, params, typecategory) + + # Ensure that any parenting is properly validated, and list that a handle was found + if typecategory == 'handle': + # Don't detect a parent for return values! + if not self.paramIsPointer(param) or (param.text is not None and 'const' in param.text): + parent = self.getHandleParent(paramtype.text) + if parent is not None: + handles.append(param) + + # If any param is optional, it affects the output + if self.isHandleOptional(param, params): + anyparentedhandlesoptional = True + + # Find the first dispatchable parent + ancestor = parent + while ancestor is not None and not self.isHandleTypeDispatchable(ancestor): + ancestor = self.getHandleParent(ancestor) + + # If one was found, add this parameter to the parent dictionary + if ancestor is not None: + if ancestor not in parentdictionary: + parentdictionary[ancestor] = [] + + if self.paramIsArray(param): + parentdictionary[ancestor].append('the elements of ' + self.makeParameterName(paramname.text)) + else: + parentdictionary[ancestor].append(self.makeParameterName(paramname.text)) + + # Get the array length for this parameter + arraylength = param.attrib.get('len') + if arraylength is not None: + for onelength in arraylength.split(','): + arraylengths.add(onelength) + + # For any vkQueue* functions, there might be queue type data + if 'vkQueue' in blockname: + # The queue type must be valid + queuetypes = cmd.attrib.get('queues') + if queuetypes is not None: + queuebits = [] + for queuetype in re.findall(r'([^,]+)', queuetypes): + queuebits.append(queuetype.replace('_',' ')) + + asciidoc += '* ' + asciidoc += 'The pname:queue must: support ' + if len(queuebits) == 1: + asciidoc += queuebits[0] + else: + asciidoc += (', ').join(queuebits[:-1]) + asciidoc += ' or ' + asciidoc += queuebits[-1] + asciidoc += ' operations' + asciidoc += '\n' + + if 'vkCmd' in blockname: + # The commandBuffer parameter must be being recorded + asciidoc += '* ' + asciidoc += 'pname:commandBuffer must: be in the recording state' + asciidoc += '\n' + + # The queue type must be valid + queuetypes = cmd.attrib.get('queues') + queuebits = [] + for queuetype in re.findall(r'([^,]+)', queuetypes): + queuebits.append(queuetype.replace('_',' ')) + + asciidoc += '* ' + asciidoc += 'The sname:VkCommandPool that pname:commandBuffer was allocated from must: support ' + if len(queuebits) == 1: + asciidoc += queuebits[0] + else: + asciidoc += (', ').join(queuebits[:-1]) + asciidoc += ' or ' + asciidoc += queuebits[-1] + asciidoc += ' operations' + asciidoc += '\n' + + # Must be called inside/outside a renderpass appropriately + renderpass = cmd.attrib.get('renderpass') + + if renderpass != 'both': + asciidoc += '* This command must: only be called ' + asciidoc += renderpass + asciidoc += ' of a render pass instance' + asciidoc += '\n' + + # Must be in the right level command buffer + cmdbufferlevel = cmd.attrib.get('cmdbufferlevel') + + if cmdbufferlevel != 'primary,secondary': + asciidoc += '* pname:commandBuffer must: be a ' + asciidoc += cmdbufferlevel + asciidoc += ' sname:VkCommandBuffer' + asciidoc += '\n' + + # Any non-optional arraylengths should specify they must be greater than 0 + for param in params: + paramname = param.find('name') + + for arraylength in arraylengths: + if paramname.text == arraylength and param.attrib.get('optional') is None: + # Get all the array dependencies + arrays = cmd.findall("param/[@len='" + arraylength + "'][@optional='true']") + + # Get all the optional array dependencies, including those not generating validity for some reason + optionalarrays = cmd.findall("param/[@len='" + arraylength + "'][@optional='true']") + optionalarrays.extend(cmd.findall("param/[@len='" + arraylength + "'][@noautovalidity='true']")) + + asciidoc += '* ' + + # Allow lengths to be arbitrary if all their dependents are optional + if len(optionalarrays) == len(arrays) and len(optionalarrays) != 0: + asciidoc += 'If ' + if len(optionalarrays) > 1: + asciidoc += 'any of ' + + for array in optionalarrays[:-1]: + asciidoc += self.makeParameterName(optionalarrays.find('name').text) + asciidoc += ', ' + + if len(optionalarrays) > 1: + asciidoc += 'and ' + asciidoc += self.makeParameterName(optionalarrays[-1].find('name').text) + asciidoc += ' are ' + else: + asciidoc += self.makeParameterName(optionalarrays[-1].find('name').text) + asciidoc += ' is ' + + asciidoc += 'not `NULL`, ' + + if self.paramIsPointer(param): + asciidoc += 'the value referenced by ' + + elif self.paramIsPointer(param): + asciidoc += 'The value referenced by ' + + asciidoc += self.makeParameterName(arraylength) + asciidoc += ' must: be greater than `0`' + asciidoc += '\n' + + # Find the parents of all objects referenced in this command + for param in handles: + asciidoc += self.makeAsciiDocHandleParent(param, params) + + # Find the common ancestors of objects + noancestorscount = 0 + while noancestorscount < len(parentdictionary): + noancestorscount = 0 + oldparentdictionary = parentdictionary.copy() + for parent in oldparentdictionary.items(): + ancestor = self.getHandleParent(parent[0]) + + while ancestor is not None and ancestor not in parentdictionary: + ancestor = self.getHandleParent(ancestor) + + if ancestor is not None: + parentdictionary[ancestor] += parentdictionary.pop(parent[0]) + else: + # No ancestors possible - so count it up + noancestorscount += 1 + + # Add validation language about common ancestors + for parent in parentdictionary.items(): + if len(parent[1]) > 1: + parentlanguage = '* ' + + parentlanguage += 'Each of ' + parentlanguage += ", ".join(parent[1][:-1]) + parentlanguage += ' and ' + parentlanguage += parent[1][-1] + if anyparentedhandlesoptional is True: + parentlanguage += ' that are valid handles' + parentlanguage += ' must: have been created, allocated or retrieved from the same ' + parentlanguage += self.makeStructName(parent[0]) + parentlanguage += '\n' + + # Capitalize and add to the main language + asciidoc += parentlanguage + + # Add in any plain-text validation language that should be added + for usage in usages: + asciidoc += '* ' + asciidoc += usage + asciidoc += '\n' + + # In case there's nothing to report, return None + if asciidoc == '': + return None + # Delimit the asciidoc block + return asciidoc + + def makeThreadSafetyBlock(self, cmd, paramtext): + """Generate C function pointer typedef for Element""" + paramdecl = '' + + # For any vkCmd* functions, the commandBuffer parameter must be being recorded + if cmd.find('proto/name') is not None and 'vkCmd' in cmd.find('proto/name'): + paramdecl += '* ' + paramdecl += 'The sname:VkCommandPool that pname:commandBuffer was created from' + paramdecl += '\n' + + # Find and add any parameters that are thread unsafe + explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]") + if (explicitexternsyncparams is not None): + for param in explicitexternsyncparams: + externsyncattribs = param.attrib.get('externsync') + paramname = param.find('name') + for externsyncattrib in externsyncattribs.split(','): + paramdecl += '* ' + paramdecl += 'Host access to ' + if externsyncattrib == 'true': + if self.paramIsArray(param): + paramdecl += 'each member of ' + self.makeParameterName(paramname.text) + elif self.paramIsPointer(param): + paramdecl += 'the object referenced by ' + self.makeParameterName(paramname.text) + else: + paramdecl += self.makeParameterName(paramname.text) + else: + paramdecl += 'pname:' + paramdecl += externsyncattrib + paramdecl += ' must: be externally synchronized\n' + + # Find and add any "implicit" parameters that are thread unsafe + implicitexternsyncparams = cmd.find('implicitexternsyncparams') + if (implicitexternsyncparams is not None): + for elem in implicitexternsyncparams: + paramdecl += '* ' + paramdecl += 'Host access to ' + paramdecl += elem.text + paramdecl += ' must: be externally synchronized\n' + + if (paramdecl == ''): + return None + else: + return paramdecl + + def makeCommandPropertiesTableEntry(self, cmd, name): + + if 'vkCmd' in name: + # Must be called inside/outside a renderpass appropriately + cmdbufferlevel = cmd.attrib.get('cmdbufferlevel') + cmdbufferlevel = (' + \n').join(cmdbufferlevel.title().split(',')) + + renderpass = cmd.attrib.get('renderpass') + renderpass = renderpass.capitalize() + + queues = cmd.attrib.get('queues') + queues = (' + \n').join(queues.upper().split(',')) + + return '|' + cmdbufferlevel + '|' + renderpass + '|' + queues + elif 'vkQueue' in name: + # Must be called inside/outside a renderpass appropriately + + queues = cmd.attrib.get('queues') + if queues is None: + queues = 'Any' + else: + queues = (' + \n').join(queues.upper().split(',')) + + return '|-|-|' + queues + + return None + + def makeSuccessCodes(self, cmd, name): + + successcodes = cmd.attrib.get('successcodes') + if successcodes is not None: + + successcodeentry = '' + successcodes = successcodes.split(',') + return '* ename:' + '\n* ename:'.join(successcodes) + + return None + + def makeErrorCodes(self, cmd, name): + + errorcodes = cmd.attrib.get('errorcodes') + if errorcodes is not None: + + errorcodeentry = '' + errorcodes = errorcodes.split(',') + return '* ename:' + '\n* ename:'.join(errorcodes) + + return None + + # + # Command generation + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + # + # Get all the parameters + params = cmdinfo.elem.findall('param') + usageelements = cmdinfo.elem.findall('validity/usage') + usages = [] + + for usage in usageelements: + usages.append(usage.text) + for usage in cmdinfo.additionalValidity: + usages.append(usage.text) + for usage in cmdinfo.removedValidity: + usages.remove(usage.text) + + validity = self.makeValidUsageStatements(cmdinfo.elem, name, params, usages) + threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param') + commandpropertiesentry = self.makeCommandPropertiesTableEntry(cmdinfo.elem, name) + successcodes = self.makeSuccessCodes(cmdinfo.elem, name) + errorcodes = self.makeErrorCodes(cmdinfo.elem, name) + + self.writeInclude('validity/protos', name, validity, threadsafety, commandpropertiesentry, successcodes, errorcodes) + + # + # Struct Generation + def genStruct(self, typeinfo, typename): + OutputGenerator.genStruct(self, typeinfo, typename) + + # Anything that's only ever returned can't be set by the user, so shouldn't have any validity information. + if typeinfo.elem.attrib.get('returnedonly') is None: + params = typeinfo.elem.findall('member') + + usageelements = typeinfo.elem.findall('validity/usage') + usages = [] + + for usage in usageelements: + usages.append(usage.text) + for usage in typeinfo.additionalValidity: + usages.append(usage.text) + for usage in typeinfo.removedValidity: + usages.remove(usage.text) + + validity = self.makeValidUsageStatements(typeinfo.elem, typename, params, usages) + threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member') + + self.writeInclude('validity/structs', typename, validity, threadsafety, None, None, None) + else: + # Still generate files for return only structs, in case this state changes later + self.writeInclude('validity/structs', typename, None, None, None, None, None) + + # + # Type Generation + def genType(self, typeinfo, typename): + OutputGenerator.genType(self, typeinfo, typename) + + category = typeinfo.elem.get('category') + if (category == 'struct' or category == 'union'): + self.genStruct(typeinfo, typename) diff --git a/src/spec/vk.xml b/src/spec/vk.xml index fd55c620d7..d003677237 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 19 +#define VK_HEADER_VERSION 20 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -131,7 +131,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + typedef VkFlags VkFramebufferCreateFlags; typedef VkFlags VkQueryPoolCreateFlags; typedef VkFlags VkRenderPassCreateFlags; @@ -178,7 +178,7 @@ maintained in the master branch of the Khronos Vulkan Github project. typedef VkFlags VkCommandBufferUsageFlags; typedef VkFlags VkQueryPipelineStatisticFlags; typedef VkFlags VkMemoryMapFlags; - typedef VkFlags VkImageAspectFlags; + typedef VkFlags VkImageAspectFlags; typedef VkFlags VkSparseMemoryBindFlags; typedef VkFlags VkSparseImageFormatFlags; typedef VkFlags VkSubpassDescriptionFlags; @@ -534,7 +534,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkDeviceSize allocationSize uint32_t memoryTypeIndex @@ -545,7 +545,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkDeviceSize size VkDeviceSize alignment - uint32_t memoryTypeBits + uint32_t memoryTypeBits VkImageAspectFlags aspectMask @@ -604,8 +604,8 @@ maintained in the master branch of the Khronos Vulkan Github project. - VkSampler sampler - VkImageView imageView + VkSampler sampler + VkImageView imageView VkImageLayout imageLayout @@ -659,7 +659,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkBufferCreateFlags flags VkDeviceSize size VkBufferUsageFlags usage @@ -783,7 +783,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkImageCreateFlags flags VkImageType imageType VkFormat format @@ -894,8 +894,8 @@ maintained in the master branch of the Khronos Vulkan Github project. VkDeviceSize memoryOffset VkSparseMemoryBindFlagsflags - If pname:memory is not sname:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <<resources-association>> - If pname:memory is not sname:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set + If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <<resources-association>> + If pname:memory is not dlink:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set pname:size must: be greater than `0` pname:resourceOffset must: be less than the size of the resource pname:size must: be less than or equal to the size of the resource minus pname:resourceOffset @@ -1162,11 +1162,11 @@ maintained in the master branch of the Khronos Vulkan Github project. VkPipeline basePipelineHandle int32_t basePipelineIndex - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be sname:VK_NULL_HANDLE + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a compute sname:VkPipeline + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, it must: be a valid handle to a compute sname:VkPipeline The pname:stage member of pname:stage must: be ename:VK_SHADER_STAGE_COMPUTE_BIT The shader code for the entry point identified by pname:stage and the rest of the state identified by this structure must: adhere to the pipeline linking rules described in the <<interfaces,Shader Interfaces>> chapter pname:layout must: be <<descriptorsets-pipelinelayout-consistency,consistent>> with all shaders specified in pname:pStages @@ -1367,11 +1367,11 @@ maintained in the master branch of the Khronos Vulkan Github project. VkPipeline basePipelineHandle int32_t basePipelineIndex - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be sname:VK_NULL_HANDLE + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle - If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1` + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle + If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline The pname:stage member of each element of pname:pStages must: be unique The pname:stage member of one element of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT The pname:stage member of any given element of pname:pStages mustnot: be ename:VK_SHADER_STAGE_COMPUTE_BIT @@ -1383,7 +1383,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If pname:pStages includes both a tessellation control shader stage and a tessellation evaluation shader stage, the shader code of at least one must: contain an code:OpExecutionMode instruction that specifies the output patch size in the pipeline If pname:pStages includes both a tessellation control shader stage and a tessellation evaluation shader stage, and the shader code of both contain an code:OpExecutionMode instruction that specifies the out patch size in the pipeline, they must: both specify the same patch size If pname:pStages includes tessellation shader stages, the pname:topology member of pname:pInputAssembly must: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - If pname:pStages includes a geometry shader stage, and doesn't include any tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <<shaders-geometry-execution, compatible>> with the primitive topology specified in pname:pInputAssembly + If pname:pStages includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <<shaders-geometry-execution, compatible>> with the primitive topology specified in pname:pInputAssembly If pname:pStages includes a geometry shader stage, and also includes tessellation shader stages, its shader code must: contain an code:OpExecutionMode instruction that specifies an input primitive type that is <<shaders-geometry-execution, compatible>> with the primitive topology that is output by the tessellation stages If pname:pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with code:PrimitiveID, then the geometry shader code must: write to a matching output variable, decorated with code:PrimitiveID, in all execution paths If pname:pStages includes a fragment shader stage, its shader code mustnot: read from any input attachment that is defined as ename:VK_ATTACHMENT_UNUSED in pname:subpass @@ -1522,7 +1522,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:renderPass member of pname:pInheritanceInfo must: be a valid sname:VkRenderPass If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:subpass member of pname:pInheritanceInfo must: be a valid subpass index within the pname:renderPass member of pname:pInheritanceInfo - If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:framebuffer member of pname:pInheritanceInfo must: be either sname:VK_NULL_HANDLE, or a valid sname:VkFramebuffer that is compatible with the pname:renderPass member of pname:pInheritanceInfo + If pname:flags contains ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, the pname:framebuffer member of pname:pInheritanceInfo must: be either dlink:VK_NULL_HANDLE, or a valid sname:VkFramebuffer that is compatible with the pname:renderPass member of pname:pInheritanceInfo @@ -1935,7 +1935,7 @@ maintained in the master branch of the Khronos Vulkan Github project. Any given element of pname:pCommandBuffers mustnot: contain commands that execute a secondary command buffer, if that secondary command buffer has been recorded in another primary command buffer after it was recorded into this sname:VkCommandBuffer Any given element of pname:pCommandBuffers must: have been created on a sname:VkCommandPool that was created for the same queue family that the calling command's pname:queue belongs to Any given element of pname:pCommandBuffers mustnot: have been created with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY - Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore + 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 If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT @@ -2120,7 +2120,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkResult* pResults 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 - Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore + 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 @@ -2157,6 +2157,35 @@ maintained in the master branch of the Khronos Vulkan Github project. const char* pMarkerName float color[4] + + VkStructureType sType + const void* pNext + VkBool32 dedicatedAllocation + + If pname:dedicatedAllocation is ename:VK_TRUE, sname:VkImageCreateInfo::pname:flags mustnot: include ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT + + + + VkStructureType sType + const void* pNext + VkBool32 dedicatedAllocation + + If pname:dedicatedAllocation is ename:VK_TRUE, sname:VkBufferCreateInfo::pname:flags mustnot: include ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, or ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT + + + + VkStructureType sType + const void* pNext + VkImage image + VkBuffer buffer + + At least one of pname:image and pname:buffer must: be sname:VK_NULL_HANDLE + If pname:image is not sname:VK_NULL_HANDLE, the image must: have been created with sname:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE + If pname:buffer is not sname:VK_NULL_HANDLE, the buffer must: have been created with sname:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE + If pname:image is not sname:VK_NULL_HANDLE, sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the sname:VkMemoryRequirements::pname:size of the image + If pname:buffer is not sname:VK_NULL_HANDLE, sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the sname:VkMemoryRequirements::pname:size of the buffer + + @@ -2781,13 +2810,13 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - + - + @@ -2800,7 +2829,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -3002,8 +3031,8 @@ maintained in the master branch of the Khronos Vulkan Github project. VkInstance instance const char* pName - If pname:instance is `NULL`, pname:pName must: be one of: fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties or fname:vkCreateInstance - If pname:instance is not `NULL`, pname:pName mustnot: be fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties or fname:vkCreateInstance + If pname:instance is `NULL`, pname:pName must: be "vkEnumerateInstanceExtensionProperties", "vkEnumerateInstanceLayerProperties", or "vkCreateInstance" + If pname:instance is not `NULL`, pname:pName mustnot: be "vkEnumerateInstanceExtensionProperties", "vkEnumerateInstanceLayerProperties", or "vkCreateInstance" @@ -3108,8 +3137,8 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkSubmitInfo* pSubmits VkFence fence - If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled - If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence must: be unsignaled + If pname:fence is not dlink:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3670,7 +3699,8 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkDescriptorSet* pDescriptorSets All submitted commands that refer to any element of pname:pDescriptorSets must: have completed execution - pname:pDescriptorSets must: be a pointer to an array of pname:descriptorSetCount sname:VkDescriptorSet handles, each element of which must: either be a valid handle or sname:VK_NULL_HANDLE + pname:pDescriptorSets must: be a pointer to an array of pname:descriptorSetCount sname:VkDescriptorSet handles, each element of which must: either be a valid handle or dlink:VK_NULL_HANDLE + Each valid handle in pname:pDescriptorSets must: have been allocated from pname:descriptorPool pname:descriptorPool must: have been created with the ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT flag @@ -3765,7 +3795,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkCommandBuffer* pCommandBuffers All elements of pname:pCommandBuffers mustnot: be pending execution - pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or sname:VK_NULL_HANDLE + pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount sname:VkCommandBuffer handles, each element of which must: either be a valid handle or dlink:VK_NULL_HANDLE @@ -3930,7 +3960,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkIndexType indexType pname:offset must: be less than the size of pname:buffer - The sum of pname:offset, and the address of the range of sname:VkDeviceMemory object that's backing pname:buffer, must: be a multiple of the type indicated by pname:indexType + The sum of pname:offset and the address of the range of sname:VkDeviceMemory object that is backing pname:buffer, must: be a multiple of the type indicated by pname:indexType pname:buffer must: have been created with the ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT flag @@ -4504,7 +4534,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the index of the subpass which the given command buffer will be executed in If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with a render pass that is compatible with the current render pass - see <<renderpass-compatibility>> - If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to sname:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the sname:VkFramebuffer used in the current render pass instance + If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the sname:VkFramebuffer used in the current render pass instance If the <<features-features-inheritedQueries,inherited queries>> feature is not enabled, pname:commandBuffer mustnot: have any queries <<queries-operation-active,active>> If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:occlusionQueryEnable set to ename:VK_TRUE If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:queryFlags having all bits set that are set for the query @@ -4669,8 +4699,8 @@ maintained in the master branch of the Khronos Vulkan Github project. VkFence fence uint32_t* pImageIndex - If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignaled - If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled + If pname:fence is not dlink:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -5220,7 +5250,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -5319,10 +5349,21 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - - + + + + + + + + + If pname:buffer was created with sname:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: have been created with sname:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to pname:buffer and pname:memoryOffset must: be zero. + If pname:buffer was not created with sname:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: not have been allocated dedicated for a specific buffer or image + If pname:image was created with sname:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: have been created with sname:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to pname:image and pname:memoryOffset must: be zero. + If pname:image was not created with sname:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: not have been allocated dedicated for a specific buffer or image + @@ -5463,5 +5504,17 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + + + + + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 14a15aea77..38affba4a8 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -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 19 +#define VK_HEADER_VERSION 20 #define VK_NULL_HANDLE 0 @@ -214,6 +214,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -3927,6 +3930,31 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( #define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" +#define VK_NV_dedicated_allocation 1 +#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" + +typedef struct VkDedicatedAllocationImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationImageCreateInfoNV; + +typedef struct VkDedicatedAllocationBufferCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationBufferCreateInfoNV; + +typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkDedicatedAllocationMemoryAllocateInfoNV; + + + #ifdef __cplusplus } #endif