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

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

Issue 2067503003: Add a new command buffer function glScheduleCALayerInUseQueryCHROMIUM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include gl_image.h Created 4 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 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 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 void DoTraceEndCHROMIUM(void); 1043 void DoTraceEndCHROMIUM(void);
1044 1044
1045 void DoDrawBuffersEXT(GLsizei count, const GLenum* bufs); 1045 void DoDrawBuffersEXT(GLsizei count, const GLenum* bufs);
1046 1046
1047 void DoLoseContextCHROMIUM(GLenum current, GLenum other); 1047 void DoLoseContextCHROMIUM(GLenum current, GLenum other);
1048 1048
1049 void DoFlushDriverCachesCHROMIUM(void); 1049 void DoFlushDriverCachesCHROMIUM(void);
1050 1050
1051 void DoMatrixLoadfCHROMIUM(GLenum matrix_mode, const GLfloat* matrix); 1051 void DoMatrixLoadfCHROMIUM(GLenum matrix_mode, const GLfloat* matrix);
1052 void DoMatrixLoadIdentityCHROMIUM(GLenum matrix_mode); 1052 void DoMatrixLoadIdentityCHROMIUM(GLenum matrix_mode);
1053 void DoScheduleCALayerInUseQueryCHROMIUM(GLsizei count,
1054 const GLuint* textures);
1053 1055
1054 // Creates a Program for the given program. 1056 // Creates a Program for the given program.
1055 Program* CreateProgram(GLuint client_id, GLuint service_id) { 1057 Program* CreateProgram(GLuint client_id, GLuint service_id) {
1056 return program_manager()->CreateProgram(client_id, service_id); 1058 return program_manager()->CreateProgram(client_id, service_id);
1057 } 1059 }
1058 1060
1059 // Gets the program info for the given program. Returns NULL if none exists. 1061 // Gets the program info for the given program. Returns NULL if none exists.
1060 Program* GetProgram(GLuint client_id) { 1062 Program* GetProgram(GLuint client_id) {
1061 return program_manager()->GetProgram(client_id); 1063 return program_manager()->GetProgram(client_id);
1062 } 1064 }
(...skipping 9378 matching lines...) Expand 10 before | Expand all | Expand 10 after
10441 if (!surface_->ScheduleCALayer( 10443 if (!surface_->ScheduleCALayer(
10442 image, contents_rect, c.opacity, c.background_color, c.edge_aa_mask, 10444 image, contents_rect, c.opacity, c.background_color, c.edge_aa_mask,
10443 bounds_rect, c.is_clipped ? true : false, clip_rect, transform, 10445 bounds_rect, c.is_clipped ? true : false, clip_rect, transform,
10444 c.sorting_context_id, filter)) { 10446 c.sorting_context_id, filter)) {
10445 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleCALayerCHROMIUM", 10447 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleCALayerCHROMIUM",
10446 "failed to schedule CALayer"); 10448 "failed to schedule CALayer");
10447 } 10449 }
10448 return error::kNoError; 10450 return error::kNoError;
10449 } 10451 }
10450 10452
10453 void GLES2DecoderImpl::DoScheduleCALayerInUseQueryCHROMIUM(
10454 GLsizei count,
10455 const GLuint* textures) {
10456 std::vector<gl::GLSurface::CALayerInUseQuery> queries;
10457 queries.reserve(count);
10458 for (GLsizei i = 0; i < count; ++i) {
10459 gl::GLImage* image = nullptr;
10460 GLuint texture_id = textures[i];
10461 if (texture_id) {
10462 TextureRef* ref = texture_manager()->GetTexture(texture_id);
10463 if (!ref) {
10464 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
10465 "glScheduleCALayerInUseQueryCHROMIUM",
10466 "unknown texture");
10467 return;
10468 }
10469 Texture::ImageState image_state;
10470 image = ref->texture()->GetLevelImage(ref->texture()->target(), 0,
10471 &image_state);
10472 }
10473 gl::GLSurface::CALayerInUseQuery query;
10474 query.image = image;
10475 query.texture = texture_id;
10476 queries.push_back(query);
10477 }
10478
10479 surface_->ScheduleCALayerInUseQuery(std::move(queries));
10480 }
10481
10451 error::Error GLES2DecoderImpl::GetAttribLocationHelper( 10482 error::Error GLES2DecoderImpl::GetAttribLocationHelper(
10452 GLuint client_id, 10483 GLuint client_id,
10453 uint32_t location_shm_id, 10484 uint32_t location_shm_id,
10454 uint32_t location_shm_offset, 10485 uint32_t location_shm_offset,
10455 const std::string& name_str) { 10486 const std::string& name_str) {
10456 if (!StringIsValidForGLES(name_str)) { 10487 if (!StringIsValidForGLES(name_str)) {
10457 LOCAL_SET_GL_ERROR( 10488 LOCAL_SET_GL_ERROR(
10458 GL_INVALID_VALUE, "glGetAttribLocation", "Invalid character"); 10489 GL_INVALID_VALUE, "glGetAttribLocation", "Invalid character");
10459 return error::kNoError; 10490 return error::kNoError;
10460 } 10491 }
(...skipping 6423 matching lines...) Expand 10 before | Expand all | Expand 10 after
16884 } 16915 }
16885 16916
16886 // Include the auto-generated part of this file. We split this because it means 16917 // Include the auto-generated part of this file. We split this because it means
16887 // we can easily edit the non-auto generated parts right here in this file 16918 // we can easily edit the non-auto generated parts right here in this file
16888 // instead of having to edit some template or the code generator. 16919 // instead of having to edit some template or the code generator.
16889 #include "base/macros.h" 16920 #include "base/macros.h"
16890 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 16921 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
16891 16922
16892 } // namespace gles2 16923 } // namespace gles2
16893 } // namespace gpu 16924 } // 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