| 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 // 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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 } | 320 } |
| 321 | 321 |
| 322 GLES2CmdHelper* GLES2Implementation::helper() const { | 322 GLES2CmdHelper* GLES2Implementation::helper() const { |
| 323 return helper_; | 323 return helper_; |
| 324 } | 324 } |
| 325 | 325 |
| 326 IdHandlerInterface* GLES2Implementation::GetIdHandler(int namespace_id) const { | 326 IdHandlerInterface* GLES2Implementation::GetIdHandler(int namespace_id) const { |
| 327 return share_group_->GetIdHandler(namespace_id); | 327 return share_group_->GetIdHandler(namespace_id); |
| 328 } | 328 } |
| 329 | 329 |
| 330 IdAllocatorInterface* GLES2Implementation::GetIdAllocator( | 330 IdAllocator* GLES2Implementation::GetIdAllocator(int namespace_id) const { |
| 331 int namespace_id) const { | |
| 332 if (namespace_id == id_namespaces::kQueries) | 331 if (namespace_id == id_namespaces::kQueries) |
| 333 return query_id_allocator_.get(); | 332 return query_id_allocator_.get(); |
| 334 NOTREACHED(); | 333 NOTREACHED(); |
| 335 return NULL; | 334 return NULL; |
| 336 } | 335 } |
| 337 | 336 |
| 338 void* GLES2Implementation::GetResultBuffer() { | 337 void* GLES2Implementation::GetResultBuffer() { |
| 339 return transfer_buffer_->GetResultBuffer(); | 338 return transfer_buffer_->GetResultBuffer(); |
| 340 } | 339 } |
| 341 | 340 |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 helper_->SwapBuffers(); | 946 helper_->SwapBuffers(); |
| 948 helper_->CommandBufferHelper::Flush(); | 947 helper_->CommandBufferHelper::Flush(); |
| 949 // Wait if we added too many swap buffers. Add 1 to kMaxSwapBuffers to | 948 // Wait if we added too many swap buffers. Add 1 to kMaxSwapBuffers to |
| 950 // compensate for TODO above. | 949 // compensate for TODO above. |
| 951 if (swap_buffers_tokens_.size() > kMaxSwapBuffers + 1) { | 950 if (swap_buffers_tokens_.size() > kMaxSwapBuffers + 1) { |
| 952 helper_->WaitForToken(swap_buffers_tokens_.front()); | 951 helper_->WaitForToken(swap_buffers_tokens_.front()); |
| 953 swap_buffers_tokens_.pop(); | 952 swap_buffers_tokens_.pop(); |
| 954 } | 953 } |
| 955 } | 954 } |
| 956 | 955 |
| 957 void GLES2Implementation::GenSharedIdsCHROMIUM( | |
| 958 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) { | |
| 959 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenSharedIdsCHROMIUM(" | |
| 960 << namespace_id << ", " << id_offset << ", " << n << ", " << | |
| 961 static_cast<void*>(ids) << ")"); | |
| 962 TRACE_EVENT0("gpu", "GLES2::GenSharedIdsCHROMIUM"); | |
| 963 GLsizei num = n; | |
| 964 GLuint* dst = ids; | |
| 965 while (num) { | |
| 966 ScopedTransferBufferArray<GLint> id_buffer(num, helper_, transfer_buffer_); | |
| 967 if (!id_buffer.valid()) { | |
| 968 return; | |
| 969 } | |
| 970 helper_->GenSharedIdsCHROMIUM( | |
| 971 namespace_id, id_offset, id_buffer.num_elements(), | |
| 972 id_buffer.shm_id(), id_buffer.offset()); | |
| 973 WaitForCmd(); | |
| 974 memcpy(dst, id_buffer.address(), sizeof(*dst) * id_buffer.num_elements()); | |
| 975 num -= id_buffer.num_elements(); | |
| 976 dst += id_buffer.num_elements(); | |
| 977 } | |
| 978 GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 979 for (GLsizei i = 0; i < n; ++i) { | |
| 980 GPU_CLIENT_LOG(" " << i << ": " << namespace_id << ", " << ids[i]); | |
| 981 } | |
| 982 }); | |
| 983 } | |
| 984 | |
| 985 void GLES2Implementation::DeleteSharedIdsCHROMIUM( | |
| 986 GLuint namespace_id, GLsizei n, const GLuint* ids) { | |
| 987 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteSharedIdsCHROMIUM(" | |
| 988 << namespace_id << ", " << n << ", " | |
| 989 << static_cast<const void*>(ids) << ")"); | |
| 990 GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 991 for (GLsizei i = 0; i < n; ++i) { | |
| 992 GPU_CLIENT_LOG(" " << i << ": " << namespace_id << ", " << ids[i]); | |
| 993 } | |
| 994 }); | |
| 995 TRACE_EVENT0("gpu", "GLES2::DeleteSharedIdsCHROMIUM"); | |
| 996 while (n) { | |
| 997 ScopedTransferBufferArray<GLint> id_buffer(n, helper_, transfer_buffer_); | |
| 998 if (!id_buffer.valid()) { | |
| 999 return; | |
| 1000 } | |
| 1001 memcpy(id_buffer.address(), ids, sizeof(*ids) * id_buffer.num_elements()); | |
| 1002 helper_->DeleteSharedIdsCHROMIUM( | |
| 1003 namespace_id, id_buffer.num_elements(), | |
| 1004 id_buffer.shm_id(), id_buffer.offset()); | |
| 1005 WaitForCmd(); | |
| 1006 n -= id_buffer.num_elements(); | |
| 1007 ids += id_buffer.num_elements(); | |
| 1008 } | |
| 1009 } | |
| 1010 | |
| 1011 void GLES2Implementation::RegisterSharedIdsCHROMIUM( | |
| 1012 GLuint namespace_id, GLsizei n, const GLuint* ids) { | |
| 1013 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRegisterSharedIdsCHROMIUM(" | |
| 1014 << namespace_id << ", " << n << ", " | |
| 1015 << static_cast<const void*>(ids) << ")"); | |
| 1016 GPU_CLIENT_LOG_CODE_BLOCK({ | |
| 1017 for (GLsizei i = 0; i < n; ++i) { | |
| 1018 GPU_CLIENT_LOG(" " << i << ": " << namespace_id << ", " << ids[i]); | |
| 1019 } | |
| 1020 }); | |
| 1021 TRACE_EVENT0("gpu", "GLES2::RegisterSharedIdsCHROMIUM"); | |
| 1022 while (n) { | |
| 1023 ScopedTransferBufferArray<GLint> id_buffer(n, helper_, transfer_buffer_); | |
| 1024 if (!id_buffer.valid()) { | |
| 1025 return; | |
| 1026 } | |
| 1027 memcpy(id_buffer.address(), ids, sizeof(*ids) * id_buffer.num_elements()); | |
| 1028 helper_->RegisterSharedIdsCHROMIUM( | |
| 1029 namespace_id, id_buffer.num_elements(), | |
| 1030 id_buffer.shm_id(), id_buffer.offset()); | |
| 1031 WaitForCmd(); | |
| 1032 n -= id_buffer.num_elements(); | |
| 1033 ids += id_buffer.num_elements(); | |
| 1034 } | |
| 1035 } | |
| 1036 | |
| 1037 void GLES2Implementation::BindAttribLocation( | 956 void GLES2Implementation::BindAttribLocation( |
| 1038 GLuint program, GLuint index, const char* name) { | 957 GLuint program, GLuint index, const char* name) { |
| 1039 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 958 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 1040 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindAttribLocation(" | 959 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindAttribLocation(" |
| 1041 << program << ", " << index << ", " << name << ")"); | 960 << program << ", " << index << ", " << name << ")"); |
| 1042 SetBucketAsString(kResultBucketId, name); | 961 SetBucketAsString(kResultBucketId, name); |
| 1043 helper_->BindAttribLocationBucket(program, index, kResultBucketId); | 962 helper_->BindAttribLocationBucket(program, index, kResultBucketId); |
| 1044 helper_->SetBucketSize(kResultBucketId, 0); | 963 helper_->SetBucketSize(kResultBucketId, 0); |
| 1045 CheckGLError(); | 964 CheckGLError(); |
| 1046 } | 965 } |
| (...skipping 3143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4190 return true; | 4109 return true; |
| 4191 } | 4110 } |
| 4192 | 4111 |
| 4193 // Include the auto-generated part of this file. We split this because it means | 4112 // Include the auto-generated part of this file. We split this because it means |
| 4194 // we can easily edit the non-auto generated parts right here in this file | 4113 // we can easily edit the non-auto generated parts right here in this file |
| 4195 // instead of having to edit some template or the code generator. | 4114 // instead of having to edit some template or the code generator. |
| 4196 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h" | 4115 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h" |
| 4197 | 4116 |
| 4198 } // namespace gles2 | 4117 } // namespace gles2 |
| 4199 } // namespace gpu | 4118 } // namespace gpu |
| OLD | NEW |