| OLD | NEW |
| 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 <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1263 // Wrapper for glClear | 1263 // Wrapper for glClear |
| 1264 error::Error DoClear(GLbitfield mask); | 1264 error::Error DoClear(GLbitfield mask); |
| 1265 | 1265 |
| 1266 // Wrappers for various state. | 1266 // Wrappers for various state. |
| 1267 void DoDepthRangef(GLclampf znear, GLclampf zfar); | 1267 void DoDepthRangef(GLclampf znear, GLclampf zfar); |
| 1268 void DoSampleCoverage(GLclampf value, GLboolean invert); | 1268 void DoSampleCoverage(GLclampf value, GLboolean invert); |
| 1269 | 1269 |
| 1270 // Wrapper for glCompileShader. | 1270 // Wrapper for glCompileShader. |
| 1271 void DoCompileShader(GLuint shader); | 1271 void DoCompileShader(GLuint shader); |
| 1272 | 1272 |
| 1273 // Helper for DeleteSharedIdsCHROMIUM commands. | |
| 1274 void DoDeleteSharedIdsCHROMIUM( | |
| 1275 GLuint namespace_id, GLsizei n, const GLuint* ids); | |
| 1276 | |
| 1277 // Wrapper for glDetachShader | 1273 // Wrapper for glDetachShader |
| 1278 void DoDetachShader(GLuint client_program_id, GLint client_shader_id); | 1274 void DoDetachShader(GLuint client_program_id, GLint client_shader_id); |
| 1279 | 1275 |
| 1280 // Wrapper for glDisable | 1276 // Wrapper for glDisable |
| 1281 void DoDisable(GLenum cap); | 1277 void DoDisable(GLenum cap); |
| 1282 | 1278 |
| 1283 // Wrapper for glDisableVertexAttribArray. | 1279 // Wrapper for glDisableVertexAttribArray. |
| 1284 void DoDisableVertexAttribArray(GLuint index); | 1280 void DoDisableVertexAttribArray(GLuint index); |
| 1285 | 1281 |
| 1286 // Wrapper for glDiscardFramebufferEXT, since we need to track undefined | 1282 // Wrapper for glDiscardFramebufferEXT, since we need to track undefined |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1317 GLuint texture, GLint level, GLsizei samples); | 1313 GLuint texture, GLint level, GLsizei samples); |
| 1318 | 1314 |
| 1319 // Common implementation for both DoFramebufferTexture2D wrappers. | 1315 // Common implementation for both DoFramebufferTexture2D wrappers. |
| 1320 void DoFramebufferTexture2DCommon(const char* name, | 1316 void DoFramebufferTexture2DCommon(const char* name, |
| 1321 GLenum target, GLenum attachment, GLenum textarget, | 1317 GLenum target, GLenum attachment, GLenum textarget, |
| 1322 GLuint texture, GLint level, GLsizei samples); | 1318 GLuint texture, GLint level, GLsizei samples); |
| 1323 | 1319 |
| 1324 // Wrapper for glGenerateMipmap | 1320 // Wrapper for glGenerateMipmap |
| 1325 void DoGenerateMipmap(GLenum target); | 1321 void DoGenerateMipmap(GLenum target); |
| 1326 | 1322 |
| 1327 // Helper for GenSharedIdsCHROMIUM commands. | |
| 1328 void DoGenSharedIdsCHROMIUM( | |
| 1329 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids); | |
| 1330 | |
| 1331 // Helper for DoGetBooleanv, Floatv, and Intergerv to adjust pname | 1323 // Helper for DoGetBooleanv, Floatv, and Intergerv to adjust pname |
| 1332 // to account for different pname values defined in different extension | 1324 // to account for different pname values defined in different extension |
| 1333 // variants. | 1325 // variants. |
| 1334 GLenum AdjustGetPname(GLenum pname); | 1326 GLenum AdjustGetPname(GLenum pname); |
| 1335 | 1327 |
| 1336 // Wrapper for DoGetBooleanv. | 1328 // Wrapper for DoGetBooleanv. |
| 1337 void DoGetBooleanv(GLenum pname, GLboolean* params); | 1329 void DoGetBooleanv(GLenum pname, GLboolean* params); |
| 1338 | 1330 |
| 1339 // Wrapper for DoGetFloatv. | 1331 // Wrapper for DoGetFloatv. |
| 1340 void DoGetFloatv(GLenum pname, GLfloat* params); | 1332 void DoGetFloatv(GLenum pname, GLfloat* params); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 bool DoIsFramebuffer(GLuint client_id); | 1372 bool DoIsFramebuffer(GLuint client_id); |
| 1381 bool DoIsProgram(GLuint client_id); | 1373 bool DoIsProgram(GLuint client_id); |
| 1382 bool DoIsRenderbuffer(GLuint client_id); | 1374 bool DoIsRenderbuffer(GLuint client_id); |
| 1383 bool DoIsShader(GLuint client_id); | 1375 bool DoIsShader(GLuint client_id); |
| 1384 bool DoIsTexture(GLuint client_id); | 1376 bool DoIsTexture(GLuint client_id); |
| 1385 bool DoIsVertexArrayOES(GLuint client_id); | 1377 bool DoIsVertexArrayOES(GLuint client_id); |
| 1386 | 1378 |
| 1387 // Wrapper for glLinkProgram | 1379 // Wrapper for glLinkProgram |
| 1388 void DoLinkProgram(GLuint program); | 1380 void DoLinkProgram(GLuint program); |
| 1389 | 1381 |
| 1390 // Helper for RegisterSharedIdsCHROMIUM. | |
| 1391 void DoRegisterSharedIdsCHROMIUM( | |
| 1392 GLuint namespace_id, GLsizei n, const GLuint* ids); | |
| 1393 | |
| 1394 // Wrapper for glRenderbufferStorage. | 1382 // Wrapper for glRenderbufferStorage. |
| 1395 void DoRenderbufferStorage( | 1383 void DoRenderbufferStorage( |
| 1396 GLenum target, GLenum internalformat, GLsizei width, GLsizei height); | 1384 GLenum target, GLenum internalformat, GLsizei width, GLsizei height); |
| 1397 | 1385 |
| 1398 // Handler for glRenderbufferStorageMultisampleCHROMIUM. | 1386 // Handler for glRenderbufferStorageMultisampleCHROMIUM. |
| 1399 void DoRenderbufferStorageMultisampleCHROMIUM( | 1387 void DoRenderbufferStorageMultisampleCHROMIUM( |
| 1400 GLenum target, GLsizei samples, GLenum internalformat, | 1388 GLenum target, GLsizei samples, GLenum internalformat, |
| 1401 GLsizei width, GLsizei height); | 1389 GLsizei width, GLsizei height); |
| 1402 | 1390 |
| 1403 // Handler for glRenderbufferStorageMultisampleEXT | 1391 // Handler for glRenderbufferStorageMultisampleEXT |
| (...skipping 2543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3947 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 3935 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 3948 "glBindBuffer", | 3936 "glBindBuffer", |
| 3949 "id not generated by glGenBuffers"); | 3937 "id not generated by glGenBuffers"); |
| 3950 return; | 3938 return; |
| 3951 } | 3939 } |
| 3952 | 3940 |
| 3953 // It's a new id so make a buffer buffer for it. | 3941 // It's a new id so make a buffer buffer for it. |
| 3954 glGenBuffersARB(1, &service_id); | 3942 glGenBuffersARB(1, &service_id); |
| 3955 CreateBuffer(client_id, service_id); | 3943 CreateBuffer(client_id, service_id); |
| 3956 buffer = GetBuffer(client_id); | 3944 buffer = GetBuffer(client_id); |
| 3957 IdAllocatorInterface* id_allocator = | |
| 3958 group_->GetIdAllocator(id_namespaces::kBuffers); | |
| 3959 id_allocator->MarkAsUsed(client_id); | |
| 3960 } | 3945 } |
| 3961 } | 3946 } |
| 3962 LogClientServiceForInfo(buffer, client_id, "glBindBuffer"); | 3947 LogClientServiceForInfo(buffer, client_id, "glBindBuffer"); |
| 3963 if (buffer) { | 3948 if (buffer) { |
| 3964 if (!buffer_manager()->SetTarget(buffer, target)) { | 3949 if (!buffer_manager()->SetTarget(buffer, target)) { |
| 3965 LOCAL_SET_GL_ERROR( | 3950 LOCAL_SET_GL_ERROR( |
| 3966 GL_INVALID_OPERATION, | 3951 GL_INVALID_OPERATION, |
| 3967 "glBindBuffer", "buffer bound to more than 1 target"); | 3952 "glBindBuffer", "buffer bound to more than 1 target"); |
| 3968 return; | 3953 return; |
| 3969 } | 3954 } |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4151 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 4136 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 4152 "glBindFramebuffer", | 4137 "glBindFramebuffer", |
| 4153 "id not generated by glGenFramebuffers"); | 4138 "id not generated by glGenFramebuffers"); |
| 4154 return; | 4139 return; |
| 4155 } | 4140 } |
| 4156 | 4141 |
| 4157 // It's a new id so make a framebuffer framebuffer for it. | 4142 // It's a new id so make a framebuffer framebuffer for it. |
| 4158 glGenFramebuffersEXT(1, &service_id); | 4143 glGenFramebuffersEXT(1, &service_id); |
| 4159 CreateFramebuffer(client_id, service_id); | 4144 CreateFramebuffer(client_id, service_id); |
| 4160 framebuffer = GetFramebuffer(client_id); | 4145 framebuffer = GetFramebuffer(client_id); |
| 4161 IdAllocatorInterface* id_allocator = | |
| 4162 group_->GetIdAllocator(id_namespaces::kFramebuffers); | |
| 4163 id_allocator->MarkAsUsed(client_id); | |
| 4164 } else { | 4146 } else { |
| 4165 service_id = framebuffer->service_id(); | 4147 service_id = framebuffer->service_id(); |
| 4166 } | 4148 } |
| 4167 framebuffer->MarkAsValid(); | 4149 framebuffer->MarkAsValid(); |
| 4168 } | 4150 } |
| 4169 LogClientServiceForInfo(framebuffer, client_id, "glBindFramebuffer"); | 4151 LogClientServiceForInfo(framebuffer, client_id, "glBindFramebuffer"); |
| 4170 | 4152 |
| 4171 if (target == GL_FRAMEBUFFER || target == GL_DRAW_FRAMEBUFFER_EXT) { | 4153 if (target == GL_FRAMEBUFFER || target == GL_DRAW_FRAMEBUFFER_EXT) { |
| 4172 framebuffer_state_.bound_draw_framebuffer = framebuffer; | 4154 framebuffer_state_.bound_draw_framebuffer = framebuffer; |
| 4173 } | 4155 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 4199 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 4181 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 4200 "glBindRenderbuffer", | 4182 "glBindRenderbuffer", |
| 4201 "id not generated by glGenRenderbuffers"); | 4183 "id not generated by glGenRenderbuffers"); |
| 4202 return; | 4184 return; |
| 4203 } | 4185 } |
| 4204 | 4186 |
| 4205 // It's a new id so make a renderbuffer for it. | 4187 // It's a new id so make a renderbuffer for it. |
| 4206 glGenRenderbuffersEXT(1, &service_id); | 4188 glGenRenderbuffersEXT(1, &service_id); |
| 4207 CreateRenderbuffer(client_id, service_id); | 4189 CreateRenderbuffer(client_id, service_id); |
| 4208 renderbuffer = GetRenderbuffer(client_id); | 4190 renderbuffer = GetRenderbuffer(client_id); |
| 4209 IdAllocatorInterface* id_allocator = | |
| 4210 group_->GetIdAllocator(id_namespaces::kRenderbuffers); | |
| 4211 id_allocator->MarkAsUsed(client_id); | |
| 4212 } else { | 4191 } else { |
| 4213 service_id = renderbuffer->service_id(); | 4192 service_id = renderbuffer->service_id(); |
| 4214 } | 4193 } |
| 4215 renderbuffer->MarkAsValid(); | 4194 renderbuffer->MarkAsValid(); |
| 4216 } | 4195 } |
| 4217 LogClientServiceForInfo(renderbuffer, client_id, "glBindRenderbuffer"); | 4196 LogClientServiceForInfo(renderbuffer, client_id, "glBindRenderbuffer"); |
| 4218 state_.bound_renderbuffer = renderbuffer; | 4197 state_.bound_renderbuffer = renderbuffer; |
| 4219 state_.bound_renderbuffer_valid = true; | 4198 state_.bound_renderbuffer_valid = true; |
| 4220 glBindRenderbufferEXT(GL_RENDERBUFFER, service_id); | 4199 glBindRenderbufferEXT(GL_RENDERBUFFER, service_id); |
| 4221 } | 4200 } |
| 4222 | 4201 |
| 4223 void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) { | 4202 void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) { |
| 4224 TextureRef* texture_ref = NULL; | 4203 TextureRef* texture_ref = NULL; |
| 4225 GLuint service_id = 0; | 4204 GLuint service_id = 0; |
| 4226 if (client_id != 0) { | 4205 if (client_id != 0) { |
| 4227 texture_ref = GetTexture(client_id); | 4206 texture_ref = GetTexture(client_id); |
| 4228 if (!texture_ref) { | 4207 if (!texture_ref) { |
| 4229 if (!group_->bind_generates_resource()) { | 4208 if (!group_->bind_generates_resource()) { |
| 4230 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, | 4209 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, |
| 4231 "glBindTexture", | 4210 "glBindTexture", |
| 4232 "id not generated by glGenTextures"); | 4211 "id not generated by glGenTextures"); |
| 4233 return; | 4212 return; |
| 4234 } | 4213 } |
| 4235 | 4214 |
| 4236 // It's a new id so make a texture texture for it. | 4215 // It's a new id so make a texture texture for it. |
| 4237 glGenTextures(1, &service_id); | 4216 glGenTextures(1, &service_id); |
| 4238 DCHECK_NE(0u, service_id); | 4217 DCHECK_NE(0u, service_id); |
| 4239 CreateTexture(client_id, service_id); | 4218 CreateTexture(client_id, service_id); |
| 4240 texture_ref = GetTexture(client_id); | 4219 texture_ref = GetTexture(client_id); |
| 4241 IdAllocatorInterface* id_allocator = | |
| 4242 group_->GetIdAllocator(id_namespaces::kTextures); | |
| 4243 id_allocator->MarkAsUsed(client_id); | |
| 4244 } | 4220 } |
| 4245 } else { | 4221 } else { |
| 4246 texture_ref = texture_manager()->GetDefaultTextureInfo(target); | 4222 texture_ref = texture_manager()->GetDefaultTextureInfo(target); |
| 4247 } | 4223 } |
| 4248 | 4224 |
| 4249 // Check the texture exists | 4225 // Check the texture exists |
| 4250 if (texture_ref) { | 4226 if (texture_ref) { |
| 4251 Texture* texture = texture_ref->texture(); | 4227 Texture* texture = texture_ref->texture(); |
| 4252 // Check that we are not trying to bind it to a different target. | 4228 // Check that we are not trying to bind it to a different target. |
| 4253 if (texture->target() != 0 && texture->target() != target) { | 4229 if (texture->target() != 0 && texture->target() != target) { |
| (...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4991 program_manager()->MarkAsDeleted(shader_manager(), program); | 4967 program_manager()->MarkAsDeleted(shader_manager(), program); |
| 4992 } | 4968 } |
| 4993 } else { | 4969 } else { |
| 4994 LOCAL_SET_GL_ERROR( | 4970 LOCAL_SET_GL_ERROR( |
| 4995 GL_INVALID_VALUE, "glDeleteProgram", "unknown program"); | 4971 GL_INVALID_VALUE, "glDeleteProgram", "unknown program"); |
| 4996 } | 4972 } |
| 4997 } | 4973 } |
| 4998 return error::kNoError; | 4974 return error::kNoError; |
| 4999 } | 4975 } |
| 5000 | 4976 |
| 5001 void GLES2DecoderImpl::DoDeleteSharedIdsCHROMIUM( | |
| 5002 GLuint namespace_id, GLsizei n, const GLuint* ids) { | |
| 5003 IdAllocatorInterface* id_allocator = group_->GetIdAllocator(namespace_id); | |
| 5004 for (GLsizei ii = 0; ii < n; ++ii) { | |
| 5005 id_allocator->FreeID(ids[ii]); | |
| 5006 } | |
| 5007 } | |
| 5008 | |
| 5009 error::Error GLES2DecoderImpl::HandleDeleteSharedIdsCHROMIUM( | |
| 5010 uint32 immediate_data_size, | |
| 5011 const void* cmd_data) { | |
| 5012 const gles2::cmds::DeleteSharedIdsCHROMIUM& c = | |
| 5013 *static_cast<const gles2::cmds::DeleteSharedIdsCHROMIUM*>(cmd_data); | |
| 5014 GLuint namespace_id = static_cast<GLuint>(c.namespace_id); | |
| 5015 GLsizei n = static_cast<GLsizei>(c.n); | |
| 5016 uint32 data_size; | |
| 5017 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | |
| 5018 return error::kOutOfBounds; | |
| 5019 } | |
| 5020 const GLuint* ids = GetSharedMemoryAs<const GLuint*>( | |
| 5021 c.ids_shm_id, c.ids_shm_offset, data_size); | |
| 5022 if (n < 0) { | |
| 5023 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "DeleteSharedIdsCHROMIUM", "n < 0"); | |
| 5024 return error::kNoError; | |
| 5025 } | |
| 5026 if (ids == NULL) { | |
| 5027 return error::kOutOfBounds; | |
| 5028 } | |
| 5029 DoDeleteSharedIdsCHROMIUM(namespace_id, n, ids); | |
| 5030 return error::kNoError; | |
| 5031 } | |
| 5032 | |
| 5033 void GLES2DecoderImpl::DoGenSharedIdsCHROMIUM( | |
| 5034 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) { | |
| 5035 IdAllocatorInterface* id_allocator = group_->GetIdAllocator(namespace_id); | |
| 5036 if (id_offset == 0) { | |
| 5037 for (GLsizei ii = 0; ii < n; ++ii) { | |
| 5038 ids[ii] = id_allocator->AllocateID(); | |
| 5039 } | |
| 5040 } else { | |
| 5041 for (GLsizei ii = 0; ii < n; ++ii) { | |
| 5042 ids[ii] = id_allocator->AllocateIDAtOrAbove(id_offset); | |
| 5043 id_offset = ids[ii] + 1; | |
| 5044 } | |
| 5045 } | |
| 5046 } | |
| 5047 | |
| 5048 error::Error GLES2DecoderImpl::HandleGenSharedIdsCHROMIUM( | |
| 5049 uint32 immediate_data_size, | |
| 5050 const void* cmd_data) { | |
| 5051 const gles2::cmds::GenSharedIdsCHROMIUM& c = | |
| 5052 *static_cast<const gles2::cmds::GenSharedIdsCHROMIUM*>(cmd_data); | |
| 5053 GLuint namespace_id = static_cast<GLuint>(c.namespace_id); | |
| 5054 GLuint id_offset = static_cast<GLuint>(c.id_offset); | |
| 5055 GLsizei n = static_cast<GLsizei>(c.n); | |
| 5056 uint32 data_size; | |
| 5057 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | |
| 5058 return error::kOutOfBounds; | |
| 5059 } | |
| 5060 GLuint* ids = GetSharedMemoryAs<GLuint*>( | |
| 5061 c.ids_shm_id, c.ids_shm_offset, data_size); | |
| 5062 if (n < 0) { | |
| 5063 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "GenSharedIdsCHROMIUM", "n < 0"); | |
| 5064 return error::kNoError; | |
| 5065 } | |
| 5066 if (ids == NULL) { | |
| 5067 return error::kOutOfBounds; | |
| 5068 } | |
| 5069 DoGenSharedIdsCHROMIUM(namespace_id, id_offset, n, ids); | |
| 5070 return error::kNoError; | |
| 5071 } | |
| 5072 | |
| 5073 void GLES2DecoderImpl::DoRegisterSharedIdsCHROMIUM( | |
| 5074 GLuint namespace_id, GLsizei n, const GLuint* ids) { | |
| 5075 IdAllocatorInterface* id_allocator = group_->GetIdAllocator(namespace_id); | |
| 5076 for (GLsizei ii = 0; ii < n; ++ii) { | |
| 5077 if (!id_allocator->MarkAsUsed(ids[ii])) { | |
| 5078 for (GLsizei jj = 0; jj < ii; ++jj) { | |
| 5079 id_allocator->FreeID(ids[jj]); | |
| 5080 } | |
| 5081 LOCAL_SET_GL_ERROR( | |
| 5082 GL_INVALID_VALUE, "RegisterSharedIdsCHROMIUM", | |
| 5083 "attempt to register id that already exists"); | |
| 5084 return; | |
| 5085 } | |
| 5086 } | |
| 5087 } | |
| 5088 | |
| 5089 error::Error GLES2DecoderImpl::HandleRegisterSharedIdsCHROMIUM( | |
| 5090 uint32 immediate_data_size, | |
| 5091 const void* cmd_data) { | |
| 5092 const gles2::cmds::RegisterSharedIdsCHROMIUM& c = | |
| 5093 *static_cast<const gles2::cmds::RegisterSharedIdsCHROMIUM*>(cmd_data); | |
| 5094 GLuint namespace_id = static_cast<GLuint>(c.namespace_id); | |
| 5095 GLsizei n = static_cast<GLsizei>(c.n); | |
| 5096 uint32 data_size; | |
| 5097 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { | |
| 5098 return error::kOutOfBounds; | |
| 5099 } | |
| 5100 GLuint* ids = GetSharedMemoryAs<GLuint*>( | |
| 5101 c.ids_shm_id, c.ids_shm_offset, data_size); | |
| 5102 if (n < 0) { | |
| 5103 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "RegisterSharedIdsCHROMIUM", "n < 0"); | |
| 5104 return error::kNoError; | |
| 5105 } | |
| 5106 if (ids == NULL) { | |
| 5107 return error::kOutOfBounds; | |
| 5108 } | |
| 5109 DoRegisterSharedIdsCHROMIUM(namespace_id, n, ids); | |
| 5110 return error::kNoError; | |
| 5111 } | |
| 5112 | |
| 5113 error::Error GLES2DecoderImpl::DoClear(GLbitfield mask) { | 4977 error::Error GLES2DecoderImpl::DoClear(GLbitfield mask) { |
| 5114 DCHECK(!ShouldDeferDraws()); | 4978 DCHECK(!ShouldDeferDraws()); |
| 5115 if (CheckBoundFramebuffersValid("glClear")) { | 4979 if (CheckBoundFramebuffersValid("glClear")) { |
| 5116 ApplyDirtyState(); | 4980 ApplyDirtyState(); |
| 5117 glClear(mask); | 4981 glClear(mask); |
| 5118 } | 4982 } |
| 5119 return error::kNoError; | 4983 return error::kNoError; |
| 5120 } | 4984 } |
| 5121 | 4985 |
| 5122 void GLES2DecoderImpl::DoFramebufferRenderbuffer( | 4986 void GLES2DecoderImpl::DoFramebufferRenderbuffer( |
| (...skipping 5592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10715 "glCreateAndConsumeTextureCHROMIUM", "invalid mailbox name"); | 10579 "glCreateAndConsumeTextureCHROMIUM", "invalid mailbox name"); |
| 10716 return; | 10580 return; |
| 10717 } | 10581 } |
| 10718 if (texture->target() != target) { | 10582 if (texture->target() != target) { |
| 10719 LOCAL_SET_GL_ERROR( | 10583 LOCAL_SET_GL_ERROR( |
| 10720 GL_INVALID_OPERATION, | 10584 GL_INVALID_OPERATION, |
| 10721 "glCreateAndConsumeTextureCHROMIUM", "invalid target"); | 10585 "glCreateAndConsumeTextureCHROMIUM", "invalid target"); |
| 10722 return; | 10586 return; |
| 10723 } | 10587 } |
| 10724 | 10588 |
| 10725 IdAllocatorInterface* id_allocator = | |
| 10726 group_->GetIdAllocator(id_namespaces::kTextures); | |
| 10727 id_allocator->MarkAsUsed(client_id); | |
| 10728 | |
| 10729 texture_ref = texture_manager()->Consume(client_id, texture); | 10589 texture_ref = texture_manager()->Consume(client_id, texture); |
| 10730 } | 10590 } |
| 10731 | 10591 |
| 10732 void GLES2DecoderImpl::DoInsertEventMarkerEXT( | 10592 void GLES2DecoderImpl::DoInsertEventMarkerEXT( |
| 10733 GLsizei length, const GLchar* marker) { | 10593 GLsizei length, const GLchar* marker) { |
| 10734 if (!marker) { | 10594 if (!marker) { |
| 10735 marker = ""; | 10595 marker = ""; |
| 10736 } | 10596 } |
| 10737 debug_marker_manager_.SetMarker( | 10597 debug_marker_manager_.SetMarker( |
| 10738 length ? std::string(marker, length) : std::string(marker)); | 10598 length ? std::string(marker, length) : std::string(marker)); |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11284 } | 11144 } |
| 11285 } | 11145 } |
| 11286 | 11146 |
| 11287 // Include the auto-generated part of this file. We split this because it means | 11147 // Include the auto-generated part of this file. We split this because it means |
| 11288 // we can easily edit the non-auto generated parts right here in this file | 11148 // we can easily edit the non-auto generated parts right here in this file |
| 11289 // instead of having to edit some template or the code generator. | 11149 // instead of having to edit some template or the code generator. |
| 11290 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 11150 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 11291 | 11151 |
| 11292 } // namespace gles2 | 11152 } // namespace gles2 |
| 11293 } // namespace gpu | 11153 } // namespace gpu |
| OLD | NEW |