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

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

Issue 1542513002: Switch to standard integer types in gpu/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 12 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) 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 #include <stddef.h>
6 #include <stdint.h>
7
5 #include "gpu/command_buffer/client/program_info_manager.h" 8 #include "gpu/command_buffer/client/program_info_manager.h"
6 9
7 namespace { 10 namespace {
8 11
9 template<typename T> static T LocalGetAs( 12 template <typename T>
10 const std::vector<int8>& data, uint32 offset, size_t size) { 13 static T LocalGetAs(const std::vector<int8_t>& data,
11 const int8* p = &data[0] + offset; 14 uint32_t offset,
15 size_t size) {
16 const int8_t* p = &data[0] + offset;
12 if (offset + size > data.size()) { 17 if (offset + size > data.size()) {
13 NOTREACHED(); 18 NOTREACHED();
14 return NULL; 19 return NULL;
15 } 20 }
16 return static_cast<T>(static_cast<const void*>(p)); 21 return static_cast<T>(static_cast<const void*>(p));
17 } 22 }
18 23
19 } // namespace anonymous 24 } // namespace anonymous
20 25
21 namespace gpu { 26 namespace gpu {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 params[ii] = uniforms_es3_[indices[ii]].is_row_major; 327 params[ii] = uniforms_es3_[indices[ii]].is_row_major;
323 } 328 }
324 return true; 329 return true;
325 default: 330 default:
326 NOTREACHED(); 331 NOTREACHED();
327 break; 332 break;
328 } 333 }
329 return false; 334 return false;
330 } 335 }
331 336
332 void ProgramInfoManager::Program::UpdateES2(const std::vector<int8>& result) { 337 void ProgramInfoManager::Program::UpdateES2(const std::vector<int8_t>& result) {
333 if (cached_es2_) { 338 if (cached_es2_) {
334 return; 339 return;
335 } 340 }
336 if (result.empty()) { 341 if (result.empty()) {
337 // This should only happen on a lost context. 342 // This should only happen on a lost context.
338 return; 343 return;
339 } 344 }
340 DCHECK_GE(result.size(), sizeof(ProgramInfoHeader)); 345 DCHECK_GE(result.size(), sizeof(ProgramInfoHeader));
341 const ProgramInfoHeader* header = LocalGetAs<const ProgramInfoHeader*>( 346 const ProgramInfoHeader* header = LocalGetAs<const ProgramInfoHeader*>(
342 result, 0, sizeof(header)); 347 result, 0, sizeof(header));
343 link_status_ = header->link_status != 0; 348 link_status_ = header->link_status != 0;
344 if (!link_status_) { 349 if (!link_status_) {
345 return; 350 return;
346 } 351 }
347 DCHECK_EQ(0u, attrib_infos_.size()); 352 DCHECK_EQ(0u, attrib_infos_.size());
348 DCHECK_EQ(0u, uniform_infos_.size()); 353 DCHECK_EQ(0u, uniform_infos_.size());
349 DCHECK_EQ(0, max_attrib_name_length_); 354 DCHECK_EQ(0, max_attrib_name_length_);
350 DCHECK_EQ(0, max_uniform_name_length_); 355 DCHECK_EQ(0, max_uniform_name_length_);
351 const ProgramInput* inputs = LocalGetAs<const ProgramInput*>( 356 const ProgramInput* inputs = LocalGetAs<const ProgramInput*>(
352 result, sizeof(*header), 357 result, sizeof(*header),
353 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms)); 358 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms));
354 const ProgramInput* input = inputs; 359 const ProgramInput* input = inputs;
355 for (uint32 ii = 0; ii < header->num_attribs; ++ii) { 360 for (uint32_t ii = 0; ii < header->num_attribs; ++ii) {
356 const int32* location = LocalGetAs<const int32*>( 361 const int32_t* location = LocalGetAs<const int32_t*>(
357 result, input->location_offset, sizeof(int32)); 362 result, input->location_offset, sizeof(int32_t));
358 const char* name_buf = LocalGetAs<const char*>( 363 const char* name_buf = LocalGetAs<const char*>(
359 result, input->name_offset, input->name_length); 364 result, input->name_offset, input->name_length);
360 std::string name(name_buf, input->name_length); 365 std::string name(name_buf, input->name_length);
361 attrib_infos_.push_back( 366 attrib_infos_.push_back(
362 VertexAttrib(input->size, input->type, name, *location)); 367 VertexAttrib(input->size, input->type, name, *location));
363 max_attrib_name_length_ = std::max( 368 max_attrib_name_length_ = std::max(
364 static_cast<GLsizei>(name.size() + 1), max_attrib_name_length_); 369 static_cast<GLsizei>(name.size() + 1), max_attrib_name_length_);
365 ++input; 370 ++input;
366 } 371 }
367 for (uint32 ii = 0; ii < header->num_uniforms; ++ii) { 372 for (uint32_t ii = 0; ii < header->num_uniforms; ++ii) {
368 const int32* locations = LocalGetAs<const int32*>( 373 const int32_t* locations = LocalGetAs<const int32_t*>(
369 result, input->location_offset, sizeof(int32) * input->size); 374 result, input->location_offset, sizeof(int32_t) * input->size);
370 const char* name_buf = LocalGetAs<const char*>( 375 const char* name_buf = LocalGetAs<const char*>(
371 result, input->name_offset, input->name_length); 376 result, input->name_offset, input->name_length);
372 std::string name(name_buf, input->name_length); 377 std::string name(name_buf, input->name_length);
373 UniformInfo info(input->size, input->type, name); 378 UniformInfo info(input->size, input->type, name);
374 max_uniform_name_length_ = std::max( 379 max_uniform_name_length_ = std::max(
375 static_cast<GLsizei>(name.size() + 1), max_uniform_name_length_); 380 static_cast<GLsizei>(name.size() + 1), max_uniform_name_length_);
376 for (int32 jj = 0; jj < input->size; ++jj) { 381 for (int32_t jj = 0; jj < input->size; ++jj) {
377 info.element_locations.push_back(locations[jj]); 382 info.element_locations.push_back(locations[jj]);
378 } 383 }
379 uniform_infos_.push_back(info); 384 uniform_infos_.push_back(info);
380 ++input; 385 ++input;
381 } 386 }
382 DCHECK_EQ(header->num_attribs + header->num_uniforms, 387 DCHECK_EQ(header->num_attribs + header->num_uniforms,
383 static_cast<uint32>(input - inputs)); 388 static_cast<uint32_t>(input - inputs));
384 cached_es2_ = true; 389 cached_es2_ = true;
385 } 390 }
386 391
387 void ProgramInfoManager::Program::UpdateES3UniformBlocks( 392 void ProgramInfoManager::Program::UpdateES3UniformBlocks(
388 const std::vector<int8>& result) { 393 const std::vector<int8_t>& result) {
389 if (cached_es3_uniform_blocks_) { 394 if (cached_es3_uniform_blocks_) {
390 return; 395 return;
391 } 396 }
392 if (result.empty()) { 397 if (result.empty()) {
393 // This should only happen on a lost context. 398 // This should only happen on a lost context.
394 return; 399 return;
395 } 400 }
396 DCHECK_EQ(0u, uniform_blocks_.size()); 401 DCHECK_EQ(0u, uniform_blocks_.size());
397 DCHECK_EQ(0u, active_uniform_block_max_name_length_); 402 DCHECK_EQ(0u, active_uniform_block_max_name_length_);
398 403
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 static_cast<GLuint>(indices[uu]); 454 static_cast<GLuint>(indices[uu]);
450 } 455 }
451 indices += entries[ii].active_uniforms; 456 indices += entries[ii].active_uniforms;
452 data = reinterpret_cast<const char*>(indices); 457 data = reinterpret_cast<const char*>(indices);
453 } 458 }
454 DCHECK_EQ(data_size, size); 459 DCHECK_EQ(data_size, size);
455 cached_es3_uniform_blocks_ = true; 460 cached_es3_uniform_blocks_ = true;
456 } 461 }
457 462
458 void ProgramInfoManager::Program::UpdateES3Uniformsiv( 463 void ProgramInfoManager::Program::UpdateES3Uniformsiv(
459 const std::vector<int8>& result) { 464 const std::vector<int8_t>& result) {
460 if (cached_es3_uniformsiv_) { 465 if (cached_es3_uniformsiv_) {
461 return; 466 return;
462 } 467 }
463 if (result.empty()) { 468 if (result.empty()) {
464 // This should only happen on a lost context. 469 // This should only happen on a lost context.
465 return; 470 return;
466 } 471 }
467 DCHECK_EQ(0u, uniforms_es3_.size()); 472 DCHECK_EQ(0u, uniforms_es3_.size());
468 473
469 // |result| comes from GPU process. We consider it trusted data. Therefore, 474 // |result| comes from GPU process. We consider it trusted data. Therefore,
(...skipping 21 matching lines...) Expand all
491 uniforms_es3_[ii].block_index = entries[ii].block_index; 496 uniforms_es3_[ii].block_index = entries[ii].block_index;
492 uniforms_es3_[ii].offset = entries[ii].offset; 497 uniforms_es3_[ii].offset = entries[ii].offset;
493 uniforms_es3_[ii].array_stride = entries[ii].array_stride; 498 uniforms_es3_[ii].array_stride = entries[ii].array_stride;
494 uniforms_es3_[ii].matrix_stride = entries[ii].matrix_stride; 499 uniforms_es3_[ii].matrix_stride = entries[ii].matrix_stride;
495 uniforms_es3_[ii].is_row_major = entries[ii].is_row_major; 500 uniforms_es3_[ii].is_row_major = entries[ii].is_row_major;
496 } 501 }
497 cached_es3_uniformsiv_ = true; 502 cached_es3_uniformsiv_ = true;
498 } 503 }
499 504
500 void ProgramInfoManager::Program::UpdateES3TransformFeedbackVaryings( 505 void ProgramInfoManager::Program::UpdateES3TransformFeedbackVaryings(
501 const std::vector<int8>& result) { 506 const std::vector<int8_t>& result) {
502 if (cached_es3_transform_feedback_varyings_) { 507 if (cached_es3_transform_feedback_varyings_) {
503 return; 508 return;
504 } 509 }
505 if (result.empty()) { 510 if (result.empty()) {
506 // This should only happen on a lost context. 511 // This should only happen on a lost context.
507 return; 512 return;
508 } 513 }
509 DCHECK_EQ(0u, transform_feedback_buffer_mode_); 514 DCHECK_EQ(0u, transform_feedback_buffer_mode_);
510 DCHECK_EQ(0u, transform_feedback_varyings_.size()); 515 DCHECK_EQ(0u, transform_feedback_varyings_.size());
511 DCHECK_EQ(0u, transform_feedback_varying_max_length_); 516 DCHECK_EQ(0u, transform_feedback_varying_max_length_);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 GLES2Implementation* gl, GLuint program, ProgramInfoType type) { 594 GLES2Implementation* gl, GLuint program, ProgramInfoType type) {
590 lock_.AssertAcquired(); 595 lock_.AssertAcquired();
591 ProgramInfoMap::iterator it = program_infos_.find(program); 596 ProgramInfoMap::iterator it = program_infos_.find(program);
592 if (it == program_infos_.end()) { 597 if (it == program_infos_.end()) {
593 return NULL; 598 return NULL;
594 } 599 }
595 Program* info = &it->second; 600 Program* info = &it->second;
596 if (info->IsCached(type)) 601 if (info->IsCached(type))
597 return info; 602 return info;
598 603
599 std::vector<int8> result; 604 std::vector<int8_t> result;
600 switch (type) { 605 switch (type) {
601 case kES2: 606 case kES2:
602 { 607 {
603 base::AutoUnlock unlock(lock_); 608 base::AutoUnlock unlock(lock_);
604 // lock_ can't be held across IPC call or else it may deadlock in 609 // lock_ can't be held across IPC call or else it may deadlock in
605 // pepper. http://crbug.com/418651 610 // pepper. http://crbug.com/418651
606 gl->GetProgramInfoCHROMIUMHelper(program, &result); 611 gl->GetProgramInfoCHROMIUMHelper(program, &result);
607 } 612 }
608 info->UpdateES2(result); 613 info->UpdateES2(result);
609 break; 614 break;
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 } 1039 }
1035 return true; 1040 return true;
1036 } 1041 }
1037 } 1042 }
1038 return gl->GetUniformIndicesHelper(program, count, names, indices); 1043 return gl->GetUniformIndicesHelper(program, count, names, indices);
1039 } 1044 }
1040 1045
1041 } // namespace gles2 1046 } // namespace gles2
1042 } // namespace gpu 1047 } // namespace gpu
1043 1048
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/program_info_manager.h ('k') | gpu/command_buffer/client/program_info_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698