gallium: replace 16BIT_TEMPS cap with 16BIT_CONSTS
All drivers that support mediump lowering should support 16BIT_TEMPS, but some do not also want 16b consts to be lowered. Replace the pipe cap in preperation to remove LowerPrecisionTemporaries. Note: also updates reference checksums for the arm64_a630_traces job, due to lowering more to 16b Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6189>
This commit is contained in:
@@ -107,15 +107,15 @@ traces:
|
||||
- path: glmark2/bump-bump-render=height.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: ed8ef7fcd88f20c5814bbdd95f62824a
|
||||
checksum: 6d06bb78d918ef6376aee4d417c9e9c1
|
||||
- path: glmark2/bump-bump-render=high-poly.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: 39e9e510819758910efc7b58bd08b981
|
||||
checksum: 55312be6739a7142958bdef174e90269
|
||||
- path: glmark2/bump-bump-render=normals.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: 3b270da5fcb3c1ee49c889644a5cc439
|
||||
checksum: 9deea36f896b9aea01169839e1913e9b
|
||||
- path: glmark2/conditionals-fragment-steps=0:vertex-steps=0.rdc
|
||||
expectations:
|
||||
# Incorrect rendering, a bunch of the area is uniform gray when it should
|
||||
@@ -207,11 +207,11 @@ traces:
|
||||
- path: glmark2/shading-shading=blinn-phong-inf.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: 5a4aa8bebb324d0319ae1ebd95c7ce57
|
||||
checksum: b9af27ae43986f6441235044a7f18e2a
|
||||
- path: glmark2/shading-shading=cel.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: 444fc5f23e3ce564d9945c20ed5d5e67
|
||||
checksum: fc2c2a68a89ad2ee145819e2a6edcbc5
|
||||
- path: glmark2/shading-shading=gouraud.rdc
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
|
@@ -663,8 +663,8 @@ MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0
|
||||
DDX and DDY opcodes are supported.
|
||||
* ``PIPE_SHADER_CAP_INT16``: Whether 16-bit signed and unsigned integer types
|
||||
are supported.
|
||||
* ``PIPE_SHADER_CAP_GLSL_16BIT_TEMPS``: Lower mediump temporaries to 16-bit.
|
||||
This generates 16-bit phis in NIR, 16-bit loop counters, and 16-bit indirect arrays.
|
||||
* ``PIPE_SHADER_CAP_GLSL_16BIT_CONSTS``: Lower mediump constants to 16-bit.
|
||||
Note that 16-bit constants are not lowered to uniforms in GLSL.
|
||||
* ``PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS``: The maximum number of texture
|
||||
samplers.
|
||||
* ``PIPE_SHADER_CAP_PREFERRED_IR``: Preferred representation of the
|
||||
|
@@ -128,7 +128,7 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
return PIPE_MAX_SAMPLERS;
|
||||
|
@@ -510,7 +510,7 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
return PIPE_MAX_SAMPLERS;
|
||||
|
@@ -355,7 +355,7 @@ etna_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
return DBG_ENABLED(ETNA_DBG_NIR) && screen->specs.halti >= 2;
|
||||
|
@@ -574,7 +574,7 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_INT64_ATOMICS:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
return ((is_a5xx(screen) || is_a6xx(screen)) &&
|
||||
|
@@ -162,7 +162,7 @@ i915_get_shader_param(struct pipe_screen *screen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -408,7 +408,7 @@ iris_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -353,7 +353,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
@@ -408,7 +408,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -438,7 +438,7 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_SUBROUTINES:
|
||||
return 0; /* please inline, or provide function declarations */
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
|
@@ -513,7 +513,7 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
|
@@ -336,7 +336,7 @@ panfrost_get_shader_param(struct pipe_screen *screen,
|
||||
return 1;
|
||||
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return !is_nofp16;
|
||||
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
|
@@ -295,7 +295,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
@@ -361,7 +361,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_INT64_ATOMICS:
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -615,7 +615,7 @@ static int r600_get_shader_param(struct pipe_screen* pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
|
||||
|
@@ -457,7 +457,7 @@ static int si_get_shader_param(struct pipe_screen *pscreen, enum pipe_shader_typ
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_SUBROUTINES:
|
||||
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
|
@@ -482,7 +482,7 @@ vgpu9_get_shader_param(struct pipe_screen *screen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
@@ -552,7 +552,7 @@ vgpu9_get_shader_param(struct pipe_screen *screen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
@@ -663,7 +663,7 @@ vgpu10_get_shader_param(struct pipe_screen *screen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return FALSE;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -375,7 +375,7 @@ v3d_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -280,7 +280,7 @@ vc4_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -412,7 +412,7 @@ virgl_get_shader_param(struct pipe_screen *screen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
|
@@ -432,7 +432,7 @@ zink_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0; /* not implemented */
|
||||
|
||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||
|
@@ -1023,7 +1023,7 @@ enum pipe_shader_cap
|
||||
PIPE_SHADER_CAP_FP16,
|
||||
PIPE_SHADER_CAP_FP16_DERIVATIVES,
|
||||
PIPE_SHADER_CAP_INT16,
|
||||
PIPE_SHADER_CAP_GLSL_16BIT_TEMPS,
|
||||
PIPE_SHADER_CAP_GLSL_16BIT_CONSTS,
|
||||
PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS,
|
||||
PIPE_SHADER_CAP_PREFERRED_IR,
|
||||
PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED,
|
||||
|
@@ -346,9 +346,9 @@ void st_init_limits(struct pipe_screen *screen,
|
||||
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16_DERIVATIVES);
|
||||
options->LowerPrecisionInt16 =
|
||||
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INT16);
|
||||
options->LowerPrecisionTemporaries =
|
||||
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_GLSL_16BIT_TEMPS);
|
||||
options->LowerPrecisionConstants = options->LowerPrecisionTemporaries;
|
||||
options->LowerPrecisionConstants =
|
||||
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_GLSL_16BIT_CONSTS);
|
||||
options->LowerPrecisionTemporaries = true;
|
||||
}
|
||||
|
||||
c->MaxUserAssignableUniformLocations =
|
||||
|
Reference in New Issue
Block a user