From: Marek Olšák Date: Thu, 24 Jul 2014 18:32:08 +0000 (+0200) Subject: gallium: rename shader cap MAX_CONSTS to MAX_CONST_BUFFER_SIZE X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=04f2c88f45e26d7050cc88aaaac8e8154d6018d0;p=mesa.git gallium: rename shader cap MAX_CONSTS to MAX_CONST_BUFFER_SIZE This new name isn't so confusing. I also changed the gallivm limit, because it looked wrong. Reviewed-by: Brian Paul v2: use sizeof(float[4]) --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h b/src/gallium/auxiliary/gallivm/lp_bld_limits.h index 9ccaf46ead2..eb83ea88516 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_limits.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h @@ -97,8 +97,8 @@ gallivm_get_shader_param(enum pipe_shader_cap param) return LP_MAX_TGSI_NESTING; case PIPE_SHADER_CAP_MAX_INPUTS: return PIPE_MAX_SHADER_INPUTS; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 16 * 2024; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return sizeof(float[4]) * 4096; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return PIPE_MAX_CONSTANT_BUFFERS; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h index 56a7034a313..c6fd3d7d112 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h @@ -215,9 +215,9 @@ struct tgsi_sampler */ #define TGSI_EXEC_MAX_INPUT_ATTRIBS PIPE_MAX_SHADER_INPUTS -/* The maximum number of constant vectors per constant buffer. +/* The maximum number of bytes per constant buffer. */ -#define TGSI_EXEC_MAX_CONST_BUFFER 4096 +#define TGSI_EXEC_MAX_CONST_BUFFER_SIZE (4096 * sizeof(float[4])) /* The maximum number of vertices per primitive */ #define TGSI_MAX_PRIM_VERTICES 6 @@ -427,8 +427,8 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param) return TGSI_EXEC_MAX_NESTING; case PIPE_SHADER_CAP_MAX_INPUTS: return TGSI_EXEC_MAX_INPUT_ATTRIBS; - case PIPE_SHADER_CAP_MAX_CONSTS: - return TGSI_EXEC_MAX_CONST_BUFFER; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return TGSI_EXEC_MAX_CONST_BUFFER_SIZE; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return PIPE_MAX_CONSTANT_BUFFERS; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/auxiliary/util/u_caps.c b/src/gallium/auxiliary/util/u_caps.c index 6230707552e..ec8938b374d 100644 --- a/src/gallium/auxiliary/util/u_caps.c +++ b/src/gallium/auxiliary/util/u_caps.c @@ -198,13 +198,13 @@ static unsigned caps_sm3[] = { UTIL_CHECK_SHADER(FRAGMENT, MAX_INPUTS, 10), UTIL_CHECK_SHADER(FRAGMENT, MAX_TEMPS, 32), UTIL_CHECK_SHADER(FRAGMENT, MAX_ADDRS, 1), - UTIL_CHECK_SHADER(FRAGMENT, MAX_CONSTS, 224), + UTIL_CHECK_SHADER(FRAGMENT, MAX_CONST_BUFFER_SIZE, 224 * 16), UTIL_CHECK_SHADER(VERTEX, MAX_INSTRUCTIONS, 512), UTIL_CHECK_SHADER(VERTEX, MAX_INPUTS, 16), UTIL_CHECK_SHADER(VERTEX, MAX_TEMPS, 32), UTIL_CHECK_SHADER(VERTEX, MAX_ADDRS, 2), - UTIL_CHECK_SHADER(VERTEX, MAX_CONSTS, 256), + UTIL_CHECK_SHADER(VERTEX, MAX_CONST_BUFFER_SIZE, 256 * 16), UTIL_CHECK_TERMINATE }; diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 830a1a59393..74cecc23b0e 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -250,7 +250,7 @@ support different features. * ``PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS``: The maximum number of texture indirections. * ``PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH``: The maximum nested control flow depth. * ``PIPE_SHADER_CAP_MAX_INPUTS``: The maximum number of input registers. -* ``PIPE_SHADER_CAP_MAX_CONSTS``: The maximum number of constants. +* ``PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE``: The maximum size per constant buffer in bytes. * ``PIPE_SHADER_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that can be bound to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will only permit binding one constant buffer per shader, and the shaders will diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index d4a928a7c1a..8fae5dddaba 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -329,8 +329,8 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, return 64; /* Max native temporaries. */ case PIPE_SHADER_CAP_MAX_ADDRS: return 1; /* Max native address registers */ - case PIPE_SHADER_CAP_MAX_CONSTS: - return (screen->gpu_id >= 300) ? 1024 : 64; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return ((screen->gpu_id >= 300) ? 1024 : 64) * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_PREDS: diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index 86a7a6731f1..133c773a0be 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -129,8 +129,8 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha return 0; case PIPE_SHADER_CAP_MAX_INPUTS: return 10; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 32; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 32 * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c index d22691101d9..fde4cc4f34c 100644 --- a/src/gallium/drivers/ilo/ilo_screen.c +++ b/src/gallium/drivers/ilo/ilo_screen.c @@ -116,8 +116,8 @@ ilo_get_shader_param(struct pipe_screen *screen, unsigned shader, case PIPE_SHADER_CAP_MAX_INPUTS: /* this is limited by how many attributes SF can remap */ return 16; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 1024; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 1024 * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return ILO_MAX_CONST_BUFFERS; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c index 32f55236c48..4fa34e372f7 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c @@ -198,8 +198,8 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, return 0; case PIPE_SHADER_CAP_MAX_INPUTS: return 16; - case PIPE_SHADER_CAP_MAX_CONSTS: - return (eng3d->oclass >= NV40_3D_CLASS) ? (468 - 6): (256 - 6); + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return ((eng3d->oclass >= NV40_3D_CLASS) ? (468 - 6): (256 - 6)) * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: @@ -235,8 +235,8 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, return 0; case PIPE_SHADER_CAP_MAX_INPUTS: return 8; /* should be possible to do 10 with nv4x */ - case PIPE_SHADER_CAP_MAX_CONSTS: - return (eng3d->oclass >= NV40_3D_CLASS) ? 224 : 32; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return ((eng3d->oclass >= NV40_3D_CLASS) ? 224 : 32) * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index fd63819c397..677f688f445 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -232,8 +232,8 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, if (shader == PIPE_SHADER_VERTEX) return 32; return 15; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 65536 / 16; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 65536; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return NV50_MAX_PIPE_CONSTBUFS; case PIPE_SHADER_CAP_MAX_ADDRS: diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index 3f444a4f57d..24aee6b5ab7 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -238,8 +238,8 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, * and excludes 0x60 per-patch inputs. */ return 0x200 / 16; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 65536 / 16; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 65536; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: if (shader == PIPE_SHADER_COMPUTE && class_3d >= NVE4_3D_CLASS) return NVE4_MAX_PIPE_CONSTBUFS_COMPUTE; diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index efa69d3575e..a2ac26ad79c 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -241,8 +241,8 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e * additional texcoords but there is no two-sided color * selection then. However the facing bit can be used instead. */ return 10; - case PIPE_SHADER_CAP_MAX_CONSTS: - return is_r500 ? 256 : 32; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return (is_r500 ? 256 : 32) * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: @@ -289,8 +289,8 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e return is_r500 ? 4 : 0; /* For loops; not sure about conditionals. */ case PIPE_SHADER_CAP_MAX_INPUTS: return 16; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 256; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 256 * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index ee6a4160dd1..f243159982e 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -419,7 +419,7 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e case PIPE_SHADER_CAP_MAX_ADDRS: /* XXX Isn't this equal to TEMPS? */ return 1; /* Max native address registers */ - case PIPE_SHADER_CAP_MAX_CONSTS: + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: return R600_MAX_CONST_BUFFER_SIZE; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return R600_MAX_USER_CONST_BUFFERS; diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 4585ace155e..6422e3ee70e 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -54,7 +54,7 @@ #define R600_BUFFER_INFO_CONST_BUFFER (R600_MAX_USER_CONST_BUFFERS + 2) #define R600_GS_RING_CONST_BUFFER (R600_MAX_USER_CONST_BUFFERS + 3) -#define R600_MAX_CONST_BUFFER_SIZE 4096 +#define R600_MAX_CONST_BUFFER_SIZE (4096 * sizeof(float[4])) #ifdef PIPE_ARCH_BIG_ENDIAN #define R600_BIG_ENDIAN 1 diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 4f192687289..635b37d81c6 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -350,8 +350,8 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu case PIPE_SHADER_CAP_MAX_ADDRS: /* FIXME Isn't this equal to TEMPS? */ return 1; /* Max native address registers */ - case PIPE_SHADER_CAP_MAX_CONSTS: - return 4096; /* actually only memory limits this */ + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 4096 * sizeof(float[4]); /* actually only memory limits this */ case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return SI_NUM_USER_CONST_BUFFERS; case PIPE_SHADER_CAP_MAX_PREDS: diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index b213b04bacd..9326c777526 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -313,8 +313,8 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en return SVGA3D_MAX_NESTING_LEVEL; case PIPE_SHADER_CAP_MAX_INPUTS: return 10; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 224; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 224 * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: @@ -371,8 +371,8 @@ static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, en return SVGA3D_MAX_NESTING_LEVEL; case PIPE_SHADER_CAP_MAX_INPUTS: return 16; - case PIPE_SHADER_CAP_MAX_CONSTS: - return 256; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return 256 * sizeof(float[4]); case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: return 1; case PIPE_SHADER_CAP_MAX_TEMPS: diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 43bb1f57670..2caacc4e635 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -604,7 +604,7 @@ enum pipe_shader_cap PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH, PIPE_SHADER_CAP_MAX_INPUTS, - PIPE_SHADER_CAP_MAX_CONSTS, + PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE, PIPE_SHADER_CAP_MAX_CONST_BUFFERS, PIPE_SHADER_CAP_MAX_TEMPS, PIPE_SHADER_CAP_MAX_ADDRS, diff --git a/src/gallium/state_trackers/clover/core/device.cpp b/src/gallium/state_trackers/clover/core/device.cpp index 63aa1935c7f..12c9584854b 100644 --- a/src/gallium/state_trackers/clover/core/device.cpp +++ b/src/gallium/state_trackers/clover/core/device.cpp @@ -136,7 +136,7 @@ device::max_mem_input() const { cl_ulong device::max_const_buffer_size() const { return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE, - PIPE_SHADER_CAP_MAX_CONSTS) * 16; + PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE); } cl_uint diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index aa59fbfa986..7ac484056de 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -146,7 +146,7 @@ void st_init_limits(struct st_context *st) c->MaxUniformBlockSize = screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, - PIPE_SHADER_CAP_MAX_CONSTS) * 16; + PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE); if (c->MaxUniformBlockSize < 16384) { can_ubo = FALSE; } @@ -194,7 +194,8 @@ void st_init_limits(struct st_context *st) _min(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_ADDRS), MAX_PROGRAM_ADDRESS_REGS); pc->MaxParameters = pc->MaxNativeParameters = - screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONSTS); + screen->get_shader_param(screen, sh, + PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE) / sizeof(float[4]); pc->MaxUniformComponents = 4 * MIN2(pc->MaxNativeParameters, MAX_UNIFORMS);