mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 09:50:20 +01:00
gallium: add a a new cap for changing the TGSI TG4 instruction encoding
Accessing the TG4 component via immediates in the llvmpipe backend is quite messy (like really messy). Roland suggested we change the instruction encoding, so introduce a cap to allow the component to be selected to be store in the sampler swizzle, which should be otherwise unused. I could probably switch all drivers over, but virgl would need some work that I'd prefer not to rush it. Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
1e65757f4e
commit
0c09df52e1
4 changed files with 11 additions and 0 deletions
|
|
@ -341,6 +341,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
case PIPE_CAP_ATOMIC_FLOAT_MINMAX:
|
||||
case PIPE_CAP_SHADER_SAMPLES_IDENTICAL:
|
||||
case PIPE_CAP_TGSI_ATOMINC_WRAP:
|
||||
case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_GS_INVOCATIONS:
|
||||
|
|
|
|||
|
|
@ -558,6 +558,7 @@ The integer capabilities:
|
|||
* ``PIPE_CAP_GL_SPIRV``: True if the driver supports ARB_gl_spirv extension.
|
||||
* ``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_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source.
|
||||
|
||||
.. _pipe_capf:
|
||||
|
||||
|
|
|
|||
|
|
@ -962,14 +962,22 @@ XXX doesn't look like most of the opcodes really belong here.
|
|||
require another CAP is hw can do it natively. For now we lower that before
|
||||
TGSI.
|
||||
|
||||
PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE changes the encoding so that component
|
||||
is stored in the sampler source swizzle x.
|
||||
|
||||
.. math::
|
||||
|
||||
coord = src0
|
||||
|
||||
(without TGSI_TG4_COMPONENT_IN_SWIZZLE)
|
||||
component = src1
|
||||
|
||||
dst = texture\_gather4 (unit, coord, component)
|
||||
|
||||
(with TGSI_TG4_COMPONENT_IN_SWIZZLE)
|
||||
dst = texture\_gather4 (unit, coord)
|
||||
component is encoded in sampler swizzle.
|
||||
|
||||
(with SM5 - cube array shadow)
|
||||
|
||||
.. math::
|
||||
|
|
|
|||
|
|
@ -903,6 +903,7 @@ enum pipe_cap
|
|||
PIPE_CAP_GL_SPIRV,
|
||||
PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS,
|
||||
PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION,
|
||||
PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue