summaryrefslogtreecommitdiff
path: root/src/mesa/main/get.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-12-09 10:08:07 -0800
committerEric Anholt <eric@anholt.net>2009-12-09 10:37:36 -0800
commitcd6b8dd9e82fedc55d033131fbc0f8ee950567c8 (patch)
treec9ac30b607861e22e77d8b0f526fc8c615d5a2a1 /src/mesa/main/get.c
parentdd9eb8774ad7918187afebf8cd3be6f4b80f0f3b (diff)
mesa: Move OES_read_format support from drivers into the core.
The assertion is that the correct read type to be using is the native type of the underlying read renderbuffer. For some fallback paths, this may be worse than GL_RGBA/GL_UNSIGNED_BYTE for reads today, but it gets all drivers the expected GL_BGRA/GL_UNSIGNED_BYTE for ARGB8888 or GL_BGR//GL_UNSIGNED_SHORT_5_6_5_REV for rgb565 with no work. This fixes the intel (and other) DRI drivers to report read formats that should hit blit PBO readpixels paths.
Diffstat (limited to 'src/mesa/main/get.c')
-rw-r--r--src/mesa/main/get.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 6c5ce02913..3f6b03c88a 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -13,6 +13,7 @@
#include "mtypes.h"
#include "state.h"
#include "texcompress.h"
+#include "framebuffer.h"
#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
@@ -1767,11 +1768,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
break;
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
CHECK_EXT1(OES_read_format, "GetBooleanv");
- params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
+ params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx));
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
CHECK_EXT1(OES_read_format, "GetBooleanv");
- params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
+ params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx));
break;
case GL_NUM_FRAGMENT_REGISTERS_ATI:
CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
@@ -3602,11 +3603,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
break;
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
CHECK_EXT1(OES_read_format, "GetFloatv");
- params[0] = (GLfloat)(ctx->Const.ColorReadType);
+ params[0] = (GLfloat)(_mesa_get_color_read_type(ctx));
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
CHECK_EXT1(OES_read_format, "GetFloatv");
- params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
+ params[0] = (GLfloat)(_mesa_get_color_read_format(ctx));
break;
case GL_NUM_FRAGMENT_REGISTERS_ATI:
CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
@@ -5437,11 +5438,11 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
break;
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
CHECK_EXT1(OES_read_format, "GetIntegerv");
- params[0] = ctx->Const.ColorReadType;
+ params[0] = _mesa_get_color_read_type(ctx);
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
CHECK_EXT1(OES_read_format, "GetIntegerv");
- params[0] = ctx->Const.ColorReadFormat;
+ params[0] = _mesa_get_color_read_format(ctx);
break;
case GL_NUM_FRAGMENT_REGISTERS_ATI:
CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
@@ -7273,11 +7274,11 @@ _mesa_GetInteger64v( GLenum pname, GLint64 *params )
break;
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
CHECK_EXT1(OES_read_format, "GetInteger64v");
- params[0] = (GLint64)(ctx->Const.ColorReadType);
+ params[0] = (GLint64)(_mesa_get_color_read_type(ctx));
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
CHECK_EXT1(OES_read_format, "GetInteger64v");
- params[0] = (GLint64)(ctx->Const.ColorReadFormat);
+ params[0] = (GLint64)(_mesa_get_color_read_format(ctx));
break;
case GL_NUM_FRAGMENT_REGISTERS_ATI:
CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");