[Mesa-dev] [PATCH 1/5] mesa: change ctx->Color.ColorMask into a 32-bit bitmask

Roland Scheidegger sroland at vmware.com
Wed Jan 31 20:31:45 UTC 2018


Am 31.01.2018 um 20:55 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> 4 bits per draw buffer, 8 draw buffers in total --> 32 bits.
> 
> This is easier to work with.
> ---
>  src/mesa/drivers/common/driverfuncs.c            |  8 ++--
>  src/mesa/drivers/common/meta.c                   | 41 +++++++-----------
>  src/mesa/drivers/common/meta.h                   |  2 +-
>  src/mesa/drivers/dri/i915/intel_clear.c          |  5 +--
>  src/mesa/drivers/dri/i915/intel_pixel.c          |  5 +--
>  src/mesa/drivers/dri/i915/intel_pixel_copy.c     |  5 +--
>  src/mesa/drivers/dri/i965/brw_blorp.c            |  9 ++--
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c |  8 ++--
>  src/mesa/drivers/dri/i965/genX_state_upload.c    | 13 +++---
>  src/mesa/drivers/dri/i965/intel_pixel.c          |  5 +--
>  src/mesa/drivers/dri/i965/intel_pixel_copy.c     |  5 +--
>  src/mesa/drivers/dri/nouveau/nouveau_driver.c    |  8 +++-
>  src/mesa/drivers/dri/nouveau/nv04_context.c      |  5 +--
>  src/mesa/drivers/dri/nouveau/nv04_state_raster.c |  8 ++--
>  src/mesa/drivers/dri/nouveau/nv10_state_raster.c |  8 ++--
>  src/mesa/drivers/dri/nouveau/nv20_context.c      |  8 ++--
>  src/mesa/drivers/dri/r200/r200_state.c           |  8 ++--
>  src/mesa/drivers/dri/radeon/radeon_state.c       |  8 ++--
>  src/mesa/drivers/x11/xm_dd.c                     |  4 +-
>  src/mesa/main/accum.c                            | 16 +++----
>  src/mesa/main/attrib.c                           | 16 +++----
>  src/mesa/main/blend.c                            | 53 +++++++++---------------
>  src/mesa/main/blend.h                            | 10 +++++
>  src/mesa/main/clear.c                            |  2 +-
>  src/mesa/main/get.c                              | 16 +++----
>  src/mesa/main/mtypes.h                           |  8 +++-
>  src/mesa/state_tracker/st_atom_blend.c           | 27 ++++--------
>  src/mesa/state_tracker/st_cb_clear.c             | 39 ++---------------
>  src/mesa/swrast/s_clear.c                        |  8 +++-
>  src/mesa/swrast/s_context.c                      | 10 +----
>  src/mesa/swrast/s_masking.c                      | 24 +++++++----
>  src/mesa/swrast/s_span.c                         |  6 +--
>  src/mesa/swrast/s_triangle.c                     |  8 ++--
>  33 files changed, 174 insertions(+), 232 deletions(-)
> 

...


>  
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index cf9a2f6..16ad8f6 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -670,24 +670,24 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>  
>     case GL_CURRENT_TEXTURE_COORDS:
>        unit = ctx->Texture.CurrentUnit;
>        v->value_float_4[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0];
>        v->value_float_4[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1];
>        v->value_float_4[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2];
>        v->value_float_4[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3];
>        break;
>  
>     case GL_COLOR_WRITEMASK:
> -      v->value_int_4[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0;
> -      v->value_int_4[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0;
> -      v->value_int_4[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0;
> -      v->value_int_4[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0;
> +      v->value_int_4[0] = GET_COLORMASK_BIT(ctx->Color.ColorMask, 0, 0) ? 1 : 0;
> +      v->value_int_4[1] = GET_COLORMASK_BIT(ctx->Color.ColorMask, 0, 1) ? 1 : 0;
> +      v->value_int_4[2] = GET_COLORMASK_BIT(ctx->Color.ColorMask, 0, 2) ? 1 : 0;
> +      v->value_int_4[3] = GET_COLORMASK_BIT(ctx->Color.ColorMask, 0, 3) ? 1 : 0;

Here and below, GET_COLORMASK_BIT is already defined to return 1 or 0,
so the conditional seems a bit overkill (albeit I guess  the compiler is
clever enough to get rid of it?)

Roland


>        break;
>  
>     case GL_EDGE_FLAG:
>        v->value_bool = ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0F;
>        break;
>  
>     case GL_READ_BUFFER:
>        v->value_enum = ctx->ReadBuffer->ColorReadBuffer;
>        break;
>  
> @@ -2255,24 +2255,24 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
>        if (!ctx->Extensions.ARB_draw_buffers_blend)
>           goto invalid_enum;
>        v->value_int = ctx->Color.Blend[index].EquationA;
>        return TYPE_INT;
>  
>     case GL_COLOR_WRITEMASK:
>        if (index >= ctx->Const.MaxDrawBuffers)
>           goto invalid_value;
>        if (!ctx->Extensions.EXT_draw_buffers2)
>           goto invalid_enum;
> -      v->value_int_4[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0;
> -      v->value_int_4[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0;
> -      v->value_int_4[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0;
> -      v->value_int_4[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0;
> +      v->value_int_4[0] = GET_COLORMASK_BIT(ctx->Color.ColorMask, index, 0) ? 1 : 0;
> +      v->value_int_4[1] = GET_COLORMASK_BIT(ctx->Color.ColorMask, index, 1) ? 1 : 0;
> +      v->value_int_4[2] = GET_COLORMASK_BIT(ctx->Color.ColorMask, index, 2) ? 1 : 0;
> +      v->value_int_4[3] = GET_COLORMASK_BIT(ctx->Color.ColorMask, index, 3) ? 1 : 0;
>        return TYPE_INT_4;
>  


More information about the mesa-dev mailing list