summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2005-11-18 02:24:14 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2005-11-18 02:24:14 +0000
commit311bcf5090f8ba0cc09c66f2507dccdf6546ac3c (patch)
treef4adc5c56366927ad0e0c9a21ec4ff7b955e484a
parent948ab5d8a926d55615a4bfbdfc1e9668095dc81c (diff)
In _mesa_RenderbufferStorageEXT(), try to avoid needless reallocation.
Simplify _mesa_GetRenderbufferParameterivEXT() queries.
-rw-r--r--src/mesa/main/fbobject.c56
1 files changed, 13 insertions, 43 deletions
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index ecf54a5a79..43e4793d55 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -744,6 +744,13 @@ _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat,
FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+ if (rb->InternalFormat == internalFormat &&
+ rb->Width == width &&
+ rb->Height == height) {
+ /* no change in allocation needed */
+ return;
+ }
+
/* Now allocate the storage */
ASSERT(rb->AllocStorage);
if (rb->AllocStorage(ctx, rb, internalFormat, width, height)) {
@@ -802,60 +809,23 @@ _mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params)
*params = ctx->CurrentRenderbuffer->InternalFormat;
return;
case GL_RENDERBUFFER_RED_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_RGB ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_RGBA) {
- *params = ctx->CurrentRenderbuffer->RedBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->RedBits;
break;
case GL_RENDERBUFFER_GREEN_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_RGB ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_RGBA) {
- *params = ctx->CurrentRenderbuffer->GreenBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->GreenBits;
break;
case GL_RENDERBUFFER_BLUE_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_RGB ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_RGBA) {
- *params = ctx->CurrentRenderbuffer->BlueBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->BlueBits;
break;
case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_RGB ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_RGBA) {
- *params = ctx->CurrentRenderbuffer->AlphaBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->AlphaBits;
break;
case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_DEPTH_COMPONENT ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_DEPTH_STENCIL_EXT) {
- *params = ctx->CurrentRenderbuffer->DepthBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->DepthBits;
break;
case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
- if (ctx->CurrentRenderbuffer->_BaseFormat == GL_STENCIL_INDEX ||
- ctx->CurrentRenderbuffer->_BaseFormat == GL_DEPTH_STENCIL_EXT) {
- *params = ctx->CurrentRenderbuffer->StencilBits;
- }
- else {
- *params = 0;
- }
+ *params = ctx->CurrentRenderbuffer->StencilBits;
break;
-
default:
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetRenderbufferParameterivEXT(target)");