gallium: add PIPE_SHADER_CAP_GLSL_16BIT_TEMPS for LowerPrecisionTemporaries
Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5746>
This commit is contained in:
@@ -659,6 +659,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_MAX_TEXTURE_SAMPLERS``: The maximum number of texture
|
||||
samplers.
|
||||
* ``PIPE_SHADER_CAP_PREFERRED_IR``: Preferred representation of the
|
||||
|
@@ -128,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
return PIPE_MAX_SAMPLERS;
|
||||
|
@@ -510,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
return PIPE_MAX_SAMPLERS;
|
||||
|
@@ -352,6 +352,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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
return DBG_ENABLED(ETNA_DBG_NIR) && screen->specs.halti >= 2;
|
||||
|
@@ -574,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_FP16:
|
||||
return ((is_a5xx(screen) || is_a6xx(screen)) &&
|
||||
|
@@ -162,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -408,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -353,6 +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_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
@@ -407,6 +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_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -438,6 +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_SUBROUTINES:
|
||||
return 0; /* please inline, or provide function declarations */
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
|
@@ -510,6 +510,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_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
|
@@ -362,6 +362,7 @@ panfrost_get_shader_param(struct pipe_screen *screen,
|
||||
|
||||
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
|
||||
case PIPE_SHADER_CAP_INT16:
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_TEMPS:
|
||||
case PIPE_SHADER_CAP_INT64_ATOMICS:
|
||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
|
@@ -295,6 +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_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
@@ -360,6 +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_INT64_ATOMICS:
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -615,6 +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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
|
||||
|
@@ -457,6 +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_SUBROUTINES:
|
||||
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
|
@@ -580,6 +580,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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
@@ -649,6 +650,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:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
@@ -759,6 +761,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:
|
||||
return FALSE;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
|
@@ -375,6 +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_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -280,6 +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_TGSI_DROUND_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
|
||||
|
@@ -466,6 +466,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:
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
|
@@ -433,6 +433,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:
|
||||
return 0; /* not implemented */
|
||||
|
||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||
|
@@ -1021,6 +1021,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_MAX_TEXTURE_SAMPLERS,
|
||||
PIPE_SHADER_CAP_PREFERRED_IR,
|
||||
PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED,
|
||||
|
@@ -346,6 +346,8 @@ 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);
|
||||
}
|
||||
|
||||
c->MaxUserAssignableUniformLocations =
|
||||
|
Reference in New Issue
Block a user