// BGR not supported in GLES
case Graphics::Format::B8G8R8_UNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_SNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_USCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_SSCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::B8G8R8_SRGB:
{
Assign(0, 0);
// ABGR not supported
case Graphics::Format::A8B8G8R8_UNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_SNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_USCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_SSCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_UINT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_SINT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A8B8G8R8_SRGB_PACK32:
{
Assign(0, 0);
// TBD which of the formats are supported
case Graphics::Format::A2R10G10B10_UNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2R10G10B10_SNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2R10G10B10_USCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2R10G10B10_SSCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2R10G10B10_UINT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2R10G10B10_SINT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_UNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_SNORM_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_USCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_SSCALED_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_UINT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::A2B10G10R10_SINT_PACK32:
{
Assign(0, 0);
break;
}
case Graphics::Format::R16_UNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_SNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_USCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_SSCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_UNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_SNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_USCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_SSCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_UNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_SNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_USCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_SSCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16_SINT:
{
Assign(0, 0);
break;
}
case Graphics::Format::R16G16B16A16_UNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_SNORM:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_USCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_SSCALED:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R16G16B16A16_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32B32_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32B32_SINT:
{
Assign(0, 0);
break;
}
case Graphics::Format::R32G32B32A32_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32B32A32_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R32G32B32A32_SFLOAT:
{
Assign(0, 0);
break;
}
case Graphics::Format::R64_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64_SFLOAT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64A64_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64A64_SINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::R64G64B64A64_SFLOAT:
{
Assign(0, 0);
break;
}
case Graphics::Format::B10G11R11_UFLOAT_PACK32:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::E5B9G9R9_UFLOAT_PACK32:
{
Assign(0, 0);
break;
}
case Graphics::Format::S8_UINT:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::D16_UNORM_S8_UINT:
{
Assign(0, 0);
break;
}
case Graphics::Format::BC1_RGB_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC1_RGB_SRGB_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC1_RGBA_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC1_RGBA_SRGB_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC2_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC2_SRGB_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC3_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC3_SRGB_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC4_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC4_SNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC5_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC5_SNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC6H_UFLOAT_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC6H_SFLOAT_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC7_UNORM_BLOCK:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::BC7_SRGB_BLOCK:
{
Assign(0, 0);
}
case Graphics::Format::ETC2_R8G8B8A8_UNORM_BLOCK:
{
- Assign(0, 0);
+ Assign(GL_COMPRESSED_RGBA8_ETC2_EAC, 0);
break;
}
case Graphics::Format::ETC2_R8G8B8A8_SRGB_BLOCK:
{
- Assign(0, 0);
+ Assign(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, 0);
break;
}
case Graphics::Format::EAC_R11_UNORM_BLOCK:
break;
}
case Graphics::Format::PVRTC2_2BPP_UNORM_BLOCK_IMG:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::PVRTC2_4BPP_UNORM_BLOCK_IMG:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::PVRTC1_2BPP_SRGB_BLOCK_IMG:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::PVRTC1_4BPP_SRGB_BLOCK_IMG:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::PVRTC2_2BPP_SRGB_BLOCK_IMG:
- {
- Assign(0, 0);
- break;
- }
case Graphics::Format::PVRTC2_4BPP_SRGB_BLOCK_IMG:
{
Assign(0, 0);
{
DRAW,
DRAW_INDEXED,
- DRAW_INDEXED_INDIRECT
+ DRAW_INDEXED_INDIRECT,
};
Type type{}; ///< Type of the draw call
format = GL_UNSIGNED_SHORT;
break;
}
+ case Format::R32_UINT:
+ {
+ format = GL_UNSIGNED_INT;
+ break;
+ }
default:
{
format = 0;
glBlendOp = GL_MAX;
break;
}
+ case Graphics::BlendOp::MULTIPLY:
+ {
+ glBlendOp = GL_MULTIPLY;
+ break;
+ }
+ case Graphics::BlendOp::SCREEN:
+ {
+ glBlendOp = GL_SCREEN;
+ break;
+ }
+ case Graphics::BlendOp::OVERLAY:
+ {
+ glBlendOp = GL_OVERLAY;
+ break;
+ }
+ case Graphics::BlendOp::DARKEN:
+ {
+ glBlendOp = GL_DARKEN;
+ break;
+ }
+ case Graphics::BlendOp::LIGHTEN:
+ {
+ glBlendOp = GL_LIGHTEN;
+ break;
+ }
+ case Graphics::BlendOp::COLOR_DODGE:
+ {
+ glBlendOp = GL_COLORDODGE;
+ break;
+ }
+ case Graphics::BlendOp::COLOR_BURN:
+ {
+ glBlendOp = GL_COLORBURN;
+ break;
+ }
+ case Graphics::BlendOp::HARD_LIGHT:
+ {
+ glBlendOp = GL_HARDLIGHT;
+ break;
+ }
+ case Graphics::BlendOp::SOFT_LIGHT:
+ {
+ glBlendOp = GL_SOFTLIGHT;
+ break;
+ }
+ case Graphics::BlendOp::DIFFERENCE:
+ {
+ glBlendOp = GL_DIFFERENCE;
+ break;
+ }
+ case Graphics::BlendOp::EXCLUSION:
+ {
+ glBlendOp = GL_EXCLUSION;
+ break;
+ }
+ case Graphics::BlendOp::HUE:
+ {
+ glBlendOp = GL_HSL_HUE;
+ break;
+ }
+ case Graphics::BlendOp::SATURATION:
+ {
+ glBlendOp = GL_HSL_SATURATION;
+ break;
+ }
+ case Graphics::BlendOp::COLOR:
+ {
+ glBlendOp = GL_HSL_COLOR;
+ break;
+ }
+ case Graphics::BlendOp::LUMINOSITY:
+ {
+ glBlendOp = GL_HSL_LUMINOSITY;
+ break;
+ }
}
}
};
/**
+ * This class stores indirect pointer, used by the CommandBuffer
+ * to store data allocated within resizeable pool
+ */
+template<class T>
+struct IndirectPtr
+{
+ uint32_t ptr; // relative pointer
+ void** base; // base pointer
+
+ inline T* operator->()
+ {
+ return reinterpret_cast<T*>((reinterpret_cast<uint8_t*>(*base) + ptr));
+ }
+
+ inline T& operator*()
+ {
+ return *reinterpret_cast<T*>((reinterpret_cast<uint8_t*>(*base) + ptr));
+ }
+
+ // Returns indirect pointer casted to requested type
+ T* Ptr() const
+ {
+ auto val = reinterpret_cast<T*>((reinterpret_cast<uint8_t*>(*base) + ptr));
+ return val;
+ }
+
+ inline T& operator[](int index)
+ {
+ return reinterpret_cast<T*>((reinterpret_cast<uint8_t*>(*base) + ptr))[index];
+ }
+
+ // Fake assignment operator for void* type
+ inline IndirectPtr<T>& operator=(void* p)
+ {
+ ptr = 0;
+ base = nullptr;
+ return *this;
+ }
+};
+
+/**
* The descriptor of BeginRenderPass command
*/
struct BeginRenderPassDescriptor
{
- const GLES::RenderPass* renderPass{};
- const GLES::RenderTarget* renderTarget{};
- Rect2D renderArea{};
- std::vector<ClearValue> clearValues{};
+ const GLES::RenderPass* renderPass;
+ const GLES::RenderTarget* renderTarget;
+ Rect2D renderArea;
+ IndirectPtr<ClearValue> clearValues;
+ uint32_t clearValuesCount;
};
} // namespace Dali::Graphics::GLES