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

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h

Issue 12545014: Implement EXT_draw_buffers WebGL extention support in command buffer. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 9 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
Index: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
===================================================================
--- gpu/command_buffer/service/gles2_cmd_decoder_autogen.h (revision 187725)
+++ gpu/command_buffer/service/gles2_cmd_decoder_autogen.h (working copy)
@@ -3210,7 +3210,51 @@
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleDrawBuffersEXT(
+ uint32 immediate_data_size, const gles2::cmds::DrawBuffersEXT& c) {
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32 data_size;
+ if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ const GLenum* bufs = GetSharedMemoryAs<const GLenum*>(
+ c.bufs_shm_id, c.bufs_shm_offset, data_size);
+ if (count < 0) {
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDrawBuffersEXT", "count < 0");
+ return error::kNoError;
+ }
+ if (bufs == NULL) {
+ return error::kOutOfBounds;
+ }
+ DoDrawBuffersEXT(count, bufs);
+ return error::kNoError;
+}
+error::Error GLES2DecoderImpl::HandleDrawBuffersEXTImmediate(
+ uint32 immediate_data_size,
+ const gles2::cmds::DrawBuffersEXTImmediate& c) {
+ GLsizei count = static_cast<GLsizei>(c.count);
+ uint32 data_size;
+ if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
+ return error::kOutOfBounds;
+ }
+ if (data_size > immediate_data_size) {
+ return error::kOutOfBounds;
+ }
+ const GLenum* bufs = GetImmediateDataAs<const GLenum*>(
+ c, data_size, immediate_data_size);
+ if (count < 0) {
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDrawBuffersEXT", "count < 0");
+ return error::kNoError;
+ }
+ if (bufs == NULL) {
+ return error::kOutOfBounds;
+ }
+ DoDrawBuffersEXT(count, bufs);
+ return error::kNoError;
+}
+
+
bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) {
switch (cap) {
case GL_BLEND:

Powered by Google App Engine
This is Rietveld 408576698