Re: [Mesa-dev] [PATCH 1/5] mesa: refactor clamping controls, get rid of _ClampReadColor

2013-03-29 Thread Brian Paul

On 03/28/2013 03:24 PM, Marek Olšák wrote:

---
  src/mesa/main/blend.c   |   28 +++-
  src/mesa/main/blend.h   |8 
  src/mesa/main/fbobject.c|   10 ++
  src/mesa/main/framebuffer.c |1 +
  src/mesa/main/mtypes.h  |4 +++-
  src/mesa/main/readpix.c |5 +++--
  src/mesa/main/state.c   |   29 +++--
  7 files changed, 55 insertions(+), 30 deletions(-)

diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
index 309f1d5..876cbf2 100644
--- a/src/mesa/main/blend.c
+++ b/src/mesa/main/blend.c
@@ -782,7 +782,34 @@ _mesa_ClampColor(GLenum target, GLenum clamp)
 }
  }

+static GLboolean _mesa_get_clamp_color(const struct gl_framebuffer *fb,
+   GLenum clamp)


You don't need the _mesa_ prefix on static functions.  And some 
reformatting, so:


static GLboolean
get_clamp_color(const struct gl_framebuffer *fb, GLenum clamp)




+{
+   if (clamp == GL_TRUE || clamp == GL_FALSE)
+  return clamp;
+
+   ASSERT(clamp == GL_FIXED_ONLY);
+   if (!fb)
+  return GL_TRUE;

+   return fb-_AllColorBuffersFixedPoint;
+}
+
+GLboolean _mesa_get_clamp_fragment_color(const struct gl_context *ctx)


Minor formatting nit:

GLboolean
_mesa_get_clamp_fragment_color(const struct gl_context *ctx)



+{
+   return _mesa_get_clamp_color(ctx-DrawBuffer,
+ctx-Color.ClampFragmentColor);
+}
+
+GLboolean _mesa_get_clamp_vertex_color(const struct gl_context *ctx)
+{
+   return _mesa_get_clamp_color(ctx-DrawBuffer, ctx-Light.ClampVertexColor);
+}
+
+GLboolean _mesa_get_clamp_read_color(const struct gl_context *ctx)
+{
+   return _mesa_get_clamp_color(ctx-ReadBuffer, ctx-Color.ClampReadColor);
+}



Reviewed-by: Brian Paul bri...@vmware.com
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/5] mesa: refactor clamping controls, get rid of _ClampReadColor

2013-03-28 Thread Marek Olšák
---
 src/mesa/main/blend.c   |   28 +++-
 src/mesa/main/blend.h   |8 
 src/mesa/main/fbobject.c|   10 ++
 src/mesa/main/framebuffer.c |1 +
 src/mesa/main/mtypes.h  |4 +++-
 src/mesa/main/readpix.c |5 +++--
 src/mesa/main/state.c   |   29 +++--
 7 files changed, 55 insertions(+), 30 deletions(-)

diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
index 309f1d5..876cbf2 100644
--- a/src/mesa/main/blend.c
+++ b/src/mesa/main/blend.c
@@ -782,7 +782,34 @@ _mesa_ClampColor(GLenum target, GLenum clamp)
}
 }
 
+static GLboolean _mesa_get_clamp_color(const struct gl_framebuffer *fb,
+   GLenum clamp)
+{
+   if (clamp == GL_TRUE || clamp == GL_FALSE)
+  return clamp;
+
+   ASSERT(clamp == GL_FIXED_ONLY);
+   if (!fb)
+  return GL_TRUE;
 
+   return fb-_AllColorBuffersFixedPoint;
+}
+
+GLboolean _mesa_get_clamp_fragment_color(const struct gl_context *ctx)
+{
+   return _mesa_get_clamp_color(ctx-DrawBuffer,
+ctx-Color.ClampFragmentColor);
+}
+
+GLboolean _mesa_get_clamp_vertex_color(const struct gl_context *ctx)
+{
+   return _mesa_get_clamp_color(ctx-DrawBuffer, ctx-Light.ClampVertexColor);
+}
+
+GLboolean _mesa_get_clamp_read_color(const struct gl_context *ctx)
+{
+   return _mesa_get_clamp_color(ctx-ReadBuffer, ctx-Color.ClampReadColor);
+}
 
 
 /**/
@@ -835,7 +862,6 @@ void _mesa_init_color( struct gl_context * ctx )
ctx-Color.ClampFragmentColor = GL_FIXED_ONLY_ARB;
ctx-Color._ClampFragmentColor = GL_TRUE;
ctx-Color.ClampReadColor = GL_FIXED_ONLY_ARB;
-   ctx-Color._ClampReadColor = GL_TRUE;
 
if (ctx-API == API_OPENGLES2) {
   /* GLES 3 behaves as though GL_FRAMEBUFFER_SRGB is always enabled. */
diff --git a/src/mesa/main/blend.h b/src/mesa/main/blend.h
index a539aa8..694fc5a 100644
--- a/src/mesa/main/blend.h
+++ b/src/mesa/main/blend.h
@@ -99,6 +99,14 @@ _mesa_ColorMaski( GLuint buf, GLboolean red, GLboolean green,
 extern void GLAPIENTRY
 _mesa_ClampColor(GLenum target, GLenum clamp);
 
+extern GLboolean
+_mesa_get_clamp_fragment_color(const struct gl_context *ctx);
+
+extern GLboolean
+_mesa_get_clamp_vertex_color(const struct gl_context *ctx);
+
+extern GLboolean
+_mesa_get_clamp_read_color(const struct gl_context *ctx);
 
 extern void  
 _mesa_init_color( struct gl_context * ctx );
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index c1f5299..67c1161 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -784,6 +784,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
numImages = 0;
fb-Width = 0;
fb-Height = 0;
+   fb-_AllColorBuffersFixedPoint = GL_TRUE;
 
/* Start at -2 to more easily loop over all attachment points.
 *  -2: depth buffer
@@ -900,6 +901,15 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
   /* check if integer color */
   fb-_IntegerColor = _mesa_is_format_integer_color(attFormat);
 
+  /* Update _AllColorBuffersFixedPoint. */
+  if (i = 0) {
+ GLenum type = _mesa_get_format_datatype(attFormat);
+
+ fb-_AllColorBuffersFixedPoint =
+fb-_AllColorBuffersFixedPoint 
+(type == GL_UNSIGNED_NORMALIZED || type == GL_SIGNED_NORMALIZED);
+  }
+
   /* Error-check width, height, format */
   if (numImages == 1) {
  /* save format */
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index 619aaa3..5fb3677 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -154,6 +154,7 @@ _mesa_initialize_window_framebuffer(struct gl_framebuffer 
*fb,
 
fb-Delete = _mesa_destroy_framebuffer;
fb-_Status = GL_FRAMEBUFFER_COMPLETE_EXT;
+   fb-_AllColorBuffersFixedPoint = !visual-floatMode;
 
compute_depth_max(fb);
 }
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index a0e7e28..8c64a5b 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -683,7 +683,6 @@ struct gl_colorbuffer_attrib
GLenum ClampFragmentColor; /** GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
GLboolean _ClampFragmentColor; /**  with GL_FIXED_ONLY_ARB resolved */
GLenum ClampReadColor; /** GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
-   GLboolean _ClampReadColor; /**  with GL_FIXED_ONLY_ARB resolved */
 
GLboolean sRGBEnabled;  /** Framebuffer sRGB blending/updating 
requested */
 };
@@ -2670,6 +2669,9 @@ struct gl_framebuffer
/** Integer color values */
GLboolean _IntegerColor;
 
+   /* ARB_color_buffer_float */
+   GLboolean _AllColorBuffersFixedPoint; /* no integer, no float */
+
/** Array of all renderbuffer attachments, indexed by BUFFER_* tokens. */
struct gl_renderbuffer_attachment Attachment[BUFFER_COUNT];
 
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index d3d09de..0dee380