| 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 // This file contains the ContextState class. | 5 // This file contains the ContextState class. |
| 6 | 6 |
| 7 #ifndef GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ | 7 #ifndef GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ |
| 8 #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ | 8 #define GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ |
| 9 | 9 |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 // State associated with each texture unit. | 28 // State associated with each texture unit. |
| 29 struct GPU_EXPORT TextureUnit { | 29 struct GPU_EXPORT TextureUnit { |
| 30 TextureUnit(); | 30 TextureUnit(); |
| 31 ~TextureUnit(); | 31 ~TextureUnit(); |
| 32 | 32 |
| 33 // The last target that was bound to this texture unit. | 33 // The last target that was bound to this texture unit. |
| 34 GLenum bind_target; | 34 GLenum bind_target; |
| 35 | 35 |
| 36 // texture currently bound to this unit's GL_TEXTURE_2D with glBindTexture | 36 // texture currently bound to this unit's GL_TEXTURE_2D with glBindTexture |
| 37 TextureManager::TextureInfo::Ref bound_texture_2d; | 37 scoped_refptr<Texture> bound_texture_2d; |
| 38 | 38 |
| 39 // texture currently bound to this unit's GL_TEXTURE_CUBE_MAP with | 39 // texture currently bound to this unit's GL_TEXTURE_CUBE_MAP with |
| 40 // glBindTexture | 40 // glBindTexture |
| 41 TextureManager::TextureInfo::Ref bound_texture_cube_map; | 41 scoped_refptr<Texture> bound_texture_cube_map; |
| 42 | 42 |
| 43 // texture currently bound to this unit's GL_TEXTURE_EXTERNAL_OES with | 43 // texture currently bound to this unit's GL_TEXTURE_EXTERNAL_OES with |
| 44 // glBindTexture | 44 // glBindTexture |
| 45 TextureManager::TextureInfo::Ref bound_texture_external_oes; | 45 scoped_refptr<Texture> bound_texture_external_oes; |
| 46 | 46 |
| 47 // texture currently bound to this unit's GL_TEXTURE_RECTANGLE_ARB with | 47 // texture currently bound to this unit's GL_TEXTURE_RECTANGLE_ARB with |
| 48 // glBindTexture | 48 // glBindTexture |
| 49 TextureManager::TextureInfo::Ref bound_texture_rectangle_arb; | 49 scoped_refptr<Texture> bound_texture_rectangle_arb; |
| 50 | 50 |
| 51 TextureManager::TextureInfo::Ref GetInfoForSamplerType(GLenum type) { | 51 scoped_refptr<Texture> GetInfoForSamplerType( |
| 52 GLenum type) { |
| 52 DCHECK(type == GL_SAMPLER_2D || type == GL_SAMPLER_CUBE || | 53 DCHECK(type == GL_SAMPLER_2D || type == GL_SAMPLER_CUBE || |
| 53 type == GL_SAMPLER_EXTERNAL_OES || type == GL_SAMPLER_2D_RECT_ARB); | 54 type == GL_SAMPLER_EXTERNAL_OES || type == GL_SAMPLER_2D_RECT_ARB); |
| 54 switch (type) { | 55 switch (type) { |
| 55 case GL_SAMPLER_2D: | 56 case GL_SAMPLER_2D: |
| 56 return bound_texture_2d; | 57 return bound_texture_2d; |
| 57 case GL_SAMPLER_CUBE: | 58 case GL_SAMPLER_CUBE: |
| 58 return bound_texture_cube_map; | 59 return bound_texture_cube_map; |
| 59 case GL_SAMPLER_EXTERNAL_OES: | 60 case GL_SAMPLER_EXTERNAL_OES: |
| 60 return bound_texture_external_oes; | 61 return bound_texture_external_oes; |
| 61 case GL_SAMPLER_2D_RECT_ARB: | 62 case GL_SAMPLER_2D_RECT_ARB: |
| 62 return bound_texture_rectangle_arb; | 63 return bound_texture_rectangle_arb; |
| 63 } | 64 } |
| 64 | 65 |
| 65 NOTREACHED(); | 66 NOTREACHED(); |
| 66 return NULL; | 67 return NULL; |
| 67 } | 68 } |
| 68 | 69 |
| 69 void Unbind(TextureManager::TextureInfo* texture) { | 70 void Unbind(Texture* texture) { |
| 70 if (bound_texture_2d == texture) { | 71 if (bound_texture_2d == texture) { |
| 71 bound_texture_2d = NULL; | 72 bound_texture_2d = NULL; |
| 72 } | 73 } |
| 73 if (bound_texture_cube_map == texture) { | 74 if (bound_texture_cube_map == texture) { |
| 74 bound_texture_cube_map = NULL; | 75 bound_texture_cube_map = NULL; |
| 75 } | 76 } |
| 76 if (bound_texture_external_oes == texture) { | 77 if (bound_texture_external_oes == texture) { |
| 77 bound_texture_external_oes = NULL; | 78 bound_texture_external_oes = NULL; |
| 78 } | 79 } |
| 79 } | 80 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 // unpack alignment as last set by glPixelStorei | 125 // unpack alignment as last set by glPixelStorei |
| 125 GLint unpack_alignment; | 126 GLint unpack_alignment; |
| 126 | 127 |
| 127 // Current active texture by 0 - n index. | 128 // Current active texture by 0 - n index. |
| 128 // In other words, if we call glActiveTexture(GL_TEXTURE2) this value would | 129 // In other words, if we call glActiveTexture(GL_TEXTURE2) this value would |
| 129 // be 2. | 130 // be 2. |
| 130 GLuint active_texture_unit; | 131 GLuint active_texture_unit; |
| 131 | 132 |
| 132 // The currently bound array buffer. If this is 0 it is illegal to call | 133 // The currently bound array buffer. If this is 0 it is illegal to call |
| 133 // glVertexAttribPointer. | 134 // glVertexAttribPointer. |
| 134 BufferManager::BufferInfo::Ref bound_array_buffer; | 135 scoped_refptr<BufferManager::Buffer> bound_array_buffer; |
| 135 | 136 |
| 136 // Which textures are bound to texture units through glActiveTexture. | 137 // Which textures are bound to texture units through glActiveTexture. |
| 137 std::vector<TextureUnit> texture_units; | 138 std::vector<TextureUnit> texture_units; |
| 138 | 139 |
| 139 // The values for each attrib. | 140 // The values for each attrib. |
| 140 std::vector<Vec4> attrib_values; | 141 std::vector<Vec4> attrib_values; |
| 141 | 142 |
| 142 // Class that manages vertex attribs. | 143 // Class that manages vertex attribs. |
| 143 VertexAttribManager::Ref vertex_attrib_manager; | 144 scoped_refptr<VertexAttribManager> vertex_attrib_manager; |
| 144 | 145 |
| 145 // The program in use by glUseProgram | 146 // The program in use by glUseProgram |
| 146 ProgramManager::ProgramInfo::Ref current_program; | 147 scoped_refptr<Program> current_program; |
| 147 | 148 |
| 148 // The currently bound framebuffers | 149 // The currently bound framebuffers |
| 149 FramebufferManager::FramebufferInfo::Ref bound_read_framebuffer; | 150 scoped_refptr<Framebuffer> bound_read_framebuffer; |
| 150 FramebufferManager::FramebufferInfo::Ref bound_draw_framebuffer; | 151 scoped_refptr<Framebuffer> bound_draw_framebuffer; |
| 151 | 152 |
| 152 // The currently bound renderbuffer | 153 // The currently bound renderbuffer |
| 153 RenderbufferManager::RenderbufferInfo::Ref bound_renderbuffer; | 154 scoped_refptr<Renderbuffer> bound_renderbuffer; |
| 154 | 155 |
| 155 QueryManager::Query::Ref current_query; | 156 scoped_refptr<QueryManager::Query> current_query; |
| 156 | 157 |
| 157 GLenum hint_generate_mipmap; | 158 GLenum hint_generate_mipmap; |
| 158 GLenum hint_fragment_shader_derivative; | 159 GLenum hint_fragment_shader_derivative; |
| 159 | 160 |
| 160 bool pack_reverse_row_order; | 161 bool pack_reverse_row_order; |
| 161 | 162 |
| 162 FeatureInfo* feature_info_; | 163 FeatureInfo* feature_info_; |
| 163 }; | 164 }; |
| 164 | 165 |
| 165 } // namespace gles2 | 166 } // namespace gles2 |
| 166 } // namespace gpu | 167 } // namespace gpu |
| 167 | 168 |
| 168 #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ | 169 #endif // GPU_COMMAND_BUFFER_SERVICE_CONTEXT_STATE_H_ |
| 169 | 170 |
| OLD | NEW |