[Mesa-dev] [PATCH 0/5] Add ARB_derivative_control support
Ilia Mirkin
imirkin at alum.mit.edu
Wed Aug 13 21:52:09 PDT 2014
I left all the variants as separate operations in the glsl ir. However for
gallium I only added the fine version, as it seems like DDX can do pretty much
whatever it wants. I was on the fence about adding coarse versions as well and
then using the FragmentShaderDerivative hint to select one or the other in the
glsl -> tgsi conversion.
In the case of nv50/nvc0, doing the fine version is pretty much the only
(easy) way of doing derivatives. I haven't traced the blob to see how it
handles things yet. In any case, on nv50/nvc0 all this is completely moot, at
least for now. Curious about what the situation with other hardware is.
Also, the extension spec claims to require GLSL 4.00, which seems a little
extreme. Instead I restrict it to core contexts. Let me know if I should
change this.
I will try to send some piglits out for this soon, but it's all fairly
straightforward...
Ilia Mirkin (5):
mesa: add ARB_derivative_control extension bit
glsl: add ARB_derivative control support
gallium: add opcodes/cap for fine derivative support
mesa/st: add support for emitting fine derivative opcodes
nv50,nvc0: add support for fine derivatives
docs/GL3.txt | 2 +-
src/gallium/auxiliary/tgsi/tgsi_info.c | 3 ++
src/gallium/auxiliary/tgsi/tgsi_util.c | 2 +
src/gallium/docs/source/screen.rst | 2 +
src/gallium/docs/source/tgsi.rst | 12 +++++-
src/gallium/drivers/freedreno/freedreno_screen.c | 1 +
src/gallium/drivers/i915/i915_screen.c | 1 +
src/gallium/drivers/ilo/ilo_screen.c | 1 +
src/gallium/drivers/llvmpipe/lp_screen.c | 1 +
.../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 ++
src/gallium/drivers/nouveau/nv30/nv30_screen.c | 1 +
src/gallium/drivers/nouveau/nv50/nv50_screen.c | 1 +
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 1 +
src/gallium/drivers/r300/r300_screen.c | 1 +
src/gallium/drivers/r600/r600_pipe.c | 1 +
src/gallium/drivers/radeonsi/si_pipe.c | 1 +
src/gallium/drivers/softpipe/sp_screen.c | 1 +
src/gallium/drivers/svga/svga_screen.c | 1 +
src/gallium/drivers/vc4/vc4_screen.c | 1 +
src/gallium/include/pipe/p_defines.h | 1 +
src/gallium/include/pipe/p_shader_tokens.h | 5 ++-
src/glsl/builtin_functions.cpp | 48 ++++++++++++++++++++++
src/glsl/glcpp/glcpp-parse.y | 3 ++
src/glsl/glsl_parser_extras.cpp | 1 +
src/glsl/glsl_parser_extras.h | 2 +
src/glsl/ir.h | 4 ++
src/glsl/ir_validate.cpp | 4 ++
src/mesa/main/extensions.c | 1 +
src/mesa/main/mtypes.h | 1 +
src/mesa/state_tracker/st_extensions.c | 3 +-
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 9 +++-
31 files changed, 114 insertions(+), 6 deletions(-)
--
1.8.5.5
More information about the mesa-dev
mailing list