diff options
Diffstat (limited to 'source/blender/gpu/intern/gpu_uniform_buffer_private.hh')
-rw-r--r-- | source/blender/gpu/intern/gpu_uniform_buffer_private.hh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_uniform_buffer_private.hh b/source/blender/gpu/intern/gpu_uniform_buffer_private.hh index e8fc1343eaf..b514b312c11 100644 --- a/source/blender/gpu/intern/gpu_uniform_buffer_private.hh +++ b/source/blender/gpu/intern/gpu_uniform_buffer_private.hh @@ -24,11 +24,18 @@ #include "BLI_sys_types.h" +#include <optional> + +#include "GPU_shader.h" +#include "GPU_uniform_buffer_types.h" + struct GPUUniformBuf; namespace blender { namespace gpu { +class ShaderInterface; + #ifdef DEBUG # define DEBUG_NAME_LEN 64 #else @@ -79,6 +86,21 @@ static inline const UniformBuf *unwrap(const GPUUniformBuf *vert) return reinterpret_cast<const UniformBuf *>(vert); } +class UniformBuiltinStructType { + public: + UniformBuiltinStructType(const GPUUniformBuiltinStructType type); + + GPUUniformBuiltinStructType type; + + bool has_all_builtin_uniforms(const ShaderInterface &interface) const; + + private: + bool has_attribute(const GPUUniformBuiltin builtin_uniform) const; +}; + +std::optional<const GPUUniformBuiltinStructType> find_smallest_uniform_builtin_struct( + const ShaderInterface &interface); + #undef DEBUG_NAME_LEN } // namespace gpu |