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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 2257533007: Autogenerate CreateAndConsumeTextureCHROMIUM handler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 void DoProduceTextureDirectCHROMIUM(GLuint texture, GLenum target, 1056 void DoProduceTextureDirectCHROMIUM(GLuint texture, GLenum target,
1057 const GLbyte* key); 1057 const GLbyte* key);
1058 void ProduceTextureRef(const char* func_name, 1058 void ProduceTextureRef(const char* func_name,
1059 bool clear, 1059 bool clear,
1060 TextureRef* texture_ref, 1060 TextureRef* texture_ref,
1061 GLenum target, 1061 GLenum target,
1062 const GLbyte* data); 1062 const GLbyte* data);
1063 1063
1064 void EnsureTextureForClientId(GLenum target, GLuint client_id); 1064 void EnsureTextureForClientId(GLenum target, GLuint client_id);
1065 void DoConsumeTextureCHROMIUM(GLenum target, const GLbyte* key); 1065 void DoConsumeTextureCHROMIUM(GLenum target, const GLbyte* key);
1066 void DoCreateAndConsumeTextureCHROMIUM(GLenum target, const GLbyte* key, 1066 void DoCreateAndConsumeTextureINTERNAL(GLenum target,
1067 GLuint client_id); 1067 GLuint client_id,
1068 const GLbyte* key);
1068 void DoApplyScreenSpaceAntialiasingCHROMIUM(); 1069 void DoApplyScreenSpaceAntialiasingCHROMIUM();
1069 1070
1070 void DoBindTexImage2DCHROMIUM( 1071 void DoBindTexImage2DCHROMIUM(
1071 GLenum target, 1072 GLenum target,
1072 GLint image_id); 1073 GLint image_id);
1073 void DoReleaseTexImage2DCHROMIUM( 1074 void DoReleaseTexImage2DCHROMIUM(
1074 GLenum target, 1075 GLenum target,
1075 GLint image_id); 1076 GLint image_id);
1076 1077
1077 void DoTraceEndCHROMIUM(void); 1078 void DoTraceEndCHROMIUM(void);
(...skipping 14819 matching lines...) Expand 10 before | Expand all | Expand 10 after
15897 GLuint service_id; 15898 GLuint service_id;
15898 glGenTextures(1, &service_id); 15899 glGenTextures(1, &service_id);
15899 DCHECK_NE(0u, service_id); 15900 DCHECK_NE(0u, service_id);
15900 texture_ref = CreateTexture(client_id, service_id); 15901 texture_ref = CreateTexture(client_id, service_id);
15901 texture_manager()->SetTarget(texture_ref, target); 15902 texture_manager()->SetTarget(texture_ref, target);
15902 glBindTexture(target, service_id); 15903 glBindTexture(target, service_id);
15903 RestoreCurrentTextureBindings(&state_, target); 15904 RestoreCurrentTextureBindings(&state_, target);
15904 } 15905 }
15905 } 15906 }
15906 15907
15907 // If CreateAndConsumeTexture fails we still need to ensure that the client_id 15908 void GLES2DecoderImpl::DoCreateAndConsumeTextureINTERNAL(GLenum target,
15908 // provided is associated with a service_id/TextureRef for consistency, even if 15909 GLuint client_id,
15909 // the resulting texture is incomplete. 15910 const GLbyte* data) {
15910 error::Error GLES2DecoderImpl::HandleCreateAndConsumeTextureCHROMIUMImmediate( 15911 TRACE_EVENT2("gpu", "GLES2DecoderImpl::DoCreateAndConsumeTextureINTERNAL",
15911 uint32_t immediate_data_size,
15912 const void* cmd_data) {
15913 const gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate& c =
15914 *static_cast<
15915 const gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate*>(
15916 cmd_data);
15917 GLenum target = static_cast<GLenum>(c.target);
15918 uint32_t data_size;
15919 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
15920 return error::kOutOfBounds;
15921 }
15922 if (data_size > immediate_data_size) {
15923 return error::kOutOfBounds;
15924 }
15925 const GLbyte* mailbox =
15926 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size);
15927 if (!validators_->texture_bind_target.IsValid(target)) {
15928 LOCAL_SET_GL_ERROR_INVALID_ENUM(
15929 "glCreateAndConsumeTextureCHROMIUM", target, "target");
15930 return error::kNoError;
15931 }
15932 if (mailbox == NULL) {
15933 return error::kOutOfBounds;
15934 }
15935 uint32_t client_id = c.client_id;
15936 DoCreateAndConsumeTextureCHROMIUM(target, mailbox, client_id);
15937 return error::kNoError;
15938 }
15939
15940 void GLES2DecoderImpl::DoCreateAndConsumeTextureCHROMIUM(GLenum target,
15941 const GLbyte* data, GLuint client_id) {
15942 TRACE_EVENT2("gpu", "GLES2DecoderImpl::DoCreateAndConsumeTextureCHROMIUM",
15943 "context", logger_.GetLogPrefix(), 15912 "context", logger_.GetLogPrefix(),
15944 "mailbox[0]", static_cast<unsigned char>(data[0])); 15913 "mailbox[0]", static_cast<unsigned char>(data[0]));
15945 const Mailbox& mailbox = *reinterpret_cast<const Mailbox*>(data); 15914 const Mailbox& mailbox = *reinterpret_cast<const Mailbox*>(data);
15946 DLOG_IF(ERROR, !mailbox.Verify()) << "CreateAndConsumeTextureCHROMIUM was " 15915 DLOG_IF(ERROR, !mailbox.Verify()) << "CreateAndConsumeTextureCHROMIUM was "
15947 "passed a mailbox that was not " 15916 "passed a mailbox that was not "
15948 "generated by GenMailboxCHROMIUM."; 15917 "generated by GenMailboxCHROMIUM.";
15949 15918
15950 TextureRef* texture_ref = GetTexture(client_id); 15919 TextureRef* texture_ref = GetTexture(client_id);
15951 if (texture_ref) { 15920 if (texture_ref) {
15952 // No need to call EnsureTextureForClientId here, the client_id already has 15921 // No need to call EnsureTextureForClientId here, the client_id already has
(...skipping 1791 matching lines...) Expand 10 before | Expand all | Expand 10 after
17744 } 17713 }
17745 17714
17746 // Include the auto-generated part of this file. We split this because it means 17715 // Include the auto-generated part of this file. We split this because it means
17747 // we can easily edit the non-auto generated parts right here in this file 17716 // we can easily edit the non-auto generated parts right here in this file
17748 // instead of having to edit some template or the code generator. 17717 // instead of having to edit some template or the code generator.
17749 #include "base/macros.h" 17718 #include "base/macros.h"
17750 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 17719 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
17751 17720
17752 } // namespace gles2 17721 } // namespace gles2
17753 } // namespace gpu 17722 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_ids_autogen.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698