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

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

Issue 2503453005: Patch the results of queries that return object IDs in the passthrough cmd decoder. (Closed)
Patch Set: Helperize GetClientID Created 4 years, 1 month 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
Index: gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
index f7c7a7d3cad18940fc1545190465cba6dffd3137..3e1fbdb8e425e57b6f08306f0e3d50273818d58e 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
@@ -878,8 +878,11 @@ error::Error GLES2DecoderPassthroughImpl::DoGetBooleanv(GLenum pname,
GLsizei bufsize,
GLsizei* length,
GLboolean* params) {
- glGetBooleanvRobustANGLE(pname, bufsize, length, params);
- return error::kNoError;
+ return GetNumericHelper(
+ pname, bufsize, length, params,
+ [](GLenum pname, GLsizei bufsize, GLsizei* length, GLboolean* params) {
+ glGetBooleanvRobustANGLE(pname, bufsize, length, params);
+ });
}
error::Error GLES2DecoderPassthroughImpl::DoGetBufferParameteri64v(
@@ -911,8 +914,11 @@ error::Error GLES2DecoderPassthroughImpl::DoGetFloatv(GLenum pname,
GLsizei bufsize,
GLsizei* length,
GLfloat* params) {
- glGetFloatvRobustANGLE(pname, bufsize, length, params);
- return error::kNoError;
+ return GetNumericHelper(
+ pname, bufsize, length, params,
+ [](GLenum pname, GLsizei bufsize, GLsizei* length, GLfloat* params) {
+ glGetFloatvRobustANGLE(pname, bufsize, length, params);
+ });
}
error::Error GLES2DecoderPassthroughImpl::DoGetFragDataLocation(
@@ -931,8 +937,23 @@ error::Error GLES2DecoderPassthroughImpl::DoGetFramebufferAttachmentParameteriv(
GLsizei bufsize,
GLsizei* length,
GLint* params) {
- glGetFramebufferAttachmentParameterivRobustANGLE(target, attachment, pname,
- bufsize, length, params);
+ // Get a scratch buffer to hold the result of the query
+ GLint* scratch_params = GetTypedScratchMemory<GLint>(bufsize);
+ glGetFramebufferAttachmentParameterivRobustANGLE(
+ target, attachment, pname, bufsize, length, scratch_params);
+
+ // Update the results of the query, if needed
+ error::Error error = PatchGetFramebufferAttachmentParameter(
+ target, attachment, pname, *length, scratch_params);
+ if (error != error::kNoError) {
+ *length = 0;
+ return error;
+ }
+
+ // Copy into the destination
+ DCHECK(*length < bufsize);
+ std::copy(scratch_params, scratch_params + *length, params);
+
return error::kNoError;
}
@@ -940,8 +961,11 @@ error::Error GLES2DecoderPassthroughImpl::DoGetInteger64v(GLenum pname,
GLsizei bufsize,
GLsizei* length,
GLint64* params) {
- glGetInteger64vRobustANGLE(pname, bufsize, length, params);
- return error::kNoError;
+ return GetNumericHelper(
+ pname, bufsize, length, params,
+ [](GLenum pname, GLsizei bufsize, GLsizei* length, GLint64* params) {
+ glGetInteger64vRobustANGLE(pname, bufsize, length, params);
+ });
}
error::Error GLES2DecoderPassthroughImpl::DoGetIntegeri_v(GLenum pname,
@@ -966,8 +990,11 @@ error::Error GLES2DecoderPassthroughImpl::DoGetIntegerv(GLenum pname,
GLsizei bufsize,
GLsizei* length,
GLint* params) {
- glGetIntegervRobustANGLE(pname, bufsize, length, params);
- return error::kNoError;
+ return GetNumericHelper(
+ pname, bufsize, length, params,
+ [](GLenum pname, GLsizei bufsize, GLsizei* length, GLint* params) {
+ glGetIntegervRobustANGLE(pname, bufsize, length, params);
+ });
}
error::Error GLES2DecoderPassthroughImpl::DoGetInternalformativ(GLenum target,
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc ('k') | gpu/command_buffer/tests/gl_object_bindings_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698