mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-22 02:58:16 +00:00
Change log for February 3, 2019 Vulkan 1.1.99 spec update:
* Update release number to 99. Public Issues: * Add missing pname:pMemoryHostPointerProperties description to flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896). * Minor markup fixes (public pull request 900). * Minor update to `khronos.css` and markup fixes (originally proposed in public pull request 901, but done via an internal MR). Internal Issues: * Document restrictions on image queries for Y'CbCr formats in the <<features-formats-requiring-sampler-ycbcr-conversion>> table as well as for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo (internal issue 1361). * Correct type of the code:FragSizeEXT built-in in the <<interfaces-builtin-variables, Built-In Variables>> section (internal issue 1526). * Clean up math in the <<textures, Image Operations>> chapter by refactoring, using better naming conventions, updating diagrams to use the correct orientation, etc. (internal merge request 2968). * Fix minor typos for slink:VkImageCreateInfo and slink:VkImageStencilUsageCreateInfoEXT. * Add missing documentation for tlink:VkResolveModeFlagsKHR. * Fix extension dependency of pname:scalarBlockLayout in the <<features-features-requirements, Feature Requirements>> section. * Fix indexing math for shader binding table calculations in the <<shader-binding-table-indexing-rules, Indexing Rules>> section, and use spelling "`any-hit`" consistently. * Reconcile valid usage statement and text for sampled image layouts in slink:VkWriteDescriptorSet (https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/551). * Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations require a 64-bit integer for physical storage buffer pointers in the <<spirvenv-module-validation, Validation Rules within a Module>> section. * Update to KaTeX 10.0. New Extensions: * `VK_EXT_filter_cubic` * `VK_NV_dedicated_allocation_image_aliasing`
This commit is contained in:
parent
e666c587df
commit
b59ec03ee3
@ -7,11 +7,15 @@ spec-generate:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq gcc git python3 python3-termcolor python3-pytest ruby
|
||||
- apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx
|
||||
# Force-install an older version of i18n so the 1.5.2 version, which
|
||||
# won't work with ruby 2.1, doesn't abort the CI job when installing
|
||||
# other gems which need it.
|
||||
- gem install i18n -v 1.5.1
|
||||
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
|
||||
script:
|
||||
- ./makeAllExts QUIET= -j${nproc} -Otarget html styleguide registry manhtmlpages checkinc checklinks validusage
|
||||
# Internal self-test of the script
|
||||
# Internal self-test of the check_spec_links script
|
||||
- ( cd xml && py.test-3 )
|
||||
- mkdir -p out/checks
|
||||
- xml/check_spec_links.py --html=out/checks/problems.html > /dev/null || true
|
||||
# Breaking the build if # of errors increases. We should manually ratchet ignore_count down as errors get fixed.
|
||||
# If there are unfixable errors, add '--ignore_count #' where '#' is the
|
||||
@ -19,6 +23,8 @@ spec-generate:
|
||||
# errors" but simpler than the alternatives (running against master,
|
||||
# diff, etc)
|
||||
- xml/check_spec_links.py -Werror --ignore_count 0
|
||||
# Build the actual spec
|
||||
- ./makeAllExts QUIET= -j${nproc} -Otarget checkinc checklinks validusage html styleguide registry manhtmlpages
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
|
@ -8,6 +8,54 @@ public pull requests that have been accepted.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for February 3, 2019 Vulkan 1.1.99 spec update:
|
||||
|
||||
* Update release number to 99.
|
||||
|
||||
Public Issues:
|
||||
|
||||
* Add missing pname:pMemoryHostPointerProperties description to
|
||||
flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896).
|
||||
* Minor markup fixes (public pull request 900).
|
||||
* Minor update to `khronos.css` and markup fixes (originally proposed in
|
||||
public pull request 901, but done via an internal MR).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Document restrictions on image queries for Y'CbCr formats in the
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>> table as well as
|
||||
for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo
|
||||
(internal issue 1361).
|
||||
* Correct type of the code:FragSizeEXT built-in in the
|
||||
<<interfaces-builtin-variables, Built-In Variables>> section (internal
|
||||
issue 1526).
|
||||
* Clean up math in the <<textures, Image Operations>> chapter by
|
||||
refactoring, using better naming conventions, updating diagrams to use
|
||||
the correct orientation, etc. (internal merge request 2968).
|
||||
* Fix minor typos for slink:VkImageCreateInfo and
|
||||
slink:VkImageStencilUsageCreateInfoEXT.
|
||||
* Add missing documentation for tlink:VkResolveModeFlagsKHR.
|
||||
* Fix extension dependency of pname:scalarBlockLayout in the
|
||||
<<features-features-requirements, Feature Requirements>> section.
|
||||
* Fix indexing math for shader binding table calculations in the
|
||||
<<shader-binding-table-indexing-rules, Indexing Rules>> section, and use
|
||||
spelling "`any-hit`" consistently.
|
||||
* Reconcile valid usage statement and text for sampled image layouts in
|
||||
slink:VkWriteDescriptorSet
|
||||
(https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/551).
|
||||
* Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations
|
||||
require a 64-bit integer for physical storage buffer pointers in the
|
||||
<<spirvenv-module-validation, Validation Rules within a Module>>
|
||||
section.
|
||||
* Update to KaTeX 10.0.
|
||||
|
||||
New Extensions:
|
||||
|
||||
* `VK_EXT_filter_cubic`
|
||||
* `VK_NV_dedicated_allocation_image_aliasing`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for January 13, 2019 Vulkan 1.1.98 spec update:
|
||||
|
||||
* Update release number to 98.
|
||||
|
2
Makefile
2
Makefile
@ -115,7 +115,7 @@ VERBOSE =
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 98
|
||||
PATCHVERSION = 99
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
35
appendices/VK_EXT_filter_cubic.txt
Normal file
35
appendices/VK_EXT_filter_cubic.txt
Normal file
@ -0,0 +1,35 @@
|
||||
include::meta/VK_EXT_filter_cubic.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2019-01-24
|
||||
*Contact
|
||||
- Bill Licea-Kane, Qualcomm Technologies, Inc.
|
||||
*Contributors*::
|
||||
- Andrew Garrard, Samsung
|
||||
- Daniel Koch, NVIDIA
|
||||
- Donald Scorgie, Imagination Technologies
|
||||
- Graeme Leese, Broadcom
|
||||
- Jan-Herald Fredericksen, ARM
|
||||
- Jeff Leger, Qualcomm Technologies, Inc.
|
||||
- Tobias Hector, AMD
|
||||
- Tom Olson, ARM
|
||||
- Stuart Smith, Imagination Technologies
|
||||
|
||||
`VK_EXT_filter_cubic` extends VK_IMG_filter_cubic.
|
||||
|
||||
It documents cubic filtering of other image view types.
|
||||
It adds new structures which may be added to the pname:pNext chain of
|
||||
VkPhysicalDeviceImageFormatInfo2 and VkImageFormatProperties2 which can: be
|
||||
used to determine which image types and which image view types support cubic
|
||||
filtering.
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceImageViewImageFormatInfoEXT
|
||||
* slink:VkFilterCubicImageViewImageFormatPropertiesEXT
|
||||
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2019-01-24 (wwlk)
|
||||
- Initial version
|
0
appendices/VK_KHR_vulkan_memory_model.txt
Executable file → Normal file
0
appendices/VK_KHR_vulkan_memory_model.txt
Executable file → Normal file
48
appendices/VK_NV_dedicated_allocation_image_aliasing.txt
Normal file
48
appendices/VK_NV_dedicated_allocation_image_aliasing.txt
Normal file
@ -0,0 +1,48 @@
|
||||
include::meta/VK_NV_dedicated_allocation_image_aliasing.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2019-01-04
|
||||
*Contributors*::
|
||||
- Nuno Subtil, NVIDIA
|
||||
- Jeff Bolz, NVIDIA
|
||||
- Eric Werness, NVIDIA
|
||||
- Axel Gneiting, id Software
|
||||
|
||||
|
||||
This extension allows applications to alias images on dedicated allocations,
|
||||
subject to specific restrictions: the extent and the number of layers in the
|
||||
image being aliased must be smaller than or equal to those of the original
|
||||
image for which the allocation was created, and every other image parameter
|
||||
must match.
|
||||
|
||||
|
||||
=== New Object Types
|
||||
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkStructureType
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
|
||||
|
||||
=== New Enums
|
||||
|
||||
None.
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
|
||||
|
||||
=== New Functions
|
||||
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2019-01-04 (Nuno Subtil)
|
||||
- Internal revisions
|
0
appendices/memorymodel.txt
Executable file → Normal file
0
appendices/memorymodel.txt
Executable file → Normal file
@ -857,11 +857,11 @@ ifdef::VK_EXT_transform_feedback[]
|
||||
endif::VK_EXT_transform_feedback[]
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
* code:RayPayloadNV storage class must: only be used in ray generation,
|
||||
any hit, closest hit or miss shaders.
|
||||
any-hit, closest hit or miss shaders.
|
||||
* code:IncomingRayPayloadNV storage class must: only be used in closest
|
||||
hit, any hit, or miss shaders.
|
||||
hit, any-hit, or miss shaders.
|
||||
* code:HitAttributeNV storage class must: only be used in intersection,
|
||||
any hit, or closest hit shaders.
|
||||
any-hit, or closest hit shaders.
|
||||
* code:CallableDataNV storage class must: only be used in ray generation,
|
||||
closest hit, miss, and callable shaders.
|
||||
* code:IncomingCallableDataNV storage class must only be used in callable
|
||||
@ -889,6 +889,8 @@ ifdef::VK_EXT_buffer_device_address[]
|
||||
** Any access chain instruction that accesses into a code:RowMajor matrix
|
||||
must: only be used as the code:Pointer operand to code:OpLoad or
|
||||
code:OpStore.
|
||||
** code:OpConvertUToPtr and code:OpConvertPtrToU must: use an integer type
|
||||
whose code:Width is 64.
|
||||
endif::VK_EXT_buffer_device_address[]
|
||||
|
||||
|
||||
|
@ -139,15 +139,15 @@ include::../../api/structs/VkCmdProcessCommandsInfoNVX.txt[]
|
||||
If pname:targetCommandBuffer is provided, the pname:maxSequencesCount
|
||||
must: not exceed the reservation's pname:maxSequencesCount
|
||||
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338]]
|
||||
If pname:sequencesCountBuffer is used, its usage flag must: have
|
||||
the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
If pname:sequencesCountBuffer is used, its usage flag must: have the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339]]
|
||||
If pname:sequencesCountBuffer is used, pname:sequencesCountOffset must:
|
||||
be aligned to
|
||||
sname:VkDeviceGeneratedCommandsLimitsNVX::pname:minSequenceCountBufferOffsetAlignment
|
||||
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340]]
|
||||
If pname:sequencesIndexBuffer is used, its usage flag must: have
|
||||
the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
If pname:sequencesIndexBuffer is used, its usage flag must: have the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341]]
|
||||
If pname:sequencesIndexBuffer is used, pname:sequencesIndexOffset must:
|
||||
be aligned to
|
||||
|
@ -143,7 +143,7 @@ include::../../api/structs/VkRayTracingShaderGroupCreateInfoNV.txt[]
|
||||
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or
|
||||
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV and
|
||||
ename:VK_SHADER_UNUSED_NV otherwise.
|
||||
* pname:anyHitShader is the optional index of the any hit shader from
|
||||
* pname:anyHitShader is the optional index of the any-hit shader from
|
||||
sname:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group if
|
||||
the shader group has pname:type of
|
||||
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or
|
||||
|
@ -55,13 +55,13 @@ forcibly terminated.
|
||||
|
||||
The any-hit shader is executed after the intersection shader reports an
|
||||
intersection that lies within the current [eq]#[tmin,tmax]# of the ray.
|
||||
The main use of any hit shaders is to programmatically decide whether or not
|
||||
The main use of any-hit shaders is to programmatically decide whether or not
|
||||
an intersection will be accepted.
|
||||
The intersection will be accepted unless the shader calls the
|
||||
code:OpIgnoreIntersectionNV instruction.
|
||||
|
||||
[[shaders-any-hit-execution]]
|
||||
=== Any Hit Shader Execution
|
||||
=== Any-Hit Shader Execution
|
||||
|
||||
The order in which intersections are found along a ray, and therefore the
|
||||
order in which any-hit shaders are executed, is unspecified.
|
||||
|
@ -319,37 +319,68 @@ The code:sbtRecordStride and code:sbtRecordOffset values are passed in as
|
||||
parameters to code:traceNV() calls made in the shaders.
|
||||
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
|
||||
Specification for more details.
|
||||
In SPIR-V, these correspond to the code:SBTOffset and code:SBTStride
|
||||
parameters to the code:OpTraceNV instruction.
|
||||
|
||||
The result of this computation is then added to
|
||||
pname:hitProgramShaderBindingTableBaseIndex, a base index passed to
|
||||
pname:hitShaderBindingOffset, a base offset passed to
|
||||
flink:vkCmdTraceRaysNV.
|
||||
|
||||
The complete rule to compute a hit shader binding table record index is:
|
||||
The complete rule to compute a hit shader binding table record address in
|
||||
the pname:hitShaderBindingTableBuffer is:
|
||||
|
||||
:: [eq]#code:instanceShaderBindingTableRecordOffset {plus}
|
||||
code:hitProgramShaderBindingTableBaseIndex {plus} _geometryIndex_
|
||||
{times} code:sbtRecordStride {plus} code:sbtRecordOffset#
|
||||
:: [eq]#pname:hitShaderBindingOffset {plus} pname:hitShaderBindingStride
|
||||
{times} ( code:instanceShaderBindingTableRecordOffset {plus}
|
||||
_geometryIndex_ {times} code:sbtRecordStride {plus}
|
||||
code:sbtRecordOffset )#
|
||||
|
||||
|
||||
==== Miss Shaders
|
||||
|
||||
A Miss shader is executed whenever a ray query fails to find an intersection
|
||||
A miss shader is executed whenever a ray query fails to find an intersection
|
||||
for the given scene geometry.
|
||||
Multiple miss shaders may: be executed throughout a ray tracing dispatch.
|
||||
|
||||
The base for the computation of miss shader locations is
|
||||
code:missProgramShaderBindingTableBaseIndex, a base index passed into
|
||||
pname:missShaderBindingOffset, a base offset passed into
|
||||
flink:vkCmdTraceRaysNV.
|
||||
|
||||
The code:missIndex value is passed in as parameters to code:traceNV() calls
|
||||
made in the shaders.
|
||||
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
|
||||
Specification for more details.
|
||||
In SPIR-V, this corresponds to the code:MissIndex parameter to the
|
||||
code:OpTraceNV instruction.
|
||||
|
||||
The complete rule to compute a miss shader binding table record address is:
|
||||
The complete rule to compute a miss shader binding table record address in
|
||||
the pname:missShaderBindingTableBuffer is:
|
||||
|
||||
:: [eq]#code:missProgramShaderBindingTableBaseIndex {times}
|
||||
pname:missShaderBindingStride {plus} code:missIndex#
|
||||
:: [eq]#pname:missShaderBindingOffset {plus} pname:missShaderBindingStride
|
||||
{times} code:missIndex#
|
||||
|
||||
|
||||
==== Callable Shaders
|
||||
|
||||
A callable shader is executed when requested by a ray tracing shader.
|
||||
Multiple callable shaders may: be executed throughout a ray tracing
|
||||
dispatch.
|
||||
|
||||
The base for the computation of callable shader locations is
|
||||
code:callableShaderBindingOffset, a base offset passed into
|
||||
flink:vkCmdTraceRaysNV.
|
||||
|
||||
The code:sbtRecordIndex value is passed in as a parameter to
|
||||
code:executeCallableNV() calls made in the shaders.
|
||||
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
|
||||
Specification for more details.
|
||||
In SPIR-V, this corresponds to the code:SBTIndex parameter to the
|
||||
code:OpExecuteCallableNV instruction.
|
||||
|
||||
The complete rule to compute a callable shader binding table record address
|
||||
in the pname:callableShaderBindingTableBuffer is:
|
||||
|
||||
:: [eq]#code:callableShaderBindingOffset {plus}
|
||||
pname:callableShaderBindingStride {times} code:sbtRecordIndex#
|
||||
|
||||
|
||||
[[acceleration-structure]]
|
||||
|
@ -1615,16 +1615,16 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
If pname:filter is ename:VK_FILTER_LINEAR, then the
|
||||
<<resources-image-format-features,format features>> of pname:srcImage
|
||||
must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdBlitImage-filter-02002]]
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_IMG, then the
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_EXT, then the
|
||||
<<resources-image-format-features,format features>> of pname:srcImage
|
||||
must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT.
|
||||
* [[VUID-vkCmdBlitImage-filter-00237]]
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: have
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_EXT, pname:srcImage must: have
|
||||
a elink:VkImageType of ename:VK_IMAGE_TYPE_2D
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdBlitImage-commandBuffer-01834]]
|
||||
If pname:commandBuffer is an unprotected command buffer, then
|
||||
|
@ -2746,10 +2746,10 @@ endif::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
|
||||
member of each element of pname:pImageInfo must: be
|
||||
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
member of each element of pname:pImageInfo must: be a member of the list
|
||||
given in <<descriptorsets-sampledimage, Sampled Image>> or
|
||||
<<descriptorsets-combinedimagesampler, Combined Image Sampler>>,
|
||||
corresponding to its type
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
||||
the pname:imageView member of each element of pname:pImageInfo must:
|
||||
@ -2871,8 +2871,8 @@ include::../api/structs/VkDescriptorBufferInfo.txt[]
|
||||
====
|
||||
When setting pname:range to ename:VK_WHOLE_SIZE, the effective range must:
|
||||
not be larger than the maximum range for the descriptor type
|
||||
(<<features-limits-maxUniformBufferRange, maxUniformBufferRange>> or
|
||||
<<features-limits-maxStorageBufferRange, maxStorageBufferRange>>).
|
||||
(<<features-limits-maxUniformBufferRange, pname:maxUniformBufferRange>> or
|
||||
<<features-limits-maxStorageBufferRange, pname:maxStorageBufferRange>>).
|
||||
This means that ename:VK_WHOLE_SIZE is not typically useful in the common
|
||||
case where uniform buffer descriptors are suballocated from a buffer that is
|
||||
much larger than pname:maxUniformBufferRange.
|
||||
|
@ -104,18 +104,36 @@ local workgroups is assembled.
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatch-None-02006]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT.
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatch-None-00400]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatch-filterCubic-02609]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDispatch-filterCubicMinmax-02610]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDispatch-commandBuffer-01844]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
@ -240,18 +258,36 @@ at pname:offset.
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatchIndirect-None-02008]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT.
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00416]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDispatchIndirect-filterCubic-02611]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDispatchIndirect-filterCubicMinmax-02612]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDispatchIndirect-commandBuffer-01847]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
|
@ -632,18 +632,36 @@ The assembled primitives execute the bound graphics pipeline.
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDraw-None-02010]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDraw-None-00452]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDraw-filterCubic-02613]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDraw-filterCubicMinmax-02614]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -777,9 +795,9 @@ The assembled primitives execute the bound graphics pipeline.
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndexed-indexSize-00463]]
|
||||
[eq]#(code:indexSize * (pname:firstIndex {plus} pname:indexCount)
|
||||
{plus} pname:offset)# must: be less than or equal to the size of the
|
||||
bound index buffer, with code:indexSize being based on the type specified by
|
||||
[eq]#(code:indexSize * (pname:firstIndex {plus} pname:indexCount) {plus}
|
||||
pname:offset)# must: be less than or equal to the size of the bound
|
||||
index buffer, with code:indexSize being based on the type specified by
|
||||
pname:indexType, where the index buffer, pname:indexType, and
|
||||
pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
* [[VUID-vkCmdDrawIndexed-None-00464]]
|
||||
@ -826,18 +844,36 @@ The assembled primitives execute the bound graphics pipeline.
|
||||
* [[VUID-vkCmdDrawIndexed-None-01500]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexed-None-02012]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexed-None-00472]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexed-filterCubic-02615]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndexed-filterCubicMinmax-02616]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -1029,18 +1065,36 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
||||
* [[VUID-vkCmdDrawIndirect-None-01501]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirect-None-02014]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirect-None-00498]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirect-filterCubic-02617]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndirect-filterCubicMinmax-02618]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -1277,18 +1331,36 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-None-03131]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-None-02016]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-None-03170]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-filterCubic-02619]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02620]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-03132]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -1690,18 +1762,36 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-01503]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-02019]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00550]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-filterCubic-02621]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02622]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -1773,11 +1863,11 @@ the similarly named parameters of flink:vkCmdDrawIndexed.
|
||||
entirely contained within the corresponding vertex buffer binding, as
|
||||
described in <<fxvertex-input>>
|
||||
* [[VUID-VkDrawIndexedIndirectCommand-indexSize-00553]]
|
||||
[eq]#(code:indexSize * (pname:firstIndex {plus} pname:indexCount)
|
||||
{plus} pname:offset)# must: be less than or equal to the size of the
|
||||
bound index buffer, with code:indexSize being based on the type
|
||||
specified by pname:indexType, where the index buffer, pname:indexType,
|
||||
and pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
[eq]#(code:indexSize * (pname:firstIndex {plus} pname:indexCount) {plus}
|
||||
pname:offset)# must: be less than or equal to the size of the bound
|
||||
index buffer, with code:indexSize being based on the type specified by
|
||||
pname:indexType, where the index buffer, pname:indexType, and
|
||||
pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
* [[VUID-VkDrawIndexedIndirectCommand-firstInstance-00554]]
|
||||
If the
|
||||
<<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>>
|
||||
@ -1946,18 +2036,36 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-03163]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02623]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02624]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-03164]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
@ -2372,18 +2480,36 @@ The effective pname:firstVertex is zero.
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02306]]
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command, then the image view's
|
||||
<<resources-image-view-format-features,format features>> must: contain
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02307]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02625]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT as a
|
||||
result of this command must: have a elink:VkImageViewType and format
|
||||
that supports cubic filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubic
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02626]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_EXT with
|
||||
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or
|
||||
VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command must: have
|
||||
a elink:VkImageViewType and format that supports cubic filtering
|
||||
together with minmax filtering, as specified by
|
||||
sname:VkFilterCubicImageViewImageFormatPropertiesEXT::pname:filterCubicMinmax
|
||||
returned by fname:vkGetPhysicalDeviceImageFormatProperties2
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02308]]
|
||||
If the draw is recorded in a render pass instance with multiview
|
||||
|
177
chapters/features.txt
Executable file → Normal file
177
chapters/features.txt
Executable file → Normal file
@ -1955,6 +1955,36 @@ include::../validity/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.txt[]
|
||||
|
||||
endif::VK_EXT_buffer_device_address[]
|
||||
|
||||
ifdef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',desc='Structure describing dedicated allocation image aliasing features that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
|
||||
structure is defined as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[]
|
||||
|
||||
The members of the
|
||||
sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV structure
|
||||
describe the following features:
|
||||
|
||||
* [[features-features-dedicatedAllocationImageAliasing]]
|
||||
pname:dedicatedAllocationImageAliasing indicates that the implementation
|
||||
supports aliasing of compatible image objects on a dedicated allocation.
|
||||
|
||||
If the sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
|
||||
structure is included in the pname:pNext chain of
|
||||
slink:VkPhysicalDeviceFeatures2KHR, it is filled with values indicating
|
||||
whether each feature is supported.
|
||||
sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV can: also
|
||||
be used in the pname:pNext chain of slink:VkDeviceCreateInfo to enable
|
||||
features.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[]
|
||||
--
|
||||
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
|
||||
[[features-features-requirements]]
|
||||
=== Feature Requirements
|
||||
|
||||
@ -2012,19 +2042,21 @@ ifdef::VK_EXT_descriptor_indexing[]
|
||||
pname:descriptorBindingPartiallyBound>>
|
||||
** <<features-features-runtimeDescriptorArray,
|
||||
pname:runtimeDescriptorArray>>
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifdef::VK_EXT_inline_uniform_block[]
|
||||
* <<features-features-inlineUniformBlock,pname:inlineUniformBlock>>, if
|
||||
the `<<VK_EXT_inline_uniform_block>>` extension is supported.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* <<features-features-descriptorBindingInlineUniformBlockUpdateAfterBind,
|
||||
pname:descriptorBindingInlineUniformBlockUpdateAfterBind>>, if the
|
||||
`<<VK_EXT_inline_uniform_block>>` and `<<VK_EXT_descriptor_indexing>>`
|
||||
extensions are both supported.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
endif::VK_EXT_inline_uniform_block[]
|
||||
ifdef::VK_EXT_scalar_block_layout[]
|
||||
* If the `<<VK_EXT_scalar_block_layout>>` extension is supported:
|
||||
** <<features-features-scalarBlockLayout,pname:scalarBlockLayout>>
|
||||
* <<features-features-scalarBlockLayout,pname:scalarBlockLayout>>, if the
|
||||
`<<VK_EXT_scalar_block_layout>>` extension is supported.
|
||||
endif::VK_EXT_scalar_block_layout[]
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
All other features defined in the Specification are optional:.
|
||||
|
||||
@ -2859,7 +2891,6 @@ endif::VK_KHR_push_descriptor[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceMultiviewProperties',desc='Structure describing multiview limits that can be supported by an implementation',type='structs']
|
||||
|
||||
--
|
||||
|
||||
The sname:VkPhysicalDeviceMultiviewProperties structure is defined as:
|
||||
@ -6965,17 +6996,17 @@ ifdef::VK_EXT_sampler_filter_minmax[]
|
||||
This bit must: only be exposed for formats that also support the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT.
|
||||
endif::VK_EXT_sampler_filter_minmax[]
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
* ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG specifies
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies
|
||||
that sname:VkImage can: be used with a sampler that has either of
|
||||
pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_IMG, or
|
||||
pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or
|
||||
be the source image for a blit with pname:filter set to
|
||||
ename:VK_FILTER_CUBIC_IMG.
|
||||
ename:VK_FILTER_CUBIC_EXT.
|
||||
This bit must: only be exposed for formats that also support the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT.
|
||||
If the format being queried is a depth/stencil format, this only
|
||||
specifies that the depth aspect is cubic filterable.
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT specifies that an
|
||||
application can: define a <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
||||
@ -7756,9 +7787,17 @@ one of: this table, <<features-formats-mandatory-features-bcn>>, or
|
||||
<<features-formats-mandatory-features-etc>>.
|
||||
|====
|
||||
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG must: be
|
||||
supported for the following formats:
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
If cubic filtering is supported,
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be
|
||||
supported for the following image view types:
|
||||
|
||||
* ename:VK_IMAGE_VIEW_TYPE_1D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
|
||||
|
||||
for the following formats:
|
||||
|
||||
* ename:VK_FORMAT_R4G4_UNORM_PACK8
|
||||
* ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16
|
||||
@ -7794,8 +7833,14 @@ supported for the following formats:
|
||||
* ename:VK_FORMAT_A8B8G8R8_SINT_PACK32
|
||||
* ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32
|
||||
|
||||
If ETC2 compressed formats are supported, the following additional formats
|
||||
must: support ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG:
|
||||
If ETC compressed formats are supported,
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be
|
||||
supported for the following image view types:
|
||||
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
|
||||
|
||||
for the following additional formats:
|
||||
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
|
||||
@ -7803,7 +7848,21 @@ must: support ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG:
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
|
||||
If cubic filtering is supported for any other uncompressed formats, the
|
||||
following image view types must: be supported for those formats:
|
||||
|
||||
* ename:VK_IMAGE_VIEW_TYPE_1D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
|
||||
|
||||
If cubic filtering is supported for any other compressed formats, the
|
||||
following image view types must: be supported for those formats:
|
||||
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
@ -7856,7 +7915,8 @@ s| Format s| Planes
|
||||
| ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM | 3 | | | | | | | | | |
|
||||
| ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM | 2 | | | | | | | | | |
|
||||
| ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM | 3 | | | | | | | | | |
|
||||
12+| Format features marked {sym1} must: be supported only if slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures is enabled
|
||||
12+| Format features marked {sym1} must: be supported only if slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures is enabled,
|
||||
and only with elink:VkImageType ename:VK_IMAGE_TYPE_2D
|
||||
|====
|
||||
|
||||
Implementations are not required to support the
|
||||
@ -7980,16 +8040,17 @@ ifdef::VK_EXT_fragment_density_map[]
|
||||
** pname:flags contains ename:VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
|
||||
endif::VK_EXT_fragment_density_map[]
|
||||
* pname:maxArrayLayers is the maximum number of array layers.
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, then
|
||||
pname:maxArrayLayers must: either be equal to 1 or be no less than
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers.
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL and pname:type is
|
||||
ename:VK_IMAGE_TYPE_3D, then pname:maxArrayLayers must: either be equal
|
||||
to 1 or be no less than
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers.
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL and pname:type is not
|
||||
ename:VK_IMAGE_TYPE_3D, then pname:maxArrayLayers must: be no less than
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers.
|
||||
pname:maxArrayLayers must: be no less than
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, except when one
|
||||
of the following conditions is true, in which case it may: instead be
|
||||
`1`:
|
||||
** pname:tiling is ename:VK_IMAGE_TILING_LINEAR
|
||||
** pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL and pname:type is
|
||||
ename:VK_IMAGE_TYPE_3D
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
** pname:format is one of those listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then
|
||||
pname:maxArrayLayers must: not be 0.
|
||||
@ -8664,6 +8725,66 @@ include::../validity/structs/VkAndroidHardwareBufferUsageANDROID.txt[]
|
||||
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
|
||||
ifdef::VK_EXT_filter_cubic[]
|
||||
|
||||
|
||||
|
||||
To determine if cubic filtering can be used with a given image format and a
|
||||
given image view type add slink:VkPhysicalDeviceImageViewImageFormatInfoEXT
|
||||
to the pname:pNext chain of the slink:VkPhysicalDeviceImageFormatInfo2
|
||||
structure and slink:VkFilterCubicImageViewImageFormatPropertiesEXT to the
|
||||
pname:pNext chain of the slink:VkImageFormatProperties2 structure.
|
||||
|
||||
[open,refpage='VkPhysicalDeviceImageViewImageFormatInfoEXT',desc='Structure for providing image view type',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPhysicalDeviceImageViewImageFormatInfoEXT structure is defined
|
||||
as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceImageViewImageFormatInfoEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:imageViewType is a elink:VkImageViewType value specifying the type
|
||||
of the image view.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceImageViewImageFormatInfoEXT.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkFilterCubicImageViewImageFormatPropertiesEXT',desc='Structure for querying cubic filtering capabilities of an image view type',type='structs']
|
||||
--
|
||||
The sname:VkFilterCubicImageViewImageFormatPropertiesEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../api/structs/VkFilterCubicImageViewImageFormatPropertiesEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:filterCubic tells if image format, image type and image view type
|
||||
can: be used with cubic filtering.
|
||||
This field is set by the implementation.
|
||||
User-specified value is ignored.
|
||||
* pname:filterCubicMinmax tells if image format, image type and image view
|
||||
type can: be used with cubic filtering and minmax filtering.
|
||||
This field is set by the implementation.
|
||||
User-specified value is ignored.
|
||||
|
||||
include::../validity/structs/VkFilterCubicImageViewImageFormatPropertiesEXT.txt[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627]]
|
||||
If the pname:pNext chain of the slink:VkImageFormatProperties2 structure
|
||||
contains an instance of
|
||||
slink:VkFilterCubicImageViewImageFormatPropertiesEXT, the pname:pNext
|
||||
chain of the slink:VkPhysicalDeviceImageFormatInfo2 structure must:
|
||||
contain an instance of slink:VkPhysicalDeviceImageViewImageFormatInfoEXT
|
||||
with an pname:imageViewType that is compatible with pname:imageType.
|
||||
****
|
||||
--
|
||||
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
|
||||
endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
|
||||
|
||||
|
||||
@ -8688,6 +8809,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||
external handle type for which multisampled image support is not
|
||||
required.
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* pname:format is one of those listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_NV_shading_rate_image[]
|
||||
* pname:usage contains ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||
endif::VK_NV_shading_rate_image[]
|
||||
|
@ -1522,7 +1522,7 @@ The variable decorated with code:FragSizeEXT must: be declared using the
|
||||
code:Input storage class.
|
||||
+
|
||||
The variable decorated with code:FragSizeEXT must: be declared as a
|
||||
two-component vector of 32-bit unsigned integer values.
|
||||
two-component vector of 32-bit integers.
|
||||
|
||||
endif::VK_EXT_fragment_density_map[]
|
||||
|
||||
@ -1685,7 +1685,7 @@ A variable decorated with the code:HitKindNV decoration will describe the
|
||||
intersection that triggered the execution of the current shader.
|
||||
The values are determined by the intersection shader.
|
||||
+
|
||||
The code:HitKindNV decoration must: only be used in any hit and closest hit
|
||||
The code:HitKindNV decoration must: only be used in any-hit and closest hit
|
||||
shaders.
|
||||
+
|
||||
Any variable decorated with code:HitKindNV must: be declared using the
|
||||
@ -1700,7 +1700,7 @@ code:HitTNV::
|
||||
A variable decorated with the code:HitTNV decoration is equivalent to a
|
||||
variable decorated with the code:RayTmaxNV decoration.
|
||||
+
|
||||
The code:HitTNV decoration must: only be used in any hit and closest hit
|
||||
The code:HitTNV decoration must: only be used in any-hit and closest hit
|
||||
shaders.
|
||||
+
|
||||
Any variable decorated with code:HitTNV must: be declared using the
|
||||
@ -1716,7 +1716,7 @@ A variable with the code:IncomingRayFlagsNV decoration will contain the ray
|
||||
flags passed in to the trace call that invoked this particular shader.
|
||||
+
|
||||
The code:IncomingRayFlagsNV decoration must: only be used in the
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:IncomingRayFlagsNV must: be declared using
|
||||
the code:Input storage class.
|
||||
@ -1733,7 +1733,7 @@ current ray.
|
||||
Only the lower 24 bits are valid, the upper 8 bits will be ignored.
|
||||
+
|
||||
The code:InstanceCustomIndexNV decoration must: only be used in the
|
||||
intersection, any hit, and closest hit shaders.
|
||||
intersection, any-hit, and closest hit shaders.
|
||||
+
|
||||
Any variable decorated with code:InstanceCustomIndexNV must: be declared
|
||||
using the code:Input storage class.
|
||||
@ -1836,7 +1836,7 @@ All shader invocations inherit the same value for variables decorated with
|
||||
code:LaunchIDNV.
|
||||
+
|
||||
The code:LaunchIDNV decoration must: only be used within the ray generation,
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:LaunchIDNV must: be declared using the
|
||||
code:Input storage class.
|
||||
@ -1854,7 +1854,7 @@ The pname:width is in the first component, the pname:height is in the second
|
||||
component, and the pname:depth is in the third component.
|
||||
+
|
||||
The code:LaunchSizeNV decoration must: only be used within ray generation,
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:LaunchSizeNV must: be declared using the
|
||||
code:Input storage class.
|
||||
@ -2099,7 +2099,7 @@ A variable decorated with the code:ObjectRayDirectionNV decoration will
|
||||
specify the direction of the ray being processed, in object space.
|
||||
+
|
||||
The code:ObjectRayDirectionNV decoration must: only be used within
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:ObjectRayDirectionNV must: be declared
|
||||
using the code:Input storage class.
|
||||
@ -2114,7 +2114,7 @@ A variable decorated with the code:ObjectRayOriginNV decoration will specify
|
||||
the origin of the ray being processed, in object space.
|
||||
+
|
||||
The code:ObjectRayOriginNV decoration must: only be used within
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:ObjectRayOriginNV must: be declared using
|
||||
the code:Input storage class.
|
||||
@ -2130,7 +2130,7 @@ the current object-to-world transformation matrix, which is determined by
|
||||
the instance of the current intersection.
|
||||
+
|
||||
The code:ObjectToWorldNV decoration must: only be used within intersection,
|
||||
any hit, and closest hit shaders.
|
||||
any-hit, and closest hit shaders.
|
||||
+
|
||||
Any variable decorated with code:ObjectToWorldNV must: be declared using the
|
||||
code:Input storage class.
|
||||
@ -2352,7 +2352,7 @@ would have been presented as input to the geometry shader had it been
|
||||
present.
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
+
|
||||
In an intersection, any hit, or closest hit shader, it will contain the
|
||||
In an intersection, any-hit, or closest hit shader, it will contain the
|
||||
index of the triangle or bounding box being processed.
|
||||
endif::VK_NV_ray_tracing[]
|
||||
+
|
||||
@ -2373,14 +2373,14 @@ ifdef::VK_NV_mesh_shader[]
|
||||
mesh,
|
||||
endif::VK_NV_mesh_shader[]
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
intersection, any hit, closest hit,
|
||||
intersection, any-hit, closest hit,
|
||||
endif::VK_NV_ray_tracing[]
|
||||
fragment, tessellation control, tessellation evaluation, and geometry
|
||||
shaders.
|
||||
+
|
||||
In
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
an intersection, any hit, closest hit,
|
||||
an intersection, any-hit, closest hit,
|
||||
endif::VK_NV_ray_tracing[]
|
||||
ifndef::VK_NV_ray_tracing[]
|
||||
a
|
||||
@ -2460,18 +2460,18 @@ The pname:tmax value changes throughout the lifetime of the ray query that
|
||||
produced the intersection.
|
||||
In the closest hit shader, the value reflects the closest distance to the
|
||||
intersected primitive.
|
||||
In the any hit shader, it reflects the distance to the primitive currently
|
||||
In the any-hit shader, it reflects the distance to the primitive currently
|
||||
being intersected.
|
||||
In the intersection shader, it reflects the distance to the closest
|
||||
primitive intersected so far.
|
||||
The value can change in the intersection shader after calling
|
||||
code:OpReportIntersectionNV if the corresponding any hit shader does not
|
||||
code:OpReportIntersectionNV if the corresponding any-hit shader does not
|
||||
ignore the intersection.
|
||||
In a miss shader, the value is identical to the parameter passed into
|
||||
code:OpTraceNV.
|
||||
+
|
||||
The code:RayTmaxNV decoration must: only be used with the intersection, any
|
||||
hit, closest hit, and miss shaders.
|
||||
The code:RayTmaxNV decoration must: only be used with the intersection,
|
||||
any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:RayTmaxNV must: be declared with the
|
||||
code:Input storage class.
|
||||
@ -2488,8 +2488,8 @@ The values are independent of the space in which the ray and origin exist.
|
||||
+
|
||||
The code:tmin value remains constant for the duration of the ray query.
|
||||
+
|
||||
The code:RayTminNV decoration must: only be used with the intersection, any
|
||||
hit, closest hit, and miss shaders.
|
||||
The code:RayTminNV decoration must: only be used with the intersection,
|
||||
any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:RayTminNV must: be declared with the
|
||||
code:Input storage class.
|
||||
@ -3136,7 +3136,7 @@ A variable decorated with the code:WorldRayDirectionNV decoration will
|
||||
specify the direction of the ray being processed, in world space.
|
||||
+
|
||||
The code:WorldRayDirectionNV decoration must: only be used within
|
||||
intersection, any hit, closest hit, and miss shaders.
|
||||
intersection, any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:WorldRayDirectionNV must: be declared using
|
||||
the code:Input storage class.
|
||||
@ -3151,7 +3151,7 @@ A variable decorated with the code:WorldRayOriginNV decoration will specify
|
||||
the origin of the ray being processed, in world space.
|
||||
+
|
||||
The code:WorldRayOriginNV decoration must: only be used within intersection,
|
||||
any hit, closest hit, and miss shaders.
|
||||
any-hit, closest hit, and miss shaders.
|
||||
+
|
||||
Any variable decorated with code:WorldRayOriginNV must: be declared using
|
||||
the code:Input storage class.
|
||||
@ -3167,7 +3167,7 @@ the current world-to-object transformation matrix, which is determined by
|
||||
the instance of the current intersection.
|
||||
+
|
||||
The code:WorldToObjectNV decoration must: only be used within intersection,
|
||||
any hit, and closest hit shaders.
|
||||
any-hit, and closest hit shaders.
|
||||
+
|
||||
Any variable decorated with code:WorldToObjectNV must: be declared using the
|
||||
code:Input storage class.
|
||||
|
@ -424,7 +424,7 @@ endif::VK_NV_mesh_shader[]
|
||||
additional stages which are introduced by extensions.
|
||||
ifdef::VK_NV_ray_tracing[]
|
||||
* ename:VK_SHADER_STAGE_RAYGEN_BIT_NV specifies the ray generation stage.
|
||||
* ename:VK_SHADER_STAGE_ANY_HIT_BIT_NV specifies the any hit stage.
|
||||
* ename:VK_SHADER_STAGE_ANY_HIT_BIT_NV specifies the any-hit stage.
|
||||
* ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV specifies the closest hit
|
||||
stage.
|
||||
* ename:VK_SHADER_STAGE_MISS_BIT_NV specifies the miss stage.
|
||||
|
@ -1977,6 +1977,14 @@ include::../api/enums/VkResolveModeFlagBitsKHR.txt[]
|
||||
* ename:VK_RESOLVE_MODE_MAX_BIT_KHR indicates that result of the resolve
|
||||
operation is the maximum of the sample values.
|
||||
--
|
||||
|
||||
[open,refpage='VkResolveModeFlagsKHR',desc='Bitmask of VkResolveModeFlagBitsKHR',type='flags']
|
||||
--
|
||||
include::../api/flags/VkResolveModeFlagsKHR.txt[]
|
||||
|
||||
tname:VkResolveModeFlagsKHR is a bitmask type for setting a mask of zero or
|
||||
more elink:VkResolveModeFlagBitsKHR.
|
||||
--
|
||||
endif::VK_KHR_depth_stencil_resolve[]
|
||||
|
||||
|
||||
|
@ -702,6 +702,22 @@ supported unless other parameters meet all of the constraints:
|
||||
* pname:usage only includes ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT and/or
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
Images created with a pname:format from one of those listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>> have further
|
||||
restrictions on their limits and capabilities compared to images created
|
||||
with other formats.
|
||||
Creation of images with a format requiring
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion, Y'C~B~C~R~
|
||||
conversion>> may: not be supported unless other parameters meet all of the
|
||||
constraints:
|
||||
|
||||
* pname:imageType is ename:VK_IMAGE_TYPE_2D
|
||||
* pname:mipLevels is 1
|
||||
* pname:arrayLayers is 1
|
||||
* pname:samples is ename:VK_SAMPLE_COUNT_1_BIT
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
Implementations may: support additional limits and capabilities beyond those
|
||||
listed above.
|
||||
|
||||
@ -1266,7 +1282,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>,
|
||||
pname:arrayLayers must: be 1
|
||||
* [[VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260]]
|
||||
If pame:format is a _multi-planar_ format, and if
|
||||
If pname:format is a _multi-planar_ format, and if
|
||||
pname:imageCreateFormatFeatures (as defined in
|
||||
<<resources-image-creation-limits,Image Creation Limits>>) does not
|
||||
contain ename:VK_FORMAT_FEATURE_DISJOINT_BIT, then pname:flags must: not
|
||||
@ -1436,13 +1452,13 @@ matches that of sname:VkImageCreateInfo::pname:usage.
|
||||
|
||||
When this structure is present sname:VkImageCreateInfo::pname:usage
|
||||
specifies the intended usage of the depth aspect of the image and
|
||||
sname:VkImageStencilUsageCreateInfoEXT::stencilUsage specifies the intended
|
||||
usage of the stencil aspect of the image.
|
||||
sname:VkImageStencilUsageCreateInfoEXT::pname:stencilUsage specifies the
|
||||
intended usage of the stencil aspect of the image.
|
||||
However, for the purposes of determining image specific valid usage
|
||||
conditions, the image itself is considered to be created with a particular
|
||||
elink:VkImageUsageFlagBits value if either
|
||||
sname:VkImageCreateInfo::pname:usage or
|
||||
sname:VkImageStencilUsageCreateInfoEXT::stencil usage includes that bit
|
||||
sname:VkImageStencilUsageCreateInfoEXT::pname:stencilUsage includes that bit
|
||||
value.
|
||||
|
||||
This structure can: also be included in the pname:pNext chain of
|
||||
@ -3704,8 +3720,8 @@ include::../api/structs/VkImageViewASTCDecodeModeEXT.txt[]
|
||||
ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
||||
* [[VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231]]
|
||||
If the <<features-features-astc-decodeModeSharedExponent,
|
||||
decodeModeSharedExponent>> feature is not enabled, pname:decodeMode
|
||||
must: not be ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
||||
pname:decodeModeSharedExponent>> feature is not enabled,
|
||||
pname:decodeMode must: not be ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
||||
* [[VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232]]
|
||||
If pname:decodeMode is ename:VK_FORMAT_R8G8B8A8_UNORM the image view
|
||||
must: not include blocks using any of the ASTC HDR modes
|
||||
@ -4760,6 +4776,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
slink:VkMemoryDedicatedRequirements::requiresDedicatedAllocation for
|
||||
pname:image), pname:memory must: have been created with
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image equal to pname:image
|
||||
ifndef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
* [[VUID-vkBindImageMemory-memory-01509]]
|
||||
If the sname:VkMemoryAllocateInfo provided when pname:memory was
|
||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||
@ -4768,6 +4785,34 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||
must: be zero.
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
ifdef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
* [[VUID-vkBindImageMemory-memory-02628]]
|
||||
If the <<features-features-dedicatedAllocationImageAliasing,dedicated
|
||||
allocation image aliasing>> feature is not enabled, and the
|
||||
sname:VkMemoryAllocateInfo provided when pname:memory was allocated
|
||||
included an instance of slink:VkMemoryDedicatedAllocateInfo in its
|
||||
pname:pNext chain, and slink:VkMemoryDedicatedAllocateInfo::pname:image
|
||||
was not dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||
must: be zero.
|
||||
* [[VUID-vkBindImageMemory-memory-02629]]
|
||||
If the <<features-features-dedicatedAllocationImageAliasing,dedicated
|
||||
allocation image aliasing>> feature is enabled, and the
|
||||
sname:VkMemoryAllocateInfo provided when pname:memory was allocated
|
||||
included an instance of slink:VkMemoryDedicatedAllocateInfo in its
|
||||
pname:pNext chain, and slink:VkMemoryDedicatedAllocateInfo::pname:image
|
||||
was not dlink:VK_NULL_HANDLE, then pname:memoryOffset must: be zero, and
|
||||
pname:image must: be either equal to
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image or an image that was
|
||||
created using the same parameters in sname:VkImageCreateInfo, with the
|
||||
exception that pname:extent and pname:arrayLayers may: differ subject to
|
||||
the following restrictions: every dimension in the pname:extent
|
||||
parameter of the image being bound must: be equal to or smaller than the
|
||||
original image for which the allocation was created; and the
|
||||
pname:arrayLayers parameter of the image being bound must: be equal to
|
||||
or smaller than the original image for which the allocation was created.
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkBindImageMemory-None-01901]]
|
||||
@ -4940,6 +4985,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
pname:image), pname:memory must: have been created with
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image equal to pname:image
|
||||
and pname:memoryOffset must: be zero
|
||||
ifndef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
* [[VUID-VkBindImageMemoryInfo-memory-01903]]
|
||||
If the sname:VkMemoryAllocateInfo provided when pname:memory was
|
||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||
@ -4948,6 +4994,34 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||
must: be zero.
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
ifdef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
* [[VUID-VkBindImageMemoryInfo-memory-02630]]
|
||||
If the <<features-features-dedicatedAllocationImageAliasing,dedicated
|
||||
allocation image aliasing>> feature is not enabled, and the
|
||||
sname:VkMemoryAllocateInfo provided when pname:memory was allocated
|
||||
included an instance of slink:VkMemoryDedicatedAllocateInfo in its
|
||||
pname:pNext chain, and slink:VkMemoryDedicatedAllocateInfo::pname:image
|
||||
was not dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||
must: be zero.
|
||||
* [[VUID-VkBindImageMemoryInfo-memory-02631]]
|
||||
If the <<features-features-dedicatedAllocationImageAliasing,dedicated
|
||||
allocation image aliasing>> feature is enabled, and the
|
||||
sname:VkMemoryAllocateInfo provided when pname:memory was allocated
|
||||
included an instance of slink:VkMemoryDedicatedAllocateInfo in its
|
||||
pname:pNext chain, and slink:VkMemoryDedicatedAllocateInfo::pname:image
|
||||
was not dlink:VK_NULL_HANDLE, then pname:memoryOffset must: be zero, and
|
||||
pname:image must: be either equal to
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image or an image that was
|
||||
created using the same parameters in sname:VkImageCreateInfo, with the
|
||||
exception that pname:extent and pname:arrayLayers may: differ subject to
|
||||
the following restrictions: every dimension in the pname:extent
|
||||
parameter of the image being bound must: be equal to or smaller than the
|
||||
original image for which the allocation was created; and the
|
||||
pname:arrayLayers parameter of the image being bound must: be equal to
|
||||
or smaller than the original image for which the allocation was created.
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
ifdef::VK_NV_dedicated_allocation[]
|
||||
* [[VUID-VkBindImageMemoryInfo-image-01623]]
|
||||
|
@ -229,18 +229,20 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkSamplerCreateInfo-compareEnable-01080]]
|
||||
If pname:compareEnable is ename:VK_TRUE, pname:compareOp must: be a
|
||||
valid elink:VkCompareOp value
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* [[VUID-VkSamplerCreateInfo-magFilter-01081]]
|
||||
If either pname:magFilter or pname:minFilter is
|
||||
ename:VK_FILTER_CUBIC_IMG, pname:anisotropyEnable must: be
|
||||
ename:VK_FILTER_CUBIC_EXT, pname:anisotropyEnable must: be
|
||||
ename:VK_FALSE
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax[]
|
||||
ifndef::VK_EXT_filter_cubic[]
|
||||
* [[VUID-VkSamplerCreateInfo-magFilter-01422]]
|
||||
If either pname:magFilter or pname:minFilter is
|
||||
ename:VK_FILTER_CUBIC_IMG, the pname:reductionMode member of
|
||||
ename:VK_FILTER_CUBIC_EXT, the pname:reductionMode member of
|
||||
slink:VkSamplerReductionModeCreateInfoEXT must: be
|
||||
ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
|
||||
endif::VK_EXT_filter_cubic[]
|
||||
endif::VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax[]
|
||||
ifdef::VK_EXT_sampler_filter_minmax[]
|
||||
* [[VUID-VkSamplerCreateInfo-compareEnable-01423]]
|
||||
@ -371,9 +373,9 @@ include::../api/enums/VkFilter.txt[]
|
||||
|
||||
* ename:VK_FILTER_NEAREST specifies nearest filtering.
|
||||
* ename:VK_FILTER_LINEAR specifies linear filtering.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
* ename:VK_FILTER_CUBIC_IMG specifies cubic filtering.
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
* ename:VK_FILTER_CUBIC_EXT specifies cubic filtering.
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
|
||||
These filters are described in detail in <<textures-texel-filtering, Texel
|
||||
Filtering>>.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -712,3 +712,6 @@ code { -webkit-border-radius: 4px; border-radius: 4px; }
|
||||
p.tableblock.header { color: #6d6e71; }
|
||||
|
||||
.literalblock pre, .listingblock pre { background: #eee; }
|
||||
|
||||
/* From https://github.com/KhronosGroup/Vulkan-Docs/pull/901 */
|
||||
a code { color: inherit; }
|
||||
|
@ -77,7 +77,7 @@ endif::ratified_core_spec[]
|
||||
|
||||
Vulkan and Khronos are registered trademarks of The Khronos Group Inc.
|
||||
ASTC is a trademark of ARM Holdings PLC; OpenCL is a trademark of Apple
|
||||
Inc.; and OpenGL is a registered trademark of Silicon Graphics
|
||||
International, all used under license by Khronos. All other product names,
|
||||
Inc.; and OpenGL and OpenGL ES are registered trademarks of Hewlett Packard
|
||||
Enterprise, all used under license by Khronos. All other product names,
|
||||
trademarks, and/or company names are used solely for identification and
|
||||
belong to their respective owners.
|
||||
|
@ -204,7 +204,7 @@
|
||||
x="0 5.7638516 11.039961 15.60358 17.642841 23.882374 26.157471"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3815">Any Hit</tspan></text>
|
||||
id="tspan3815">Any-Hit</tspan></text>
|
||||
</g><path
|
||||
d="m 2226,5063 h -6 1 l -6,-2 -4,-2 -5,-3 -5,-4 -5,-5 -6,-5 -5,-7 -5,-7 -5,-8 -5,-9 -5,-10 -5,-10 -4,-11 -5,-11 -4,-13 -5,-12 -4,-13 -3,-14 -4,-14 -3,-14 -4,-15 -5,-31 -5,-31 -3,-32 -2,-33 -1,-33 1,-17 v -16 l 2,-16 2,-17 2,-16 3,-16 3,-16 3,-15 4,-16 5,-15 5,-14 5,-15 5,-14 6,-13 6,-13 7,-13 6,-12 7,-11 7,-11 8,-10 7,-10 8,-9 8,-8 8,-8 8,-6 8,-6 8,-5 -1,1 11,-4 -5,-13 -11,4 h -1 l -9,6 -9,6 -9,7 -8,8 -8,9 -9,9 -7,11 -8,10 -8,12 -7,12 -7,12 -6,13 -7,13 -5,14 -6,15 -5,14 -5,16 -5,15 -4,16 -4,16 -3,16 -3,16 -2,17 -2,16 -1,17 -1,17 v 51 l 2,33 4,33 4,32 6,31 3,15 4,15 3,14 4,14 4,13 5,13 4,13 5,11 5,12 5,10 5,11 5,9 6,9 5,8 6,7 6,6 6,6 7,5 6,4 7,3 6,1 c 0,0 0,0 1,0 l 6,1 z m 30,-675 35,-30 -46,-10"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
@ -235,4 +235,4 @@
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3831">yesno</tspan></text>
|
||||
</g></g></g></svg>
|
||||
</g></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
1190
images/vulkantexture0-corner-alternative-a-ll.svg
Normal file
1190
images/vulkantexture0-corner-alternative-a-ll.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 69 KiB |
1205
images/vulkantexture0-ll.svg
Normal file
1205
images/vulkantexture0-ll.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 71 KiB |
1019
images/vulkantexture1-ll.svg
Normal file
1019
images/vulkantexture1-ll.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 64 KiB |
510
images/vulkantexture2-ll.svg
Normal file
510
images/vulkantexture2-ll.svg
Normal file
@ -0,0 +1,510 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="316.03922"
|
||||
height="316.03922"
|
||||
viewBox="0 0 83.618714 83.618707"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="vulkantexture2-ll.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lend-0"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path977-6"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker1483-7"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path1481-0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Sstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Sstart-2"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1056-6"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,-0.69,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Send"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Send-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1041-8"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Sstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Sstart-2-0"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1056-6-3"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,-0.69,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Send"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Send-6-3"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1041-8-6"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Sstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Sstart-2-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1056-6-0"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,-0.69,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Send"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Send-6-2"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1041-8-9"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Sstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Sstart-2-5-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1056-6-0-6"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,-0.69,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Send"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Send-6-2-9"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path1041-8-9-7"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="162.12843"
|
||||
inkscape:cy="160.27895"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-text-baseline="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1057"
|
||||
inkscape:window-x="1928"
|
||||
inkscape:window-y="31"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="1"
|
||||
fit-margin-right="1"
|
||||
fit-margin-bottom="1"
|
||||
fit-margin-left="1"
|
||||
units="px"
|
||||
inkscape:snap-center="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid12"
|
||||
originx="-44.673178"
|
||||
originy="-42.027352"
|
||||
dotted="false" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-52.423029,41.958581)">
|
||||
<g
|
||||
id="g1463"
|
||||
transform="matrix(3.5000002,0,0,3.5000002,-68.979321,-98.562563)"
|
||||
style="stroke-width:0.15119047;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<g
|
||||
id="g3211">
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15119047;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4517"
|
||||
cx="42.333332"
|
||||
cy="21.833345"
|
||||
r="0.52778977"
|
||||
d="m 42.861122,21.833345 c 0,0.291491 -0.2363,0.52779 -0.52779,0.52779 -0.29149,0 -0.52779,-0.236299 -0.52779,-0.52779 0,-0.29149 0.2363,-0.527789 0.52779,-0.527789 0.29149,0 0.52779,0.236299 0.52779,0.527789 z" />
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15119047;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4517-7"
|
||||
cx="52.916668"
|
||||
cy="21.833345"
|
||||
r="0.52778977"
|
||||
d="m 53.444458,21.833345 c 0,0.291491 -0.2363,0.52779 -0.52779,0.52779 -0.29149,0 -0.52779,-0.236299 -0.52779,-0.52779 0,-0.29149 0.2363,-0.527789 0.52779,-0.527789 0.29149,0 0.52779,0.236299 0.52779,0.527789 z" />
|
||||
<path
|
||||
style="fill:none;stroke:#808080;stroke-width:0.15119047;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.041666,16.541679 21.166656,-4e-6 5e-6,21.166664 -21.166661,4e-6 V 16.541679 m 10.583334,0 -10e-7,21.166664 m 10.583323,-10.583334 -21.166655,4e-6"
|
||||
id="path1171"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15119047;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4517-6"
|
||||
cx="42.333332"
|
||||
cy="32.416679"
|
||||
r="0.52778977"
|
||||
d="m 42.861122,32.416679 c 0,0.291491 -0.2363,0.52779 -0.52779,0.52779 -0.29149,0 -0.52779,-0.236299 -0.52779,-0.52779 0,-0.29149 0.2363,-0.527789 0.52779,-0.527789 0.29149,0 0.52779,0.236299 0.52779,0.527789 z" />
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15119047;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4517-7-3"
|
||||
cx="52.916668"
|
||||
cy="32.416679"
|
||||
r="0.52778977"
|
||||
d="m 53.444458,32.416679 c 0,0.291491 -0.2363,0.52779 -0.52779,0.52779 -0.29149,0 -0.52779,-0.236299 -0.52779,-0.52779 0,-0.29149 0.2363,-0.527789 0.52779,-0.527789 0.29149,0 0.52779,0.236299 0.52779,0.527789 z" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5291667px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0)"
|
||||
d="m 60.666509,38.708309 34.395846,1e-5 m 5.291665,0 34.39583,-1e-5"
|
||||
id="path972-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333358999999998px;line-height:30%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664000000002"
|
||||
x="97.724724"
|
||||
y="39.86277"
|
||||
id="text121-3-7-3-3-5"
|
||||
sodipodi:linespacing="30%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3044">X</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5291667px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1483-7)"
|
||||
d="m 55.374849,33.416642 5e-6,-34.39582401 m 0,-5.29166679 -5e-6,-34.3958442"
|
||||
id="path1607-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<text
|
||||
id="text1611-4"
|
||||
y="-2.1615388"
|
||||
x="55.153679"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333358999999998px;line-height:30%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664000000002"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="30%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3046">Y</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Sstart-2);marker-end:url(#Arrow1Send-6)"
|
||||
d="M 81.833183,-22.145859 H 113.58318"
|
||||
id="path8722-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Sstart-2-0);marker-end:url(#Arrow1Send-6-3)"
|
||||
d="M 81.833183,14.895812 H 113.58318"
|
||||
id="path8722-9-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Sstart-2-5);marker-end:url(#Arrow1Send-6-2)"
|
||||
d="m 79.187349,-19.500023 v 31.75"
|
||||
id="path8722-9-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Sstart-2-5-6);marker-end:url(#Arrow1Send-6-2-9)"
|
||||
d="m 116.22902,-19.500025 v 31.75"
|
||||
id="path8722-9-0-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g1020"
|
||||
transform="matrix(0.26458334,0,0,0.26458334,84.872125,-22.011222)">
|
||||
<g
|
||||
id="g5766"
|
||||
transform="translate(-33.403644,-1.4186198)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
id="text5070-2-2-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5068-0-3-1"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f40000;fill-opacity:1;stroke-width:0.52916664">dPdx</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:1.25;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
id="text12872-4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12870-45"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'">1</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1020-3"
|
||||
transform="matrix(0.26458334,0,0,0.26458334,84.872125,20.322112)">
|
||||
<g
|
||||
id="g5766-4"
|
||||
transform="translate(-33.403644,-1.4186198)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
id="text5070-2-2-0-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5068-0-3-1-1"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f40000;fill-opacity:1;stroke-width:0.52916664">dPdx</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:1.25;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
id="text12872-4-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12870-45-9"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'">0</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1020-2"
|
||||
transform="matrix(0,-0.26458334,0.26458334,0,121.65532,9.2110479)">
|
||||
<g
|
||||
id="g5766-8"
|
||||
transform="translate(-33.403644,-1.4186198)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
id="text5070-2-2-0-7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5068-0-3-1-3"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f40000;fill-opacity:1;stroke-width:0.52916664">dPdy</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:1.25;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
id="text12872-4-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12870-45-2"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'">1</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1020-2-0"
|
||||
transform="matrix(0,-0.26458334,0.26458334,0,79.321981,9.2110479)">
|
||||
<g
|
||||
id="g5766-8-2"
|
||||
transform="translate(-33.403644,-1.4186198)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.52916664"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
id="text5070-2-2-0-7-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5068-0-3-1-3-5"
|
||||
x="59.062431"
|
||||
y="-5.2611041"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f40000;fill-opacity:1;stroke-width:0.52916664">dPdy</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:1.25;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
id="text12872-4-9-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12870-45-2-3"
|
||||
x="97.567635"
|
||||
y="-0.92451537"
|
||||
style="font-size:10.66666698px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic'">0</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3134">
|
||||
<g
|
||||
transform="translate(0.52916672,1.0142766e-6)"
|
||||
id="g3645">
|
||||
<text
|
||||
sodipodi:linespacing="30.000001%"
|
||||
id="text121"
|
||||
y="-27.69998"
|
||||
x="77.357597"
|
||||
style="font-size:4.23333311px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:30.00000119%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal'"
|
||||
xml:space="preserve"><tspan
|
||||
y="-27.69998"
|
||||
x="77.357597"
|
||||
id="tspan4363"
|
||||
sodipodi:role="line"
|
||||
style="font-size:4.23333359px">2</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="30.000001%"
|
||||
id="text121-6"
|
||||
y="-27.699984"
|
||||
x="114.39923"
|
||||
style="font-size:4.23333311px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:30.00000119%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal'"
|
||||
xml:space="preserve"
|
||||
inkscape:transform-center-x="94.092779"
|
||||
inkscape:transform-center-y="27.815922"><tspan
|
||||
y="-27.699984"
|
||||
x="114.39923"
|
||||
id="tspan4363-4"
|
||||
sodipodi:role="line"
|
||||
style="font-size:4.23333359px">3</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3645-0"
|
||||
transform="translate(0.52916672,50.800011)">
|
||||
<text
|
||||
sodipodi:linespacing="30.000001%"
|
||||
id="text121-3"
|
||||
y="-26.641645"
|
||||
x="77.357597"
|
||||
style="font-size:4.23333311px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:30.00000119%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal'"
|
||||
xml:space="preserve"><tspan
|
||||
y="-26.641645"
|
||||
x="77.357597"
|
||||
id="tspan4363-5"
|
||||
sodipodi:role="line"
|
||||
style="font-size:4.23333359px">0</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="30.000001%"
|
||||
id="text121-6-8"
|
||||
y="-26.641649"
|
||||
x="114.39923"
|
||||
style="font-size:4.23333311px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:30.00000119%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal'"
|
||||
xml:space="preserve"
|
||||
inkscape:transform-center-x="94.092779"
|
||||
inkscape:transform-center-y="27.815922"><tspan
|
||||
y="-26.641649"
|
||||
x="114.39923"
|
||||
id="tspan4363-4-5"
|
||||
sodipodi:role="line"
|
||||
style="font-size:4.23333359px">1</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
@ -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 98
|
||||
#define VK_HEADER_VERSION 99
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
@ -431,6 +431,8 @@ typedef enum VkStructureType {
|
||||
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
|
||||
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
|
||||
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
|
||||
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
|
||||
@ -466,6 +468,7 @@ typedef enum VkStructureType {
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
|
||||
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
|
||||
@ -1140,7 +1143,7 @@ typedef enum VkDynamicState {
|
||||
typedef enum VkFilter {
|
||||
VK_FILTER_NEAREST = 0,
|
||||
VK_FILTER_LINEAR = 1,
|
||||
VK_FILTER_CUBIC_IMG = 1000015000,
|
||||
VK_FILTER_CUBIC_EXT = 1000015000,
|
||||
VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
|
||||
VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
|
||||
VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
|
||||
@ -1340,7 +1343,7 @@ typedef enum VkFormatFeatureFlagBits {
|
||||
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
|
||||
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
|
||||
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
|
||||
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
|
||||
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000,
|
||||
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
|
||||
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
|
||||
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
|
||||
@ -6382,6 +6385,10 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
|
||||
#define VK_IMG_filter_cubic 1
|
||||
#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
|
||||
#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
|
||||
#define VK_FILTER_CUBIC_EXT 1000015000
|
||||
#define VK_FILTER_CUBIC_IMG VK_FILTER_CUBIC_EXT
|
||||
#define VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT 0x00002000
|
||||
#define VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
|
||||
|
||||
|
||||
#define VK_AMD_rasterization_order 1
|
||||
@ -8552,6 +8559,25 @@ typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV {
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_filter_cubic 1
|
||||
#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 1
|
||||
#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
|
||||
|
||||
typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkImageViewType imageViewType;
|
||||
} VkPhysicalDeviceImageViewImageFormatInfoEXT;
|
||||
|
||||
typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 filterCubic;
|
||||
VkBool32 filterCubicMinmax ;
|
||||
} VkFilterCubicImageViewImageFormatPropertiesEXT;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_global_priority 1
|
||||
#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
|
||||
#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
|
||||
@ -9004,6 +9030,18 @@ typedef struct VkMemoryPriorityAllocateInfoEXT {
|
||||
|
||||
|
||||
|
||||
#define VK_NV_dedicated_allocation_image_aliasing 1
|
||||
#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
|
||||
#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
|
||||
|
||||
typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 dedicatedAllocationImageAliasing;
|
||||
} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_buffer_device_address 1
|
||||
typedef uint64_t VkDeviceAddress;
|
||||
|
||||
|
@ -1,63 +1,85 @@
|
||||
# [<img src="https://khan.github.io/KaTeX/katex-logo.svg" width="130" alt="KaTeX">](https://khan.github.io/KaTeX/) [](https://travis-ci.org/Khan/KaTeX)
|
||||
|
||||
[](https://gitter.im/Khan/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
# [<img src="https://cdn.rawgit.com/Khan/KaTeX/84189cd3adae24d92e766d14eb80d6e54f3c7dca/katex-logo.svg" width="130" alt="KaTeX">](https://katex.org/)
|
||||
[](https://www.npmjs.com/package/katex)
|
||||
[](https://circleci.com/gh/Khan/KaTeX)
|
||||
[](https://codecov.io/gh/Khan/KaTeX)
|
||||
[](https://gitter.im/Khan/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://greenkeeper.io/)
|
||||
[](https://www.jsdelivr.com/package/npm/katex)
|
||||

|
||||
|
||||
KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web.
|
||||
|
||||
* **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://jsperf.com/katex-vs-mathjax/).
|
||||
* **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://www.intmath.com/cg5/katex-mathjax-comparison.php).
|
||||
* **Print quality:** KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting.
|
||||
* **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources.
|
||||
* **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
|
||||
|
||||
KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and IE 8 - IE 11. A list of supported commands can be on the [wiki](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX).
|
||||
KaTeX is compatible with all major browsers, including Chrome, Safari, Firefox, Opera, Edge, and IE 9–11.
|
||||
|
||||
## Usage
|
||||
KaTeX supports much (but not all) of LaTeX and many LaTeX packages. See the [list of supported functions](https://katex.org/docs/supported.html).
|
||||
|
||||
You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN:
|
||||
Try out KaTeX [on the demo page](https://katex.org/#demo)!
|
||||
|
||||
## Getting started
|
||||
|
||||
### Starter template
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
|
||||
<!DOCTYPE html>
|
||||
<!-- KaTeX requires the use of the HTML5 doctype. Without it, KaTeX may not render properly -->
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
|
||||
|
||||
<!-- The loading of KaTeX is deferred to speed up page rendering -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.js" integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
|
||||
|
||||
<!-- To automatically render math in text elements, include the auto-render extension: -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/contrib/auto-render.min.js" integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"
|
||||
onload="renderMathInElement(document.body);"></script>
|
||||
</head>
|
||||
...
|
||||
</html>
|
||||
```
|
||||
|
||||
#### In-browser rendering
|
||||
You can also [download KaTeX](https://github.com/khan/katex/releases) and host it yourself.
|
||||
|
||||
Call `katex.render` with a TeX expression and a DOM element to render into:
|
||||
For details on how to configure auto-render extension, refer to [the documentation](https://katex.org/docs/autorender.html).
|
||||
|
||||
```js
|
||||
katex.render("c = \\pm\\sqrt{a^2 + b^2}", element);
|
||||
```
|
||||
|
||||
If KaTeX can't parse the expression, it throws a `katex.ParseError` error.
|
||||
|
||||
#### Server side rendering or rendering to a string
|
||||
|
||||
To generate HTML on the server or to generate an HTML string of the rendered math, you can use `katex.renderToString`:
|
||||
|
||||
```js
|
||||
var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}");
|
||||
// '<span class="katex">...</span>'
|
||||
```
|
||||
|
||||
Make sure to include the CSS and font files, but there is no need to include the JavaScript. Like `render`, `renderToString` throws if it can't parse the expression.
|
||||
|
||||
#### Rendering options
|
||||
|
||||
You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are:
|
||||
|
||||
- `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`)
|
||||
- `throwOnError`: `boolean`. If `true`, KaTeX will throw a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the unsupported command as text in the color given by `errorColor`. (default: `true`)
|
||||
- `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`)
|
||||
### API
|
||||
|
||||
Call `katex.render` to render a TeX expression directly into a DOM element.
|
||||
For example:
|
||||
|
||||
```js
|
||||
katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, { displayMode: true });
|
||||
katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, {
|
||||
throwOnError: false
|
||||
});
|
||||
```
|
||||
|
||||
#### Automatic rendering of math on a page
|
||||
Call `katex.renderToString` to generate an HTML string of the rendered math,
|
||||
e.g., for server-side rendering. For example:
|
||||
|
||||
Math on the page can be automatically rendered using the auto-render extension. See [the Auto-render README](contrib/auto-render/README.md) for more information.
|
||||
```js
|
||||
var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}", {
|
||||
throwOnError: false
|
||||
});
|
||||
// '<span class="katex">...</span>'
|
||||
```
|
||||
|
||||
Make sure to include the CSS and font files in both cases.
|
||||
If you are doing all rendering on the server, there is no need to include the
|
||||
JavaScript on the client.
|
||||
|
||||
The examples above use the `throwOnError: false` option, which renders invalid
|
||||
inputs as the TeX source code in red (by default), with the error message as
|
||||
hover text. For other available options, see the
|
||||
[API documentation](https://katex.org/docs/api.html),
|
||||
[options documentation](https://katex.org/docs/options.html), and
|
||||
[handling errors documentation](https://katex.org/docs/error.html).
|
||||
|
||||
## Demo and Documentation
|
||||
|
||||
Learn more about using KaTeX [on the website](https://katex.org)!
|
||||
|
||||
## Contributing
|
||||
|
||||
|
335
katex/contrib/auto-render.js
Normal file
335
katex/contrib/auto-render.js
Normal file
@ -0,0 +1,335 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory(require("katex"));
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define(["katex"], factory);
|
||||
else if(typeof exports === 'object')
|
||||
exports["renderMathInElement"] = factory(require("katex"));
|
||||
else
|
||||
root["renderMathInElement"] = factory(root["katex"]);
|
||||
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__) {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = function(exports) {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // create a fake namespace object
|
||||
/******/ // mode & 1: value is a module id, require it
|
||||
/******/ // mode & 2: merge all properties of value into the ns
|
||||
/******/ // mode & 4: return value when already ns object
|
||||
/******/ // mode & 8|1: behave like require
|
||||
/******/ __webpack_require__.t = function(value, mode) {
|
||||
/******/ if(mode & 1) value = __webpack_require__(value);
|
||||
/******/ if(mode & 8) return value;
|
||||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
||||
/******/ var ns = Object.create(null);
|
||||
/******/ __webpack_require__.r(ns);
|
||||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
||||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
||||
/******/ return ns;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
|
||||
// EXTERNAL MODULE: external "katex"
|
||||
var external_katex_ = __webpack_require__(0);
|
||||
var external_katex_default = /*#__PURE__*/__webpack_require__.n(external_katex_);
|
||||
|
||||
// CONCATENATED MODULE: ./contrib/auto-render/splitAtDelimiters.js
|
||||
/* eslint no-constant-condition:0 */
|
||||
var findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
|
||||
// Adapted from
|
||||
// https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
|
||||
var index = startIndex;
|
||||
var braceLevel = 0;
|
||||
var delimLength = delimiter.length;
|
||||
|
||||
while (index < text.length) {
|
||||
var character = text[index];
|
||||
|
||||
if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
|
||||
return index;
|
||||
} else if (character === "\\") {
|
||||
index++;
|
||||
} else if (character === "{") {
|
||||
braceLevel++;
|
||||
} else if (character === "}") {
|
||||
braceLevel--;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
return -1;
|
||||
};
|
||||
|
||||
var splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
|
||||
var finalData = [];
|
||||
|
||||
for (var i = 0; i < startData.length; i++) {
|
||||
if (startData[i].type === "text") {
|
||||
var text = startData[i].data;
|
||||
var lookingForLeft = true;
|
||||
var currIndex = 0;
|
||||
var nextIndex = void 0;
|
||||
nextIndex = text.indexOf(leftDelim);
|
||||
|
||||
if (nextIndex !== -1) {
|
||||
currIndex = nextIndex;
|
||||
finalData.push({
|
||||
type: "text",
|
||||
data: text.slice(0, currIndex)
|
||||
});
|
||||
lookingForLeft = false;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
if (lookingForLeft) {
|
||||
nextIndex = text.indexOf(leftDelim, currIndex);
|
||||
|
||||
if (nextIndex === -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
finalData.push({
|
||||
type: "text",
|
||||
data: text.slice(currIndex, nextIndex)
|
||||
});
|
||||
currIndex = nextIndex;
|
||||
} else {
|
||||
nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
|
||||
|
||||
if (nextIndex === -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
finalData.push({
|
||||
type: "math",
|
||||
data: text.slice(currIndex + leftDelim.length, nextIndex),
|
||||
rawData: text.slice(currIndex, nextIndex + rightDelim.length),
|
||||
display: display
|
||||
});
|
||||
currIndex = nextIndex + rightDelim.length;
|
||||
}
|
||||
|
||||
lookingForLeft = !lookingForLeft;
|
||||
}
|
||||
|
||||
finalData.push({
|
||||
type: "text",
|
||||
data: text.slice(currIndex)
|
||||
});
|
||||
} else {
|
||||
finalData.push(startData[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return finalData;
|
||||
};
|
||||
|
||||
/* harmony default export */ var auto_render_splitAtDelimiters = (splitAtDelimiters);
|
||||
// CONCATENATED MODULE: ./contrib/auto-render/auto-render.js
|
||||
/* eslint no-console:0 */
|
||||
|
||||
|
||||
|
||||
var auto_render_splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
|
||||
var data = [{
|
||||
type: "text",
|
||||
data: text
|
||||
}];
|
||||
|
||||
for (var i = 0; i < delimiters.length; i++) {
|
||||
var delimiter = delimiters[i];
|
||||
data = auto_render_splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
|
||||
}
|
||||
|
||||
return data;
|
||||
};
|
||||
/* Note: optionsCopy is mutated by this method. If it is ever exposed in the
|
||||
* API, we should copy it before mutating.
|
||||
*/
|
||||
|
||||
|
||||
var auto_render_renderMathInText = function renderMathInText(text, optionsCopy) {
|
||||
var data = auto_render_splitWithDelimiters(text, optionsCopy.delimiters);
|
||||
var fragment = document.createDocumentFragment();
|
||||
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i].type === "text") {
|
||||
fragment.appendChild(document.createTextNode(data[i].data));
|
||||
} else {
|
||||
var span = document.createElement("span");
|
||||
var math = data[i].data; // Override any display mode defined in the settings with that
|
||||
// defined by the text itself
|
||||
|
||||
optionsCopy.displayMode = data[i].display;
|
||||
|
||||
try {
|
||||
external_katex_default.a.render(math, span, optionsCopy);
|
||||
} catch (e) {
|
||||
if (!(e instanceof external_katex_default.a.ParseError)) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e);
|
||||
fragment.appendChild(document.createTextNode(data[i].rawData));
|
||||
continue;
|
||||
}
|
||||
|
||||
fragment.appendChild(span);
|
||||
}
|
||||
}
|
||||
|
||||
return fragment;
|
||||
};
|
||||
|
||||
var renderElem = function renderElem(elem, optionsCopy) {
|
||||
for (var i = 0; i < elem.childNodes.length; i++) {
|
||||
var childNode = elem.childNodes[i];
|
||||
|
||||
if (childNode.nodeType === 3) {
|
||||
// Text node
|
||||
var frag = auto_render_renderMathInText(childNode.textContent, optionsCopy);
|
||||
i += frag.childNodes.length - 1;
|
||||
elem.replaceChild(frag, childNode);
|
||||
} else if (childNode.nodeType === 1) {
|
||||
(function () {
|
||||
// Element node
|
||||
var className = ' ' + childNode.className + ' ';
|
||||
var shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(function (x) {
|
||||
return className.indexOf(' ' + x + ' ') === -1;
|
||||
});
|
||||
|
||||
if (shouldRender) {
|
||||
renderElem(childNode, optionsCopy);
|
||||
}
|
||||
})();
|
||||
} // Otherwise, it's something else, and ignore it.
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
var renderMathInElement = function renderMathInElement(elem, options) {
|
||||
if (!elem) {
|
||||
throw new Error("No element provided to render");
|
||||
}
|
||||
|
||||
var optionsCopy = {}; // Object.assign(optionsCopy, option)
|
||||
|
||||
for (var option in options) {
|
||||
if (options.hasOwnProperty(option)) {
|
||||
optionsCopy[option] = options[option];
|
||||
}
|
||||
} // default options
|
||||
|
||||
|
||||
optionsCopy.delimiters = optionsCopy.delimiters || [{
|
||||
left: "$$",
|
||||
right: "$$",
|
||||
display: true
|
||||
}, {
|
||||
left: "\\(",
|
||||
right: "\\)",
|
||||
display: false
|
||||
}, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
|
||||
// {left: "$", right: "$", display: false},
|
||||
// \[…\] must come last in this array. Otherwise, renderMathInElement
|
||||
// will search for \[ before it searches for $$ or \(
|
||||
// That makes it susceptible to finding a \\[0.3em] row delimiter and
|
||||
// treating it as if it were the start of a KaTeX math zone.
|
||||
{
|
||||
left: "\\[",
|
||||
right: "\\]",
|
||||
display: true
|
||||
}];
|
||||
optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"];
|
||||
optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];
|
||||
optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different
|
||||
// math elements within a single call to `renderMathInElement`.
|
||||
|
||||
optionsCopy.macros = optionsCopy.macros || {};
|
||||
renderElem(elem, optionsCopy);
|
||||
};
|
||||
|
||||
/* harmony default export */ var auto_render = __webpack_exports__["default"] = (renderMathInElement);
|
||||
|
||||
/***/ })
|
||||
/******/ ])["default"];
|
||||
});
|
2
katex/contrib/auto-render.min.js
vendored
2
katex/contrib/auto-render.min.js
vendored
@ -1 +1 @@
|
||||
(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.renderMathInElement=e()}})(function(){var e,t,r;return function n(e,t,r){function a(o,l){if(!t[o]){if(!e[o]){var f=typeof require=="function"&&require;if(!l&&f)return f(o,!0);if(i)return i(o,!0);var d=new Error("Cannot find module '"+o+"'");throw d.code="MODULE_NOT_FOUND",d}var s=t[o]={exports:{}};e[o][0].call(s.exports,function(t){var r=e[o][1][t];return a(r?r:t)},s,s.exports,n,e,t,r)}return t[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)a(r[o]);return a}({1:[function(e,t,r){var n=e("./splitAtDelimiters");var a=function(e,t){var r=[{type:"text",data:e}];for(var a=0;a<t.length;a++){var i=t[a];r=n(r,i.left,i.right,i.display||false)}return r};var i=function(e,t){var r=a(e,t);var n=document.createDocumentFragment();for(var i=0;i<r.length;i++){if(r[i].type==="text"){n.appendChild(document.createTextNode(r[i].data))}else{var o=document.createElement("span");var l=r[i].data;try{katex.render(l,o,{displayMode:r[i].display})}catch(f){if(!(f instanceof katex.ParseError)){throw f}console.error("KaTeX auto-render: Failed to parse `"+r[i].data+"` with ",f);n.appendChild(document.createTextNode(r[i].rawData));continue}n.appendChild(o)}}return n};var o=function(e,t,r){for(var n=0;n<e.childNodes.length;n++){var a=e.childNodes[n];if(a.nodeType===3){var l=i(a.textContent,t);n+=l.childNodes.length-1;e.replaceChild(l,a)}else if(a.nodeType===1){var f=r.indexOf(a.nodeName.toLowerCase())===-1;if(f){o(a,t,r)}}}};var l={delimiters:[{left:"$$",right:"$$",display:true},{left:"\\[",right:"\\]",display:true},{left:"\\(",right:"\\)",display:false}],ignoredTags:["script","noscript","style","textarea","pre","code"]};var f=function(e){var t;var r;for(var n=1,a=arguments.length;n<a;n++){t=arguments[n];for(r in t){if(Object.prototype.hasOwnProperty.call(t,r)){e[r]=t[r]}}}return e};var d=function(e,t){if(!e){throw new Error("No element provided to render")}t=f({},l,t);o(e,t.delimiters,t.ignoredTags)};t.exports=d},{"./splitAtDelimiters":2}],2:[function(e,t,r){var n=function(e,t,r){var n=r;var a=0;var i=e.length;while(n<t.length){var o=t[n];if(a<=0&&t.slice(n,n+i)===e){return n}else if(o==="\\"){n++}else if(o==="{"){a++}else if(o==="}"){a--}n++}return-1};var a=function(e,t,r,a){var i=[];for(var o=0;o<e.length;o++){if(e[o].type==="text"){var l=e[o].data;var f=true;var d=0;var s;s=l.indexOf(t);if(s!==-1){d=s;i.push({type:"text",data:l.slice(0,d)});f=false}while(true){if(f){s=l.indexOf(t,d);if(s===-1){break}i.push({type:"text",data:l.slice(d,s)});d=s}else{s=n(r,l,d+t.length);if(s===-1){break}i.push({type:"math",data:l.slice(d+t.length,s),rawData:l.slice(d,s+r.length),display:a});d=s+r.length}f=!f}i.push({type:"text",data:l.slice(d)})}else{i.push(e[o])}}return i};t.exports=a},{}]},{},[1])(1)});
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(r){return function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([function(e,t){e.exports=r},function(e,t,r){"use strict";r.r(t);var n=r(0),l=r.n(n),s=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},d=function(e,t,r,n){for(var o=[],a=0;a<e.length;a++)if("text"===e[a].type){var i=e[a].data,l=!0,d=0,f=void 0;for(-1!==(f=i.indexOf(t))&&(d=f,o.push({type:"text",data:i.slice(0,d)}),l=!1);;){if(l){if(-1===(f=i.indexOf(t,d)))break;o.push({type:"text",data:i.slice(d,f)}),d=f}else{if(-1===(f=s(r,i,d+t.length)))break;o.push({type:"math",data:i.slice(d+t.length,f),rawData:i.slice(d,f+r.length),display:n}),d=f+r.length}l=!l}o.push({type:"text",data:i.slice(d)})}else o.push(e[a]);return o},i=function(e,t){for(var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=d(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters),n=document.createDocumentFragment(),o=0;o<r.length;o++)if("text"===r[o].type)n.appendChild(document.createTextNode(r[o].data));else{var a=document.createElement("span"),i=r[o].data;t.displayMode=r[o].display;try{l.a.render(i,a,t)}catch(e){if(!(e instanceof l.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[o].data+"` with ",e),n.appendChild(document.createTextNode(r[o].rawData));continue}n.appendChild(a)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=i(o.textContent,r);n+=a.childNodes.length-1,t.replaceChild(a,o)}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default});
|
14
katex/contrib/copy-tex.css
Normal file
14
katex/contrib/copy-tex.css
Normal file
@ -0,0 +1,14 @@
|
||||
/* Force selection of entire .katex/.katex-display blocks, so that we can
|
||||
* copy/paste the entire source code. If you omit this CSS, partial
|
||||
* selections of a formula will work, but will copy the ugly HTML
|
||||
* representation instead of the LaTeX source code. (Full selections will
|
||||
* still produce the LaTeX source code.)
|
||||
*/
|
||||
.katex,
|
||||
.katex-display {
|
||||
user-select: all;
|
||||
-moz-user-select: all;
|
||||
-webkit-user-select: all;
|
||||
-ms-user-select: all;
|
||||
}
|
||||
|
208
katex/contrib/copy-tex.js
Normal file
208
katex/contrib/copy-tex.js
Normal file
@ -0,0 +1,208 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define([], factory);
|
||||
else {
|
||||
var a = factory();
|
||||
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
||||
}
|
||||
})((typeof self !== 'undefined' ? self : this), function() {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = function(exports) {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // create a fake namespace object
|
||||
/******/ // mode & 1: value is a module id, require it
|
||||
/******/ // mode & 2: merge all properties of value into the ns
|
||||
/******/ // mode & 4: return value when already ns object
|
||||
/******/ // mode & 8|1: behave like require
|
||||
/******/ __webpack_require__.t = function(value, mode) {
|
||||
/******/ if(mode & 1) value = __webpack_require__(value);
|
||||
/******/ if(mode & 8) return value;
|
||||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
||||
/******/ var ns = Object.create(null);
|
||||
/******/ __webpack_require__.r(ns);
|
||||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
||||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
||||
/******/ return ns;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 2);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
// extracted by mini-css-extract-plugin
|
||||
|
||||
/***/ }),
|
||||
/* 1 */,
|
||||
/* 2 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
|
||||
// EXTERNAL MODULE: ./contrib/copy-tex/copy-tex.css
|
||||
var copy_tex = __webpack_require__(0);
|
||||
|
||||
// CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
|
||||
// Set these to how you want inline and display math to be delimited.
|
||||
var defaultCopyDelimiters = {
|
||||
inline: ['$', '$'],
|
||||
// alternative: ['\(', '\)']
|
||||
display: ['$$', '$$'] // alternative: ['\[', '\]']
|
||||
|
||||
}; // Replace .katex elements with their TeX source (<annotation> element).
|
||||
// Modifies fragment in-place. Useful for writing your own 'copy' handler,
|
||||
// as in copy-tex.js.
|
||||
|
||||
var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
|
||||
if (copyDelimiters === void 0) {
|
||||
copyDelimiters = defaultCopyDelimiters;
|
||||
}
|
||||
|
||||
// Remove .katex-html blocks that are preceded by .katex-mathml blocks
|
||||
// (which will get replaced below).
|
||||
var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
|
||||
|
||||
for (var i = 0; i < katexHtml.length; i++) {
|
||||
var element = katexHtml[i];
|
||||
|
||||
if (element.remove) {
|
||||
element.remove(null);
|
||||
} else {
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
} // Replace .katex-mathml elements with their annotation (TeX source)
|
||||
// descendant, with inline delimiters.
|
||||
|
||||
|
||||
var katexMathml = fragment.querySelectorAll('.katex-mathml');
|
||||
|
||||
for (var _i = 0; _i < katexMathml.length; _i++) {
|
||||
var _element = katexMathml[_i];
|
||||
|
||||
var texSource = _element.querySelector('annotation');
|
||||
|
||||
if (texSource) {
|
||||
if (_element.replaceWith) {
|
||||
_element.replaceWith(texSource);
|
||||
} else {
|
||||
_element.parentNode.replaceChild(texSource, _element);
|
||||
}
|
||||
|
||||
texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
|
||||
}
|
||||
} // Switch display math to display delimiters.
|
||||
|
||||
|
||||
var displays = fragment.querySelectorAll('.katex-display annotation');
|
||||
|
||||
for (var _i2 = 0; _i2 < displays.length; _i2++) {
|
||||
var _element2 = displays[_i2];
|
||||
_element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
|
||||
}
|
||||
|
||||
return fragment;
|
||||
};
|
||||
/* harmony default export */ var katex2tex = (katexReplaceWithTex);
|
||||
// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
|
||||
|
||||
// Global copy handler to modify behavior on .katex elements.
|
||||
|
||||
document.addEventListener('copy', function (event) {
|
||||
var selection = window.getSelection();
|
||||
|
||||
if (selection.isCollapsed) {
|
||||
return; // default action OK if selection is empty
|
||||
}
|
||||
|
||||
var fragment = selection.getRangeAt(0).cloneContents();
|
||||
|
||||
if (!fragment.querySelector('.katex-mathml')) {
|
||||
return; // default action OK if no .katex-mathml elements
|
||||
} // Preserve usual HTML copy/paste behavior.
|
||||
|
||||
|
||||
var html = [];
|
||||
|
||||
for (var i = 0; i < fragment.childNodes.length; i++) {
|
||||
html.push(fragment.childNodes[i].outerHTML);
|
||||
}
|
||||
|
||||
event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
|
||||
|
||||
event.clipboardData.setData('text/plain', katex2tex(fragment).textContent); // Prevent normal copy handling.
|
||||
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
/***/ })
|
||||
/******/ ])["default"];
|
||||
});
|
1
katex/contrib/copy-tex.min.css
vendored
Normal file
1
katex/contrib/copy-tex.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.katex,.katex-display{-moz-user-select:all;-ms-user-select:all;-webkit-user-select:all;user-select:all}
|
1
katex/contrib/copy-tex.min.js
vendored
Normal file
1
katex/contrib/copy-tex.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(n){var r={};function o(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=n,o.c=r,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=2)}([function(e,t,n){},,function(e,t,n){"use strict";n.r(t);n(0);var p={inline:["$","$"],display:["$$","$$"]},l=function(e,t){void 0===t&&(t=p);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),r=0;r<n.length;r++){var o=n[r];o.remove?o.remove(null):o.parentNode.removeChild(o)}for(var l=e.querySelectorAll(".katex-mathml"),i=0;i<l.length;i++){var a=l[i],u=a.querySelector("annotation");u&&(a.replaceWith?a.replaceWith(u):a.parentNode.replaceChild(u,a),u.innerHTML=t.inline[0]+u.innerHTML+t.inline[1])}for(var f=e.querySelectorAll(".katex-display annotation"),c=0;c<f.length;c++){var d=f[c];d.innerHTML=t.display[0]+d.innerHTML.substr(t.inline[0].length,d.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],o=0;o<n.childNodes.length;o++)r.push(n.childNodes[o].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",l(n).textContent),e.preventDefault()}}})}]).default});
|
137
katex/contrib/mathtex-script-type.js
Normal file
137
katex/contrib/mathtex-script-type.js
Normal file
@ -0,0 +1,137 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory(require("katex"));
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define(["katex"], factory);
|
||||
else {
|
||||
var a = typeof exports === 'object' ? factory(require("katex")) : factory(root["katex"]);
|
||||
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
||||
}
|
||||
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__) {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = function(exports) {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // create a fake namespace object
|
||||
/******/ // mode & 1: value is a module id, require it
|
||||
/******/ // mode & 2: merge all properties of value into the ns
|
||||
/******/ // mode & 4: return value when already ns object
|
||||
/******/ // mode & 8|1: behave like require
|
||||
/******/ __webpack_require__.t = function(value, mode) {
|
||||
/******/ if(mode & 1) value = __webpack_require__(value);
|
||||
/******/ if(mode & 8) return value;
|
||||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
||||
/******/ var ns = Object.create(null);
|
||||
/******/ __webpack_require__.r(ns);
|
||||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
||||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
||||
/******/ return ns;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
|
||||
/* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(katex__WEBPACK_IMPORTED_MODULE_0__);
|
||||
|
||||
var scripts = document.body.getElementsByTagName("script");
|
||||
scripts = Array.prototype.slice.call(scripts);
|
||||
scripts.forEach(function (script) {
|
||||
if (!script.type || !script.type.match(/math\/tex/i)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
var display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
|
||||
var katexElement = document.createElement(display ? "div" : "span");
|
||||
katexElement.setAttribute("class", display ? "equation" : "inline-equation");
|
||||
|
||||
try {
|
||||
katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, {
|
||||
displayMode: display
|
||||
});
|
||||
} catch (err) {
|
||||
//console.error(err); linter doesn't like this
|
||||
katexElement.textContent = script.text;
|
||||
}
|
||||
|
||||
script.parentNode.replaceChild(katexElement, script);
|
||||
});
|
||||
|
||||
/***/ })
|
||||
/******/ ])["default"];
|
||||
});
|
1
katex/contrib/mathtex-script-type.min.js
vendored
Normal file
1
katex/contrib/mathtex-script-type.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],t);else{var r="object"==typeof exports?t(require("katex")):t(e.katex);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}("undefined"!=typeof self?self:this,function(r){return function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([function(e,t){e.exports=r},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),u=document.body.getElementsByTagName("script");(u=Array.prototype.slice.call(u)).forEach(function(t){if(!t.type||!t.type.match(/math\/tex/i))return-1;var e=null!=t.type.match(/mode\s*=\s*display(;|\s|\n|$)/),r=document.createElement(e?"div":"span");r.setAttribute("class",e?"equation":"inline-equation");try{o.a.render(t.text,r,{displayMode:e})}catch(e){r.textContent=t.text}t.parentNode.replaceChild(r,t)})}]).default});
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
katex/fonts/KaTeX_Main-BoldItalic.ttf
Normal file
BIN
katex/fonts/KaTeX_Main-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
katex/fonts/KaTeX_Main-BoldItalic.woff
Normal file
BIN
katex/fonts/KaTeX_Main-BoldItalic.woff
Normal file
Binary file not shown.
BIN
katex/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
BIN
katex/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user