diff options
author | kkinnunen <kkinnunen@nvidia.com> | 2015-12-04 01:36:31 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-04 09:37:12 +0000 |
commit | 8cefb231216c2777281f37a30e3fb8e67513ee2b (patch) | |
tree | 2d0163eed0729e5f7a8fb55fb03b034eddcb5305 /gpu/command_buffer/service/shader_manager.h | |
parent | 91db68e8cb2080d1e9e07858efea3f7e198112a9 (diff) | |
download | chromium_src-8cefb231216c2777281f37a30e3fb8e67513ee2b.zip chromium_src-8cefb231216c2777281f37a30e3fb8e67513ee2b.tar.gz chromium_src-8cefb231216c2777281f37a30e3fb8e67513ee2b.tar.bz2 |
command_buffer: Implement EXT_blend_func_extended
Implement EXT_blend_func_extended for command buffer ES 2.0 and ES 3.0
contexts.
For the ES 2.0 context, the extension supports dual-source blending with
pre-defined gl_SecondaryFragColorEXT and gl_SecondaryFragDataEXT
variables.
Currently EXT_blend_func_extended is only exposed if the service context
supports program interface query. This means OpenGL context or OpenGL
ES 3.1 context. This is to simplify the unit test expectation conditions.
Theoretically also ES 2.0 and ES 3.0 service contexts could support
EXT_blend_func_extended, but probably there will never be such a driver.
BUG=506765
Review URL: https://codereview.chromium.org/1309743005
Cr-Commit-Position: refs/heads/master@{#363175}
Diffstat (limited to 'gpu/command_buffer/service/shader_manager.h')
-rw-r--r-- | gpu/command_buffer/service/shader_manager.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/shader_manager.h b/gpu/command_buffer/service/shader_manager.h index 3288bff..1869371 100644 --- a/gpu/command_buffer/service/shader_manager.h +++ b/gpu/command_buffer/service/shader_manager.h @@ -88,6 +88,8 @@ class GPU_EXPORT Shader : public base::RefCounted<Shader> { const sh::Varying* GetVaryingInfo(const std::string& name) const; const sh::InterfaceBlock* GetInterfaceBlockInfo( const std::string& name) const; + const sh::OutputVariable* GetOutputVariableInfo( + const std::string& name) const; // If the original_name is not found, return NULL. const std::string* GetAttribMappedName( @@ -105,6 +107,10 @@ class GPU_EXPORT Shader : public base::RefCounted<Shader> { const std::string* GetInterfaceBlockMappedName( const std::string& original_name) const; + // If the original_name is not found, return NULL. + const std::string* GetOutputVariableMappedName( + const std::string& original_name) const; + // If the hashed_name is not found, return NULL. const std::string* GetOriginalNameFromHashedName( const std::string& hashed_name) const; @@ -144,6 +150,10 @@ class GPU_EXPORT Shader : public base::RefCounted<Shader> { return varying_map_; } + const OutputVariableList& output_variable_list() const { + return output_variable_list_; + } + // Used by program cache. const InterfaceBlockMap& interface_block_map() const { return interface_block_map_; @@ -177,6 +187,12 @@ class GPU_EXPORT Shader : public base::RefCounted<Shader> { uniform_map_[uniform.mappedName] = uniform; } + void set_output_variable_list( + const OutputVariableList& output_variable_list) { + // copied because cache might be cleared + output_variable_list_ = output_variable_list; + } + private: friend class base::RefCounted<Shader>; friend class ShaderManager; @@ -237,6 +253,7 @@ class GPU_EXPORT Shader : public base::RefCounted<Shader> { UniformMap uniform_map_; VaryingMap varying_map_; InterfaceBlockMap interface_block_map_; + OutputVariableList output_variable_list_; // The name hashing info when the shader was last compiled. NameMap name_map_; |