summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <[email protected]>2010-03-05 23:10:45 +0000
committerChris Wilson <[email protected]>2010-03-05 23:20:45 +0000
commit24f90112761d108a4a131fad11bd7b426d8edfa0 (patch)
treea1010a94ce0c946a0f3304e296c9e9c35288f73c
parentb704a4e8f332e7f9a38c21ce074cd244cf2fe89e (diff)
Always return VOLATILE for ObjectPurgeable(VOLATILE)
Fixes fdo bug 26128. The spec mandates that VOLATILE is returned from ObjectPurgeable(VOLATILE) irrespective of the actual status of the object upon completion of marking it purgeable. Conform to the spec, even though it seems wrong. Signed-off-by: Chris Wilson <[email protected]>
-rw-r--r--src/mesa/main/bufferobj.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index c532cbef118..71d1514fe49 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -1809,6 +1809,8 @@ _mesa_TextureObjectPurgeable(GLcontext *ctx, GLuint name, GLenum option)
GLenum GLAPIENTRY
_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
{
+ GLenum retval;
+
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
@@ -1832,17 +1834,27 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
switch (objectType) {
case GL_TEXTURE:
- return _mesa_TextureObjectPurgeable (ctx, name, option);
+ retval = _mesa_TextureObjectPurgeable (ctx, name, option);
+ break;
case GL_RENDERBUFFER_EXT:
- return _mesa_RenderObjectPurgeable (ctx, name, option);
+ retval = _mesa_RenderObjectPurgeable (ctx, name, option);
+ break;
case GL_BUFFER_OBJECT_APPLE:
- return _mesa_BufferObjectPurgeable (ctx, name, option);
+ retval = _mesa_BufferObjectPurgeable (ctx, name, option);
+ break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
"glObjectPurgeable(name = 0x%x) invalid type: %d",
name, objectType);
return 0;
}
+
+ /* In strict conformance to the spec, we must only return VOLATILE when
+ * when passed the VOLATILE option. Madness.
+ *
+ * XXX First fix the spec, then fix me.
+ */
+ return option == GL_VOLATILE_APPLE ? GL_VOLATILE_APPLE : retval;
}
@@ -1902,7 +1914,7 @@ _mesa_RenderObjectUnpurgeable(GLcontext *ctx, GLuint name, GLenum option)
if (ctx->Driver.RenderObjectUnpurgeable)
retval = ctx->Driver.RenderObjectUnpurgeable(ctx, bufObj, option);
- return retval;
+ return option;
}