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

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

Issue 2762014: Mac: clang build (Closed)
Patch Set: comments Created 10 years, 3 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 emluate GLES2 over command buffers. 5 // A class to emluate 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"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 if (total_size > array_buffer_size_) { 304 if (total_size > array_buffer_size_) {
305 gl->BufferData(GL_ARRAY_BUFFER, total_size, NULL, GL_DYNAMIC_DRAW); 305 gl->BufferData(GL_ARRAY_BUFFER, total_size, NULL, GL_DYNAMIC_DRAW);
306 array_buffer_size_ = total_size; 306 array_buffer_size_ = total_size;
307 } 307 }
308 for (GLuint ii = 0; ii < max_vertex_attribs_; ++ii) { 308 for (GLuint ii = 0; ii < max_vertex_attribs_; ++ii) {
309 VertexAttribInfo& info = vertex_attrib_infos_[ii]; 309 VertexAttribInfo& info = vertex_attrib_infos_[ii];
310 if (info.IsClientSide() && info.enabled()) { 310 if (info.IsClientSide() && info.enabled()) {
311 size_t bytes_per_element = 311 size_t bytes_per_element =
312 GLES2Util::GetGLTypeSizeForTexturesAndBuffers(info.type()) * 312 GLES2Util::GetGLTypeSizeForTexturesAndBuffers(info.type()) *
313 info.size(); 313 info.size();
314 GLsizei real_stride = 314 GLsizei real_stride = info.stride() ?
315 info.stride() ? info.stride() : bytes_per_element; 315 info.stride() : static_cast<GLsizei>(bytes_per_element);
316 GLsizei bytes_collected = CollectData( 316 GLsizei bytes_collected = CollectData(
317 info.pointer(), bytes_per_element, real_stride, num_elements); 317 info.pointer(), bytes_per_element, real_stride, num_elements);
318 gl->BufferSubData( 318 gl->BufferSubData(
319 GL_ARRAY_BUFFER, array_buffer_offset_, bytes_collected, 319 GL_ARRAY_BUFFER, array_buffer_offset_, bytes_collected,
320 collection_buffer_.get()); 320 collection_buffer_.get());
321 gl_helper->VertexAttribPointer( 321 gl_helper->VertexAttribPointer(
322 ii, info.size(), info.type(), info.normalized(), 0, 322 ii, info.size(), info.type(), info.normalized(), 0,
323 array_buffer_offset_); 323 array_buffer_offset_);
324 array_buffer_offset_ += RoundUpToMultipleOf4(bytes_collected); 324 array_buffer_offset_ += RoundUpToMultipleOf4(bytes_collected);
325 GPU_DCHECK_LE(array_buffer_offset_, array_buffer_size_); 325 GPU_DCHECK_LE(array_buffer_offset_, array_buffer_size_);
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 } 807 }
808 if (shader == 0) { 808 if (shader == 0) {
809 SetGLError(GL_INVALID_VALUE, "glShaderSource shader == 0"); 809 SetGLError(GL_INVALID_VALUE, "glShaderSource shader == 0");
810 return; 810 return;
811 } 811 }
812 812
813 // Compute the total size. 813 // Compute the total size.
814 uint32 total_size = 1; 814 uint32 total_size = 1;
815 for (GLsizei ii = 0; ii < count; ++ii) { 815 for (GLsizei ii = 0; ii < count; ++ii) {
816 if (source[ii]) { 816 if (source[ii]) {
817 total_size += 817 total_size += (length && length[ii] >= 0) ?
818 (length && length[ii] >= 0) ? length[ii] : strlen(source[ii]); 818 static_cast<size_t>(length[ii]) : strlen(source[ii]);
819 } 819 }
820 } 820 }
821 821
822 // Concatenate all the strings in to a bucket on the service. 822 // Concatenate all the strings in to a bucket on the service.
823 helper_->SetBucketSize(kResultBucketId, total_size); 823 helper_->SetBucketSize(kResultBucketId, total_size);
824 uint32 max_size = transfer_buffer_.GetLargestFreeOrPendingSize(); 824 uint32 max_size = transfer_buffer_.GetLargestFreeOrPendingSize();
825 uint32 offset = 0; 825 uint32 offset = 0;
826 for (GLsizei ii = 0; ii <= count; ++ii) { 826 for (GLsizei ii = 0; ii <= count; ++ii) {
827 const char* src = ii < count ? source[ii] : ""; 827 const char* src = ii < count ? source[ii] : "";
828 if (src) { 828 if (src) {
829 uint32 size = ii < count ? (length ? length[ii] : strlen(src)) : 1; 829 uint32 size = ii < count ?
830 (length ? static_cast<size_t>(length[ii]) : strlen(src)) : 1;
830 while (size) { 831 while (size) {
831 uint32 part_size = std::min(size, max_size); 832 uint32 part_size = std::min(size, max_size);
832 void* buffer = transfer_buffer_.Alloc(part_size); 833 void* buffer = transfer_buffer_.Alloc(part_size);
833 memcpy(buffer, src, part_size); 834 memcpy(buffer, src, part_size);
834 helper_->SetBucketData(kResultBucketId, offset, part_size, 835 helper_->SetBucketData(kResultBucketId, offset, part_size,
835 transfer_buffer_id_, 836 transfer_buffer_id_,
836 transfer_buffer_.GetOffset(buffer)); 837 transfer_buffer_.GetOffset(buffer));
837 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken()); 838 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken());
838 offset += part_size; 839 offset += part_size;
839 src += part_size; 840 src += part_size;
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 const MappedTexture& mt = it->second; 1560 const MappedTexture& mt = it->second;
1560 helper_->TexSubImage2D( 1561 helper_->TexSubImage2D(
1561 mt.target, mt.level, mt.xoffset, mt.yoffset, mt.width, mt.height, 1562 mt.target, mt.level, mt.xoffset, mt.yoffset, mt.width, mt.height,
1562 mt.format, mt.type, mt.shm_id, mt.shm_offset); 1563 mt.format, mt.type, mt.shm_id, mt.shm_offset);
1563 mapped_memory_->FreePendingToken(mt.shm_memory, helper_->InsertToken()); 1564 mapped_memory_->FreePendingToken(mt.shm_memory, helper_->InsertToken());
1564 mapped_textures_.erase(it); 1565 mapped_textures_.erase(it);
1565 } 1566 }
1566 1567
1567 } // namespace gles2 1568 } // namespace gles2
1568 } // namespace gpu 1569 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698