[Mesa-dev] [PATCH] mesa: introduce a clear color union to be used for int/unsigned buffers

Brian Paul brianp at vmware.com
Tue Sep 13 06:47:14 PDT 2011


On 09/13/2011 04:54 AM, Dave Airlie wrote:
> From: Dave Airlie<airlied at redhat.com>
>
> This introduces a new gl_clear_color union and moves the current
> ClearColorUnclamped to use it, it removes ClearColor completely and
> all drivers are modified to expected unclamped floats instead.
>
> also fixes st to use translated color in one place it wasn't.
>
> Signed-off-by: Dave Airlie<airlied at redhat.com>
> ---
>   src/mesa/drivers/common/meta.c                |   10 ++--
>   src/mesa/drivers/dri/intel/intel_blit.c       |   10 ++--
>   src/mesa/drivers/dri/nouveau/nouveau_driver.c |    2 +-
>   src/mesa/drivers/dri/nouveau/nouveau_util.h   |   10 +++
>   src/mesa/drivers/dri/nouveau/nv20_context.c   |    2 +-
>   src/mesa/drivers/dri/r200/r200_state.c        |   11 ++--
>   src/mesa/drivers/dri/radeon/radeon_state.c    |   11 ++--
>   src/mesa/drivers/windows/gdi/wmesa.c          |    9 ++-
>   src/mesa/drivers/x11/xm_dd.c                  |   37 +++++-----
>   src/mesa/main/attrib.c                        |    8 +-
>   src/mesa/main/blend.c                         |    3 +-
>   src/mesa/main/clear.c                         |   94 ++++++++++--------------
>   src/mesa/main/dd.h                            |    3 +-
>   src/mesa/main/get.c                           |   11 ++-
>   src/mesa/main/mtypes.h                        |    9 ++-
>   src/mesa/state_tracker/st_cb_clear.c          |   14 ++--
>   src/mesa/state_tracker/st_format.c            |    9 +++
>   src/mesa/state_tracker/st_format.h            |    3 +
>   src/mesa/swrast/s_clear.c                     |   47 +++++++------
>   19 files changed, 163 insertions(+), 140 deletions(-)


Looks pretty good, Dave.

Reviewed-by: Brian Paul <brianp at vmware.com>

I'd be OK with committing as-is, but I'd suggest a few minor things:

1. Do we really need to call the field ClearColorUnclamped?  I think 
we could keep it as ClearColor and just add a comment that values are 
not clamped.  But there are a bunch of other dual clamped/unclamped 
fields in Mesa now.  We should probably review all of those and see 
where we can consolidate the clamped/unclamped values.

2. There seem to be many occurances of code like this:

   UNCLAMPED_FLOAT_TO_UBYTE(color[0], c.f[0]);
   UNCLAMPED_FLOAT_TO_UBYTE(color[1], c.f[1]);
   UNCLAMPED_FLOAT_TO_UBYTE(color[2], c.f[2]);
   UNCLAMPED_FLOAT_TO_UBYTE(color[3], c.f[3]);

I think it would be good to have a helper function like this

static inline void
_mesa_float_rgba_to_ubyte(GLubyte dst[4], const GLfloat src[4])
{
...
}

in colormac.h to simply things.  That could be done in a follow-on commit.

3. gl_texture_object::BorderColor is also a union of float/int/uint. 
Maybe we should rename gl_clear_color to something slightly more 
generic and use it for BorderColor too.  It might be used in other 
places in the future too.

4. I don't think the st_translate_clear_color() function is needed. 
It's just a wrapper for st_translate_color().

-Brian


More information about the mesa-dev mailing list