Chromium Code Reviews| 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 |