Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h

Issue 255763002: gpu: Refactor and cleanup CHROMIUM_copy_texture implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review feedback Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_
7 7
8 #include "base/containers/hash_tables.h"
8 #include "gpu/command_buffer/service/gl_utils.h" 9 #include "gpu/command_buffer/service/gl_utils.h"
9 #include "gpu/gpu_export.h" 10 #include "gpu/gpu_export.h"
10 11
11 namespace gpu { 12 namespace gpu {
12 namespace gles2 { 13 namespace gles2 {
13 14
14 class GLES2Decoder; 15 class GLES2Decoder;
15 16
16 } // namespace gles2. 17 } // namespace gles2.
17 18
18 // This class encapsulates the resources required to implement the 19 // This class encapsulates the resources required to implement the
19 // GL_CHROMIUM_copy_texture extension. The copy operation is performed 20 // GL_CHROMIUM_copy_texture extension. The copy operation is performed
20 // via a blit to a framebuffer object. 21 // via a blit to a framebuffer object.
21 class GPU_EXPORT CopyTextureCHROMIUMResourceManager { 22 class GPU_EXPORT CopyTextureCHROMIUMResourceManager {
22 public: 23 public:
23 CopyTextureCHROMIUMResourceManager(); 24 CopyTextureCHROMIUMResourceManager();
25 ~CopyTextureCHROMIUMResourceManager();
24 26
25 void Initialize(const gles2::GLES2Decoder* decoder); 27 void Initialize(const gles2::GLES2Decoder* decoder);
26 void Destroy(); 28 void Destroy();
27 29
28 void DoCopyTexture(const gles2::GLES2Decoder* decoder, GLenum source_target, 30 void DoCopyTexture(const gles2::GLES2Decoder* decoder, GLenum source_target,
29 GLenum dest_target, GLuint source_id, GLuint dest_id, 31 GLenum dest_target, GLuint source_id, GLuint dest_id,
30 GLint level, GLsizei width, GLsizei height, 32 GLint level, GLsizei width, GLsizei height,
31 bool flip_y, bool premultiply_alpha, 33 bool flip_y, bool premultiply_alpha,
32 bool unpremultiply_alpha); 34 bool unpremultiply_alpha);
33 35
34 // This will apply a transform on the source texture before copying to 36 // This will apply a transform on the source texture before copying to
35 // destination texture. 37 // destination texture.
36 void DoCopyTextureWithTransform(const gles2::GLES2Decoder* decoder, 38 void DoCopyTextureWithTransform(const gles2::GLES2Decoder* decoder,
37 GLenum source_target, GLenum dest_target, 39 GLenum source_target, GLenum dest_target,
38 GLuint source_id, GLuint dest_id, GLint level, 40 GLuint source_id, GLuint dest_id, GLint level,
39 GLsizei width, GLsizei height, bool flip_y, 41 GLsizei width, GLsizei height, bool flip_y,
40 bool premultiply_alpha, 42 bool premultiply_alpha,
41 bool unpremultiply_alpha, 43 bool unpremultiply_alpha,
42 const GLfloat transform_matrix[16]); 44 const GLfloat transform_matrix[16]);
43 45
44 // The attributes used during invocation of the extension. 46 // The attributes used during invocation of the extension.
45 static const GLuint kVertexPositionAttrib = 0; 47 static const GLuint kVertexPositionAttrib = 0;
46 48
47 private: 49 private:
50 struct ProgramInfo {
51 ProgramInfo() : program(0u), matrix_handle(0u), sampler_locations(0u) {}
52
53 GLuint program;
54 GLuint matrix_handle;
55 GLuint sampler_locations;
56 };
57
48 bool initialized_; 58 bool initialized_;
49 59 typedef std::pair<int, int> ProgramMapKey;
50 static const int kNumPrograms = 12; 60 typedef base::hash_map<ProgramMapKey, ProgramInfo> ProgramMap;
51 GLuint programs_[kNumPrograms]; 61 ProgramMap programs_;
52 GLuint buffer_id_; 62 GLuint buffer_id_;
53 GLuint framebuffer_; 63 GLuint framebuffer_;
54 GLuint matrix_handle_[kNumPrograms]; 64 GLuint vertex_shader_;
55 GLuint sampler_locations_[kNumPrograms];
56 65
57 DISALLOW_COPY_AND_ASSIGN(CopyTextureCHROMIUMResourceManager); 66 DISALLOW_COPY_AND_ASSIGN(CopyTextureCHROMIUMResourceManager);
58 }; 67 };
59 68
60 } // namespace gpu. 69 } // namespace gpu.
61 70
62 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_ 71 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_COPY_TEXTURE_CHROMIUM_H_
63 72
64 73
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698