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

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

Issue 6713127: Initialize a few uninitialized members in GPU classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 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
« no previous file with comments | « content/gpu/gpu_child_thread.cc ('k') | gpu/command_buffer/common/logging.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 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 emluate 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 12
13 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 13 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
14 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS 14 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS
15 #endif 15 #endif
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 pack_alignment_(4), 439 pack_alignment_(4),
440 unpack_alignment_(4), 440 unpack_alignment_(4),
441 bound_array_buffer_id_(0), 441 bound_array_buffer_id_(0),
442 bound_element_array_buffer_id_(0), 442 bound_element_array_buffer_id_(0),
443 client_side_array_id_(0), 443 client_side_array_id_(0),
444 client_side_element_array_id_(0), 444 client_side_element_array_id_(0),
445 error_bits_(0) { 445 error_bits_(0) {
446 // Allocate space for simple GL results. 446 // Allocate space for simple GL results.
447 result_buffer_ = transfer_buffer; 447 result_buffer_ = transfer_buffer;
448 result_shm_offset_ = 0; 448 result_shm_offset_ = 0;
449 memset(&reserved_ids_, 0, sizeof(reserved_ids_));
449 450
450 mapped_memory_.reset(new MappedMemoryManager(helper_)); 451 mapped_memory_.reset(new MappedMemoryManager(helper_));
451 452
452 if (share_resources) { 453 if (share_resources) {
453 buffer_id_handler_.reset( 454 buffer_id_handler_.reset(
454 new SharedIdHandler(this, id_namespaces::kBuffers)); 455 new SharedIdHandler(this, id_namespaces::kBuffers));
455 framebuffer_id_handler_.reset( 456 framebuffer_id_handler_.reset(
456 new SharedIdHandler(this, id_namespaces::kFramebuffers)); 457 new SharedIdHandler(this, id_namespaces::kFramebuffers));
457 renderbuffer_id_handler_.reset( 458 renderbuffer_id_handler_.reset(
458 new SharedIdHandler(this, id_namespaces::kRenderbuffers)); 459 new SharedIdHandler(this, id_namespaces::kRenderbuffers));
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 } 658 }
658 #else 659 #else
659 helper_->DrawElements(mode, count, type, ToGLuint(indices)); 660 helper_->DrawElements(mode, count, type, ToGLuint(indices));
660 #endif 661 #endif
661 } 662 }
662 663
663 void GLES2Implementation::Flush() { 664 void GLES2Implementation::Flush() {
664 // Insert the cmd to call glFlush 665 // Insert the cmd to call glFlush
665 helper_->Flush(); 666 helper_->Flush();
666 // Flush our command buffer 667 // Flush our command buffer
667 // (tell the service to execute upto the flush cmd.) 668 // (tell the service to execute up to the flush cmd.)
668 helper_->CommandBufferHelper::Flush(); 669 helper_->CommandBufferHelper::Flush();
669 } 670 }
670 671
671 void GLES2Implementation::Finish() { 672 void GLES2Implementation::Finish() {
672 // Insert the cmd to call glFinish 673 // Insert the cmd to call glFinish
673 helper_->Finish(); 674 helper_->Finish();
674 // Finish our command buffer 675 // Finish our command buffer
675 // (tell the service to execute upto the Finish cmd and wait for it to 676 // (tell the service to execute up to the Finish cmd and wait for it to
676 // execute.) 677 // execute.)
677 helper_->CommandBufferHelper::Finish(); 678 helper_->CommandBufferHelper::Finish();
678 } 679 }
679 680
680 void GLES2Implementation::SwapBuffers() { 681 void GLES2Implementation::SwapBuffers() {
681 // Wait if this would add too many swap buffers. 682 // Wait if this would add too many swap buffers.
682 if (swap_buffers_tokens_.size() == kMaxSwapBuffers) { 683 if (swap_buffers_tokens_.size() == kMaxSwapBuffers) {
683 helper_->WaitForToken(swap_buffers_tokens_.front()); 684 helper_->WaitForToken(swap_buffers_tokens_.front());
684 swap_buffers_tokens_.pop(); 685 swap_buffers_tokens_.pop();
685 } 686 }
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 memcpy(buffer, source, part_size); 1031 memcpy(buffer, source, part_size);
1031 helper_->TexSubImage2D( 1032 helper_->TexSubImage2D(
1032 target, level, xoffset, yoffset, width, num_rows, format, type, 1033 target, level, xoffset, yoffset, width, num_rows, format, type,
1033 transfer_buffer_id_, transfer_buffer_.GetOffset(buffer)); 1034 transfer_buffer_id_, transfer_buffer_.GetOffset(buffer));
1034 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken()); 1035 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken());
1035 yoffset += num_rows; 1036 yoffset += num_rows;
1036 source += part_size; 1037 source += part_size;
1037 height -= num_rows; 1038 height -= num_rows;
1038 } 1039 }
1039 } else { 1040 } else {
1040 // Transfer by sub rows. Beacuse GL has no maximum texture dimensions. 1041 // Transfer by sub rows. Because GL has no maximum texture dimensions.
1041 uint32 temp; 1042 uint32 temp;
1042 GLES2Util::ComputeImageDataSize( 1043 GLES2Util::ComputeImageDataSize(
1043 1, 1, format, type, unpack_alignment_, &temp); 1044 1, 1, format, type, unpack_alignment_, &temp);
1044 GLsizeiptr element_size = temp; 1045 GLsizeiptr element_size = temp;
1045 max_size -= max_size % element_size; 1046 max_size -= max_size % element_size;
1046 GLint max_sub_row_pixels = max_size / element_size; 1047 GLint max_sub_row_pixels = max_size / element_size;
1047 for (; height; --height) { 1048 for (; height; --height) {
1048 GLint temp_width = width; 1049 GLint temp_width = width;
1049 GLint temp_xoffset = xoffset; 1050 GLint temp_xoffset = xoffset;
1050 const int8* row_source = source; 1051 const int8* row_source = source;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, 1249 GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format,
1249 GLenum type, void* pixels) { 1250 GLenum type, void* pixels) {
1250 if (width < 0 || height < 0) { 1251 if (width < 0 || height < 0) {
1251 SetGLError(GL_INVALID_VALUE, "glReadPixels: dimensions < 0"); 1252 SetGLError(GL_INVALID_VALUE, "glReadPixels: dimensions < 0");
1252 return; 1253 return;
1253 } 1254 }
1254 if (width == 0 || height == 0) { 1255 if (width == 0 || height == 0) {
1255 return; 1256 return;
1256 } 1257 }
1257 1258
1258 // glReadPixel pads the size of each row of pixels by an ammount specified by 1259 // glReadPixel pads the size of each row of pixels by an amount specified by
1259 // glPixelStorei. So, we have to take that into account both in the fact that 1260 // glPixelStorei. So, we have to take that into account both in the fact that
1260 // the pixels returned from the ReadPixel command will include that padding 1261 // the pixels returned from the ReadPixel command will include that padding
1261 // and that when we copy the results to the user's buffer we need to not 1262 // and that when we copy the results to the user's buffer we need to not
1262 // write those padding bytes but leave them as they are. 1263 // write those padding bytes but leave them as they are.
1263 1264
1264 typedef gles2::ReadPixels::Result Result; 1265 typedef gles2::ReadPixels::Result Result;
1265 Result* result = static_cast<Result*>(result_buffer_); 1266 Result* result = static_cast<Result*>(result_buffer_);
1266 int8* dest = reinterpret_cast<int8*>(pixels); 1267 int8* dest = reinterpret_cast<int8*>(pixels);
1267 GLsizeiptr max_size = transfer_buffer_.GetLargestFreeOrPendingSize(); 1268 GLsizeiptr max_size = transfer_buffer_.GetLargestFreeOrPendingSize();
1268 uint32 temp_size; 1269 uint32 temp_size;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 } 1314 }
1314 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken()); 1315 transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken());
1315 // If it was not marked as successful exit. 1316 // If it was not marked as successful exit.
1316 if (*result == 0) { 1317 if (*result == 0) {
1317 return; 1318 return;
1318 } 1319 }
1319 yoffset += num_rows; 1320 yoffset += num_rows;
1320 height -= num_rows; 1321 height -= num_rows;
1321 } 1322 }
1322 } else { 1323 } else {
1323 // Transfer by sub rows. Beacuse GL has no maximum texture dimensions. 1324 // Transfer by sub rows. Because GL has no maximum texture dimensions.
1324 GLES2Util::ComputeImageDataSize( 1325 GLES2Util::ComputeImageDataSize(
1325 1, 1, format, type, pack_alignment_, &temp_size); 1326 1, 1, format, type, pack_alignment_, &temp_size);
1326 GLsizeiptr element_size = temp_size; 1327 GLsizeiptr element_size = temp_size;
1327 max_size -= max_size % element_size; 1328 max_size -= max_size % element_size;
1328 GLint max_sub_row_pixels = max_size / element_size; 1329 GLint max_sub_row_pixels = max_size / element_size;
1329 for (; height; --height) { 1330 for (; height; --height) {
1330 GLint temp_width = width; 1331 GLint temp_width = width;
1331 GLint temp_xoffset = xoffset; 1332 GLint temp_xoffset = xoffset;
1332 int8* row_dest = dest; 1333 int8* row_dest = dest;
1333 while (temp_width) { 1334 while (temp_width) {
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 } 1668 }
1668 1669
1669 void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) { 1670 void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) {
1670 SetBucketAsCString(kResultBucketId, extension); 1671 SetBucketAsCString(kResultBucketId, extension);
1671 helper_->RequestExtensionCHROMIUM(kResultBucketId); 1672 helper_->RequestExtensionCHROMIUM(kResultBucketId);
1672 helper_->SetBucketSize(kResultBucketId, 0); 1673 helper_->SetBucketSize(kResultBucketId, 0);
1673 } 1674 }
1674 1675
1675 } // namespace gles2 1676 } // namespace gles2
1676 } // namespace gpu 1677 } // namespace gpu
OLDNEW
« no previous file with comments | « content/gpu/gpu_child_thread.cc ('k') | gpu/command_buffer/common/logging.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698