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

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

Issue 6862002: Merge gpu_trace_event back into base/debug/trace_event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge to 84062 Created 9 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "../client/gles2_implementation.h" 7 #include "../client/gles2_implementation.h"
8 #include <GLES2/gles2_command_buffer.h> 8 #include <GLES2/gles2_command_buffer.h>
9 #include "../client/mapped_memory.h" 9 #include "../client/mapped_memory.h"
10 #include "../common/gles2_cmd_utils.h" 10 #include "../common/gles2_cmd_utils.h"
11 #include "../common/id_allocator.h" 11 #include "../common/id_allocator.h"
12 #include "gpu/common/gpu_trace_event.h" 12 #include "../common/trace_event.h"
13 13
14 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 14 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
15 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS 15 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS
16 #endif 16 #endif
17 17
18 namespace gpu { 18 namespace gpu {
19 namespace gles2 { 19 namespace gles2 {
20 20
21 // A 32-bit and 64-bit compatible way of converting a pointer to a GLuint. 21 // A 32-bit and 64-bit compatible way of converting a pointer to a GLuint.
22 static GLuint ToGLuint(const void* ptr) { 22 static GLuint ToGLuint(const void* ptr) {
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 #endif 484 #endif
485 } 485 }
486 486
487 GLES2Implementation::~GLES2Implementation() { 487 GLES2Implementation::~GLES2Implementation() {
488 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 488 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
489 DeleteBuffers(arraysize(reserved_ids_), &reserved_ids_[0]); 489 DeleteBuffers(arraysize(reserved_ids_), &reserved_ids_[0]);
490 #endif 490 #endif
491 } 491 }
492 492
493 void GLES2Implementation::WaitForCmd() { 493 void GLES2Implementation::WaitForCmd() {
494 GPU_TRACE_EVENT0("gpu", "GLES2::WaitForCmd"); 494 TRACE_EVENT0("gpu", "GLES2::WaitForCmd");
495 helper_->CommandBufferHelper::Finish(); 495 helper_->CommandBufferHelper::Finish();
496 } 496 }
497 497
498 GLenum GLES2Implementation::GetError() { 498 GLenum GLES2Implementation::GetError() {
499 return GetGLError(); 499 return GetGLError();
500 } 500 }
501 501
502 GLenum GLES2Implementation::GetGLError() { 502 GLenum GLES2Implementation::GetGLError() {
503 GPU_TRACE_EVENT0("gpu", "GLES2::GetGLError"); 503 TRACE_EVENT0("gpu", "GLES2::GetGLError");
504 // Check the GL error first, then our wrapped error. 504 // Check the GL error first, then our wrapped error.
505 typedef gles2::GetError::Result Result; 505 typedef gles2::GetError::Result Result;
506 Result* result = GetResultAs<Result*>(); 506 Result* result = GetResultAs<Result*>();
507 *result = GL_NO_ERROR; 507 *result = GL_NO_ERROR;
508 helper_->GetError(result_shm_id(), result_shm_offset()); 508 helper_->GetError(result_shm_id(), result_shm_offset());
509 WaitForCmd(); 509 WaitForCmd();
510 GLenum error = *result; 510 GLenum error = *result;
511 if (error == GL_NO_ERROR && error_bits_ != 0) { 511 if (error == GL_NO_ERROR && error_bits_ != 0) {
512 for (uint32 mask = 1; mask != 0; mask = mask << 1) { 512 for (uint32 mask = 1; mask != 0; mask = mask << 1) {
513 if ((error_bits_ & mask) != 0) { 513 if ((error_bits_ & mask) != 0) {
(...skipping 12 matching lines...) Expand all
526 526
527 void GLES2Implementation::SetGLError(GLenum error, const char* msg) { 527 void GLES2Implementation::SetGLError(GLenum error, const char* msg) {
528 if (msg) { 528 if (msg) {
529 last_error_ = msg; 529 last_error_ = msg;
530 } 530 }
531 error_bits_ |= GLES2Util::GLErrorToErrorBit(error); 531 error_bits_ |= GLES2Util::GLErrorToErrorBit(error);
532 } 532 }
533 533
534 void GLES2Implementation::GetBucketContents(uint32 bucket_id, 534 void GLES2Implementation::GetBucketContents(uint32 bucket_id,
535 std::vector<int8>* data) { 535 std::vector<int8>* data) {
536 GPU_TRACE_EVENT0("gpu", "GLES2::GetBucketContents"); 536 TRACE_EVENT0("gpu", "GLES2::GetBucketContents");
537 GPU_DCHECK(data); 537 GPU_DCHECK(data);
538 typedef cmd::GetBucketSize::Result Result; 538 typedef cmd::GetBucketSize::Result Result;
539 Result* result = GetResultAs<Result*>(); 539 Result* result = GetResultAs<Result*>();
540 *result = 0; 540 *result = 0;
541 helper_->GetBucketSize(bucket_id, result_shm_id(), result_shm_offset()); 541 helper_->GetBucketSize(bucket_id, result_shm_id(), result_shm_offset());
542 WaitForCmd(); 542 WaitForCmd();
543 uint32 size = *result; 543 uint32 size = *result;
544 data->resize(size); 544 data->resize(size);
545 if (size > 0u) { 545 if (size > 0u) {
546 uint32 max_size = transfer_buffer_.GetLargestFreeOrPendingSize(); 546 uint32 max_size = transfer_buffer_.GetLargestFreeOrPendingSize();
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 667
668 void GLES2Implementation::Flush() { 668 void GLES2Implementation::Flush() {
669 // Insert the cmd to call glFlush 669 // Insert the cmd to call glFlush
670 helper_->Flush(); 670 helper_->Flush();
671 // Flush our command buffer 671 // Flush our command buffer
672 // (tell the service to execute up to the flush cmd.) 672 // (tell the service to execute up to the flush cmd.)
673 helper_->CommandBufferHelper::Flush(); 673 helper_->CommandBufferHelper::Flush();
674 } 674 }
675 675
676 void GLES2Implementation::Finish() { 676 void GLES2Implementation::Finish() {
677 GPU_TRACE_EVENT0("gpu", "GLES2::Finish"); 677 TRACE_EVENT0("gpu", "GLES2::Finish");
678 // Insert the cmd to call glFinish 678 // Insert the cmd to call glFinish
679 helper_->Finish(); 679 helper_->Finish();
680 // Finish our command buffer 680 // Finish our command buffer
681 // (tell the service to execute up to the Finish cmd and wait for it to 681 // (tell the service to execute up to the Finish cmd and wait for it to
682 // execute.) 682 // execute.)
683 helper_->CommandBufferHelper::Finish(); 683 helper_->CommandBufferHelper::Finish();
684 } 684 }
685 685
686 void GLES2Implementation::SwapBuffers() { 686 void GLES2Implementation::SwapBuffers() {
687 // Wait if this would add too many swap buffers. 687 // Wait if this would add too many swap buffers.
(...skipping 15 matching lines...) Expand all
703 swap_buffers_tokens_.pop(); 703 swap_buffers_tokens_.pop();
704 } 704 }
705 helper_->CopyTextureToParentTextureCHROMIUM(client_child_id, 705 helper_->CopyTextureToParentTextureCHROMIUM(client_child_id,
706 client_parent_id); 706 client_parent_id);
707 swap_buffers_tokens_.push(helper_->InsertToken()); 707 swap_buffers_tokens_.push(helper_->InsertToken());
708 Flush(); 708 Flush();
709 } 709 }
710 710
711 void GLES2Implementation::GenSharedIdsCHROMIUM( 711 void GLES2Implementation::GenSharedIdsCHROMIUM(
712 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) { 712 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) {
713 GPU_TRACE_EVENT0("gpu", "GLES2::GenSharedIdsCHROMIUM"); 713 TRACE_EVENT0("gpu", "GLES2::GenSharedIdsCHROMIUM");
714 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n); 714 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n);
715 helper_->GenSharedIdsCHROMIUM(namespace_id, id_offset, n, 715 helper_->GenSharedIdsCHROMIUM(namespace_id, id_offset, n,
716 transfer_buffer_id_, 716 transfer_buffer_id_,
717 transfer_buffer_.GetOffset(id_buffer)); 717 transfer_buffer_.GetOffset(id_buffer));
718 WaitForCmd(); 718 WaitForCmd();
719 memcpy(ids, id_buffer, sizeof(*ids) * n); 719 memcpy(ids, id_buffer, sizeof(*ids) * n);
720 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken()); 720 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken());
721 } 721 }
722 722
723 void GLES2Implementation::DeleteSharedIdsCHROMIUM( 723 void GLES2Implementation::DeleteSharedIdsCHROMIUM(
724 GLuint namespace_id, GLsizei n, const GLuint* ids) { 724 GLuint namespace_id, GLsizei n, const GLuint* ids) {
725 GPU_TRACE_EVENT0("gpu", "GLES2::DeleteSharedIdsCHROMIUM"); 725 TRACE_EVENT0("gpu", "GLES2::DeleteSharedIdsCHROMIUM");
726 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n); 726 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n);
727 memcpy(id_buffer, ids, sizeof(*ids) * n); 727 memcpy(id_buffer, ids, sizeof(*ids) * n);
728 helper_->DeleteSharedIdsCHROMIUM(namespace_id, n, 728 helper_->DeleteSharedIdsCHROMIUM(namespace_id, n,
729 transfer_buffer_id_, 729 transfer_buffer_id_,
730 transfer_buffer_.GetOffset(id_buffer)); 730 transfer_buffer_.GetOffset(id_buffer));
731 WaitForCmd(); 731 WaitForCmd();
732 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken()); 732 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken());
733 } 733 }
734 734
735 void GLES2Implementation::RegisterSharedIdsCHROMIUM( 735 void GLES2Implementation::RegisterSharedIdsCHROMIUM(
736 GLuint namespace_id, GLsizei n, const GLuint* ids) { 736 GLuint namespace_id, GLsizei n, const GLuint* ids) {
737 GPU_TRACE_EVENT0("gpu", "GLES2::RegisterSharedIdsCHROMIUM"); 737 TRACE_EVENT0("gpu", "GLES2::RegisterSharedIdsCHROMIUM");
738 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n); 738 GLint* id_buffer = transfer_buffer_.AllocTyped<GLint>(n);
739 memcpy(id_buffer, ids, sizeof(*ids) * n); 739 memcpy(id_buffer, ids, sizeof(*ids) * n);
740 helper_->RegisterSharedIdsCHROMIUM(namespace_id, n, 740 helper_->RegisterSharedIdsCHROMIUM(namespace_id, n,
741 transfer_buffer_id_, 741 transfer_buffer_id_,
742 transfer_buffer_.GetOffset(id_buffer)); 742 transfer_buffer_.GetOffset(id_buffer));
743 WaitForCmd(); 743 WaitForCmd();
744 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken()); 744 transfer_buffer_.FreePendingToken(id_buffer, helper_->InsertToken());
745 } 745 }
746 746
747 void GLES2Implementation::BindAttribLocation( 747 void GLES2Implementation::BindAttribLocation(
748 GLuint program, GLuint index, const char* name) { 748 GLuint program, GLuint index, const char* name) {
749 SetBucketAsString(kResultBucketId, name); 749 SetBucketAsString(kResultBucketId, name);
750 helper_->BindAttribLocationBucket(program, index, kResultBucketId); 750 helper_->BindAttribLocationBucket(program, index, kResultBucketId);
751 helper_->SetBucketSize(kResultBucketId, 0); 751 helper_->SetBucketSize(kResultBucketId, 0);
752 } 752 }
753 753
754 void GLES2Implementation::GetVertexAttribPointerv( 754 void GLES2Implementation::GetVertexAttribPointerv(
755 GLuint index, GLenum pname, void** ptr) { 755 GLuint index, GLenum pname, void** ptr) {
756 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 756 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
757 // If it's a client side buffer the client has the data. 757 // If it's a client side buffer the client has the data.
758 if (client_side_buffer_helper_->GetAttribPointer(index, pname, ptr)) { 758 if (client_side_buffer_helper_->GetAttribPointer(index, pname, ptr)) {
759 return; 759 return;
760 } 760 }
761 #endif // defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 761 #endif // defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
762 762
763 GPU_TRACE_EVENT0("gpu", "GLES2::GetVertexAttribPointerv"); 763 TRACE_EVENT0("gpu", "GLES2::GetVertexAttribPointerv");
764 typedef gles2::GetVertexAttribPointerv::Result Result; 764 typedef gles2::GetVertexAttribPointerv::Result Result;
765 Result* result = GetResultAs<Result*>(); 765 Result* result = GetResultAs<Result*>();
766 result->SetNumResults(0); 766 result->SetNumResults(0);
767 helper_->GetVertexAttribPointerv( 767 helper_->GetVertexAttribPointerv(
768 index, pname, result_shm_id(), result_shm_offset()); 768 index, pname, result_shm_id(), result_shm_offset());
769 WaitForCmd(); 769 WaitForCmd();
770 result->CopyResult(ptr); 770 result->CopyResult(ptr);
771 } 771 }
772 772
773 GLint GLES2Implementation::GetAttribLocation( 773 GLint GLES2Implementation::GetAttribLocation(
774 GLuint program, const char* name) { 774 GLuint program, const char* name) {
775 GPU_TRACE_EVENT0("gpu", "GLES2::GetAttribLocation"); 775 TRACE_EVENT0("gpu", "GLES2::GetAttribLocation");
776 typedef GetAttribLocationBucket::Result Result; 776 typedef GetAttribLocationBucket::Result Result;
777 Result* result = GetResultAs<Result*>(); 777 Result* result = GetResultAs<Result*>();
778 *result = -1; 778 *result = -1;
779 SetBucketAsCString(kResultBucketId, name); 779 SetBucketAsCString(kResultBucketId, name);
780 helper_->GetAttribLocationBucket(program, kResultBucketId, 780 helper_->GetAttribLocationBucket(program, kResultBucketId,
781 result_shm_id(), result_shm_offset()); 781 result_shm_id(), result_shm_offset());
782 WaitForCmd(); 782 WaitForCmd();
783 helper_->SetBucketSize(kResultBucketId, 0); 783 helper_->SetBucketSize(kResultBucketId, 0);
784 return *result; 784 return *result;
785 } 785 }
786 786
787 GLint GLES2Implementation::GetUniformLocation( 787 GLint GLES2Implementation::GetUniformLocation(
788 GLuint program, const char* name) { 788 GLuint program, const char* name) {
789 GPU_TRACE_EVENT0("gpu", "GLES2::GetUniformLocation"); 789 TRACE_EVENT0("gpu", "GLES2::GetUniformLocation");
790 typedef GetUniformLocationBucket::Result Result; 790 typedef GetUniformLocationBucket::Result Result;
791 Result* result = GetResultAs<Result*>(); 791 Result* result = GetResultAs<Result*>();
792 *result = -1; 792 *result = -1;
793 SetBucketAsCString(kResultBucketId, name); 793 SetBucketAsCString(kResultBucketId, name);
794 helper_->GetUniformLocationBucket(program, kResultBucketId, 794 helper_->GetUniformLocationBucket(program, kResultBucketId,
795 result_shm_id(), result_shm_offset()); 795 result_shm_id(), result_shm_offset());
796 WaitForCmd(); 796 WaitForCmd();
797 helper_->SetBucketSize(kResultBucketId, 0); 797 helper_->SetBucketSize(kResultBucketId, 0);
798 return *result; 798 return *result;
799 } 799 }
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 } 1090 }
1091 } 1091 }
1092 1092
1093 void GLES2Implementation::GetActiveAttrib( 1093 void GLES2Implementation::GetActiveAttrib(
1094 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, 1094 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
1095 GLenum* type, char* name) { 1095 GLenum* type, char* name) {
1096 if (bufsize < 0) { 1096 if (bufsize < 0) {
1097 SetGLError(GL_INVALID_VALUE, "glGetActiveAttrib: bufsize < 0"); 1097 SetGLError(GL_INVALID_VALUE, "glGetActiveAttrib: bufsize < 0");
1098 return; 1098 return;
1099 } 1099 }
1100 GPU_TRACE_EVENT0("gpu", "GLES2::GetActiveAttrib"); 1100 TRACE_EVENT0("gpu", "GLES2::GetActiveAttrib");
1101 // Clear the bucket so if we the command fails nothing will be in it. 1101 // Clear the bucket so if we the command fails nothing will be in it.
1102 helper_->SetBucketSize(kResultBucketId, 0); 1102 helper_->SetBucketSize(kResultBucketId, 0);
1103 typedef gles2::GetActiveAttrib::Result Result; 1103 typedef gles2::GetActiveAttrib::Result Result;
1104 Result* result = static_cast<Result*>(result_buffer_); 1104 Result* result = static_cast<Result*>(result_buffer_);
1105 // Set as failed so if the command fails we'll recover. 1105 // Set as failed so if the command fails we'll recover.
1106 result->success = false; 1106 result->success = false;
1107 helper_->GetActiveAttrib(program, index, kResultBucketId, 1107 helper_->GetActiveAttrib(program, index, kResultBucketId,
1108 result_shm_id(), result_shm_offset()); 1108 result_shm_id(), result_shm_offset());
1109 WaitForCmd(); 1109 WaitForCmd();
1110 if (result->success) { 1110 if (result->success) {
(...skipping 20 matching lines...) Expand all
1131 } 1131 }
1132 } 1132 }
1133 1133
1134 void GLES2Implementation::GetActiveUniform( 1134 void GLES2Implementation::GetActiveUniform(
1135 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, 1135 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
1136 GLenum* type, char* name) { 1136 GLenum* type, char* name) {
1137 if (bufsize < 0) { 1137 if (bufsize < 0) {
1138 SetGLError(GL_INVALID_VALUE, "glGetActiveUniform: bufsize < 0"); 1138 SetGLError(GL_INVALID_VALUE, "glGetActiveUniform: bufsize < 0");
1139 return; 1139 return;
1140 } 1140 }
1141 GPU_TRACE_EVENT0("gpu", "GLES2::GetActiveUniform"); 1141 TRACE_EVENT0("gpu", "GLES2::GetActiveUniform");
1142 // Clear the bucket so if we the command fails nothing will be in it. 1142 // Clear the bucket so if we the command fails nothing will be in it.
1143 helper_->SetBucketSize(kResultBucketId, 0); 1143 helper_->SetBucketSize(kResultBucketId, 0);
1144 typedef gles2::GetActiveUniform::Result Result; 1144 typedef gles2::GetActiveUniform::Result Result;
1145 Result* result = static_cast<Result*>(result_buffer_); 1145 Result* result = static_cast<Result*>(result_buffer_);
1146 // Set as failed so if the command fails we'll recover. 1146 // Set as failed so if the command fails we'll recover.
1147 result->success = false; 1147 result->success = false;
1148 helper_->GetActiveUniform(program, index, kResultBucketId, 1148 helper_->GetActiveUniform(program, index, kResultBucketId,
1149 result_shm_id(), result_shm_offset()); 1149 result_shm_id(), result_shm_offset());
1150 WaitForCmd(); 1150 WaitForCmd();
1151 if (result->success) { 1151 if (result->success) {
(...skipping 19 matching lines...) Expand all
1171 } 1171 }
1172 } 1172 }
1173 } 1173 }
1174 1174
1175 void GLES2Implementation::GetAttachedShaders( 1175 void GLES2Implementation::GetAttachedShaders(
1176 GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) { 1176 GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
1177 if (maxcount < 0) { 1177 if (maxcount < 0) {
1178 SetGLError(GL_INVALID_VALUE, "glGetAttachedShaders: maxcount < 0"); 1178 SetGLError(GL_INVALID_VALUE, "glGetAttachedShaders: maxcount < 0");
1179 return; 1179 return;
1180 } 1180 }
1181 GPU_TRACE_EVENT0("gpu", "GLES2::GetAttachedShaders"); 1181 TRACE_EVENT0("gpu", "GLES2::GetAttachedShaders");
1182 typedef gles2::GetAttachedShaders::Result Result; 1182 typedef gles2::GetAttachedShaders::Result Result;
1183 uint32 size = Result::ComputeSize(maxcount); 1183 uint32 size = Result::ComputeSize(maxcount);
1184 Result* result = transfer_buffer_.AllocTyped<Result>(size); 1184 Result* result = transfer_buffer_.AllocTyped<Result>(size);
1185 result->SetNumResults(0); 1185 result->SetNumResults(0);
1186 helper_->GetAttachedShaders( 1186 helper_->GetAttachedShaders(
1187 program, 1187 program,
1188 transfer_buffer_id_, 1188 transfer_buffer_id_,
1189 transfer_buffer_.GetOffset(result), 1189 transfer_buffer_.GetOffset(result),
1190 size); 1190 size);
1191 int32 token = helper_->InsertToken(); 1191 int32 token = helper_->InsertToken();
1192 WaitForCmd(); 1192 WaitForCmd();
1193 if (count) { 1193 if (count) {
1194 *count = result->GetNumResults(); 1194 *count = result->GetNumResults();
1195 } 1195 }
1196 result->CopyResult(shaders); 1196 result->CopyResult(shaders);
1197 transfer_buffer_.FreePendingToken(result, token); 1197 transfer_buffer_.FreePendingToken(result, token);
1198 } 1198 }
1199 1199
1200 void GLES2Implementation::GetShaderPrecisionFormat( 1200 void GLES2Implementation::GetShaderPrecisionFormat(
1201 GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { 1201 GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
1202 GPU_TRACE_EVENT0("gpu", "GLES2::GetShaderPrecisionFormat"); 1202 TRACE_EVENT0("gpu", "GLES2::GetShaderPrecisionFormat");
1203 typedef gles2::GetShaderPrecisionFormat::Result Result; 1203 typedef gles2::GetShaderPrecisionFormat::Result Result;
1204 Result* result = static_cast<Result*>(result_buffer_); 1204 Result* result = static_cast<Result*>(result_buffer_);
1205 result->success = false; 1205 result->success = false;
1206 helper_->GetShaderPrecisionFormat( 1206 helper_->GetShaderPrecisionFormat(
1207 shadertype, precisiontype, result_shm_id(), result_shm_offset()); 1207 shadertype, precisiontype, result_shm_id(), result_shm_offset());
1208 WaitForCmd(); 1208 WaitForCmd();
1209 if (result->success) { 1209 if (result->success) {
1210 if (range) { 1210 if (range) {
1211 range[0] = result->min_range; 1211 range[0] = result->min_range;
1212 range[1] = result->max_range; 1212 range[1] = result->max_range;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 string_set.insert(str); 1244 string_set.insert(str);
1245 GPU_DCHECK(insert_result.second); 1245 GPU_DCHECK(insert_result.second);
1246 result = insert_result.first->c_str(); 1246 result = insert_result.first->c_str();
1247 } 1247 }
1248 } 1248 }
1249 return reinterpret_cast<const GLubyte*>(result); 1249 return reinterpret_cast<const GLubyte*>(result);
1250 } 1250 }
1251 1251
1252 void GLES2Implementation::GetUniformfv( 1252 void GLES2Implementation::GetUniformfv(
1253 GLuint program, GLint location, GLfloat* params) { 1253 GLuint program, GLint location, GLfloat* params) {
1254 GPU_TRACE_EVENT0("gpu", "GLES2::GetUniformfv"); 1254 TRACE_EVENT0("gpu", "GLES2::GetUniformfv");
1255 typedef gles2::GetUniformfv::Result Result; 1255 typedef gles2::GetUniformfv::Result Result;
1256 Result* result = static_cast<Result*>(result_buffer_); 1256 Result* result = static_cast<Result*>(result_buffer_);
1257 result->SetNumResults(0); 1257 result->SetNumResults(0);
1258 helper_->GetUniformfv( 1258 helper_->GetUniformfv(
1259 program, location, result_shm_id(), result_shm_offset()); 1259 program, location, result_shm_id(), result_shm_offset());
1260 WaitForCmd(); 1260 WaitForCmd();
1261 result->CopyResult(params); 1261 result->CopyResult(params);
1262 } 1262 }
1263 1263
1264 void GLES2Implementation::GetUniformiv( 1264 void GLES2Implementation::GetUniformiv(
1265 GLuint program, GLint location, GLint* params) { 1265 GLuint program, GLint location, GLint* params) {
1266 GPU_TRACE_EVENT0("gpu", "GLES2::GetUniformiv"); 1266 TRACE_EVENT0("gpu", "GLES2::GetUniformiv");
1267 typedef gles2::GetUniformiv::Result Result; 1267 typedef gles2::GetUniformiv::Result Result;
1268 Result* result = static_cast<Result*>(result_buffer_); 1268 Result* result = static_cast<Result*>(result_buffer_);
1269 result->SetNumResults(0); 1269 result->SetNumResults(0);
1270 helper_->GetUniformiv( 1270 helper_->GetUniformiv(
1271 program, location, result_shm_id(), result_shm_offset()); 1271 program, location, result_shm_id(), result_shm_offset());
1272 WaitForCmd(); 1272 WaitForCmd();
1273 static_cast<gles2::GetUniformfv::Result*>(result_buffer_)->CopyResult(params); 1273 static_cast<gles2::GetUniformfv::Result*>(result_buffer_)->CopyResult(params);
1274 } 1274 }
1275 1275
1276 void GLES2Implementation::ReadPixels( 1276 void GLES2Implementation::ReadPixels(
1277 GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, 1277 GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format,
1278 GLenum type, void* pixels) { 1278 GLenum type, void* pixels) {
1279 if (width < 0 || height < 0) { 1279 if (width < 0 || height < 0) {
1280 SetGLError(GL_INVALID_VALUE, "glReadPixels: dimensions < 0"); 1280 SetGLError(GL_INVALID_VALUE, "glReadPixels: dimensions < 0");
1281 return; 1281 return;
1282 } 1282 }
1283 if (width == 0 || height == 0) { 1283 if (width == 0 || height == 0) {
1284 return; 1284 return;
1285 } 1285 }
1286 1286
1287 // glReadPixel pads the size of each row of pixels by an amount specified by 1287 // glReadPixel pads the size of each row of pixels by an amount specified by
1288 // glPixelStorei. So, we have to take that into account both in the fact that 1288 // glPixelStorei. So, we have to take that into account both in the fact that
1289 // the pixels returned from the ReadPixel command will include that padding 1289 // the pixels returned from the ReadPixel command will include that padding
1290 // and that when we copy the results to the user's buffer we need to not 1290 // and that when we copy the results to the user's buffer we need to not
1291 // write those padding bytes but leave them as they are. 1291 // write those padding bytes but leave them as they are.
1292 1292
1293 GPU_TRACE_EVENT0("gpu", "GLES2::ReadPixels"); 1293 TRACE_EVENT0("gpu", "GLES2::ReadPixels");
1294 typedef gles2::ReadPixels::Result Result; 1294 typedef gles2::ReadPixels::Result Result;
1295 Result* result = static_cast<Result*>(result_buffer_); 1295 Result* result = static_cast<Result*>(result_buffer_);
1296 int8* dest = reinterpret_cast<int8*>(pixels); 1296 int8* dest = reinterpret_cast<int8*>(pixels);
1297 GLsizeiptr max_size = transfer_buffer_.GetLargestFreeOrPendingSize(); 1297 GLsizeiptr max_size = transfer_buffer_.GetLargestFreeOrPendingSize();
1298 uint32 temp_size; 1298 uint32 temp_size;
1299 if (!GLES2Util::ComputeImageDataSize( 1299 if (!GLES2Util::ComputeImageDataSize(
1300 width, 1, format, type, pack_alignment_, &temp_size)) { 1300 width, 1, format, type, pack_alignment_, &temp_size)) {
1301 SetGLError(GL_INVALID_VALUE, "glReadPixels: size too large."); 1301 SetGLError(GL_INVALID_VALUE, "glReadPixels: size too large.");
1302 return; 1302 return;
1303 } 1303 }
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1523 1523
1524 void GLES2Implementation::GetVertexAttribfv( 1524 void GLES2Implementation::GetVertexAttribfv(
1525 GLuint index, GLenum pname, GLfloat* params) { 1525 GLuint index, GLenum pname, GLfloat* params) {
1526 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 1526 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
1527 uint32 value = 0; 1527 uint32 value = 0;
1528 if (GetVertexAttribHelper(index, pname, &value)) { 1528 if (GetVertexAttribHelper(index, pname, &value)) {
1529 *params = static_cast<float>(value); 1529 *params = static_cast<float>(value);
1530 return; 1530 return;
1531 } 1531 }
1532 #endif 1532 #endif
1533 GPU_TRACE_EVENT0("gpu", "GLES2::GetVertexAttribfv"); 1533 TRACE_EVENT0("gpu", "GLES2::GetVertexAttribfv");
1534 typedef GetVertexAttribfv::Result Result; 1534 typedef GetVertexAttribfv::Result Result;
1535 Result* result = GetResultAs<Result*>(); 1535 Result* result = GetResultAs<Result*>();
1536 result->SetNumResults(0); 1536 result->SetNumResults(0);
1537 helper_->GetVertexAttribfv( 1537 helper_->GetVertexAttribfv(
1538 index, pname, result_shm_id(), result_shm_offset()); 1538 index, pname, result_shm_id(), result_shm_offset());
1539 WaitForCmd(); 1539 WaitForCmd();
1540 result->CopyResult(params); 1540 result->CopyResult(params);
1541 } 1541 }
1542 1542
1543 void GLES2Implementation::GetVertexAttribiv( 1543 void GLES2Implementation::GetVertexAttribiv(
1544 GLuint index, GLenum pname, GLint* params) { 1544 GLuint index, GLenum pname, GLint* params) {
1545 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 1545 #if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
1546 uint32 value = 0; 1546 uint32 value = 0;
1547 if (GetVertexAttribHelper(index, pname, &value)) { 1547 if (GetVertexAttribHelper(index, pname, &value)) {
1548 *params = value; 1548 *params = value;
1549 return; 1549 return;
1550 } 1550 }
1551 #endif 1551 #endif
1552 GPU_TRACE_EVENT0("gpu", "GLES2::GetVertexAttribiv"); 1552 TRACE_EVENT0("gpu", "GLES2::GetVertexAttribiv");
1553 typedef GetVertexAttribiv::Result Result; 1553 typedef GetVertexAttribiv::Result Result;
1554 Result* result = GetResultAs<Result*>(); 1554 Result* result = GetResultAs<Result*>();
1555 result->SetNumResults(0); 1555 result->SetNumResults(0);
1556 helper_->GetVertexAttribiv( 1556 helper_->GetVertexAttribiv(
1557 index, pname, result_shm_id(), result_shm_offset()); 1557 index, pname, result_shm_id(), result_shm_offset());
1558 WaitForCmd(); 1558 WaitForCmd();
1559 result->CopyResult(params); 1559 result->CopyResult(params);
1560 } 1560 }
1561 1561
1562 GLboolean GLES2Implementation::CommandBufferEnableCHROMIUM( 1562 GLboolean GLES2Implementation::CommandBufferEnableCHROMIUM(
1563 const char* feature) { 1563 const char* feature) {
1564 GPU_TRACE_EVENT0("gpu", "GLES2::CommandBufferEnableCHROMIUM"); 1564 TRACE_EVENT0("gpu", "GLES2::CommandBufferEnableCHROMIUM");
1565 typedef CommandBufferEnableCHROMIUM::Result Result; 1565 typedef CommandBufferEnableCHROMIUM::Result Result;
1566 Result* result = GetResultAs<Result*>(); 1566 Result* result = GetResultAs<Result*>();
1567 *result = 0; 1567 *result = 0;
1568 SetBucketAsCString(kResultBucketId, feature); 1568 SetBucketAsCString(kResultBucketId, feature);
1569 helper_->CommandBufferEnableCHROMIUM( 1569 helper_->CommandBufferEnableCHROMIUM(
1570 kResultBucketId, result_shm_id(), result_shm_offset()); 1570 kResultBucketId, result_shm_id(), result_shm_offset());
1571 WaitForCmd(); 1571 WaitForCmd();
1572 helper_->SetBucketSize(kResultBucketId, 0); 1572 helper_->SetBucketSize(kResultBucketId, 0);
1573 return *result; 1573 return *result;
1574 } 1574 }
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1700 } 1700 }
1701 1701
1702 void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) { 1702 void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) {
1703 SetBucketAsCString(kResultBucketId, extension); 1703 SetBucketAsCString(kResultBucketId, extension);
1704 helper_->RequestExtensionCHROMIUM(kResultBucketId); 1704 helper_->RequestExtensionCHROMIUM(kResultBucketId);
1705 helper_->SetBucketSize(kResultBucketId, 0); 1705 helper_->SetBucketSize(kResultBucketId, 0);
1706 } 1706 }
1707 1707
1708 } // namespace gles2 1708 } // namespace gles2
1709 } // namespace gpu 1709 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698