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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation.cc

Issue 659903002: Add subscribeUniform extension pipeline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: V3 API Created 6 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 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 // A class to emulate GLES2 over command buffers. 5 // A class to emulate GLES2 over command buffers.
6 6
7 #include "gpu/command_buffer/client/gles2_implementation.h" 7 #include "gpu/command_buffer/client/gles2_implementation.h"
8 8
9 #include <GLES2/gl2ext.h> 9 #include <GLES2/gl2ext.h>
10 #include <GLES2/gl2extchromium.h> 10 #include <GLES2/gl2extchromium.h>
(...skipping 2346 matching lines...) Expand 10 before | Expand all | Expand 10 after
2357 2357
2358 void GLES2Implementation::GenVertexArraysOESHelper( 2358 void GLES2Implementation::GenVertexArraysOESHelper(
2359 GLsizei n, const GLuint* arrays) { 2359 GLsizei n, const GLuint* arrays) {
2360 vertex_array_object_manager_->GenVertexArrays(n, arrays); 2360 vertex_array_object_manager_->GenVertexArrays(n, arrays);
2361 } 2361 }
2362 2362
2363 void GLES2Implementation::GenQueriesEXTHelper( 2363 void GLES2Implementation::GenQueriesEXTHelper(
2364 GLsizei /* n */, const GLuint* /* queries */) { 2364 GLsizei /* n */, const GLuint* /* queries */) {
2365 } 2365 }
2366 2366
2367 void GLES2Implementation::GenValuebuffersCHROMIUMHelper(
2368 GLsizei /* n */,
2369 const GLuint* /* valuebuffers */) {
2370 }
2371
2367 // NOTE #1: On old versions of OpenGL, calling glBindXXX with an unused id 2372 // NOTE #1: On old versions of OpenGL, calling glBindXXX with an unused id
2368 // generates a new resource. On newer versions of OpenGL they don't. The code 2373 // generates a new resource. On newer versions of OpenGL they don't. The code
2369 // related to binding below will need to change if we switch to the new OpenGL 2374 // related to binding below will need to change if we switch to the new OpenGL
2370 // model. Specifically it assumes a bind will succeed which is always true in 2375 // model. Specifically it assumes a bind will succeed which is always true in
2371 // the old model but possibly not true in the new model if another context has 2376 // the old model but possibly not true in the new model if another context has
2372 // deleted the resource. 2377 // deleted the resource.
2373 2378
2374 bool GLES2Implementation::BindBufferHelper( 2379 bool GLES2Implementation::BindBufferHelper(
2375 GLenum target, GLuint buffer_id) { 2380 GLenum target, GLuint buffer_id) {
2376 // TODO(gman): See note #1 above. 2381 // TODO(gman): See note #1 above.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
2506 GL_INVALID_OPERATION, "glBindVertexArrayOES", 2511 GL_INVALID_OPERATION, "glBindVertexArrayOES",
2507 "id was not generated with glGenVertexArrayOES"); 2512 "id was not generated with glGenVertexArrayOES");
2508 } 2513 }
2509 // Unlike other BindXXXHelpers we don't call MarkAsUsedForBind 2514 // Unlike other BindXXXHelpers we don't call MarkAsUsedForBind
2510 // because unlike other resources VertexArrayObject ids must 2515 // because unlike other resources VertexArrayObject ids must
2511 // be generated by GenVertexArrays. A random id to Bind will not 2516 // be generated by GenVertexArrays. A random id to Bind will not
2512 // generate a new object. 2517 // generate a new object.
2513 return changed; 2518 return changed;
2514 } 2519 }
2515 2520
2521 bool GLES2Implementation::BindValuebufferCHROMIUMHelper(GLenum target,
2522 GLuint valuebuffer) {
2523 bool changed = false;
2524 switch (target) {
2525 case GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM:
2526 if (bound_valuebuffer_ != valuebuffer) {
2527 bound_valuebuffer_ = valuebuffer;
2528 changed = true;
2529 }
2530 break;
2531 default:
2532 changed = true;
2533 break;
2534 }
2535 // TODO(gman): There's a bug here. If the target is invalid the ID will not be
2536 // used even though it's marked it as used here.
2537 GetIdHandler(id_namespaces::kValuebuffers)->MarkAsUsedForBind(valuebuffer);
2538 return changed;
2539 }
2540
2516 bool GLES2Implementation::UseProgramHelper(GLuint program) { 2541 bool GLES2Implementation::UseProgramHelper(GLuint program) {
2517 bool changed = false; 2542 bool changed = false;
2518 if (current_program_ != program) { 2543 if (current_program_ != program) {
2519 current_program_ = program; 2544 current_program_ = program;
2520 changed = true; 2545 changed = true;
2521 } 2546 }
2522 return changed; 2547 return changed;
2523 } 2548 }
2524 2549
2525 bool GLES2Implementation::IsBufferReservedId(GLuint id) { 2550 bool GLES2Implementation::IsBufferReservedId(GLuint id) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
2622 if (textures[ii] == unit.bound_texture_cube_map) { 2647 if (textures[ii] == unit.bound_texture_cube_map) {
2623 unit.bound_texture_cube_map = 0; 2648 unit.bound_texture_cube_map = 0;
2624 } 2649 }
2625 if (textures[ii] == unit.bound_texture_external_oes) { 2650 if (textures[ii] == unit.bound_texture_external_oes) {
2626 unit.bound_texture_external_oes = 0; 2651 unit.bound_texture_external_oes = 0;
2627 } 2652 }
2628 } 2653 }
2629 } 2654 }
2630 } 2655 }
2631 2656
2657 void GLES2Implementation::DeleteTexturesStub(GLsizei n,
2658 const GLuint* textures) {
2659 helper_->DeleteTexturesImmediate(n, textures);
2660 }
2661
2632 void GLES2Implementation::DeleteVertexArraysOESHelper( 2662 void GLES2Implementation::DeleteVertexArraysOESHelper(
2633 GLsizei n, const GLuint* arrays) { 2663 GLsizei n, const GLuint* arrays) {
2634 vertex_array_object_manager_->DeleteVertexArrays(n, arrays); 2664 vertex_array_object_manager_->DeleteVertexArrays(n, arrays);
2635 if (!GetIdHandler(id_namespaces::kVertexArrays)->FreeIds( 2665 if (!GetIdHandler(id_namespaces::kVertexArrays)->FreeIds(
2636 this, n, arrays, &GLES2Implementation::DeleteVertexArraysOESStub)) { 2666 this, n, arrays, &GLES2Implementation::DeleteVertexArraysOESStub)) {
2637 SetGLError( 2667 SetGLError(
2638 GL_INVALID_VALUE, 2668 GL_INVALID_VALUE,
2639 "glDeleteVertexArraysOES", "id not created by this context."); 2669 "glDeleteVertexArraysOES", "id not created by this context.");
2640 return; 2670 return;
2641 } 2671 }
2642 } 2672 }
2643 2673
2644 void GLES2Implementation::DeleteVertexArraysOESStub( 2674 void GLES2Implementation::DeleteVertexArraysOESStub(
2645 GLsizei n, const GLuint* arrays) { 2675 GLsizei n, const GLuint* arrays) {
2646 helper_->DeleteVertexArraysOESImmediate(n, arrays); 2676 helper_->DeleteVertexArraysOESImmediate(n, arrays);
2647 } 2677 }
2648 2678
2649 void GLES2Implementation::DeleteTexturesStub( 2679 void GLES2Implementation::DeleteValuebuffersCHROMIUMHelper(
2650 GLsizei n, const GLuint* textures) { 2680 GLsizei n,
2651 helper_->DeleteTexturesImmediate(n, textures); 2681 const GLuint* valuebuffers) {
2682 if (!GetIdHandler(id_namespaces::kValuebuffers)
2683 ->FreeIds(this, n, valuebuffers,
2684 &GLES2Implementation::DeleteValuebuffersCHROMIUMStub)) {
2685 SetGLError(GL_INVALID_VALUE, "glDeleteValuebuffersCHROMIUM",
2686 "id not created by this context.");
2687 return;
2688 }
2689 for (GLsizei ii = 0; ii < n; ++ii) {
2690 if (valuebuffers[ii] == bound_valuebuffer_) {
2691 bound_valuebuffer_ = 0;
2692 }
2693 }
2694 }
2695
2696 void GLES2Implementation::DeleteValuebuffersCHROMIUMStub(
2697 GLsizei n,
2698 const GLuint* valuebuffers) {
2699 helper_->DeleteValuebuffersCHROMIUMImmediate(n, valuebuffers);
2652 } 2700 }
2653 2701
2654 void GLES2Implementation::DisableVertexAttribArray(GLuint index) { 2702 void GLES2Implementation::DisableVertexAttribArray(GLuint index) {
2655 GPU_CLIENT_SINGLE_THREAD_CHECK(); 2703 GPU_CLIENT_SINGLE_THREAD_CHECK();
2656 GPU_CLIENT_LOG( 2704 GPU_CLIENT_LOG(
2657 "[" << GetLogPrefix() << "] glDisableVertexAttribArray(" << index << ")"); 2705 "[" << GetLogPrefix() << "] glDisableVertexAttribArray(" << index << ")");
2658 vertex_array_object_manager_->SetAttribEnable(index, false); 2706 vertex_array_object_manager_->SetAttribEnable(index, false);
2659 helper_->DisableVertexAttribArray(index); 2707 helper_->DisableVertexAttribArray(index);
2660 CheckGLError(); 2708 CheckGLError();
2661 } 2709 }
(...skipping 1406 matching lines...) Expand 10 before | Expand all | Expand 10 after
4068 return true; 4116 return true;
4069 } 4117 }
4070 4118
4071 // Include the auto-generated part of this file. We split this because it means 4119 // Include the auto-generated part of this file. We split this because it means
4072 // we can easily edit the non-auto generated parts right here in this file 4120 // we can easily edit the non-auto generated parts right here in this file
4073 // instead of having to edit some template or the code generator. 4121 // instead of having to edit some template or the code generator.
4074 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h" 4122 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h"
4075 4123
4076 } // namespace gles2 4124 } // namespace gles2
4077 } // namespace gpu 4125 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698