docs: use ext-role for GL / VK extensions
This makes sure that we generate proper links to all of these extensions. Reviewed-by: Eric Engestrom <eric@igalia.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19594>
This commit is contained in:

committed by
Marge Bot

parent
f69560bdcb
commit
ba78af66c6
@@ -14,7 +14,7 @@ specific to ANV:
|
|||||||
:envvar:`ANV_DISABLE_SECONDARY_CMD_BUFFER_CALLS`
|
:envvar:`ANV_DISABLE_SECONDARY_CMD_BUFFER_CALLS`
|
||||||
If defined to ``1`` or ``true``, this will prevent usage of self
|
If defined to ``1`` or ``true``, this will prevent usage of self
|
||||||
modifying command buffers to implement ``vkCmdExecuteCommands``. As
|
modifying command buffers to implement ``vkCmdExecuteCommands``. As
|
||||||
a result of this, it will also disable ``VK_KHR_performance_query``.
|
a result of this, it will also disable :ext:`VK_KHR_performance_query`.
|
||||||
:envvar:`ANV_ALWAYS_BINDLESS`
|
:envvar:`ANV_ALWAYS_BINDLESS`
|
||||||
If defined to ``1`` or ``true``, this forces all descriptor sets to
|
If defined to ``1`` or ``true``, this forces all descriptor sets to
|
||||||
use the internal `Bindless model`_.
|
use the internal `Bindless model`_.
|
||||||
@@ -28,7 +28,7 @@ specific to ANV:
|
|||||||
Haswell, Cherryview).
|
Haswell, Cherryview).
|
||||||
:envvar:`ANV_PRIMITIVE_REPLICATION_MAX_VIEWS`
|
:envvar:`ANV_PRIMITIVE_REPLICATION_MAX_VIEWS`
|
||||||
Specifies up to how many view shaders can be lowered to handle
|
Specifies up to how many view shaders can be lowered to handle
|
||||||
VK_KHR_multiview. Beyond this number, multiview is implemented
|
:ext:`VK_KHR_multiview`. Beyond this number, multiview is implemented
|
||||||
using instanced rendering. If unspecified, the value default to
|
using instanced rendering. If unspecified, the value default to
|
||||||
``2``.
|
``2``.
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Experimental features
|
|||||||
|
|
||||||
:envvar:`ANV_EXPERIMENTAL_NV_MESH_SHADER`
|
:envvar:`ANV_EXPERIMENTAL_NV_MESH_SHADER`
|
||||||
If defined to ``1`` or ``true``, this advertise support for
|
If defined to ``1`` or ``true``, this advertise support for
|
||||||
VK_NV_mesh_shader extension for platforms that have hardware
|
:ext:`VK_NV_mesh_shader` extension for platforms that have hardware
|
||||||
support for it.
|
support for it.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -131,9 +131,9 @@ Here are some known caveats in OpenGL support:
|
|||||||
that may affect the quality of the texture lookup.
|
that may affect the quality of the texture lookup.
|
||||||
|
|
||||||
- Lima supports FP16 textures in OpenGL ES (through
|
- Lima supports FP16 textures in OpenGL ES (through
|
||||||
``GL_OES_texture_half_float``), but not in OpenGL.
|
:ext:`GL_OES_texture_half_float<GL_OES_texture_float>`), but not in OpenGL.
|
||||||
This is because it would require ``ARB_texture_float`` which would also
|
This is because it would require :ext:`GL_ARB_texture_float` which would
|
||||||
require 32-bit float textures, that the Mali-4xx does not support.
|
also require 32-bit float textures, that the Mali-4xx does not support.
|
||||||
- Rendering to FP16 is possible, but the result is clamped to the
|
- Rendering to FP16 is possible, but the result is clamped to the
|
||||||
[0.0,1.0] range.
|
[0.0,1.0] range.
|
||||||
|
|
||||||
|
@@ -23,12 +23,12 @@ With the Fall 2018 Workstation 15 / Fusion 11 releases, additional
|
|||||||
features are supported in the driver:
|
features are supported in the driver:
|
||||||
|
|
||||||
- Multisample antialiasing (2x, 4x)
|
- Multisample antialiasing (2x, 4x)
|
||||||
- GL_ARB/AMD_draw_buffers_blend
|
- :ext:`GL_ARB_draw_buffers_blend` / :ext:`GL_AMD_draw_buffers_blend`
|
||||||
- GL_ARB_sample_shading
|
- :ext:`GL_ARB_sample_shading`
|
||||||
- GL_ARB_texture_cube_map_array
|
- :ext:`GL_ARB_texture_cube_map_array`
|
||||||
- GL_ARB_texture_gather
|
- :ext:`GL_ARB_texture_gather`
|
||||||
- GL_ARB_texture_query_lod
|
- :ext:`GL_ARB_texture_query_lod`
|
||||||
- GL_EXT/OES_draw_buffers_indexed
|
- :ext:`GL_EXT_draw_buffers_indexed` / :ext:`GL_OES_draw_buffers_indexed`
|
||||||
|
|
||||||
This requires version 2.15.0 or later of the vmwgfx kernel module and
|
This requires version 2.15.0 or later of the vmwgfx kernel module and
|
||||||
the VM must be configured for hardware version 16 or later.
|
the VM must be configured for hardware version 16 or later.
|
||||||
|
@@ -16,9 +16,9 @@ Requirements
|
|||||||
The Venus renderer requires
|
The Venus renderer requires
|
||||||
|
|
||||||
- Vulkan 1.1
|
- Vulkan 1.1
|
||||||
- ``VK_EXT_external_memory_dma_buf``
|
- :ext:`VK_EXT_external_memory_dma_buf`
|
||||||
- ``VK_EXT_image_drm_format_modifier``
|
- :ext:`VK_EXT_image_drm_format_modifier`
|
||||||
- ``VK_EXT_queue_family_foreign``
|
- :ext:`VK_EXT_queue_family_foreign`
|
||||||
|
|
||||||
from the host driver. However, it violates the spec in some places currently
|
from the host driver. However, it violates the spec in some places currently
|
||||||
and also relies on implementation-defined behaviors in others. It is not
|
and also relies on implementation-defined behaviors in others. It is not
|
||||||
@@ -161,8 +161,8 @@ driver supports the formats, especially multi-planar ones, and the DRM format
|
|||||||
modifiers of the GBM BOs.
|
modifiers of the GBM BOs.
|
||||||
|
|
||||||
In the future, if virglrenderer's ``virgl_renderer_export_fence`` is
|
In the future, if virglrenderer's ``virgl_renderer_export_fence`` is
|
||||||
supported, the Venus renderer will require ``VK_KHR_external_fence_fd`` with
|
supported, the Venus renderer will require :ext:`VK_KHR_external_fence_fd`
|
||||||
``VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT`` from the host driver.
|
with ``VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT`` from the host driver.
|
||||||
|
|
||||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
|
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
@@ -44,13 +44,13 @@ Here's a list of those requirements:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_KHR_maintenance1`_
|
* :ext:`VK_KHR_maintenance1`
|
||||||
* `VK_KHR_create_renderpass2`_
|
* :ext:`VK_KHR_create_renderpass2`
|
||||||
* `VK_KHR_imageless_framebuffer`_
|
* :ext:`VK_KHR_imageless_framebuffer`
|
||||||
* `VK_KHR_timeline_semaphore`_
|
* :ext:`VK_KHR_timeline_semaphore`
|
||||||
* `VK_EXT_custom_border_color`_ with ``customBorderColorWithoutFormat``
|
* :ext:`VK_EXT_custom_border_color` with ``customBorderColorWithoutFormat``
|
||||||
* `VK_EXT_provoking_vertex`_
|
* :ext:`VK_EXT_provoking_vertex`
|
||||||
* `VK_EXT_line_rasterization`_, with the following ``VkPhysicalDeviceLineRasterizationFeaturesEXT``:
|
* :ext:`VK_EXT_line_rasterization`, with the following ``VkPhysicalDeviceLineRasterizationFeaturesEXT``:
|
||||||
|
|
||||||
* ``rectangularLines``
|
* ``rectangularLines``
|
||||||
* ``bresenhamLines``
|
* ``bresenhamLines``
|
||||||
@@ -59,14 +59,14 @@ Here's a list of those requirements:
|
|||||||
* ``stippledBresenhamLines``
|
* ``stippledBresenhamLines``
|
||||||
* ``stippledSmoothLines``
|
* ``stippledSmoothLines``
|
||||||
|
|
||||||
* `VK_KHR_swapchain_mutable_format`_
|
* :ext:`VK_KHR_swapchain_mutable_format`
|
||||||
* `VK_EXT_border_color_swizzle`_
|
* :ext:`VK_EXT_border_color_swizzle`
|
||||||
* `VK_KHR_descriptor_update_template`_
|
* :ext:`VK_KHR_descriptor_update_template`
|
||||||
|
|
||||||
In addition to this, `VK_KHR_external_memory`_ is required to support the
|
In addition to this, :ext:`VK_KHR_external_memory` is required to support the
|
||||||
DRI code-path.
|
DRI code-path.
|
||||||
|
|
||||||
We also require either the `VK_EXT_scalar_block_layout`_ extension or
|
We also require either the :ext:`VK_EXT_scalar_block_layout` extension or
|
||||||
Vulkan 1.2, with the ``scalarBlockLayout`` feature.
|
Vulkan 1.2, with the ``scalarBlockLayout`` feature.
|
||||||
|
|
||||||
OpenGL 3.0
|
OpenGL 3.0
|
||||||
@@ -82,8 +82,8 @@ supported:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_EXT_transform_feedback`_
|
* :ext:`VK_EXT_transform_feedback`
|
||||||
* `VK_EXT_conditional_rendering`_
|
* :ext:`VK_EXT_conditional_rendering`
|
||||||
|
|
||||||
OpenGL 3.1
|
OpenGL 3.1
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
@@ -107,7 +107,7 @@ supported, although some of these might not actually get verified:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_EXT_depth_clip_enable`_
|
* :ext:`VK_EXT_depth_clip_enable`
|
||||||
|
|
||||||
OpenGL 3.3
|
OpenGL 3.3
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
@@ -121,7 +121,7 @@ supported, although some of these might not actually get verified:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_EXT_vertex_attribute_divisor`_
|
* :ext:`VK_EXT_vertex_attribute_divisor`
|
||||||
|
|
||||||
OpenGL 4.0
|
OpenGL 4.0
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
@@ -137,7 +137,7 @@ supported:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_KHR_maintenance2`_
|
* :ext:`VK_KHR_maintenance2`
|
||||||
|
|
||||||
* Formats requiring ``VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT``:
|
* Formats requiring ``VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT``:
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ For OpenGL 4.2 support, the following additional requirements must be
|
|||||||
supported:
|
supported:
|
||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
* `VK_EXT_image_2d_view_of_3d`_
|
* :ext:`VK_EXT_image_2d_view_of_3d`
|
||||||
|
|
||||||
* ``VkPhysicalDeviceLimits``:
|
* ``VkPhysicalDeviceLimits``:
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ supported:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_KHR_shader_draw_parameters`_
|
* :ext:`VK_KHR_shader_draw_parameters`
|
||||||
|
|
||||||
OpenGL 4.3
|
OpenGL 4.3
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
@@ -221,7 +221,7 @@ supported:
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_KHR_sampler_mirror_clamp_to_edge`_
|
* :ext:`VK_KHR_sampler_mirror_clamp_to_edge`
|
||||||
|
|
||||||
OpenGL 4.5
|
OpenGL 4.5
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
@@ -245,7 +245,7 @@ are required to be supported
|
|||||||
|
|
||||||
* Device extensions:
|
* Device extensions:
|
||||||
|
|
||||||
* `VK_KHR_draw_indirect_count`_
|
* :ext:`VK_KHR_draw_indirect_count`
|
||||||
|
|
||||||
Performance
|
Performance
|
||||||
-----------
|
-----------
|
||||||
@@ -308,24 +308,3 @@ questions, don't hesitate to visit `#zink on OFTC
|
|||||||
|
|
||||||
|
|
||||||
.. _downloaded from GPUinfo.org: https://www.saschawillems.de/blog/2022/03/12/vulkan-profiles-support-for-the-vulkan-hardware-capability-viewer-and-database/>
|
.. _downloaded from GPUinfo.org: https://www.saschawillems.de/blog/2022/03/12/vulkan-profiles-support-for-the-vulkan-hardware-capability-viewer-and-database/>
|
||||||
.. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html
|
|
||||||
.. _VK_KHR_create_renderpass2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_create_renderpass2.html
|
|
||||||
.. _VK_KHR_imageless_framebuffer: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_imageless_framebuffer.html
|
|
||||||
.. _VK_KHR_timeline_semaphore: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_timeline_semaphore.html
|
|
||||||
.. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html
|
|
||||||
.. _VK_EXT_scalar_block_layout: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_scalar_block_layout.html
|
|
||||||
.. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html
|
|
||||||
.. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html
|
|
||||||
.. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html
|
|
||||||
.. _VK_EXT_image_2d_view_of_3d: https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_2d_view_of_3d.html
|
|
||||||
.. _VK_KHR_maintenance2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance2.html
|
|
||||||
.. _VK_KHR_shader_draw_parameters: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_shader_draw_parameters.html
|
|
||||||
.. _VK_KHR_draw_indirect_count: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_draw_indirect_count.html
|
|
||||||
.. _VK_KHR_sampler_mirror_clamp_to_edge: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_sampler_mirror_clamp_to_edge.html
|
|
||||||
.. _VK_EXT_custom_border_color: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_custom_border_color.html
|
|
||||||
.. _VK_EXT_provoking_vertex: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_provoking_vertex.html
|
|
||||||
.. _VK_EXT_line_rasterization: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_line_rasterization.html
|
|
||||||
.. _VK_KHR_swapchain_mutable_format: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain_mutable_format.html
|
|
||||||
.. _VK_EXT_border_color_swizzle: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_border_color_swizzle.html
|
|
||||||
.. _VK_EXT_depth_clip_enable: https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_enable.html
|
|
||||||
.. _VK_KHR_descriptor_update_template: https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_descriptor_update_template.html
|
|
||||||
|
@@ -40,8 +40,8 @@ Core Mesa environment variables
|
|||||||
:envvar:`MESA_NO_SSE`
|
:envvar:`MESA_NO_SSE`
|
||||||
if set, disables Intel SSE optimizations
|
if set, disables Intel SSE optimizations
|
||||||
:envvar:`MESA_NO_ERROR`
|
:envvar:`MESA_NO_ERROR`
|
||||||
if set to 1, error checking is disabled as per ``KHR_no_error``. This
|
if set to 1, error checking is disabled as per :ext:`GL_KHR_no_error`.
|
||||||
will result in undefined behavior for invalid use of the API, but
|
This will result in undefined behavior for invalid use of the API, but
|
||||||
can reduce CPU use for apps that are known to be error free.
|
can reduce CPU use for apps that are known to be error free.
|
||||||
:envvar:`MESA_DEBUG`
|
:envvar:`MESA_DEBUG`
|
||||||
if set, error messages are printed to stderr. For example, if the
|
if set, error messages are printed to stderr. For example, if the
|
||||||
@@ -89,11 +89,11 @@ Core Mesa environment variables
|
|||||||
- ``FC`` is an optional suffix that indicates a forward compatible
|
- ``FC`` is an optional suffix that indicates a forward compatible
|
||||||
context. This is only valid for versions >= 3.0.
|
context. This is only valid for versions >= 3.0.
|
||||||
- ``COMPAT`` is an optional suffix that indicates a compatibility
|
- ``COMPAT`` is an optional suffix that indicates a compatibility
|
||||||
context or ``GL_ARB_compatibility`` support. This is only valid
|
context or :ext:`GL_ARB_compatibility` support. This is only valid
|
||||||
for versions >= 3.1.
|
for versions >= 3.1.
|
||||||
- GL versions <= 3.0 are set to a compatibility (non-Core) profile
|
- GL versions <= 3.0 are set to a compatibility (non-Core) profile
|
||||||
- GL versions = 3.1, depending on the driver, it may or may not have
|
- GL versions = 3.1, depending on the driver, it may or may not have
|
||||||
the ``ARB_compatibility`` extension enabled.
|
the :ext:`GL_ARB_compatibility` extension enabled.
|
||||||
- GL versions >= 3.2 are set to a Core profile
|
- GL versions >= 3.2 are set to a Core profile
|
||||||
- Examples:
|
- Examples:
|
||||||
|
|
||||||
@@ -104,13 +104,13 @@ Core Mesa environment variables
|
|||||||
``3.0FC``
|
``3.0FC``
|
||||||
select a Core+Forward Compatible profile with GL version 3.0.
|
select a Core+Forward Compatible profile with GL version 3.0.
|
||||||
``3.1``
|
``3.1``
|
||||||
select GL version 3.1 with ``GL_ARB_compatibility`` enabled per
|
select GL version 3.1 with :ext:`GL_ARB_compatibility` enabled
|
||||||
the driver default.
|
per the driver default.
|
||||||
``3.1FC``
|
``3.1FC``
|
||||||
select GL version 3.1 with forward compatibility and
|
select GL version 3.1 with forward compatibility and
|
||||||
``GL_ARB_compatibility`` disabled.
|
:ext:`GL_ARB_compatibility` disabled.
|
||||||
``3.1COMPAT``
|
``3.1COMPAT``
|
||||||
select GL version 3.1 with ``GL_ARB_compatibility`` enabled.
|
select GL version 3.1 with :ext:`GL_ARB_compatibility` enabled.
|
||||||
``X.Y``
|
``X.Y``
|
||||||
override GL version to X.Y without changing the profile.
|
override GL version to X.Y without changing the profile.
|
||||||
``X.YFC``
|
``X.YFC``
|
||||||
@@ -332,7 +332,7 @@ Intel driver environment variables
|
|||||||
``perf``
|
``perf``
|
||||||
emit messages about performance issues
|
emit messages about performance issues
|
||||||
``perfmon``
|
``perfmon``
|
||||||
emit messages about ``AMD_performance_monitor``
|
emit messages about :ext:`GL_AMD_performance_monitor`
|
||||||
``reemit``
|
``reemit``
|
||||||
mark all state dirty on each draw call
|
mark all state dirty on each draw call
|
||||||
``rt``
|
``rt``
|
||||||
|
@@ -292,8 +292,8 @@ being said, many people have managed to figure out the process.
|
|||||||
Joining the appropriate mailing lists and asking questions (and
|
Joining the appropriate mailing lists and asking questions (and
|
||||||
searching the archives) is a good way to get information.
|
searching the archives) is a good way to get information.
|
||||||
|
|
||||||
4.3 Why isn't ``GL_EXT_texture_compression_s3tc`` implemented in Mesa?
|
4.3 Why isn't :ext:`GL_EXT_texture_compression_s3tc` implemented in Mesa?
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Oh but it is! Prior to 2nd October 2017, the Mesa project did not
|
Oh but it is! Prior to 2nd October 2017, the Mesa project did not
|
||||||
include S3TC support due to intellectual property (IP) and/or patent
|
include S3TC support due to intellectual property (IP) and/or patent
|
||||||
|
@@ -182,7 +182,7 @@ Euro Truck Simulator
|
|||||||
893943 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6)
|
893943 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6)
|
||||||
|
|
||||||
At the start of this frame, buffer 14 and 15 haven't been used in the previous 2
|
At the start of this frame, buffer 14 and 15 haven't been used in the previous 2
|
||||||
frames, and the ``GL_ARB_sync`` fence has ensured that the GPU has at least started
|
frames, and the :ext:`GL_ARB_sync` fence has ensured that the GPU has at least started
|
||||||
frame n-1 as the CPU starts the current frame. The first map is ``offset = 0,
|
frame n-1 as the CPU starts the current frame. The first map is ``offset = 0,
|
||||||
INVALIDATE_BUFFER | UNSYNCHRONIZED``, which suggests that the driver should
|
INVALIDATE_BUFFER | UNSYNCHRONIZED``, which suggests that the driver should
|
||||||
reallocate storage for the mapping even in the ``UNSYNCHRONIZED`` case, except
|
reallocate storage for the mapping even in the ``UNSYNCHRONIZED`` case, except
|
||||||
@@ -237,7 +237,7 @@ Plague Inc
|
|||||||
1640863 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 6, type = GL_UNSIGNED_SHORT, indices = 0x58, basevertex = 4)
|
1640863 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 6, type = GL_UNSIGNED_SHORT, indices = 0x58, basevertex = 4)
|
||||||
|
|
||||||
At the start of this frame, the VBOs haven't been used in about 6 frames, and
|
At the start of this frame, the VBOs haven't been used in about 6 frames, and
|
||||||
the ``GL_ARB_sync`` fence has ensured that the GPU has started frame n-1.
|
the :ext:`GL_ARB_sync` fence has ensured that the GPU has started frame n-1.
|
||||||
|
|
||||||
Note the use of ``glFlushMappedBufferRange()`` on a small fraction of the size
|
Note the use of ``glFlushMappedBufferRange()`` on a small fraction of the size
|
||||||
of the VBO -- it is important that a blitting driver make use of the flush
|
of the VBO -- it is important that a blitting driver make use of the flush
|
||||||
@@ -299,7 +299,7 @@ Tabletop Simulator
|
|||||||
1289068 glDrawArrays(mode = GL_TRIANGLE_STRIP, first = 8, count = 4)
|
1289068 glDrawArrays(mode = GL_TRIANGLE_STRIP, first = 8, count = 4)
|
||||||
1289553 glXSwapBuffers(dpy = 0x3e10810, drawable = 23068692)
|
1289553 glXSwapBuffers(dpy = 0x3e10810, drawable = 23068692)
|
||||||
|
|
||||||
In this app, buffer 480 gets used like this every other frame. The ``GL_ARB_sync``
|
In this app, buffer 480 gets used like this every other frame. The :ext:`GL_ARB_sync`
|
||||||
fence ensures that frame n-1 has started on the GPU before CPU work starts on
|
fence ensures that frame n-1 has started on the GPU before CPU work starts on
|
||||||
the current frame, so the unsynchronized access to the buffers is safe.
|
the current frame, so the unsynchronized access to the buffers is safe.
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ Hollow Knight
|
|||||||
1873097 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 36, type = GL_UNSIGNED_SHORT, indices = 0x2d0, basevertex = 240)
|
1873097 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 36, type = GL_UNSIGNED_SHORT, indices = 0x2d0, basevertex = 240)
|
||||||
|
|
||||||
In this app, buffer 29/30 get used like this starting from offset 0 every other
|
In this app, buffer 29/30 get used like this starting from offset 0 every other
|
||||||
frame. The ``GL_ARB_sync`` fence is used to make sure that the GPU has reached the
|
frame. The :ext:`GL_ARB_sync` fence is used to make sure that the GPU has reached the
|
||||||
start of the previous frame before we go unsynchronized writing over the n-2
|
start of the previous frame before we go unsynchronized writing over the n-2
|
||||||
frame's buffer.
|
frame's buffer.
|
||||||
|
|
||||||
@@ -363,7 +363,7 @@ Borderlands 2
|
|||||||
3563064 glBindBufferARB(target = GL_ELEMENT_ARRAY_BUFFER, buffer = 875)
|
3563064 glBindBufferARB(target = GL_ELEMENT_ARRAY_BUFFER, buffer = 875)
|
||||||
3563065 glDrawElementsInstancedARB(mode = GL_TRIANGLES, count = 72, type = GL_UNSIGNED_SHORT, indices = NULL, instancecount = 28)
|
3563065 glDrawElementsInstancedARB(mode = GL_TRIANGLES, count = 72, type = GL_UNSIGNED_SHORT, indices = NULL, instancecount = 28)
|
||||||
|
|
||||||
The ``GL_ARB_sync`` fence ensures that the GPU has started frame n-1 before the CPU
|
The :ext:`GL_ARB_sync` fence ensures that the GPU has started frame n-1 before the CPU
|
||||||
starts on the current frame.
|
starts on the current frame.
|
||||||
|
|
||||||
This sequence of buffer uploads appears in each frame with the same buffer
|
This sequence of buffer uploads appears in each frame with the same buffer
|
||||||
|
@@ -102,7 +102,7 @@ objects. They all follow simple, one-method binding calls, e.g.
|
|||||||
PIPE_MAX_VIEWPORTS.
|
PIPE_MAX_VIEWPORTS.
|
||||||
* ``set_viewport_states``
|
* ``set_viewport_states``
|
||||||
* ``set_window_rectangles`` sets the window rectangles to be used for
|
* ``set_window_rectangles`` sets the window rectangles to be used for
|
||||||
rendering, as defined by GL_EXT_window_rectangles. There are two
|
rendering, as defined by :ext:`GL_EXT_window_rectangles`. There are two
|
||||||
modes - include and exclude, which define whether the supplied
|
modes - include and exclude, which define whether the supplied
|
||||||
rectangles are to be used for including fragments or excluding
|
rectangles are to be used for including fragments or excluding
|
||||||
them. All of the rectangles are ORed together, so in exclude mode,
|
them. All of the rectangles are ORed together, so in exclude mode,
|
||||||
@@ -122,7 +122,7 @@ objects. They all follow simple, one-method binding calls, e.g.
|
|||||||
for tessellation.
|
for tessellation.
|
||||||
|
|
||||||
* ``set_debug_callback`` sets the callback to be used for reporting
|
* ``set_debug_callback`` sets the callback to be used for reporting
|
||||||
various debug messages, eventually reported via KHR_debug and
|
various debug messages, eventually reported via :ext:`GL_KHR_debug` and
|
||||||
similar mechanisms.
|
similar mechanisms.
|
||||||
|
|
||||||
Samplers
|
Samplers
|
||||||
|
@@ -15,7 +15,8 @@ clamp_vertex_color
|
|||||||
the execution of the vertex shader, before being passed to the geometry
|
the execution of the vertex shader, before being passed to the geometry
|
||||||
shader or fragment shader.
|
shader or fragment shader.
|
||||||
|
|
||||||
OpenGL: glClampColor(GL_CLAMP_VERTEX_COLOR) in GL 3.0 or GL_ARB_color_buffer_float
|
OpenGL: glClampColor(GL_CLAMP_VERTEX_COLOR) in GL 3.0 or
|
||||||
|
:ext:`GL_ARB_color_buffer_float`
|
||||||
|
|
||||||
D3D11: seems always disabled
|
D3D11: seems always disabled
|
||||||
|
|
||||||
@@ -28,7 +29,8 @@ clamp_fragment_color
|
|||||||
Controls whether TGSI_SEMANTIC_COLOR outputs of the fragment shader
|
Controls whether TGSI_SEMANTIC_COLOR outputs of the fragment shader
|
||||||
are clamped to [0, 1].
|
are clamped to [0, 1].
|
||||||
|
|
||||||
OpenGL: glClampColor(GL_CLAMP_FRAGMENT_COLOR) in GL 3.0 or ARB_color_buffer_float
|
OpenGL: glClampColor(GL_CLAMP_FRAGMENT_COLOR) in GL 3.0 or
|
||||||
|
:ext:`GL_ARB_color_buffer_float`
|
||||||
|
|
||||||
D3D11: seems always disabled
|
D3D11: seems always disabled
|
||||||
|
|
||||||
|
@@ -69,11 +69,11 @@ TODO there's no CAP bit currently for this, there's also unspecified size etc. l
|
|||||||
TODO: is there any chance of supporting GL pixel buffer object acceleration with this?
|
TODO: is there any chance of supporting GL pixel buffer object acceleration with this?
|
||||||
|
|
||||||
|
|
||||||
OpenGL: vertex buffers in GL 1.5 or GL_ARB_vertex_buffer_object
|
OpenGL: vertex buffers in GL 1.5 or :ext:`GL_ARB_vertex_buffer_object`
|
||||||
|
|
||||||
- Binding to stream out requires GL 3.0 or GL_NV_transform_feedback
|
- Binding to stream out requires GL 3.0 or :ext:`GL_NV_transform_feedback`
|
||||||
- Binding as constant buffers requires GL 3.1 or GL_ARB_uniform_buffer_object
|
- Binding as constant buffers requires GL 3.1 or :ext:`GL_ARB_uniform_buffer_object`
|
||||||
- Binding to a sampling stage requires GL 3.1 or GL_ARB_texture_buffer_object
|
- Binding to a sampling stage requires GL 3.1 or :ext:`GL_ARB_texture_buffer_object`
|
||||||
|
|
||||||
D3D11: buffer resources
|
D3D11: buffer resources
|
||||||
- Binding to a render target requires D3D_FEATURE_LEVEL_10_0
|
- Binding to a render target requires D3D_FEATURE_LEVEL_10_0
|
||||||
@@ -93,7 +93,7 @@ PIPE_TEXTURE_1D / PIPE_TEXTURE_1D_ARRAY
|
|||||||
|
|
||||||
OpenGL: GL_TEXTURE_1D in GL 1.0
|
OpenGL: GL_TEXTURE_1D in GL 1.0
|
||||||
|
|
||||||
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or GL_ARB_texture_non_power_of_two
|
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or :ext:`GL_ARB_texture_non_power_of_two`
|
||||||
|
|
||||||
D3D11: 1D textures in D3D_FEATURE_LEVEL_10_0
|
D3D11: 1D textures in D3D_FEATURE_LEVEL_10_0
|
||||||
|
|
||||||
@@ -107,7 +107,8 @@ PIPE_TEXTURE_RECT
|
|||||||
- Must use unnormalized coordinates
|
- Must use unnormalized coordinates
|
||||||
- Must use a clamp wrap mode
|
- Must use a clamp wrap mode
|
||||||
|
|
||||||
OpenGL: GL_TEXTURE_RECTANGLE in GL 3.1 or GL_ARB_texture_rectangle or GL_NV_texture_rectangle
|
OpenGL: GL_TEXTURE_RECTANGLE in GL 3.1 or :ext:`GL_ARB_texture_rectangle` or
|
||||||
|
:ext:`GL_NV_texture_rectangle`
|
||||||
|
|
||||||
OpenCL: can create OpenCL images based on this, that can then be sampled arbitrarily
|
OpenCL: can create OpenCL images based on this, that can then be sampled arbitrarily
|
||||||
|
|
||||||
@@ -128,7 +129,7 @@ PIPE_TEXTURE_2D / PIPE_TEXTURE_2D_ARRAY
|
|||||||
|
|
||||||
OpenGL: GL_TEXTURE_2D in GL 1.0
|
OpenGL: GL_TEXTURE_2D in GL 1.0
|
||||||
|
|
||||||
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or GL_ARB_texture_non_power_of_two
|
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or :ext:`GL_ARB_texture_non_power_of_two`
|
||||||
|
|
||||||
OpenCL: can create OpenCL images based on this, that can then be sampled arbitrarily
|
OpenCL: can create OpenCL images based on this, that can then be sampled arbitrarily
|
||||||
|
|
||||||
@@ -147,9 +148,9 @@ Mipmap dimensions are reduced in all 3 coordinates.
|
|||||||
- array_size must be 1
|
- array_size must be 1
|
||||||
- Must use normalized coordinates
|
- Must use normalized coordinates
|
||||||
|
|
||||||
OpenGL: GL_TEXTURE_3D in GL 1.2 or GL_EXT_texture3D
|
OpenGL: GL_TEXTURE_3D in GL 1.2 or :ext:`GL_EXT_texture3D`
|
||||||
|
|
||||||
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or GL_ARB_texture_non_power_of_two
|
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or :ext:`GL_ARB_texture_non_power_of_two`
|
||||||
|
|
||||||
D3D11: 3D textures
|
D3D11: 3D textures
|
||||||
|
|
||||||
@@ -173,11 +174,11 @@ resulting in filtering taking samples from multiple surfaces near to the edge.
|
|||||||
width and height must be powers of two
|
width and height must be powers of two
|
||||||
- Must use normalized coordinates
|
- Must use normalized coordinates
|
||||||
|
|
||||||
OpenGL: GL_TEXTURE_CUBE_MAP in GL 1.3 or EXT_texture_cube_map
|
OpenGL: GL_TEXTURE_CUBE_MAP in GL 1.3 or :ext:`GL_EXT_texture_cube_map`
|
||||||
|
|
||||||
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or GL_ARB_texture_non_power_of_two
|
- PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or :ext:`GL_ARB_texture_non_power_of_two`
|
||||||
- Seamless cube maps require GL 3.2 or GL_ARB_seamless_cube_map or GL_AMD_seamless_cubemap_per_texture
|
- Seamless cube maps require GL 3.2 or :ext:`GL_ARB_seamless_cube_map` or :ext:`GL_AMD_seamless_cubemap_per_texture`
|
||||||
- Cube map arrays require GL 4.0 or GL_ARB_texture_cube_map_array
|
- Cube map arrays require GL 4.0 or :ext:`GL_ARB_texture_cube_map_array`
|
||||||
|
|
||||||
D3D11: 2D array textures with the D3D11_RESOURCE_MISC_TEXTURECUBE flag
|
D3D11: 2D array textures with the D3D11_RESOURCE_MISC_TEXTURECUBE flag
|
||||||
|
|
||||||
@@ -191,7 +192,7 @@ Surfaces are views of a resource that can be bound as a framebuffer to serve as
|
|||||||
|
|
||||||
TODO: write much more on surfaces
|
TODO: write much more on surfaces
|
||||||
|
|
||||||
OpenGL: FBOs are collections of surfaces in GL 3.0 or GL_ARB_framebuffer_object
|
OpenGL: FBOs are collections of surfaces in GL 3.0 or :ext:`GL_ARB_framebuffer_object`
|
||||||
|
|
||||||
D3D11: render target views and depth/stencil views
|
D3D11: render target views and depth/stencil views
|
||||||
|
|
||||||
|
@@ -119,8 +119,9 @@ The integer capabilities:
|
|||||||
is allowed to return ``0`` in which case ``PIPE_CAP_GLSL_FEATURE_LEVEL`` is
|
is allowed to return ``0`` in which case ``PIPE_CAP_GLSL_FEATURE_LEVEL`` is
|
||||||
used.
|
used.
|
||||||
Note that simply returning the same value as the GLSL feature level cap is
|
Note that simply returning the same value as the GLSL feature level cap is
|
||||||
incorrect. For example, GLSL version 3.30 does not require ``ARB_gpu_shader5``,
|
incorrect. For example, GLSL version 3.30 does not require
|
||||||
but ESSL version 3.20 es does require ``EXT_gpu_shader5``
|
:ext:`GL_EXT_gpu_shader5`, but ESSL version 3.20 es does require
|
||||||
|
:ext:`GL_EXT_gpu_shader5`
|
||||||
* ``PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION``: Whether quads adhere to
|
* ``PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION``: Whether quads adhere to
|
||||||
the flatshade_first setting in ``pipe_rasterizer_state``.
|
the flatshade_first setting in ``pipe_rasterizer_state``.
|
||||||
* ``PIPE_CAP_USER_VERTEX_BUFFERS``: Whether the driver supports user vertex
|
* ``PIPE_CAP_USER_VERTEX_BUFFERS``: Whether the driver supports user vertex
|
||||||
@@ -207,7 +208,7 @@ The integer capabilities:
|
|||||||
PIPE_ENDIAN_BIG or PIPE_ENDIAN_LITTLE.
|
PIPE_ENDIAN_BIG or PIPE_ENDIAN_LITTLE.
|
||||||
* ``PIPE_CAP_MIXED_FRAMEBUFFER_SIZES``: Whether it is allowed to have
|
* ``PIPE_CAP_MIXED_FRAMEBUFFER_SIZES``: Whether it is allowed to have
|
||||||
different sizes for fb color/zs attachments. This controls whether
|
different sizes for fb color/zs attachments. This controls whether
|
||||||
ARB_framebuffer_object is provided.
|
:ext:`GL_ARB_framebuffer_object` is provided.
|
||||||
* ``PIPE_CAP_VS_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and
|
* ``PIPE_CAP_VS_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and
|
||||||
``VARYING_SLOT_VIEWPORT`` are supported as vertex shader outputs. Note that
|
``VARYING_SLOT_VIEWPORT`` are supported as vertex shader outputs. Note that
|
||||||
the viewport will only be used if multiple viewports are exposed.
|
the viewport will only be used if multiple viewports are exposed.
|
||||||
@@ -270,11 +271,11 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE``: The maximum supported vertex stride.
|
* ``PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE``: The maximum supported vertex stride.
|
||||||
* ``PIPE_CAP_SAMPLER_VIEW_TARGET``: Whether the sampler view's target can be
|
* ``PIPE_CAP_SAMPLER_VIEW_TARGET``: Whether the sampler view's target can be
|
||||||
different than the underlying resource's, as permitted by
|
different than the underlying resource's, as permitted by
|
||||||
ARB_texture_view. For example a 2d array texture may be reinterpreted as a
|
:ext:`GL_ARB_texture_view`. For example a 2d array texture may be reinterpreted as a
|
||||||
cube (array) texture and vice-versa.
|
cube (array) texture and vice-versa.
|
||||||
* ``PIPE_CAP_CLIP_HALFZ``: Whether the driver supports the
|
* ``PIPE_CAP_CLIP_HALFZ``: Whether the driver supports the
|
||||||
pipe_rasterizer_state::clip_halfz being set to true. This is required
|
pipe_rasterizer_state::clip_halfz being set to true. This is required
|
||||||
for enabling ARB_clip_control.
|
for enabling :ext:`GL_ARB_clip_control`.
|
||||||
* ``PIPE_CAP_POLYGON_OFFSET_CLAMP``: If true, the driver implements support
|
* ``PIPE_CAP_POLYGON_OFFSET_CLAMP``: If true, the driver implements support
|
||||||
for ``pipe_rasterizer_state::offset_clamp``.
|
for ``pipe_rasterizer_state::offset_clamp``.
|
||||||
* ``PIPE_CAP_MULTISAMPLE_Z_RESOLVE``: Whether the driver supports blitting
|
* ``PIPE_CAP_MULTISAMPLE_Z_RESOLVE``: Whether the driver supports blitting
|
||||||
@@ -303,16 +304,16 @@ The integer capabilities:
|
|||||||
textures.
|
textures.
|
||||||
* ``PIPE_CAP_DEPTH_BOUNDS_TEST``: Whether bounds_test, bounds_min, and
|
* ``PIPE_CAP_DEPTH_BOUNDS_TEST``: Whether bounds_test, bounds_min, and
|
||||||
bounds_max states of pipe_depth_stencil_alpha_state behave according
|
bounds_max states of pipe_depth_stencil_alpha_state behave according
|
||||||
to the GL_EXT_depth_bounds_test specification.
|
to the :ext:`GL_EXT_depth_bounds_test` specification.
|
||||||
* ``PIPE_CAP_TEXTURE_QUERY_SAMPLES``: Whether the ``TXQS`` opcode is supported
|
* ``PIPE_CAP_TEXTURE_QUERY_SAMPLES``: Whether the ``TXQS`` opcode is supported
|
||||||
* ``PIPE_CAP_FORCE_PERSAMPLE_INTERP``: If the driver can force per-sample
|
* ``PIPE_CAP_FORCE_PERSAMPLE_INTERP``: If the driver can force per-sample
|
||||||
interpolation for all fragment shader inputs if
|
interpolation for all fragment shader inputs if
|
||||||
pipe_rasterizer_state::force_persample_interp is set. This is only used
|
pipe_rasterizer_state::force_persample_interp is set. This is only used
|
||||||
by GL3-level sample shading (ARB_sample_shading). GL4-level sample shading
|
by GL3-level sample shading (:ext:`GL_ARB_sample_shading`). GL4-level sample
|
||||||
(ARB_gpu_shader5) doesn't use this. While GL3 hardware has a state for it,
|
shading (:ext:`GL_ARB_gpu_shader5`) doesn't use this. While GL3 hardware has a
|
||||||
GL4 hardware will likely need to emulate it with a shader variant, or by
|
state for it, GL4 hardware will likely need to emulate it with a shader
|
||||||
selecting the interpolation weights with a conditional assignment
|
variant, or by selecting the interpolation weights with a conditional
|
||||||
in the shader.
|
assignment in the shader.
|
||||||
* ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any
|
* ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any
|
||||||
pipe_context. Important for reducing jank at draw time by letting GL shaders
|
pipe_context. Important for reducing jank at draw time by letting GL shaders
|
||||||
linked in one thread be used in another thread without recompiling.
|
linked in one thread be used in another thread without recompiling.
|
||||||
@@ -367,11 +368,13 @@ The integer capabilities:
|
|||||||
rendering or textures.
|
rendering or textures.
|
||||||
* ``PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR``: Implementation uses bounds
|
* ``PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR``: Implementation uses bounds
|
||||||
checking on resource accesses by shader if the context is created with
|
checking on resource accesses by shader if the context is created with
|
||||||
PIPE_CONTEXT_ROBUST_BUFFER_ACCESS. See the ARB_robust_buffer_access_behavior
|
PIPE_CONTEXT_ROBUST_BUFFER_ACCESS. See the
|
||||||
extension for information on the required behavior for out of bounds accesses
|
:ext:`GL_ARB_robust_buffer_access_behavior` extension for information on the
|
||||||
and accesses to unbound resources.
|
required behavior for out of bounds accesses and accesses to unbound
|
||||||
* ``PIPE_CAP_CULL_DISTANCE``: Whether the driver supports the arb_cull_distance
|
resources.
|
||||||
extension and thus implements proper support for culling planes.
|
* ``PIPE_CAP_CULL_DISTANCE``: Whether the driver supports the
|
||||||
|
:ext:`GL_ARB_cull_distance` extension and thus implements proper support for
|
||||||
|
culling planes.
|
||||||
* ``PIPE_CAP_CULL_DISTANCE_NOCOMBINE``: Whether the driver wants to skip
|
* ``PIPE_CAP_CULL_DISTANCE_NOCOMBINE``: Whether the driver wants to skip
|
||||||
running the ``nir_lower_clip_cull_distance_arrays`` pass in order to get
|
running the ``nir_lower_clip_cull_distance_arrays`` pass in order to get
|
||||||
VARYING_SLOT_CULL_DIST0 slot variables.
|
VARYING_SLOT_CULL_DIST0 slot variables.
|
||||||
@@ -401,13 +404,13 @@ The integer capabilities:
|
|||||||
equal interpolation qualifiers.
|
equal interpolation qualifiers.
|
||||||
Components may overlap, notably when the gaps in an array of dvec3 are
|
Components may overlap, notably when the gaps in an array of dvec3 are
|
||||||
filled in.
|
filled in.
|
||||||
* ``PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME``: Whether GL_ARB_transform_feedback2
|
* ``PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME``: Whether
|
||||||
is supported, including pausing/resuming queries and having
|
:ext:`GL_ARB_transform_feedback2` is supported, including pausing/resuming
|
||||||
``count_from_stream_output`` set on indirect draws to implement
|
queries and having ``count_from_stream_output`` set on indirect draws to
|
||||||
glDrawTransformFeedback. Required for OpenGL 4.0.
|
implement glDrawTransformFeedback. Required for OpenGL 4.0.
|
||||||
* ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream
|
* ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream
|
||||||
output mode is able to interleave across buffers. This is required for
|
output mode is able to interleave across buffers. This is required for
|
||||||
ARB_transform_feedback3.
|
:ext:`GL_ARB_transform_feedback3`.
|
||||||
* ``PIPE_CAP_SHADER_CAN_READ_OUTPUTS``: Whether every TGSI shader stage can read
|
* ``PIPE_CAP_SHADER_CAN_READ_OUTPUTS``: Whether every TGSI shader stage can read
|
||||||
from the output file.
|
from the output file.
|
||||||
* ``PIPE_CAP_FBFETCH``: The number of render targets whose value in the
|
* ``PIPE_CAP_FBFETCH``: The number of render targets whose value in the
|
||||||
@@ -459,7 +462,7 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_LOAD_CONSTBUF``: True if the driver supports ``TGSI_OPCODE_LOAD`` use
|
* ``PIPE_CAP_LOAD_CONSTBUF``: True if the driver supports ``TGSI_OPCODE_LOAD`` use
|
||||||
with constant buffers.
|
with constant buffers.
|
||||||
* ``PIPE_CAP_TILE_RASTER_ORDER``: Whether the driver supports
|
* ``PIPE_CAP_TILE_RASTER_ORDER``: Whether the driver supports
|
||||||
GL_MESA_tile_raster_order, using the tile_raster_order_* fields in
|
:ext:`GL_MESA_tile_raster_order`, using the tile_raster_order_* fields in
|
||||||
pipe_rasterizer_state.
|
pipe_rasterizer_state.
|
||||||
* ``PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES``: Limit on combined shader
|
* ``PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES``: Limit on combined shader
|
||||||
output resources (images + buffers + fragment outputs). If 0 the state
|
output resources (images + buffers + fragment outputs). If 0 the state
|
||||||
@@ -509,7 +512,7 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_DEPTH_COVERAGE``: Whether
|
* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_DEPTH_COVERAGE``: Whether
|
||||||
``PIPE_CAP_POST_DEPTH_COVERAGE`` works with conservative rasterization.
|
``PIPE_CAP_POST_DEPTH_COVERAGE`` works with conservative rasterization.
|
||||||
* ``PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE``: Whether
|
* ``PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE``: Whether
|
||||||
inner_coverage from GL_INTEL_conservative_rasterization is supported.
|
inner_coverage from :ext:`GL_INTEL_conservative_rasterization` is supported.
|
||||||
* ``PIPE_CAP_MAX_CONSERVATIVE_RASTER_SUBPIXEL_PRECISION_BIAS``: The maximum
|
* ``PIPE_CAP_MAX_CONSERVATIVE_RASTER_SUBPIXEL_PRECISION_BIAS``: The maximum
|
||||||
subpixel precision bias in bits during conservative rasterization.
|
subpixel precision bias in bits during conservative rasterization.
|
||||||
* ``PIPE_CAP_PROGRAMMABLE_SAMPLE_LOCATIONS``: True is the driver supports
|
* ``PIPE_CAP_PROGRAMMABLE_SAMPLE_LOCATIONS``: True is the driver supports
|
||||||
@@ -534,7 +537,7 @@ The integer capabilities:
|
|||||||
of pipe_vertex_element::src_offset.
|
of pipe_vertex_element::src_offset.
|
||||||
* ``PIPE_CAP_SURFACE_SAMPLE_COUNT``: Whether the driver
|
* ``PIPE_CAP_SURFACE_SAMPLE_COUNT``: Whether the driver
|
||||||
supports pipe_surface overrides of resource nr_samples. If set, will
|
supports pipe_surface overrides of resource nr_samples. If set, will
|
||||||
enable EXT_multisampled_render_to_texture.
|
enable :ext:`GL_EXT_multisampled_render_to_texture`.
|
||||||
* ``PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD``: Atomic floating point adds are
|
* ``PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD``: Atomic floating point adds are
|
||||||
supported on images, buffers, and shared memory.
|
supported on images, buffers, and shared memory.
|
||||||
* ``PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND``: True if the driver needs blend state to use zero/one instead of destination alpha for RGB/XRGB formats.
|
* ``PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND``: True if the driver needs blend state to use zero/one instead of destination alpha for RGB/XRGB formats.
|
||||||
@@ -577,7 +580,7 @@ The integer capabilities:
|
|||||||
turn arrays whose contents can be deduced at compile time into constant
|
turn arrays whose contents can be deduced at compile time into constant
|
||||||
buffer loads, or false if the driver can handle such arrays itself in a more
|
buffer loads, or false if the driver can handle such arrays itself in a more
|
||||||
efficient manner (such as through nir_opt_large_constants() and nir->constant_data).
|
efficient manner (such as through nir_opt_large_constants() and nir->constant_data).
|
||||||
* ``PIPE_CAP_GL_SPIRV``: True if the driver supports ARB_gl_spirv extension.
|
* ``PIPE_CAP_GL_SPIRV``: True if the driver supports :ext:`GL_ARB_gl_spirv` extension.
|
||||||
* ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders.
|
* ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders.
|
||||||
* ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs.
|
* ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs.
|
||||||
* ``PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source.
|
* ``PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source.
|
||||||
@@ -604,9 +607,9 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED``: Driver needs the nir_lower_viewport_transform pass to be enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Defaults to false.
|
* ``PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED``: Driver needs the nir_lower_viewport_transform pass to be enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Defaults to false.
|
||||||
* ``PIPE_CAP_PSIZ_CLAMPED``: Driver needs for the point size to be clamped. Additionally, the gl_PointSize has been modified and its value should be lowered for transform feedback, if needed. Defaults to false.
|
* ``PIPE_CAP_PSIZ_CLAMPED``: Driver needs for the point size to be clamped. Additionally, the gl_PointSize has been modified and its value should be lowered for transform feedback, if needed. Defaults to false.
|
||||||
* ``PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE``: Buffer size used to upload vertices for glBegin/glEnd.
|
* ``PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE``: Buffer size used to upload vertices for glBegin/glEnd.
|
||||||
* ``PIPE_CAP_VIEWPORT_SWIZZLE``: Whether pipe_viewport_state::swizzle can be used to specify pre-clipping swizzling of coordinates (see GL_NV_viewport_swizzle).
|
* ``PIPE_CAP_VIEWPORT_SWIZZLE``: Whether pipe_viewport_state::swizzle can be used to specify pre-clipping swizzling of coordinates (see :ext:`GL_NV_viewport_swizzle`).
|
||||||
* ``PIPE_CAP_SYSTEM_SVM``: True if all application memory can be shared with the GPU without explicit mapping.
|
* ``PIPE_CAP_SYSTEM_SVM``: True if all application memory can be shared with the GPU without explicit mapping.
|
||||||
* ``PIPE_CAP_VIEWPORT_MASK``: Whether ``TGSI_SEMANTIC_VIEWPORT_MASK`` and ``TGSI_PROPERTY_LAYER_VIEWPORT_RELATIVE`` are supported (see GL_NV_viewport_array2).
|
* ``PIPE_CAP_VIEWPORT_MASK``: Whether ``TGSI_SEMANTIC_VIEWPORT_MASK`` and ``TGSI_PROPERTY_LAYER_VIEWPORT_RELATIVE`` are supported (see :ext:`GL_NV_viewport_array2`).
|
||||||
* ``PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE``: Whether mapping a buffer as unsynchronized from any thread is safe.
|
* ``PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE``: Whether mapping a buffer as unsynchronized from any thread is safe.
|
||||||
* ``PIPE_CAP_GLSL_ZERO_INIT``: Choose a default zero initialization some GLSL variables. If ``1``, then all GLSL shader variables and gl_FragColor are initialized to zero. If ``2``, then shader out variables are not initialized but function out variables are.
|
* ``PIPE_CAP_GLSL_ZERO_INIT``: Choose a default zero initialization some GLSL variables. If ``1``, then all GLSL shader variables and gl_FragColor are initialized to zero. If ``2``, then shader out variables are not initialized but function out variables are.
|
||||||
* ``PIPE_CAP_BLEND_EQUATION_ADVANCED``: Driver supports blend equation advanced without necessarily supporting FBFETCH.
|
* ``PIPE_CAP_BLEND_EQUATION_ADVANCED``: Driver supports blend equation advanced without necessarily supporting FBFETCH.
|
||||||
@@ -628,7 +631,7 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE``: Maximum 1D/2D/rectangle texture image dimension for a sparse texture.
|
* ``PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE``: Maximum 1D/2D/rectangle texture image dimension for a sparse texture.
|
||||||
* ``PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE``: Maximum 3D texture image dimension for a sparse texture.
|
* ``PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE``: Maximum 3D texture image dimension for a sparse texture.
|
||||||
* ``PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS``: Maximum number of layers in a sparse array texture.
|
* ``PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS``: Maximum number of layers in a sparse array texture.
|
||||||
* ``PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS``: TRUE if there are no restrictions on the allocation of mipmaps in sparse textures and FALSE otherwise. See SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB description in ARB_sparse_texture extension spec.
|
* ``PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS``: TRUE if there are no restrictions on the allocation of mipmaps in sparse textures and FALSE otherwise. See SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB description in :ext:`GL_ARB_sparse_texture` extension spec.
|
||||||
* ``PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY``: TRUE if shader sparse texture sample instruction could also return the residency information.
|
* ``PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY``: TRUE if shader sparse texture sample instruction could also return the residency information.
|
||||||
* ``PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD``: TRUE if shader sparse texture sample instruction support clamp the minimal lod to prevent read from un-committed pages.
|
* ``PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD``: TRUE if shader sparse texture sample instruction support clamp the minimal lod to prevent read from un-committed pages.
|
||||||
* ``PIPE_CAP_ALLOW_DRAW_OUT_OF_ORDER``: TRUE if the driver allows the "draw out of order" optimization to be enabled. See _mesa_update_allow_draw_out_of_order for more details.
|
* ``PIPE_CAP_ALLOW_DRAW_OUT_OF_ORDER``: TRUE if the driver allows the "draw out of order" optimization to be enabled. See _mesa_update_allow_draw_out_of_order for more details.
|
||||||
|
@@ -899,9 +899,9 @@ XXX doesn't look like most of the opcodes really belong here.
|
|||||||
|
|
||||||
.. opcode:: TXF - Texel Fetch
|
.. opcode:: TXF - Texel Fetch
|
||||||
|
|
||||||
As per NV_gpu_program4, extract a single texel from a specified texture
|
As per :ext:`GL_NV_gpu_program4`, extract a single texel from a specified
|
||||||
image or PIPE_BUFFER resource. The source sampler may not be a CUBE or
|
texture image or PIPE_BUFFER resource. The source sampler may not be a
|
||||||
SHADOW. *src0* is a
|
CUBE or SHADOW. *src0* is a
|
||||||
four-component signed integer vector used to identify the single texel
|
four-component signed integer vector used to identify the single texel
|
||||||
accessed. 3 components + level. If the texture is multisampled, then
|
accessed. 3 components + level. If the texture is multisampled, then
|
||||||
the fourth component indicates the sample, not the mipmap level.
|
the fourth component indicates the sample, not the mipmap level.
|
||||||
@@ -915,11 +915,11 @@ XXX doesn't look like most of the opcodes really belong here.
|
|||||||
|
|
||||||
.. opcode:: TXQ - Texture Size Query
|
.. opcode:: TXQ - Texture Size Query
|
||||||
|
|
||||||
As per NV_gpu_program4, retrieve the dimensions of the texture depending on
|
As per :ext:`GL_NV_gpu_program4`, retrieve the dimensions of the texture
|
||||||
the target. For 1D (width), 2D/RECT/CUBE (width, height), 3D (width, height,
|
depending on the target. For 1D (width), 2D/RECT/CUBE (width, height),
|
||||||
depth), 1D array (width, layers), 2D array (width, height, layers).
|
3D (width, height, depth), 1D array (width, layers), 2D array (width,
|
||||||
Also return the number of accessible levels (last_level - first_level + 1)
|
height, layers). Also return the number of accessible levels
|
||||||
in W.
|
(last_level - first_level + 1) in W.
|
||||||
|
|
||||||
For components which don't return a resource dimension, their value
|
For components which don't return a resource dimension, their value
|
||||||
is undefined.
|
is undefined.
|
||||||
@@ -951,15 +951,15 @@ XXX doesn't look like most of the opcodes really belong here.
|
|||||||
|
|
||||||
.. opcode:: TG4 - Texture Gather
|
.. opcode:: TG4 - Texture Gather
|
||||||
|
|
||||||
As per ARB_texture_gather, gathers the four texels to be used in a bi-linear
|
As per :ext:`GL_ARB_texture_gather`, gathers the four texels to be used in a
|
||||||
filtering operation and packs them into a single register. Only works with
|
bi-linear filtering operation and packs them into a single register.
|
||||||
2D, 2D array, cubemaps, and cubemaps arrays. For 2D textures, only the
|
Only works with 2D, 2D array, cubemaps, and cubemaps arrays. For 2D
|
||||||
addressing modes of the sampler and the top level of any mip pyramid are
|
textures, only the addressing modes of the sampler and the top level of any
|
||||||
used. Set W to zero. It behaves like the TEX instruction, but a filtered
|
mip pyramid are used. Set W to zero. It behaves like the TEX instruction,
|
||||||
sample is not generated. The four samples that contribute to filtering are
|
but a filtered sample is not generated. The four samples that contribute to
|
||||||
placed into XYZW in clockwise order, starting with the (u,v) texture
|
filtering are placed into XYZW in clockwise order, starting with the (u,v)
|
||||||
coordinate delta at the following locations (-, +), (+, +), (+, -), (-, -),
|
texture coordinate delta at the following locations (-, +), (+, +), (+, -),
|
||||||
where the magnitude of the deltas are half a texel.
|
(-, -), where the magnitude of the deltas are half a texel.
|
||||||
|
|
||||||
PIPE_CAP_TEXTURE_SM5 enhances this instruction to support shadow per-sample
|
PIPE_CAP_TEXTURE_SM5 enhances this instruction to support shadow per-sample
|
||||||
depth compares, single component selection, and a non-constant offset. It
|
depth compares, single component selection, and a non-constant offset. It
|
||||||
@@ -3537,7 +3537,7 @@ TGSI_SEMANTIC_VIEWPORT_MASK
|
|||||||
"""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""
|
||||||
|
|
||||||
A bit mask of viewports to broadcast the current primitive to. See
|
A bit mask of viewports to broadcast the current primitive to. See
|
||||||
GL_NV_viewport_array2 for more details.
|
:ext:`GL_NV_viewport_array2` for more details.
|
||||||
|
|
||||||
|
|
||||||
TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL
|
TGSI_SEMANTIC_TESS_DEFAULT_OUTER_LEVEL
|
||||||
@@ -3666,7 +3666,7 @@ If LOWER_LEFT, the position will be (0,0) at the lower left corner and
|
|||||||
increase upward and rightward.
|
increase upward and rightward.
|
||||||
|
|
||||||
OpenGL defaults to LOWER_LEFT, and is configurable with the
|
OpenGL defaults to LOWER_LEFT, and is configurable with the
|
||||||
GL_ARB_fragment_coord_conventions extension.
|
:ext:`GL_ARB_fragment_coord_conventions` extension.
|
||||||
|
|
||||||
DirectX 9/10 use UPPER_LEFT.
|
DirectX 9/10 use UPPER_LEFT.
|
||||||
|
|
||||||
@@ -3684,7 +3684,7 @@ rasterization, which is instead controlled by half_pixel_center in the
|
|||||||
rasterizer.
|
rasterizer.
|
||||||
|
|
||||||
OpenGL defaults to HALF_INTEGER, and is configurable with the
|
OpenGL defaults to HALF_INTEGER, and is configurable with the
|
||||||
GL_ARB_fragment_coord_conventions extension.
|
:ext:`GL_ARB_fragment_coord_conventions` extension.
|
||||||
|
|
||||||
DirectX 9 uses INTEGER.
|
DirectX 9 uses INTEGER.
|
||||||
DirectX 10 uses HALF_INTEGER.
|
DirectX 10 uses HALF_INTEGER.
|
||||||
|
@@ -66,8 +66,8 @@ November 2002: Mesa 5.0 is released. It implements the OpenGL 1.4
|
|||||||
specification.
|
specification.
|
||||||
|
|
||||||
January 2003: Mesa 6.0 is released. It implements the OpenGL 1.5
|
January 2003: Mesa 6.0 is released. It implements the OpenGL 1.5
|
||||||
specification as well as the GL_ARB_vertex_program and
|
specification as well as the :ext:`GL_ARB_vertex_program` and
|
||||||
GL_ARB_fragment_program extensions.
|
:ext:`GL_ARB_fragment_program` extensions.
|
||||||
|
|
||||||
June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1
|
June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1
|
||||||
specification and OpenGL Shading Language.
|
specification and OpenGL Shading Language.
|
||||||
|
@@ -131,29 +131,29 @@ the sRGB colorspace.
|
|||||||
When sampling from a texture, the value returned to the shader is in the linear
|
When sampling from a texture, the value returned to the shader is in the linear
|
||||||
colorspace. The conversion from sRGB happens as part of sampling. In OpenGL,
|
colorspace. The conversion from sRGB happens as part of sampling. In OpenGL,
|
||||||
thanks mostly to history, there are various knobs for determining when you
|
thanks mostly to history, there are various knobs for determining when you
|
||||||
should or should not encode or decode sRGB. In 2007, GL_EXT_texture_sRGB added
|
should or should not encode or decode sRGB. In 2007, :ext:`GL_EXT_texture_sRGB`
|
||||||
support for sRGB texture formats and was included in OpenGL 2.1. In 2010,
|
added support for sRGB texture formats and was included in OpenGL 2.1. In
|
||||||
GL_EXT_texture_sRGB_decode added a flag to allow you to disable texture
|
2010, :ext:`GL_EXT_texture_sRGB_decode` added a flag to allow you to disable
|
||||||
decoding so that the shader received the data still in the sRGB colorspace.
|
texture decoding so that the shader received the data still in the sRGB
|
||||||
Then, in 2012, GL_ARB_texture_view came along and made
|
colorspace. Then, in 2012, :ext:`GL_ARB_texture_view` came along and made
|
||||||
GL_EXT_texture_sRGB_decode simultaneously obsolete and very confusing. Now,
|
:ext:`GL_EXT_texture_sRGB_decode` simultaneously obsolete and very confusing.
|
||||||
thanks to the combination of extensions, you can upload a texture as linear,
|
Now, thanks to the combination of extensions, you can upload a texture as
|
||||||
create an sRGB view of it and ask that sRGB not be decoded. What format is it
|
linear, create an sRGB view of it and ask that sRGB not be decoded. What
|
||||||
in again?
|
format is it in again?
|
||||||
|
|
||||||
The situation with render targets is a bit different. Historically, you got
|
The situation with render targets is a bit different. Historically, you got
|
||||||
your render target from the window system (which is always sRGB) and the spec
|
your render target from the window system (which is always sRGB) and the spec
|
||||||
said nothing whatsoever about encoding. All render targets were sRGB because
|
said nothing whatsoever about encoding. All render targets were sRGB because
|
||||||
that's how monitors worked and application writers were expected to understand
|
that's how monitors worked and application writers were expected to understand
|
||||||
that their final rendering needed to be in sRGB. However, with the advent of
|
that their final rendering needed to be in sRGB. However, with the advent of
|
||||||
EXT_framebuffer_object this was no longer true. Also, sRGB was causing
|
:ext:`GL_EXT_framebuffer_object` this was no longer true. Also, sRGB was causing
|
||||||
problems with blending because GL was blind to the fact that the output was
|
problems with blending because GL was blind to the fact that the output was
|
||||||
sRGB and blending was occurring in the wrong colorspace. In 2006, a set of
|
sRGB and blending was occurring in the wrong colorspace. In 2006, a set of
|
||||||
EXT_framebuffer_sRGB extensions added support (on both the GL and window-system
|
:ext:`GL_EXT_framebuffer_sRGB` extensions added support (on both the GL and
|
||||||
sides) for detecting whether a particular framebuffer was in sRGB and
|
window-system sides) for detecting whether a particular framebuffer was in sRGB
|
||||||
instructing GL to do the conversion into the sRGB colorspace as the final step
|
and instructing GL to do the conversion into the sRGB colorspace as the final
|
||||||
prior to writing out to the render target. Enabling sRGB also implied that
|
step prior to writing out to the render target. Enabling sRGB also implied
|
||||||
blending would occur in the linear colorspace prior to sRGB conversion and
|
that blending would occur in the linear colorspace prior to sRGB conversion and
|
||||||
would therefore be more accurate. When sRGB was added to the OpenGL ES spec in
|
would therefore be more accurate. When sRGB was added to the OpenGL ES spec in
|
||||||
3.1, they added the query for sRGB but did not add the flag to allow you to
|
3.1, they added the query for sRGB but did not add the flag to allow you to
|
||||||
turn it on and off.
|
turn it on and off.
|
||||||
|
@@ -71,9 +71,9 @@ language.
|
|||||||
|
|
||||||
Several GLSL extensions are also supported:
|
Several GLSL extensions are also supported:
|
||||||
|
|
||||||
- GL_ARB_draw_buffers
|
- :ext:`GL_ARB_draw_buffers`
|
||||||
- GL_ARB_fragment_coord_conventions
|
- :ext:`GL_ARB_fragment_coord_conventions`
|
||||||
- GL_ARB_shader_bit_encoding
|
- :ext:`GL_ARB_shader_bit_encoding`
|
||||||
|
|
||||||
Unsupported Features
|
Unsupported Features
|
||||||
--------------------
|
--------------------
|
||||||
@@ -95,7 +95,8 @@ Implementation Notes
|
|||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- Shading language programs are compiled into low-level programs very
|
- Shading language programs are compiled into low-level programs very
|
||||||
similar to those of GL_ARB_vertex/fragment_program.
|
similar to those of :ext:`GL_ARB_vertex_program` /
|
||||||
|
:ext:`GL_ARB_fragment_program`.
|
||||||
- All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full
|
- All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full
|
||||||
float[4] registers.
|
float[4] registers.
|
||||||
- Float constants and variables are packed so that up to four floats
|
- Float constants and variables are packed so that up to four floats
|
||||||
@@ -142,7 +143,7 @@ After building Mesa, the compiler can be found at
|
|||||||
src/compiler/glsl/glsl_compiler
|
src/compiler/glsl/glsl_compiler
|
||||||
|
|
||||||
Here's an example of using the compiler to compile a vertex shader and
|
Here's an example of using the compiler to compile a vertex shader and
|
||||||
emit GL_ARB_vertex_program-style instructions:
|
emit :ext:`GL_ARB_vertex_program`-style instructions:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
|
@@ -34,7 +34,7 @@ somewhat dated, unfortunately.
|
|||||||
superseded by SGI SI GLU).
|
superseded by SGI SI GLU).
|
||||||
- **Holger Waechtler** contributed AMD 3DNow! assembly code which
|
- **Holger Waechtler** contributed AMD 3DNow! assembly code which
|
||||||
accelerates vertex transformation in Mesa 3.1. Holger also
|
accelerates vertex transformation in Mesa 3.1. Holger also
|
||||||
implemented the GL_EXT_texture_env_combine extension.
|
implemented the :ext:`GL_EXT_texture_env_combine` extension.
|
||||||
- **Jeroen van der Zijp** and **Thorsten Ohl** contributed the Xt/Motif
|
- **Jeroen van der Zijp** and **Thorsten Ohl** contributed the Xt/Motif
|
||||||
widget code.
|
widget code.
|
||||||
- **John Stone** provided the multi-threading support in Mesa 3.0.
|
- **John Stone** provided the multi-threading support in Mesa 3.0.
|
||||||
|
@@ -37,10 +37,8 @@ Catia-03 tests 3, 4, 8
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
These tests use features of the
|
These tests use features of the
|
||||||
`GL_NV_fragment_program2 <https://www.opengl.org/registry/specs/NV/fragment_program2.txt>`__
|
:ext:`GL_NV_fragment_program2` and :ext:`GL_NV_vertex_program3` extensions
|
||||||
and
|
without checking if the driver supports them.
|
||||||
`GL_NV_vertex_program3 <https://www.opengl.org/registry/specs/NV/vertex_program3.txt>`__
|
|
||||||
extensions without checking if the driver supports them.
|
|
||||||
|
|
||||||
When Mesa tries to compile the vertex/fragment programs it generates
|
When Mesa tries to compile the vertex/fragment programs it generates
|
||||||
errors (which Viewperf ignores). Subsequent drawing calls become no-ops
|
errors (which Viewperf ignores). Subsequent drawing calls become no-ops
|
||||||
@@ -49,9 +47,7 @@ and the rendering is incorrect.
|
|||||||
sw-02 tests 1, 2, 4, 6
|
sw-02 tests 1, 2, 4, 6
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
These tests depend on the
|
These tests depend on the :ext:`GL_NV_primitive_restart` extension.
|
||||||
`GL_NV_primitive_restart <https://www.opengl.org/registry/specs/NV/primitive_restart.txt>`__
|
|
||||||
extension.
|
|
||||||
|
|
||||||
If the Mesa driver doesn't support this extension the rendering will be
|
If the Mesa driver doesn't support this extension the rendering will be
|
||||||
incorrect and the test will fail.
|
incorrect and the test will fail.
|
||||||
@@ -211,11 +207,11 @@ catia-04
|
|||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
One of the catia tests calls wglGetProcAddress() to get some
|
One of the catia tests calls wglGetProcAddress() to get some
|
||||||
GL_EXT_direct_state_access functions (such as glBindMultiTextureEXT) and
|
:ext:`GL_EXT_direct_state_access` functions (such as
|
||||||
some GL_NV_half_float functions (such as glMultiTexCoord3hNV). If the
|
glBindMultiTextureEXT) and some :ext:`GL_NV_half_float` functions (such
|
||||||
extension/function is not supported, wglGetProcAddress() can return
|
as glMultiTexCoord3hNV). If the extension/function is not supported,
|
||||||
NULL. Unfortunately, Viewperf doesn't check for null pointers and
|
wglGetProcAddress() can return NULL. Unfortunately, Viewperf doesn't check
|
||||||
crashes when it later tries to use the pointer.
|
for null pointers and crashes when it later tries to use the pointer.
|
||||||
|
|
||||||
Another catia test uses OpenGL 3.1's primitive restart feature. But when
|
Another catia test uses OpenGL 3.1's primitive restart feature. But when
|
||||||
Viewperf creates an OpenGL context, it doesn't request version 3.1 If
|
Viewperf creates an OpenGL context, it doesn't request version 3.1 If
|
||||||
|
@@ -257,7 +257,8 @@ the function pointer:
|
|||||||
index into the entrypoint table, not the dispatch table, because the
|
index into the entrypoint table, not the dispatch table, because the
|
||||||
rules for when an entrypoint should be exposed are per-entrypoint. For
|
rules for when an entrypoint should be exposed are per-entrypoint. For
|
||||||
instance, ``vkBindImageMemory2`` is available on Vulkan 1.1 and later but
|
instance, ``vkBindImageMemory2`` is available on Vulkan 1.1 and later but
|
||||||
``vkBindImageMemory2KHR`` is available if VK_KHR_bind_memory2 is enabled.
|
``vkBindImageMemory2KHR`` is available if :ext:`VK_KHR_bind_memory2` is
|
||||||
|
enabled.
|
||||||
|
|
||||||
3. A compaction table is used to map from the entrypoint table index to
|
3. A compaction table is used to map from the entrypoint table index to
|
||||||
the dispatch table index and the function is finally fetched from the
|
the dispatch table index and the function is finally fetched from the
|
||||||
|
@@ -5,13 +5,14 @@ The Vulkan runtime code in Mesa provides several helpful utilities to make
|
|||||||
managing render passes easier.
|
managing render passes easier.
|
||||||
|
|
||||||
|
|
||||||
VK_KHR_create_renderpass2
|
:ext:`VK_KHR_create_renderpass2`
|
||||||
-------------------------
|
--------------------------------
|
||||||
|
|
||||||
It is strongly recommended that drivers implement VK_KHR_create_renderpass2
|
It is strongly recommended that drivers implement
|
||||||
directly and not bother implementing the old Vulkan 1.0 entrypoints. If a
|
:ext:`VK_KHR_create_renderpass2` directly and not bother implementing the
|
||||||
driver does not implement them, the following will be implemented in common
|
old Vulkan 1.0 entrypoints. If a driver does not implement them, the
|
||||||
code in terms of their VK_KHR_create_renderpass2 counterparts:
|
following will be implemented in common code in terms of their
|
||||||
|
:ext:`VK_KHR_create_renderpass2` counterparts:
|
||||||
|
|
||||||
- :cpp:func:`vkCreateRenderPass`
|
- :cpp:func:`vkCreateRenderPass`
|
||||||
- :cpp:func:`vkCmdBeginRenderPass`
|
- :cpp:func:`vkCmdBeginRenderPass`
|
||||||
@@ -34,12 +35,12 @@ that driver doesn't need to do any additional compilation at
|
|||||||
of :cpp:func:`vkCreateRenderPass2` and :cpp:func:`vkDestroyRenderPass`.
|
of :cpp:func:`vkCreateRenderPass2` and :cpp:func:`vkDestroyRenderPass`.
|
||||||
|
|
||||||
|
|
||||||
VK_KHR_dynamic_rendering
|
:ext:`VK_KHR_dynamic_rendering`
|
||||||
------------------------
|
-------------------------------
|
||||||
|
|
||||||
For drivers which don't need to do subpass combining, it is recommended
|
For drivers which don't need to do subpass combining, it is recommended
|
||||||
that they skip implementing render passes entirely and implement
|
that they skip implementing render passes entirely and implement
|
||||||
VK_KHR_dynamic_rendering instead. If they choose to do so, the runtime
|
:ext:`VK_KHR_dynamic_rendering` instead. If they choose to do so, the runtime
|
||||||
will provide the following, implemented in terms of
|
will provide the following, implemented in terms of
|
||||||
:cpp:func:`vkCmdBeginRendering` and :cpp:func:`vkCmdEndRendering`:
|
:cpp:func:`vkCmdBeginRendering` and :cpp:func:`vkCmdEndRendering`:
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ Because render passes and subpass indices are also passed into
|
|||||||
:cpp:func:`vkCmdCreateGraphicsPipelines` and
|
:cpp:func:`vkCmdCreateGraphicsPipelines` and
|
||||||
:cpp:func:`vkCmdExecuteCommands` which we can't implement on the driver's
|
:cpp:func:`vkCmdExecuteCommands` which we can't implement on the driver's
|
||||||
behalf, we provide a couple of helpers for getting the render pass
|
behalf, we provide a couple of helpers for getting the render pass
|
||||||
information in terms of the relevant VK_KHR_dynamic_rendering:
|
information in terms of the relevant :ext:`VK_KHR_dynamic_rendering`:
|
||||||
|
|
||||||
.. doxygenfunction:: vk_get_pipeline_rendering_create_info
|
.. doxygenfunction:: vk_get_pipeline_rendering_create_info
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user