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

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

Issue 1696012: Added shader type to shader info. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_SHADER_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 10 matching lines...) Expand all
21 class ShaderManager { 21 class ShaderManager {
22 public: 22 public:
23 // This is used to keep the source code for a shader. This is because in order 23 // This is used to keep the source code for a shader. This is because in order
24 // to emluate GLES2 the shaders will have to be re-written before passed to 24 // to emluate GLES2 the shaders will have to be re-written before passed to
25 // the underlying OpenGL. But, when the user calls glGetShaderSource they 25 // the underlying OpenGL. But, when the user calls glGetShaderSource they
26 // should get the source they passed in, not the re-written source. 26 // should get the source they passed in, not the re-written source.
27 class ShaderInfo : public base::RefCounted<ShaderInfo> { 27 class ShaderInfo : public base::RefCounted<ShaderInfo> {
28 public: 28 public:
29 typedef scoped_refptr<ShaderInfo> Ref; 29 typedef scoped_refptr<ShaderInfo> Ref;
30 30
31 explicit ShaderInfo(GLuint service_id) 31 explicit ShaderInfo(GLuint service_id, GLenum shader_type)
32 : service_id_(service_id) { 32 : service_id_(service_id),
33 shader_type_(shader_type) {
33 } 34 }
34 35
35 void Update(const std::string& source) { 36 void Update(const std::string& source) {
36 source_ = source; 37 source_ = source;
37 } 38 }
38 39
39 GLuint service_id() const { 40 GLuint service_id() const {
40 return service_id_; 41 return service_id_;
41 } 42 }
42 43
43 const std::string& source() { 44 GLenum shader_type() const {
45 return shader_type_;
46 }
47
48 const std::string& source() const {
44 return source_; 49 return source_;
45 } 50 }
46 51
47 bool IsDeleted() { 52 bool IsDeleted() const {
48 return service_id_ == 0; 53 return service_id_ == 0;
49 } 54 }
50 55
51 private: 56 private:
52 friend class base::RefCounted<ShaderInfo>; 57 friend class base::RefCounted<ShaderInfo>;
53 friend class ShaderManager; 58 friend class ShaderManager;
54 ~ShaderInfo() { } 59 ~ShaderInfo() { }
55 60
56 void MarkAsDeleted() { 61 void MarkAsDeleted() {
57 service_id_ = 0; 62 service_id_ = 0;
58 } 63 }
59 64
60 // The shader this ShaderInfo is tracking. 65 // The shader this ShaderInfo is tracking.
61 GLuint service_id_; 66 GLuint service_id_;
67 // Type of shader - GL_VERTEX_SHADER or GL_FRAGMENT_SHADER.
68 GLenum shader_type_;
62 69
63 // The shader source as passed to glShaderSource. 70 // The shader source as passed to glShaderSource.
64 std::string source_; 71 std::string source_;
65 }; 72 };
66 73
67 ShaderManager() { 74 ShaderManager() {
68 } 75 }
69 76
70 // Creates a shader info for the given shader ID. 77 // Creates a shader info for the given shader ID.
71 void CreateShaderInfo(GLuint client_id, GLuint service_id); 78 void CreateShaderInfo(GLuint client_id,
79 GLuint service_id,
80 GLenum shader_type);
72 81
73 // Gets an existing shader info for the given shader ID. Returns NULL if none 82 // Gets an existing shader info for the given shader ID. Returns NULL if none
74 // exists. 83 // exists.
75 ShaderInfo* GetShaderInfo(GLuint client_id); 84 ShaderInfo* GetShaderInfo(GLuint client_id);
76 85
77 // Deletes the shader info for the given shader. 86 // Deletes the shader info for the given shader.
78 void RemoveShaderInfo(GLuint client_id); 87 void RemoveShaderInfo(GLuint client_id);
79 88
80 // Gets a client id for a given service id. 89 // Gets a client id for a given service id.
81 bool GetClientId(GLuint service_id, GLuint* client_id) const; 90 bool GetClientId(GLuint service_id, GLuint* client_id) const;
82 91
83 private: 92 private:
84 // Info for each shader by service side shader Id. 93 // Info for each shader by service side shader Id.
85 typedef std::map<GLuint, ShaderInfo::Ref> ShaderInfoMap; 94 typedef std::map<GLuint, ShaderInfo::Ref> ShaderInfoMap;
86 ShaderInfoMap shader_infos_; 95 ShaderInfoMap shader_infos_;
87 96
88 DISALLOW_COPY_AND_ASSIGN(ShaderManager); 97 DISALLOW_COPY_AND_ASSIGN(ShaderManager);
89 }; 98 };
90 99
91 } // namespace gles2 100 } // namespace gles2
92 } // namespace gpu 101 } // namespace gpu
93 102
94 #endif // GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_ 103 #endif // GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_
95 104
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/shader_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698