Update RenderbufferStorage EPs to new style.
This will facilitate changes for WebGL compatibility.
BUG=angleproject:747
BUG=angleproject:1708
Change-Id: I62e5d684ca10a843b5e958afe9954c1065bfeb19
Reviewed-on: https://chromium-review.googlesource.com/442093
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES3.cpp b/src/libANGLE/validationES3.cpp
index e2384aa..13a1d2f 100644
--- a/src/libANGLE/validationES3.cpp
+++ b/src/libANGLE/validationES3.cpp
@@ -990,42 +990,6 @@
return true;
}
-bool ValidateES3RenderbufferStorageParameters(gl::Context *context,
- GLenum target,
- GLsizei samples,
- GLenum internalformat,
- GLsizei width,
- GLsizei height)
-{
- if (!ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat, width,
- height))
- {
- return false;
- }
-
- // The ES3 spec(section 4.4.2) states that the internal format must be sized and not an integer
- // format if samples is greater than zero.
- const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalformat);
- if ((formatInfo.componentType == GL_UNSIGNED_INT || formatInfo.componentType == GL_INT) &&
- samples > 0)
- {
- context->handleError(Error(GL_INVALID_OPERATION));
- return false;
- }
-
- // The behavior is different than the ANGLE version, which would generate a GL_OUT_OF_MEMORY.
- const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
- if (static_cast<GLuint>(samples) > formatCaps.getMaxSamples())
- {
- context->handleError(
- Error(GL_INVALID_OPERATION,
- "Samples must not be greater than maximum supported value for the format."));
- return false;
- }
-
- return true;
-}
-
bool ValidateInvalidateFramebuffer(Context *context,
GLenum target,
GLsizei numAttachments,
@@ -2106,4 +2070,46 @@
return true;
}
+bool ValidateRenderbufferStorageMultisample(ValidationContext *context,
+ GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height)
+{
+ if (context->getClientMajorVersion() < 3)
+ {
+ context->handleError(Error(GL_INVALID_OPERATION));
+ return false;
+ }
+
+ if (!ValidateRenderbufferStorageParametersBase(context, target, samples, internalformat, width,
+ height))
+ {
+ return false;
+ }
+
+ // The ES3 spec(section 4.4.2) states that the internal format must be sized and not an integer
+ // format if samples is greater than zero.
+ const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalformat);
+ if ((formatInfo.componentType == GL_UNSIGNED_INT || formatInfo.componentType == GL_INT) &&
+ samples > 0)
+ {
+ context->handleError(Error(GL_INVALID_OPERATION));
+ return false;
+ }
+
+ // The behavior is different than the ANGLE version, which would generate a GL_OUT_OF_MEMORY.
+ const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
+ if (static_cast<GLuint>(samples) > formatCaps.getMaxSamples())
+ {
+ context->handleError(
+ Error(GL_INVALID_OPERATION,
+ "Samples must not be greater than maximum supported value for the format."));
+ return false;
+ }
+
+ return true;
+}
+
} // namespace gl