Enables glGetInternalformativ API function
TRAC #23273
Authored-by: Shannon Woods
Signed-off-by: Geoff Lang
Signed-off-by: Nicolas Capens
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 931d74e..b12cb1e 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -11694,8 +11694,35 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGetInternalformativ
- UNIMPLEMENTED();
+ if (!gl::IsColorRenderingSupported(internalformat, context) &&
+ !gl::IsDepthRenderingSupported(internalformat, context) &&
+ !gl::IsStencilRenderingSupported(internalformat, context))
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ if (target != GL_RENDERBUFFER)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ if (bufSize < 0)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ switch (pname)
+ {
+ case GL_NUM_SAMPLE_COUNTS:
+ if (bufSize != 0)
+ *params = context->getNumSampleCounts(internalformat);
+ break;
+ case GL_SAMPLES:
+ context->getSampleCounts(internalformat, bufSize, params);
+ break;
+ default:
+ return gl::error(GL_INVALID_ENUM);
+ }
}
}
catch(std::bad_alloc&)