gallium: remove PIPE_SHADER_CAP_MAX_ADDRS
This limit is fixed in Mesa core and cannot be changed. It only affects ARB_vertex_program and ARB_fragment_program. The minimum value for ARB_vertex_program is 1 according to the spec. The maximum value for ARB_vertex_program is limited to 1 by Mesa core. The value should be zero for ARB_fragment_program, because it doesn't support ARL. Finally, drivers shouldn't mess with these values arbitrarily. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -103,8 +103,6 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
|
|||||||
return PIPE_MAX_CONSTANT_BUFFERS;
|
return PIPE_MAX_CONSTANT_BUFFERS;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return LP_MAX_TGSI_TEMPS;
|
return LP_MAX_TGSI_TEMPS;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return LP_MAX_TGSI_ADDRS;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return LP_MAX_TGSI_PREDS;
|
return LP_MAX_TGSI_PREDS;
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
@@ -193,7 +193,6 @@ struct tgsi_sampler
|
|||||||
#define TGSI_EXEC_NUM_TEMP_R 4
|
#define TGSI_EXEC_NUM_TEMP_R 4
|
||||||
|
|
||||||
#define TGSI_EXEC_TEMP_ADDR (TGSI_EXEC_NUM_TEMPS + 8)
|
#define TGSI_EXEC_TEMP_ADDR (TGSI_EXEC_NUM_TEMPS + 8)
|
||||||
#define TGSI_EXEC_NUM_ADDRS 1
|
|
||||||
|
|
||||||
/* predicate register */
|
/* predicate register */
|
||||||
#define TGSI_EXEC_TEMP_P0 (TGSI_EXEC_NUM_TEMPS + 9)
|
#define TGSI_EXEC_TEMP_P0 (TGSI_EXEC_NUM_TEMPS + 9)
|
||||||
@@ -433,8 +432,6 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
|
|||||||
return PIPE_MAX_CONSTANT_BUFFERS;
|
return PIPE_MAX_CONSTANT_BUFFERS;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return TGSI_EXEC_NUM_TEMPS;
|
return TGSI_EXEC_NUM_TEMPS;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return TGSI_EXEC_NUM_ADDRS;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return TGSI_EXEC_NUM_PREDS;
|
return TGSI_EXEC_NUM_PREDS;
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
@@ -197,13 +197,11 @@ static unsigned caps_sm3[] = {
|
|||||||
UTIL_CHECK_SHADER(FRAGMENT, MAX_INSTRUCTIONS, 512),
|
UTIL_CHECK_SHADER(FRAGMENT, MAX_INSTRUCTIONS, 512),
|
||||||
UTIL_CHECK_SHADER(FRAGMENT, MAX_INPUTS, 10),
|
UTIL_CHECK_SHADER(FRAGMENT, MAX_INPUTS, 10),
|
||||||
UTIL_CHECK_SHADER(FRAGMENT, MAX_TEMPS, 32),
|
UTIL_CHECK_SHADER(FRAGMENT, MAX_TEMPS, 32),
|
||||||
UTIL_CHECK_SHADER(FRAGMENT, MAX_ADDRS, 1),
|
|
||||||
UTIL_CHECK_SHADER(FRAGMENT, MAX_CONST_BUFFER_SIZE, 224 * 16),
|
UTIL_CHECK_SHADER(FRAGMENT, MAX_CONST_BUFFER_SIZE, 224 * 16),
|
||||||
|
|
||||||
UTIL_CHECK_SHADER(VERTEX, MAX_INSTRUCTIONS, 512),
|
UTIL_CHECK_SHADER(VERTEX, MAX_INSTRUCTIONS, 512),
|
||||||
UTIL_CHECK_SHADER(VERTEX, MAX_INPUTS, 16),
|
UTIL_CHECK_SHADER(VERTEX, MAX_INPUTS, 16),
|
||||||
UTIL_CHECK_SHADER(VERTEX, MAX_TEMPS, 32),
|
UTIL_CHECK_SHADER(VERTEX, MAX_TEMPS, 32),
|
||||||
UTIL_CHECK_SHADER(VERTEX, MAX_ADDRS, 2),
|
|
||||||
UTIL_CHECK_SHADER(VERTEX, MAX_CONST_BUFFER_SIZE, 256 * 16),
|
UTIL_CHECK_SHADER(VERTEX, MAX_CONST_BUFFER_SIZE, 256 * 16),
|
||||||
|
|
||||||
UTIL_CHECK_TERMINATE
|
UTIL_CHECK_TERMINATE
|
||||||
|
@@ -269,7 +269,6 @@ file is still supported. In that case, the constbuf index is assumed
|
|||||||
to be 0.
|
to be 0.
|
||||||
|
|
||||||
* ``PIPE_SHADER_CAP_MAX_TEMPS``: The maximum number of temporary registers.
|
* ``PIPE_SHADER_CAP_MAX_TEMPS``: The maximum number of temporary registers.
|
||||||
* ``PIPE_SHADER_CAP_MAX_ADDRS``: The maximum number of address registers.
|
|
||||||
* ``PIPE_SHADER_CAP_MAX_PREDS``: The maximum number of predicate registers.
|
* ``PIPE_SHADER_CAP_MAX_PREDS``: The maximum number of predicate registers.
|
||||||
* ``PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED``: Whether the continue opcode is supported.
|
* ``PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED``: Whether the continue opcode is supported.
|
||||||
* ``PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR``: Whether indirect addressing
|
* ``PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR``: Whether indirect addressing
|
||||||
|
@@ -327,8 +327,6 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||||||
return 16;
|
return 16;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 64; /* Max native temporaries. */
|
return 64; /* Max native temporaries. */
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 1; /* Max native address registers */
|
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
||||||
return ((screen->gpu_id >= 300) ? 1024 : 64) * sizeof(float[4]);
|
return ((screen->gpu_id >= 300) ? 1024 : 64) * sizeof(float[4]);
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
||||||
|
@@ -135,8 +135,6 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha
|
|||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 12; /* XXX: 12 -> 32 ? */
|
return 12; /* XXX: 12 -> 32 ? */
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 0;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
@@ -122,8 +122,6 @@ ilo_get_shader_param(struct pipe_screen *screen, unsigned shader,
|
|||||||
return ILO_MAX_CONST_BUFFERS;
|
return ILO_MAX_CONST_BUFFERS;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 256;
|
return 256;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return (shader == PIPE_SHADER_FRAGMENT) ? 0 : 1;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
@@ -207,8 +207,6 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 2;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
||||||
@@ -241,8 +239,6 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return (eng3d->oclass >= NV40_3D_CLASS) ? 1 : 0;
|
|
||||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||||
return 16;
|
return 16;
|
||||||
|
@@ -236,8 +236,6 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||||||
return 65536;
|
return 65536;
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
||||||
return NV50_MAX_PIPE_CONSTBUFS;
|
return NV50_MAX_PIPE_CONSTBUFS;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 1;
|
|
||||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||||
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
||||||
return shader != PIPE_SHADER_FRAGMENT;
|
return shader != PIPE_SHADER_FRAGMENT;
|
||||||
|
@@ -244,8 +244,6 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||||||
if (shader == PIPE_SHADER_COMPUTE && class_3d >= NVE4_3D_CLASS)
|
if (shader == PIPE_SHADER_COMPUTE && class_3d >= NVE4_3D_CLASS)
|
||||||
return NVE4_MAX_PIPE_CONSTBUFS_COMPUTE;
|
return NVE4_MAX_PIPE_CONSTBUFS_COMPUTE;
|
||||||
return NVC0_MAX_PIPE_CONSTBUFS;
|
return NVC0_MAX_PIPE_CONSTBUFS;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 1;
|
|
||||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||||
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
|
||||||
return shader != PIPE_SHADER_FRAGMENT;
|
return shader != PIPE_SHADER_FRAGMENT;
|
||||||
|
@@ -252,7 +252,6 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
|||||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||||
return r300screen->caps.num_tex_units;
|
return r300screen->caps.num_tex_units;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||||
@@ -296,8 +295,6 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
|||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 1; /* XXX guessed */
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return is_r500 ? 4 : 0; /* XXX guessed. */
|
return is_r500 ? 4 : 0; /* XXX guessed. */
|
||||||
case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
|
||||||
|
@@ -417,9 +417,6 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
|
|||||||
return shader == PIPE_SHADER_VERTEX ? 16 : 32;
|
return shader == PIPE_SHADER_VERTEX ? 16 : 32;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 256; /* Max native temporaries. */
|
return 256; /* Max native temporaries. */
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
/* XXX Isn't this equal to TEMPS? */
|
|
||||||
return 1; /* Max native address registers */
|
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
||||||
return R600_MAX_CONST_BUFFER_SIZE;
|
return R600_MAX_CONST_BUFFER_SIZE;
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
||||||
|
@@ -348,9 +348,6 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
|
|||||||
return shader == PIPE_SHADER_VERTEX ? SI_NUM_VERTEX_BUFFERS : 32;
|
return shader == PIPE_SHADER_VERTEX ? SI_NUM_VERTEX_BUFFERS : 32;
|
||||||
case PIPE_SHADER_CAP_MAX_TEMPS:
|
case PIPE_SHADER_CAP_MAX_TEMPS:
|
||||||
return 256; /* Max native temporaries. */
|
return 256; /* Max native temporaries. */
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
/* FIXME Isn't this equal to TEMPS? */
|
|
||||||
return 1; /* Max native address registers */
|
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
||||||
return 4096 * sizeof(float[4]); /* actually only memory limits this */
|
return 4096 * sizeof(float[4]); /* actually only memory limits this */
|
||||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
|
||||||
|
@@ -321,7 +321,6 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en
|
|||||||
if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_TEMPS, &result))
|
if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_TEMPS, &result))
|
||||||
return 32;
|
return 32;
|
||||||
return MIN2(result.u, SVGA3D_TEMPREG_MAX);
|
return MIN2(result.u, SVGA3D_TEMPREG_MAX);
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
|
||||||
/*
|
/*
|
||||||
* Although PS 3.0 has some addressing abilities it can only represent
|
* Although PS 3.0 has some addressing abilities it can only represent
|
||||||
@@ -379,8 +378,6 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en
|
|||||||
if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEMPS, &result))
|
if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEMPS, &result))
|
||||||
return 32;
|
return 32;
|
||||||
return MIN2(result.u, SVGA3D_TEMPREG_MAX);
|
return MIN2(result.u, SVGA3D_TEMPREG_MAX);
|
||||||
case PIPE_SHADER_CAP_MAX_ADDRS:
|
|
||||||
return 1;
|
|
||||||
case PIPE_SHADER_CAP_MAX_PREDS:
|
case PIPE_SHADER_CAP_MAX_PREDS:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
@@ -607,7 +607,6 @@ enum pipe_shader_cap
|
|||||||
PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE,
|
PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE,
|
||||||
PIPE_SHADER_CAP_MAX_CONST_BUFFERS,
|
PIPE_SHADER_CAP_MAX_CONST_BUFFERS,
|
||||||
PIPE_SHADER_CAP_MAX_TEMPS,
|
PIPE_SHADER_CAP_MAX_TEMPS,
|
||||||
PIPE_SHADER_CAP_MAX_ADDRS,
|
|
||||||
PIPE_SHADER_CAP_MAX_PREDS,
|
PIPE_SHADER_CAP_MAX_PREDS,
|
||||||
/* boolean caps */
|
/* boolean caps */
|
||||||
PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED,
|
PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED,
|
||||||
|
@@ -187,8 +187,7 @@ void st_init_limits(struct pipe_screen *screen,
|
|||||||
pc->MaxTemps = pc->MaxNativeTemps =
|
pc->MaxTemps = pc->MaxNativeTemps =
|
||||||
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEMPS);
|
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEMPS);
|
||||||
pc->MaxAddressRegs = pc->MaxNativeAddressRegs =
|
pc->MaxAddressRegs = pc->MaxNativeAddressRegs =
|
||||||
_min(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_ADDRS),
|
sh == PIPE_SHADER_VERTEX ? 1 : 0;
|
||||||
MAX_PROGRAM_ADDRESS_REGS);
|
|
||||||
pc->MaxParameters = pc->MaxNativeParameters =
|
pc->MaxParameters = pc->MaxNativeParameters =
|
||||||
screen->get_shader_param(screen, sh,
|
screen->get_shader_param(screen, sh,
|
||||||
PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE) / sizeof(float[4]);
|
PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE) / sizeof(float[4]);
|
||||||
|
Reference in New Issue
Block a user