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 <list> | 10 #include <list> |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 } | 767 } |
768 | 768 |
769 ProgramManager* program_manager() { | 769 ProgramManager* program_manager() { |
770 return group_->program_manager(); | 770 return group_->program_manager(); |
771 } | 771 } |
772 | 772 |
773 ShaderManager* shader_manager() { | 773 ShaderManager* shader_manager() { |
774 return group_->shader_manager(); | 774 return group_->shader_manager(); |
775 } | 775 } |
776 | 776 |
| 777 ShaderTranslatorCache* shader_translator_cache() { |
| 778 return group_->shader_translator_cache(); |
| 779 } |
| 780 |
777 const TextureManager* texture_manager() const { | 781 const TextureManager* texture_manager() const { |
778 return group_->texture_manager(); | 782 return group_->texture_manager(); |
779 } | 783 } |
780 | 784 |
781 TextureManager* texture_manager() { | 785 TextureManager* texture_manager() { |
782 return group_->texture_manager(); | 786 return group_->texture_manager(); |
783 } | 787 } |
784 | 788 |
785 MailboxManager* mailbox_manager() { | 789 MailboxManager* mailbox_manager() { |
786 return group_->mailbox_manager(); | 790 return group_->mailbox_manager(); |
(...skipping 1968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2755 driver_bug_workarounds |= SH_EMULATE_BUILT_IN_FUNCTIONS; | 2759 driver_bug_workarounds |= SH_EMULATE_BUILT_IN_FUNCTIONS; |
2756 if (workarounds().init_gl_position_in_vertex_shader) | 2760 if (workarounds().init_gl_position_in_vertex_shader) |
2757 driver_bug_workarounds |= SH_INIT_GL_POSITION; | 2761 driver_bug_workarounds |= SH_INIT_GL_POSITION; |
2758 if (workarounds().unfold_short_circuit_as_ternary_operation) | 2762 if (workarounds().unfold_short_circuit_as_ternary_operation) |
2759 driver_bug_workarounds |= SH_UNFOLD_SHORT_CIRCUIT; | 2763 driver_bug_workarounds |= SH_UNFOLD_SHORT_CIRCUIT; |
2760 if (workarounds().init_varyings_without_static_use) | 2764 if (workarounds().init_varyings_without_static_use) |
2761 driver_bug_workarounds |= SH_INIT_VARYINGS_WITHOUT_STATIC_USE; | 2765 driver_bug_workarounds |= SH_INIT_VARYINGS_WITHOUT_STATIC_USE; |
2762 if (workarounds().unroll_for_loop_with_sampler_array_index) | 2766 if (workarounds().unroll_for_loop_with_sampler_array_index) |
2763 driver_bug_workarounds |= SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX; | 2767 driver_bug_workarounds |= SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX; |
2764 | 2768 |
2765 ShaderTranslatorCache* cache = ShaderTranslatorCache::GetInstance(); | 2769 vertex_translator_ = shader_translator_cache()->GetTranslator( |
2766 vertex_translator_ = cache->GetTranslator( | 2770 SH_VERTEX_SHADER, |
2767 SH_VERTEX_SHADER, shader_spec, &resources, | 2771 shader_spec, |
| 2772 &resources, |
2768 implementation_type, | 2773 implementation_type, |
2769 static_cast<ShCompileOptions>(driver_bug_workarounds)); | 2774 static_cast<ShCompileOptions>(driver_bug_workarounds)); |
2770 if (!vertex_translator_.get()) { | 2775 if (!vertex_translator_.get()) { |
2771 LOG(ERROR) << "Could not initialize vertex shader translator."; | 2776 LOG(ERROR) << "Could not initialize vertex shader translator."; |
2772 Destroy(true); | 2777 Destroy(true); |
2773 return false; | 2778 return false; |
2774 } | 2779 } |
2775 | 2780 |
2776 fragment_translator_ = cache->GetTranslator( | 2781 fragment_translator_ = shader_translator_cache()->GetTranslator( |
2777 SH_FRAGMENT_SHADER, shader_spec, &resources, | 2782 SH_FRAGMENT_SHADER, |
| 2783 shader_spec, |
| 2784 &resources, |
2778 implementation_type, | 2785 implementation_type, |
2779 static_cast<ShCompileOptions>(driver_bug_workarounds)); | 2786 static_cast<ShCompileOptions>(driver_bug_workarounds)); |
2780 if (!fragment_translator_.get()) { | 2787 if (!fragment_translator_.get()) { |
2781 LOG(ERROR) << "Could not initialize fragment shader translator."; | 2788 LOG(ERROR) << "Could not initialize fragment shader translator."; |
2782 Destroy(true); | 2789 Destroy(true); |
2783 return false; | 2790 return false; |
2784 } | 2791 } |
2785 return true; | 2792 return true; |
2786 } | 2793 } |
2787 | 2794 |
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3402 offscreen_target_frame_buffer_.reset(); | 3409 offscreen_target_frame_buffer_.reset(); |
3403 offscreen_target_color_texture_.reset(); | 3410 offscreen_target_color_texture_.reset(); |
3404 offscreen_target_color_render_buffer_.reset(); | 3411 offscreen_target_color_render_buffer_.reset(); |
3405 offscreen_target_depth_render_buffer_.reset(); | 3412 offscreen_target_depth_render_buffer_.reset(); |
3406 offscreen_target_stencil_render_buffer_.reset(); | 3413 offscreen_target_stencil_render_buffer_.reset(); |
3407 offscreen_saved_frame_buffer_.reset(); | 3414 offscreen_saved_frame_buffer_.reset(); |
3408 offscreen_saved_color_texture_.reset(); | 3415 offscreen_saved_color_texture_.reset(); |
3409 offscreen_resolved_frame_buffer_.reset(); | 3416 offscreen_resolved_frame_buffer_.reset(); |
3410 offscreen_resolved_color_texture_.reset(); | 3417 offscreen_resolved_color_texture_.reset(); |
3411 | 3418 |
| 3419 // Need to release these before releasing |group_| which may own the |
| 3420 // ShaderTranslatorCache. |
| 3421 fragment_translator_ = NULL; |
| 3422 vertex_translator_ = NULL; |
| 3423 |
3412 // Should destroy the transfer manager before the texture manager held | 3424 // Should destroy the transfer manager before the texture manager held |
3413 // by the context group. | 3425 // by the context group. |
3414 async_pixel_transfer_manager_.reset(); | 3426 async_pixel_transfer_manager_.reset(); |
3415 | 3427 |
3416 if (group_.get()) { | 3428 if (group_.get()) { |
3417 framebuffer_manager()->RemoveObserver(this); | 3429 framebuffer_manager()->RemoveObserver(this); |
3418 group_->Destroy(this, have_context); | 3430 group_->Destroy(this, have_context); |
3419 group_ = NULL; | 3431 group_ = NULL; |
3420 } | 3432 } |
3421 | 3433 |
(...skipping 7256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10678 } | 10690 } |
10679 } | 10691 } |
10680 | 10692 |
10681 // Include the auto-generated part of this file. We split this because it means | 10693 // Include the auto-generated part of this file. We split this because it means |
10682 // we can easily edit the non-auto generated parts right here in this file | 10694 // we can easily edit the non-auto generated parts right here in this file |
10683 // instead of having to edit some template or the code generator. | 10695 // instead of having to edit some template or the code generator. |
10684 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10696 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
10685 | 10697 |
10686 } // namespace gles2 | 10698 } // namespace gles2 |
10687 } // namespace gpu | 10699 } // namespace gpu |
OLD | NEW |