[Mesa-dev] [PATCH 2/2] st/mesa: remove _min(), _maxf(), _clamp()
Marek Olšák
maraeo at gmail.com
Fri Jan 10 14:59:47 PST 2014
I guess we should make MIN2 and friends inline functions to prevent
evaluating its parameters multiple times. For example,
MIN2(get_param(), Y) calls get_param() twice. It's not very important
in this case though.
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Thu, Jan 9, 2014 at 8:21 PM, Brian Paul <brianp at vmware.com> wrote:
> Just use the existing MIN2, MAX2 and CLAMP macros.
> ---
> src/mesa/state_tracker/st_extensions.c | 80 ++++++++++++++------------------
> 1 file changed, 34 insertions(+), 46 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index cc63b36..faf0e77 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -41,26 +41,6 @@
> #include "st_program.h"
>
>
> -static unsigned _min(unsigned a, unsigned b)
> -{
> - return (a < b) ? a : b;
> -}
> -
> -static float _maxf(float a, float b)
> -{
> - return (a > b) ? a : b;
> -}
> -
> -static int _clamp(int a, int min, int max)
> -{
> - if (a < min)
> - return min;
> - else if (a > max)
> - return max;
> - else
> - return a;
> -}
> -
>
> /**
> * Query driver to get implementation limits.
> @@ -74,25 +54,25 @@ void st_init_limits(struct st_context *st)
> int i;
>
> c->MaxTextureLevels
> - = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS),
> + = MIN2(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS),
> MAX_TEXTURE_LEVELS);
>
> c->Max3DTextureLevels
> - = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_3D_LEVELS),
> + = MIN2(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_3D_LEVELS),
> MAX_3D_TEXTURE_LEVELS);
>
> c->MaxCubeTextureLevels
> - = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS),
> + = MIN2(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS),
> MAX_CUBE_TEXTURE_LEVELS);
>
> c->MaxTextureRectSize
> - = _min(1 << (c->MaxTextureLevels - 1), MAX_TEXTURE_RECT_SIZE);
> + = MIN2(1 << (c->MaxTextureLevels - 1), MAX_TEXTURE_RECT_SIZE);
>
> c->MaxArrayTextureLayers
> = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS);
>
> c->MaxCombinedTextureImageUnits
> - = _min(screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SAMPLERS),
> + = MIN2(screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SAMPLERS),
> MAX_COMBINED_TEXTURE_IMAGE_UNITS);
>
> /* Define max viewport size and max renderbuffer size in terms of
> @@ -104,26 +84,27 @@ void st_init_limits(struct st_context *st)
> c->MaxRenderbufferSize = c->MaxTextureRectSize;
>
> c->MaxDrawBuffers = c->MaxColorAttachments =
> - _clamp(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
> + CLAMP(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
> 1, MAX_DRAW_BUFFERS);
>
> - c->MaxDualSourceDrawBuffers
> - = _clamp(screen->get_param(screen, PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS),
> - 0, MAX_DRAW_BUFFERS);
> + c->MaxDualSourceDrawBuffers =
> + CLAMP(screen->get_param(screen,
> + PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS),
> + 0, MAX_DRAW_BUFFERS);
>
> c->MaxLineWidth
> - = _maxf(1.0f, screen->get_paramf(screen,
> - PIPE_CAPF_MAX_LINE_WIDTH));
> + = MAX2(1.0f, screen->get_paramf(screen,
> + PIPE_CAPF_MAX_LINE_WIDTH));
> c->MaxLineWidthAA
> - = _maxf(1.0f, screen->get_paramf(screen,
> - PIPE_CAPF_MAX_LINE_WIDTH_AA));
> + = MAX2(1.0f, screen->get_paramf(screen,
> + PIPE_CAPF_MAX_LINE_WIDTH_AA));
>
> c->MaxPointSize
> - = _maxf(1.0f, screen->get_paramf(screen,
> - PIPE_CAPF_MAX_POINT_WIDTH));
> + = MAX2(1.0f, screen->get_paramf(screen,
> + PIPE_CAPF_MAX_POINT_WIDTH));
> c->MaxPointSizeAA
> - = _maxf(1.0f, screen->get_paramf(screen,
> - PIPE_CAPF_MAX_POINT_WIDTH_AA));
> + = MAX2(1.0f, screen->get_paramf(screen,
> + PIPE_CAPF_MAX_POINT_WIDTH_AA));
> /* called after _mesa_create_context/_mesa_init_point, fix default user
> * settable max point size up
> */
> @@ -135,7 +116,7 @@ void st_init_limits(struct st_context *st)
> c->MinPointSizeAA = 0.0f;
>
> c->MaxTextureMaxAnisotropy
> - = _maxf(2.0f, screen->get_paramf(screen,
> + = MAX2(2.0f, screen->get_paramf(screen,
> PIPE_CAPF_MAX_TEXTURE_ANISOTROPY));
>
> c->MaxTextureLodBias
> @@ -159,7 +140,7 @@ void st_init_limits(struct st_context *st)
> struct gl_program_constants *pc = &c->Program[i];
>
> pc->MaxTextureImageUnits =
> - _min(screen->get_shader_param(screen, sh,
> + MIN2(screen->get_shader_param(screen, sh,
> PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
> MAX_TEXTURE_IMAGE_UNITS);
>
> @@ -176,7 +157,7 @@ void st_init_limits(struct st_context *st)
> pc->MaxTemps = pc->MaxNativeTemps =
> screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEMPS);
> pc->MaxAddressRegs = pc->MaxNativeAddressRegs =
> - _min(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_ADDRS),
> + MIN2(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);
> @@ -187,7 +168,7 @@ void st_init_limits(struct st_context *st)
> screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONST_BUFFERS);
> if (pc->MaxUniformBlocks)
> pc->MaxUniformBlocks -= 1; /* The first one is for ordinary uniforms. */
> - pc->MaxUniformBlocks = _min(pc->MaxUniformBlocks, MAX_UNIFORM_BUFFERS);
> + pc->MaxUniformBlocks = MIN2(pc->MaxUniformBlocks, MAX_UNIFORM_BUFFERS);
>
> pc->MaxCombinedUniformComponents = (pc->MaxUniformComponents +
> c->MaxUniformBlockSize / 4 *
> @@ -224,7 +205,10 @@ void st_init_limits(struct st_context *st)
> }
>
> if (options->EmitNoLoops)
> - options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536);
> + options->MaxUnrollIterations =
> + MIN2(screen->get_shader_param(screen, sh,
> + PIPE_SHADER_CAP_MAX_INSTRUCTIONS),
> + 65536);
> else
> options->MaxUnrollIterations = 255; /* SM3 limit */
> options->LowerClipDistance = true;
> @@ -232,11 +216,15 @@ void st_init_limits(struct st_context *st)
>
> /* This depends on program constants. */
> c->MaxTextureCoordUnits
> - = _min(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS);
> + = MIN2(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
> + MAX_TEXTURE_COORD_UNITS);
>
> - c->MaxTextureUnits = _min(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, c->MaxTextureCoordUnits);
> + c->MaxTextureUnits =
> + MIN2(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
> + c->MaxTextureCoordUnits);
>
> - c->Program[MESA_SHADER_VERTEX].MaxAttribs = MIN2(c->Program[MESA_SHADER_VERTEX].MaxAttribs, 16);
> + c->Program[MESA_SHADER_VERTEX].MaxAttribs =
> + MIN2(c->Program[MESA_SHADER_VERTEX].MaxAttribs, 16);
>
> /* PIPE_SHADER_CAP_MAX_INPUTS for the FS specifies the maximum number
> * of inputs. It's always 2 colors + N generic inputs. */
> @@ -734,7 +722,7 @@ void st_init_extensions(struct st_context *st)
> ctx->Extensions.ARB_texture_buffer_object = GL_TRUE;
>
> ctx->Const.MaxTextureBufferSize =
> - _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
> + MIN2(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
> (1u << 31) - 1);
> ctx->Const.TextureBufferOffsetAlignment =
> screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT);
> --
> 1.7.10.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list