namespace Dali::Graphics::GLES
{
Buffer::Buffer(const Graphics::BufferCreateInfo& createInfo, Graphics::EglGraphicsController& controller)
-: BufferResource(createInfo, controller)
+: BufferResource(createInfo, controller),
+ mCpuAllocated(false),
+ mTransient(false)
{
// Check if buffer is CPU allocated
if(((0 | BufferUsage::UNIFORM_BUFFER) & mCreateInfo.usage) &&
mTransient = true;
}
+ // Check the target enum for this buffer
+ if((0 | BufferUsage::UNIFORM_BUFFER) & mCreateInfo.usage)
+ {
+ mBufferTarget = GL_UNIFORM_BUFFER;
+ }
+ else if((0 | BufferUsage::INDEX_BUFFER) & mCreateInfo.usage)
+ {
+ mBufferTarget = GL_ELEMENT_ARRAY_BUFFER;
+ }
+ // else if((0 | BufferUsage::VERTEX_BUFFER) & mCreateInfo.usage) default enum : GL_ARRAY_BUFFER
+
controller.AddBuffer(*this);
}
{
gl->GenBuffers(1, &mBufferId);
}
- context->BindBuffer(GL_ARRAY_BUFFER, mBufferId);
- gl->BufferData(GL_ARRAY_BUFFER, GLsizeiptr(mCreateInfo.size), nullptr, GL_STATIC_DRAW);
+ context->BindBuffer(mBufferTarget, mBufferId);
+ gl->BufferData(mBufferTarget, GLsizeiptr(mCreateInfo.size), nullptr, GL_STATIC_DRAW);
}
void Buffer::DestroyResource()
// EXTERNAL INCLUDES
#include <dali/graphics-api/graphics-buffer-create-info.h>
#include <dali/graphics-api/graphics-buffer.h>
+#include <dali/graphics-api/graphics-command-buffer.h> ///< for Graphics::ClearValue
+#include <dali/graphics-api/graphics-types.h>
// INTERNAL INCLUDES
#include "gles-graphics-resource.h"
+#include "gles-graphics-types.h" ///< for GLenum
namespace Dali::Graphics
{
return mCpuAllocated;
}
+ [[nodiscard]] GLenum GetBufferTarget() const
+ {
+ return mBufferTarget;
+ }
+
private:
void InitializeCPUBuffer();
uint32_t mBufferId{};
void* mBufferPtr{nullptr}; // CPU allocated memory
- bool mCpuAllocated{false};
- bool mTransient{false};
+ GLenum mBufferTarget{GL_ARRAY_BUFFER};
+ bool mCpuAllocated : 1;
+ bool mTransient : 1;
uint32_t mSetForGLRecyclingCount{0u}; ///< If value is not zero, the buffer will recycle
};