Managed Unified Uniform Buffer 40/258240/6 devel/graphics
authorAdam Bialogonski <adam.b@samsung.com>
Thu, 13 May 2021 16:02:02 +0000 (17:02 +0100)
committerAdam Bialogonski <adam.b@samsung.com>
Tue, 25 May 2021 11:25:50 +0000 (12:25 +0100)
Single uniform buffer is created in order to store uniform data for all rendered items.

Change-Id: I6ab17d1652eb9cc0cb8500ea3fd8dcc25d5795d3

automated-tests/src/dali-adaptor/dali-test-suite-utils/test-graphics-buffer.cpp
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-graphics-buffer.h
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-graphics-controller.cpp
dali/internal/graphics/gles-impl/gles-context.cpp
dali/internal/graphics/gles-impl/gles2-graphics-memory.cpp
dali/internal/graphics/gles-impl/gles3-graphics-memory.cpp

index d8a1b1a..21eecf4 100644 (file)
@@ -80,14 +80,15 @@ GLenum TestGraphicsBuffer::GetTarget()
   return target;
 }
 
-void TestGraphicsBuffer::BindAsUniformBuffer(const TestGraphicsProgram* program) const
+void TestGraphicsBuffer::BindAsUniformBuffer(const TestGraphicsProgram* program, const Dali::UniformBufferBindingDescriptor& uboBinding) const
 {
   auto* reflection = static_cast<const TestGraphicsReflection*>(&program->GetReflection());
 
   Graphics::UniformBlockInfo uboInfo{};
   reflection->GetUniformBlock(0, uboInfo);
 
-  auto* data = memory.data();
+  auto  offset = uboBinding.offset;
+  auto* data   = memory.data() + offset;
 
   for(const auto& member : uboInfo.members)
   {
index 87c9f87..1dc2715 100644 (file)
@@ -26,6 +26,7 @@
 namespace Dali
 {
 class TestGraphicsProgram;
+class UniformBufferBindingDescriptor;
 class TestGraphicsBuffer : public Graphics::Buffer
 {
 public:
@@ -40,7 +41,7 @@ public:
     return true;
   }
 
-  void BindAsUniformBuffer(const TestGraphicsProgram* program) const;
+  void BindAsUniformBuffer(const TestGraphicsProgram* program, const Dali::UniformBufferBindingDescriptor& uboBinding) const;
 
   TraceCallStack&            mCallStack;
   TestGlAbstraction&         mGl;
index 517463f..cbdd5dd 100644 (file)
@@ -604,7 +604,7 @@ void TestGraphicsController::ProcessCommandBuffer(TestGraphicsCommandBuffer& com
         auto  buffer   = bindings.standaloneUniformsBufferBinding;
 
         // based on reflection, issue gl calls
-        buffer.buffer->BindAsUniformBuffer(static_cast<const TestGraphicsProgram*>(currentPipeline->programState.program));
+        buffer.buffer->BindAsUniformBuffer(static_cast<const TestGraphicsProgram*>(currentPipeline->programState.program), bindings.standaloneUniformsBufferBinding);
         break;
       }
       case CommandType::BIND_SAMPLERS:
index 7d04067..974869a 100644 (file)
@@ -331,7 +331,7 @@ void Context::ResolveStandaloneUniforms()
 
   auto extraInfos = reflection.GetStandaloneUniformExtraInfo();
 
-  const auto ptr = reinterpret_cast<const char*>(mImpl->mCurrentStandaloneUBOBinding.buffer->GetCPUAllocatedAddress());
+  const auto ptr = reinterpret_cast<const char*>(mImpl->mCurrentStandaloneUBOBinding.buffer->GetCPUAllocatedAddress()) + mImpl->mCurrentStandaloneUBOBinding.offset;
 
   for(const auto& info : extraInfos)
   {
index a514a34..4c2e45c 100644 (file)
@@ -45,7 +45,7 @@ Memory2::Memory2(const Graphics::MapTextureInfo& mapInfo, EglGraphicsController&
 
 Memory2::~Memory2()
 {
-  //Unlock(true);
+  Unlock(true);
 }
 
 void* Memory2::LockRegion(uint32_t offset, uint32_t size)
@@ -82,7 +82,6 @@ void Memory2::Unlock(bool flush)
     auto buffer = static_cast<GLES::Buffer*>(mMapBufferInfo.buffer);
     if(!buffer->IsCPUAllocated())
     {
-
       buffer->Bind(BufferUsage::VERTEX_BUFFER);
       gl->BufferSubData(GL_ARRAY_BUFFER, mMapBufferInfo.offset, mMapBufferInfo.size, mMappedPointer);
     }
index 3fb5da4..8b3908d 100644 (file)
@@ -57,8 +57,8 @@ void* Memory3::LockRegion(uint32_t offset, uint32_t size)
 
     if(buffer->IsCPUAllocated())
     {
-      using Ptr = char*;
-      return Ptr(buffer->GetCPUAllocatedAddress()) + offset;
+      using Ptr      = char*;
+      mMappedPointer = Ptr(buffer->GetCPUAllocatedAddress()) + offset;
     }
     else
     {
@@ -92,6 +92,8 @@ void Memory3::Unlock(bool flush)
   {
     Flush();
   }
+
+  mMappedPointer = nullptr;
 }
 
 void Memory3::Flush()