OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |