Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(318)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 2959893002: FramebufferRenderbuffer() generates INVALID_OP if renderbuffer has never been bound. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index cd880c994926b25e55b77380d6e3a0ec3be8b44a..a9f9b685813ec6ac46097a172b47474ea7a67857 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -7525,11 +7525,10 @@ void GLES2DecoderImpl::DoClearBufferfi(
void GLES2DecoderImpl::DoFramebufferRenderbuffer(
GLenum target, GLenum attachment, GLenum renderbuffertarget,
GLuint client_renderbuffer_id) {
+ const char* func_name = "glFramebufferRenderbuffer";
Framebuffer* framebuffer = GetFramebufferInfoForTarget(target);
if (!framebuffer) {
- LOCAL_SET_GL_ERROR(
- GL_INVALID_OPERATION,
- "glFramebufferRenderbuffer", "no framebuffer bound");
+ LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, func_name, "no framebuffer bound");
return;
}
GLuint service_id = 0;
@@ -7537,9 +7536,13 @@ void GLES2DecoderImpl::DoFramebufferRenderbuffer(
if (client_renderbuffer_id) {
renderbuffer = GetRenderbuffer(client_renderbuffer_id);
if (!renderbuffer) {
- LOCAL_SET_GL_ERROR(
- GL_INVALID_OPERATION,
- "glFramebufferRenderbuffer", "unknown renderbuffer");
+ LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, func_name,
+ "unknown renderbuffer");
+ return;
+ }
+ if (!renderbuffer->IsValid()) {
+ LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, func_name,
+ "renderbuffer never bound or deleted");
return;
}
service_id = renderbuffer->service_id();
@@ -7551,11 +7554,11 @@ void GLES2DecoderImpl::DoFramebufferRenderbuffer(
} else {
attachments.push_back(attachment);
}
- LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glFramebufferRenderbuffer");
+ LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER(func_name);
for (GLenum attachment_point : attachments) {
glFramebufferRenderbufferEXT(
target, attachment_point, renderbuffertarget, service_id);
- GLenum error = LOCAL_PEEK_GL_ERROR("glFramebufferRenderbuffer");
+ GLenum error = LOCAL_PEEK_GL_ERROR(func_name);
if (error == GL_NO_ERROR) {
framebuffer->AttachRenderbuffer(attachment_point, renderbuffer);
}
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698