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

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

Issue 952893003: Update from https://crrev.com/317530 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix gn for nacl Created 5 years, 10 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 "gpu/command_buffer/client/program_info_manager.h" 5 #include "gpu/command_buffer/client/program_info_manager.h"
6 6
7 namespace { 7 namespace {
8 8
9 template<typename T> static T LocalGetAs( 9 template<typename T> static T LocalGetAs(
10 const std::vector<int8>& data, uint32 offset, size_t size) { 10 const std::vector<int8>& data, uint32 offset, size_t size) {
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 // This should only happen on a lost context. 325 // This should only happen on a lost context.
326 return; 326 return;
327 } 327 }
328 DCHECK_GE(result.size(), sizeof(ProgramInfoHeader)); 328 DCHECK_GE(result.size(), sizeof(ProgramInfoHeader));
329 const ProgramInfoHeader* header = LocalGetAs<const ProgramInfoHeader*>( 329 const ProgramInfoHeader* header = LocalGetAs<const ProgramInfoHeader*>(
330 result, 0, sizeof(header)); 330 result, 0, sizeof(header));
331 link_status_ = header->link_status != 0; 331 link_status_ = header->link_status != 0;
332 if (!link_status_) { 332 if (!link_status_) {
333 return; 333 return;
334 } 334 }
335 attrib_infos_.clear(); 335 DCHECK_EQ(0u, attrib_infos_.size());
336 uniform_infos_.clear(); 336 DCHECK_EQ(0u, uniform_infos_.size());
337 frag_data_locations_.clear(); 337 DCHECK_EQ(0, max_attrib_name_length_);
338 max_attrib_name_length_ = 0; 338 DCHECK_EQ(0, max_uniform_name_length_);
339 max_uniform_name_length_ = 0;
340 const ProgramInput* inputs = LocalGetAs<const ProgramInput*>( 339 const ProgramInput* inputs = LocalGetAs<const ProgramInput*>(
341 result, sizeof(*header), 340 result, sizeof(*header),
342 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms)); 341 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms));
343 const ProgramInput* input = inputs; 342 const ProgramInput* input = inputs;
344 for (uint32 ii = 0; ii < header->num_attribs; ++ii) { 343 for (uint32 ii = 0; ii < header->num_attribs; ++ii) {
345 const int32* location = LocalGetAs<const int32*>( 344 const int32* location = LocalGetAs<const int32*>(
346 result, input->location_offset, sizeof(int32)); 345 result, input->location_offset, sizeof(int32));
347 const char* name_buf = LocalGetAs<const char*>( 346 const char* name_buf = LocalGetAs<const char*>(
348 result, input->name_offset, input->name_length); 347 result, input->name_offset, input->name_length);
349 std::string name(name_buf, input->name_length); 348 std::string name(name_buf, input->name_length);
(...skipping 25 matching lines...) Expand all
375 374
376 void ProgramInfoManager::Program::UpdateES3UniformBlocks( 375 void ProgramInfoManager::Program::UpdateES3UniformBlocks(
377 const std::vector<int8>& result) { 376 const std::vector<int8>& result) {
378 if (cached_es3_uniform_blocks_) { 377 if (cached_es3_uniform_blocks_) {
379 return; 378 return;
380 } 379 }
381 if (result.empty()) { 380 if (result.empty()) {
382 // This should only happen on a lost context. 381 // This should only happen on a lost context.
383 return; 382 return;
384 } 383 }
385 uniform_blocks_.clear(); 384 DCHECK_EQ(0u, uniform_blocks_.size());
386 active_uniform_block_max_name_length_ = 0; 385 DCHECK_EQ(0u, active_uniform_block_max_name_length_);
387 386
388 // |result| comes from GPU process. We consider it trusted data. Therefore, 387 // |result| comes from GPU process. We consider it trusted data. Therefore,
389 // no need to check for overflows as the GPU side did the checks already. 388 // no need to check for overflows as the GPU side did the checks already.
390 uint32_t header_size = sizeof(UniformBlocksHeader); 389 uint32_t header_size = sizeof(UniformBlocksHeader);
391 DCHECK_GE(result.size(), header_size); 390 DCHECK_GE(result.size(), header_size);
392 const UniformBlocksHeader* header = LocalGetAs<const UniformBlocksHeader*>( 391 const UniformBlocksHeader* header = LocalGetAs<const UniformBlocksHeader*>(
393 result, 0, header_size); 392 result, 0, header_size);
394 DCHECK(header); 393 DCHECK(header);
395 if (header->num_uniform_blocks == 0) { 394 if (header->num_uniform_blocks == 0) {
396 DCHECK_EQ(result.size(), header_size); 395 DCHECK_EQ(result.size(), header_size);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 445
447 void ProgramInfoManager::Program::UpdateES3Uniformsiv( 446 void ProgramInfoManager::Program::UpdateES3Uniformsiv(
448 const std::vector<int8>& result) { 447 const std::vector<int8>& result) {
449 if (cached_es3_uniformsiv_) { 448 if (cached_es3_uniformsiv_) {
450 return; 449 return;
451 } 450 }
452 if (result.empty()) { 451 if (result.empty()) {
453 // This should only happen on a lost context. 452 // This should only happen on a lost context.
454 return; 453 return;
455 } 454 }
456 uniforms_es3_.clear(); 455 DCHECK_EQ(0u, uniforms_es3_.size());
457 456
458 // |result| comes from GPU process. We consider it trusted data. Therefore, 457 // |result| comes from GPU process. We consider it trusted data. Therefore,
459 // no need to check for overflows as the GPU side did the checks already. 458 // no need to check for overflows as the GPU side did the checks already.
460 uint32_t header_size = sizeof(UniformsES3Header); 459 uint32_t header_size = sizeof(UniformsES3Header);
461 DCHECK_GE(result.size(), header_size); 460 DCHECK_GE(result.size(), header_size);
462 const UniformsES3Header* header = LocalGetAs<const UniformsES3Header*>( 461 const UniformsES3Header* header = LocalGetAs<const UniformsES3Header*>(
463 result, 0, header_size); 462 result, 0, header_size);
464 DCHECK(header); 463 DCHECK(header);
465 if (header->num_uniforms == 0) { 464 if (header->num_uniforms == 0) {
466 DCHECK_EQ(result.size(), header_size); 465 DCHECK_EQ(result.size(), header_size);
(...skipping 21 matching lines...) Expand all
488 487
489 void ProgramInfoManager::Program::UpdateES3TransformFeedbackVaryings( 488 void ProgramInfoManager::Program::UpdateES3TransformFeedbackVaryings(
490 const std::vector<int8>& result) { 489 const std::vector<int8>& result) {
491 if (cached_es3_transform_feedback_varyings_) { 490 if (cached_es3_transform_feedback_varyings_) {
492 return; 491 return;
493 } 492 }
494 if (result.empty()) { 493 if (result.empty()) {
495 // This should only happen on a lost context. 494 // This should only happen on a lost context.
496 return; 495 return;
497 } 496 }
498 transform_feedback_varyings_.clear(); 497 DCHECK_EQ(0u, transform_feedback_varyings_.size());
499 transform_feedback_varying_max_length_ = 0; 498 DCHECK_EQ(0u, transform_feedback_varying_max_length_);
500 499
501 // |result| comes from GPU process. We consider it trusted data. Therefore, 500 // |result| comes from GPU process. We consider it trusted data. Therefore,
502 // no need to check for overflows as the GPU side did the checks already. 501 // no need to check for overflows as the GPU side did the checks already.
503 uint32_t header_size = sizeof(TransformFeedbackVaryingsHeader); 502 uint32_t header_size = sizeof(TransformFeedbackVaryingsHeader);
504 DCHECK_GE(result.size(), header_size); 503 DCHECK_GE(result.size(), header_size);
505 const TransformFeedbackVaryingsHeader* header = 504 const TransformFeedbackVaryingsHeader* header =
506 LocalGetAs<const TransformFeedbackVaryingsHeader*>( 505 LocalGetAs<const TransformFeedbackVaryingsHeader*>(
507 result, 0, header_size); 506 result, 0, header_size);
508 DCHECK(header); 507 DCHECK(header);
509 if (header->num_transform_feedback_varyings == 0) { 508 if (header->num_transform_feedback_varyings == 0) {
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
991 } 990 }
992 return true; 991 return true;
993 } 992 }
994 } 993 }
995 return gl->GetUniformIndicesHelper(program, count, names, indices); 994 return gl->GetUniformIndicesHelper(program, count, names, indices);
996 } 995 }
997 996
998 } // namespace gles2 997 } // namespace gles2
999 } // namespace gpu 998 } // namespace gpu
1000 999
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h ('k') | gpu/command_buffer/cmd_buffer_functions.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698