Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/gpu/opengl/gl_shader_interface.cc')
-rw-r--r--source/blender/gpu/opengl/gl_shader_interface.cc133
1 files changed, 0 insertions, 133 deletions
diff --git a/source/blender/gpu/opengl/gl_shader_interface.cc b/source/blender/gpu/opengl/gl_shader_interface.cc
index 9dd7b1d57c3..9900a4e0766 100644
--- a/source/blender/gpu/opengl/gl_shader_interface.cc
+++ b/source/blender/gpu/opengl/gl_shader_interface.cc
@@ -25,9 +25,7 @@
#include "BLI_bitmap.h"
-#include "gl_backend.hh"
#include "gl_batch.hh"
-#include "gl_context.hh"
#include "gl_shader_interface.hh"
@@ -325,137 +323,6 @@ GLShaderInterface::GLShaderInterface(GLuint program)
this->sort_inputs();
}
-GLShaderInterface::GLShaderInterface(GLuint program, const shader::ShaderCreateInfo &info)
-{
- using namespace blender::gpu::shader;
-
- attr_len_ = info.vertex_inputs_.size();
- uniform_len_ = info.push_constants_.size();
- ubo_len_ = 0;
- ssbo_len_ = 0;
-
- Vector<ShaderCreateInfo::Resource> all_resources;
- all_resources.extend(info.pass_resources_);
- all_resources.extend(info.batch_resources_);
-
- for (ShaderCreateInfo::Resource &res : all_resources) {
- switch (res.bind_type) {
- case ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER:
- ubo_len_++;
- break;
- case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
- ssbo_len_++;
- break;
- case ShaderCreateInfo::Resource::BindType::SAMPLER:
- uniform_len_++;
- break;
- case ShaderCreateInfo::Resource::BindType::IMAGE:
- uniform_len_++;
- break;
- }
- }
-
- BLI_assert_msg(ubo_len_ <= 16, "enabled_ubo_mask_ is uint16_t");
-
- int input_tot_len = attr_len_ + ubo_len_ + uniform_len_ + ssbo_len_;
- inputs_ = (ShaderInput *)MEM_callocN(sizeof(ShaderInput) * input_tot_len, __func__);
- ShaderInput *input = inputs_;
-
- name_buffer_ = (char *)MEM_mallocN(info.interface_names_size_, "name_buffer");
- uint32_t name_buffer_offset = 0;
-
- /* Attributes */
- for (const ShaderCreateInfo::VertIn &attr : info.vertex_inputs_) {
- copy_input_name(input, attr.name, name_buffer_, name_buffer_offset);
- if (true || !GLContext::explicit_location_support) {
- input->location = input->binding = glGetAttribLocation(program, attr.name.c_str());
- }
- else {
- input->location = input->binding = attr.index;
- }
- enabled_attr_mask_ |= (1 << input->location);
- input++;
- }
-
- /* Uniform Blocks */
- for (const ShaderCreateInfo::Resource &res : all_resources) {
- if (res.bind_type == ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER) {
- copy_input_name(input, res.uniformbuf.name, name_buffer_, name_buffer_offset);
- if (true || !GLContext::explicit_location_support) {
- input->location = glGetUniformBlockIndex(program, res.uniformbuf.name.c_str());
- glUniformBlockBinding(program, input->location, res.slot);
- }
- input->binding = res.slot;
- enabled_ubo_mask_ |= (1 << input->binding);
- input++;
- }
- }
-
- /* Uniforms & samplers & images */
- for (const ShaderCreateInfo::Resource &res : all_resources) {
- if (res.bind_type == ShaderCreateInfo::Resource::BindType::SAMPLER) {
- copy_input_name(input, res.sampler.name, name_buffer_, name_buffer_offset);
- /* Until we make use of explicit uniform location or eliminate all
- * sampler manually changing. */
- if (true || !GLContext::explicit_location_support) {
- input->location = glGetUniformLocation(program, res.sampler.name.c_str());
- glUniform1i(input->location, res.slot);
- }
- input->binding = res.slot;
- enabled_tex_mask_ |= (1 << input->binding);
- input++;
- }
- else if (res.bind_type == ShaderCreateInfo::Resource::BindType::IMAGE) {
- copy_input_name(input, res.image.name, name_buffer_, name_buffer_offset);
- /* Until we make use of explicit uniform location. */
- if (true || !GLContext::explicit_location_support) {
- input->location = glGetUniformLocation(program, res.image.name.c_str());
- glUniform1i(input->location, res.slot);
- }
- input->binding = res.slot;
- enabled_ima_mask_ |= (1 << input->binding);
- input++;
- }
- }
- for (const ShaderCreateInfo::PushConst &uni : info.push_constants_) {
- copy_input_name(input, uni.name, name_buffer_, name_buffer_offset);
- /* Until we make use of explicit uniform location. */
- if (true || !GLContext::explicit_location_support) {
- input->location = glGetUniformLocation(program, uni.name.c_str());
- }
- input->binding = -1;
- input++;
- }
-
- /* SSBOs */
- for (const ShaderCreateInfo::Resource &res : all_resources) {
- if (res.bind_type == ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER) {
- copy_input_name(input, res.storagebuf.name, name_buffer_, name_buffer_offset);
- input->location = input->binding = res.slot;
- enabled_ubo_mask_ |= (1 << input->binding);
- input++;
- }
- }
-
- /* Builtin Uniforms */
- for (int32_t u_int = 0; u_int < GPU_NUM_UNIFORMS; u_int++) {
- GPUUniformBuiltin u = static_cast<GPUUniformBuiltin>(u_int);
- const ShaderInput *uni = this->uniform_get(builtin_uniform_name(u));
- builtins_[u] = (uni != nullptr) ? uni->location : -1;
- }
-
- /* Builtin Uniforms Blocks */
- for (int32_t u_int = 0; u_int < GPU_NUM_UNIFORM_BLOCKS; u_int++) {
- GPUUniformBlockBuiltin u = static_cast<GPUUniformBlockBuiltin>(u_int);
- const ShaderInput *block = this->ubo_get(builtin_uniform_block_name(u));
- builtin_blocks_[u] = (block != nullptr) ? block->binding : -1;
- }
-
- this->sort_inputs();
-
- // this->debug_print();
-}
-
GLShaderInterface::~GLShaderInterface()
{
for (auto *ref : refs_) {