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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1242913003: Temporarily crash the GPU process when unexpected failures happen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unit test temporarily for mac Created 5 years, 5 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
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('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) 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/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 11587 matching lines...) Expand 10 before | Expand all | Expand 10 after
11598 11598
11599 switch (target) { 11599 switch (target) {
11600 case GL_COMMANDS_ISSUED_CHROMIUM: 11600 case GL_COMMANDS_ISSUED_CHROMIUM:
11601 case GL_LATENCY_QUERY_CHROMIUM: 11601 case GL_LATENCY_QUERY_CHROMIUM:
11602 case GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM: 11602 case GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM:
11603 case GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM: 11603 case GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM:
11604 case GL_GET_ERROR_QUERY_CHROMIUM: 11604 case GL_GET_ERROR_QUERY_CHROMIUM:
11605 break; 11605 break;
11606 case GL_COMMANDS_COMPLETED_CHROMIUM: 11606 case GL_COMMANDS_COMPLETED_CHROMIUM:
11607 if (!features().chromium_sync_query) { 11607 if (!features().chromium_sync_query) {
11608 #if defined(OS_MACOSX)
11609 // TODO(dyen): Remove once we know what is failing.
11610 uint32_t boolean_flags = 0;
11611 if (gfx::g_driver_gl.ext.b_GL_ARB_sync)
11612 boolean_flags |= 1;
11613 if (gfx::g_driver_gl.ext.b_GL_APPLE_fence)
11614 boolean_flags |= 2;
11615 if (gfx::g_driver_gl.ext.b_GL_NV_fence)
11616 boolean_flags |= 4;
11617
11618 CHECK(boolean_flags != 0) << "Nothing supported";
11619 CHECK(boolean_flags != 1) << "ARB";
11620 CHECK(boolean_flags != 2) << "APPLE";
11621 CHECK(boolean_flags != 3) << "ARB APPLE";
11622 CHECK(boolean_flags != 4) << "NV";
11623 CHECK(boolean_flags != 5) << "NV ARB";
11624 CHECK(boolean_flags != 6) << "NV APPLE";
11625 CHECK(boolean_flags != 7) << "NV ARB APPLE";
11626 CHECK(false) << "Unknown error.";
piman 2015/07/21 19:17:05 drive-by FYI: you can use base::debug::Alias to ma
11627 #endif
11608 LOCAL_SET_GL_ERROR( 11628 LOCAL_SET_GL_ERROR(
11609 GL_INVALID_OPERATION, "glBeginQueryEXT", 11629 GL_INVALID_OPERATION, "glBeginQueryEXT",
11610 "not enabled for commands completed queries"); 11630 "not enabled for commands completed queries");
11611 return error::kNoError; 11631 return error::kNoError;
11612 } 11632 }
11613 break; 11633 break;
11614 case GL_SAMPLES_PASSED: 11634 case GL_SAMPLES_PASSED:
11615 case GL_ANY_SAMPLES_PASSED: 11635 case GL_ANY_SAMPLES_PASSED:
11616 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE: 11636 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
11617 if (!features().occlusion_query_boolean) { 11637 if (!features().occlusion_query_boolean) {
(...skipping 12 matching lines...) Expand all
11630 } 11650 }
11631 break; 11651 break;
11632 default: 11652 default:
11633 LOCAL_SET_GL_ERROR( 11653 LOCAL_SET_GL_ERROR(
11634 GL_INVALID_ENUM, "glBeginQueryEXT", 11654 GL_INVALID_ENUM, "glBeginQueryEXT",
11635 "unknown query target"); 11655 "unknown query target");
11636 return error::kNoError; 11656 return error::kNoError;
11637 } 11657 }
11638 11658
11639 if (state_.current_queries.find(target) != state_.current_queries.end()) { 11659 if (state_.current_queries.find(target) != state_.current_queries.end()) {
11660 #if defined(OS_MACOSX)
11661 // TODO(dyen): Remove once we know what is failing.
11662 CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM)
11663 << "Query already in progress";
11664 #endif
11640 LOCAL_SET_GL_ERROR( 11665 LOCAL_SET_GL_ERROR(
11641 GL_INVALID_OPERATION, "glBeginQueryEXT", "query already in progress"); 11666 GL_INVALID_OPERATION, "glBeginQueryEXT", "query already in progress");
11642 return error::kNoError; 11667 return error::kNoError;
11643 } 11668 }
11644 11669
11645 if (client_id == 0) { 11670 if (client_id == 0) {
11671 #if defined(OS_MACOSX)
11672 // TODO(dyen): Remove once we know what is failing.
11673 CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Id is 0";
11674 #endif
11646 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBeginQueryEXT", "id is 0"); 11675 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glBeginQueryEXT", "id is 0");
11647 return error::kNoError; 11676 return error::kNoError;
11648 } 11677 }
11649 11678
11650 QueryManager::Query* query = query_manager_->GetQuery(client_id); 11679 QueryManager::Query* query = query_manager_->GetQuery(client_id);
11651 if (!query) { 11680 if (!query) {
11652 if (!query_manager_->IsValidQuery(client_id)) { 11681 if (!query_manager_->IsValidQuery(client_id)) {
11682 #if defined(OS_MACOSX)
11683 // TODO(dyen): Remove once we know what is failing.
11684 CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Invalid ID";
11685 #endif
11653 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, 11686 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
11654 "glBeginQueryEXT", 11687 "glBeginQueryEXT",
11655 "id not made by glGenQueriesEXT"); 11688 "id not made by glGenQueriesEXT");
11656 return error::kNoError; 11689 return error::kNoError;
11657 } 11690 }
11658 query = query_manager_->CreateQuery( 11691 query = query_manager_->CreateQuery(
11659 target, client_id, sync_shm_id, sync_shm_offset); 11692 target, client_id, sync_shm_id, sync_shm_offset);
11660 } 11693 }
11661 11694
11662 if (query->target() != target) { 11695 if (query->target() != target) {
11696 #if defined(OS_MACOSX)
11697 // TODO(dyen): Remove once we know what is failing.
11698 CHECK(target != GL_COMMANDS_COMPLETED_CHROMIUM) << "Non-Matching Target";
11699 #endif
11663 LOCAL_SET_GL_ERROR( 11700 LOCAL_SET_GL_ERROR(
11664 GL_INVALID_OPERATION, "glBeginQueryEXT", "target does not match"); 11701 GL_INVALID_OPERATION, "glBeginQueryEXT", "target does not match");
11665 return error::kNoError; 11702 return error::kNoError;
11666 } else if (query->shm_id() != sync_shm_id || 11703 } else if (query->shm_id() != sync_shm_id ||
11667 query->shm_offset() != sync_shm_offset) { 11704 query->shm_offset() != sync_shm_offset) {
11668 DLOG(ERROR) << "Shared memory used by query not the same as before"; 11705 DLOG(ERROR) << "Shared memory used by query not the same as before";
11669 return error::kInvalidArguments; 11706 return error::kInvalidArguments;
11670 } 11707 }
11671 11708
11672 if (!query_manager_->BeginQuery(query)) { 11709 if (!query_manager_->BeginQuery(query)) {
(...skipping 2711 matching lines...) Expand 10 before | Expand all | Expand 10 after
14384 return error::kNoError; 14421 return error::kNoError;
14385 } 14422 }
14386 14423
14387 // Include the auto-generated part of this file. We split this because it means 14424 // Include the auto-generated part of this file. We split this because it means
14388 // we can easily edit the non-auto generated parts right here in this file 14425 // we can easily edit the non-auto generated parts right here in this file
14389 // instead of having to edit some template or the code generator. 14426 // instead of having to edit some template or the code generator.
14390 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 14427 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
14391 14428
14392 } // namespace gles2 14429 } // namespace gles2
14393 } // namespace gpu 14430 } // namespace gpu
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698