// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_ #define GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_ #include <string> #include <unordered_map> #include "base/check_op.h" #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "gpu/command_buffer/service/gl_utils.h" #include "gpu/command_buffer/service/shader_translator.h" #include "gpu/gpu_gles2_export.h" namespace gl { class ProgressReporter; } namespace gpu { namespace gles2 { enum ShaderVariableBaseType { … }; // Compiles shader_source into shader and gives informative logging if // the compilation fails. void CompileShaderWithLog(GLuint shader, const char* shader_source); // This is used to keep the source code for a shader. This is because in order // to emluate GLES2 the shaders will have to be re-written before passed to // the underlying OpenGL. But, when the user calls glGetShaderSource they // should get the source they passed in, not the re-written source. class GPU_GLES2_EXPORT Shader : public base::RefCounted<Shader> { … }; // Tracks the Shaders. // // NOTE: To support shared resources an instance of this class will // need to be shared by multiple GLES2Decoders. class GPU_GLES2_EXPORT ShaderManager { … }; } // namespace gles2 } // namespace gpu #endif // GPU_COMMAND_BUFFER_SERVICE_SHADER_MANAGER_H_