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.ol...@amd.com> Marek On Thu, Jan 9, 2014 at 8:21 PM, Brian Paul <bri...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev