Bind uniform buffers using UBO 68/254368/5
authorRichard Huang <r.huang@samsung.com>
Mon, 1 Mar 2021 19:06:14 +0000 (19:06 +0000)
committerAdam Bialogonski <adam.b@samsung.com>
Tue, 9 Mar 2021 11:13:49 +0000 (11:13 +0000)
Change-Id: I063b0f22e5f7ed3bbb8f1c159944eddadef128e2

dali/internal/graphics/gles-impl/gles-graphics-command-buffer.h
dali/internal/graphics/gles-impl/gles-graphics-program.cpp
dali/internal/graphics/gles-impl/gles-graphics-types.h

index 614b066..6601fc5 100644 (file)
@@ -40,6 +40,7 @@ enum class CommandType
   BIND_SAMPLERS,
   BIND_VERTEX_BUFFERS,
   BIND_INDEX_BUFFER,
+  BIND_UNIFORM_BUFFER,
   BIND_PIPELINE,
   DRAW,
   DRAW_INDEXED,
@@ -137,6 +138,11 @@ struct Command
         bindIndexBuffer = rhs.bindIndexBuffer;
         break;
       }
+      case CommandType::BIND_UNIFORM_BUFFER:
+      {
+        bindUniformBuffers = std::move(rhs.bindUniformBuffers);
+        break;
+      }
       case CommandType::BIND_SAMPLERS:
       {
         bindSamplers = std::move(rhs.bindSamplers);
@@ -206,6 +212,12 @@ struct Command
 
     struct
     {
+      using Binding = GLES::UniformBufferBindingDescriptor;
+      std::vector<Binding> uniformBufferBindings;
+    } bindUniformBuffers;
+
+    struct
+    {
       const GLES::Pipeline* pipeline{nullptr};
     } bindPipeline;
 
@@ -249,6 +261,17 @@ public:
 
   void BindUniformBuffers(const std::vector<Graphics::UniformBufferBinding>& bindings) override
   {
+    printf("BindUniformBuffers: bindings.size(): %lu\n", bindings.size());
+
+    mCommands.emplace_back();
+    mCommands.back().type       = CommandType::BIND_UNIFORM_BUFFER;
+    auto& uniformBufferBindings = mCommands.back().bindUniformBuffers.uniformBufferBindings;
+
+    for(auto i = 0u; i < bindings.size(); ++i)
+    {
+      const auto& binding = bindings[i];
+      printf("bindings[%u]->buffer: %p, dataSize: %u, offset: %u, binding: %u\n", i, binding.buffer, binding.dataSize, binding.offset, binding.binding);
+    }
   }
 
   void BindPipeline(const Graphics::Pipeline& pipeline) override
index 2e28eca..9171203 100644 (file)
@@ -113,7 +113,6 @@ bool ProgramImpl::Create()
   // Initialize reflection
   mImpl->reflection->BuildUniformReflection();
   mImpl->reflection->BuildVertexAttributeReflection();
-  mImpl->reflection->BuildUniformBlockReflection();
 
   return true;
 }
index 4246adf..b59fed1 100644 (file)
@@ -1270,6 +1270,16 @@ struct IndexBufferBindingDescriptor
 };
 
 /**
+ * @brief Descriptor of uniform buffer binding within
+ * command buffer.
+ */
+struct UniformBufferBindingDescriptor
+{
+  const GLES::Buffer* buffer{nullptr};
+  uint32_t            offset{0u};
+};
+
+/**
  * @brief The descriptor of draw call
  */
 struct DrawCallDescriptor