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_copy_texture_chromium.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 19 matching lines...) Expand all Loading... |
30 FRAGMENT_SHADER_COPY_TEXTURE_UNPREMULTIPLY_ALPHA_RECTANGLE_ARB, | 30 FRAGMENT_SHADER_COPY_TEXTURE_UNPREMULTIPLY_ALPHA_RECTANGLE_ARB, |
31 FRAGMENT_SHADER_COPY_TEXTURE_UNPREMULTIPLY_ALPHA_EXTERNAL_OES, | 31 FRAGMENT_SHADER_COPY_TEXTURE_UNPREMULTIPLY_ALPHA_EXTERNAL_OES, |
32 NUM_FRAGMENT_SHADERS, | 32 NUM_FRAGMENT_SHADERS, |
33 }; | 33 }; |
34 | 34 |
35 // Returns the correct fragment shader id to evaluate the copy operation for | 35 // Returns the correct fragment shader id to evaluate the copy operation for |
36 // the premultiply alpha pixel store settings and target. | 36 // the premultiply alpha pixel store settings and target. |
37 FragmentShaderId GetFragmentShaderId(bool premultiply_alpha, | 37 FragmentShaderId GetFragmentShaderId(bool premultiply_alpha, |
38 bool unpremultiply_alpha, | 38 bool unpremultiply_alpha, |
39 GLenum target) { | 39 GLenum target) { |
40 // Only one alpha mode at a time makes sense. | |
41 DCHECK(!premultiply_alpha || !unpremultiply_alpha); | |
42 | |
43 enum { | 40 enum { |
44 SAMPLER_2D, | 41 SAMPLER_2D, |
45 SAMPLER_RECTANGLE_ARB, | 42 SAMPLER_RECTANGLE_ARB, |
46 SAMPLER_EXTERNAL_OES, | 43 SAMPLER_EXTERNAL_OES, |
47 NUM_SAMPLERS | 44 NUM_SAMPLERS |
48 }; | 45 }; |
49 | 46 |
50 // bit 0: premultiply alpha | 47 // bit 0: premultiply alpha |
51 // bit 1: unpremultiply alpha | 48 // bit 1: unpremultiply alpha |
52 static FragmentShaderId shader_ids[][NUM_SAMPLERS] = { | 49 static FragmentShaderId shader_ids[][NUM_SAMPLERS] = { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 u_vertex_dest_add;\n\ | 126 u_vertex_dest_add;\n\ |
130 v_uv = a_position.xy * u_vertex_source_mult + u_vertex_source_add;\n\ | 127 v_uv = a_position.xy * u_vertex_source_mult + u_vertex_source_add;\n\ |
131 }\n"); | 128 }\n"); |
132 | 129 |
133 return source; | 130 return source; |
134 } | 131 } |
135 | 132 |
136 std::string GetFragmentShaderSource(bool premultiply_alpha, | 133 std::string GetFragmentShaderSource(bool premultiply_alpha, |
137 bool unpremultiply_alpha, | 134 bool unpremultiply_alpha, |
138 GLenum target) { | 135 GLenum target) { |
139 // Only one alpha mode at a time makes sense. | |
140 DCHECK(!premultiply_alpha || !unpremultiply_alpha); | |
141 | |
142 std::string source; | 136 std::string source; |
143 | 137 |
144 // Preamble for core and compatibility mode. | 138 // Preamble for core and compatibility mode. |
145 if (gl::GetGLImplementation() == gl::kGLImplementationDesktopGLCoreProfile) { | 139 if (gl::GetGLImplementation() == gl::kGLImplementationDesktopGLCoreProfile) { |
146 source += std::string("\ | 140 source += std::string("\ |
147 #version 150\n\ | 141 #version 150\n\ |
148 out vec4 frag_color;\n\ | 142 out vec4 frag_color;\n\ |
149 #define VARYING in\n\ | 143 #define VARYING in\n\ |
150 #define FRAGCOLOR frag_color\n\ | 144 #define FRAGCOLOR frag_color\n\ |
151 #define TextureLookup texture\n"); | 145 #define TextureLookup texture\n"); |
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 decoder->RestoreTextureState(dest_id); | 749 decoder->RestoreTextureState(dest_id); |
756 decoder->RestoreTextureUnitBindings(0); | 750 decoder->RestoreTextureUnitBindings(0); |
757 decoder->RestoreActiveTexture(); | 751 decoder->RestoreActiveTexture(); |
758 decoder->RestoreProgramBindings(); | 752 decoder->RestoreProgramBindings(); |
759 decoder->RestoreBufferBindings(); | 753 decoder->RestoreBufferBindings(); |
760 decoder->RestoreFramebufferBindings(); | 754 decoder->RestoreFramebufferBindings(); |
761 decoder->RestoreGlobalState(); | 755 decoder->RestoreGlobalState(); |
762 } | 756 } |
763 | 757 |
764 } // namespace gpu | 758 } // namespace gpu |
OLD | NEW |