#define DALI_INTEGRATION_GL_ABSTRACTION_H
/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
+#include <dali/devel-api/rendering/renderer-devel.h>
#include <stdint.h>
/*
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
-
/* OpenGL ES 3.0 */
struct __GLsync;
namespace Dali
{
-
/**
* These types are equivalent to those in the GLES2 API.
* Dali objects should only access GL indirectly, through the Context API.
namespace Integration
{
-
/**
* GlAbstraction is an abstract interface, used to access OpenGL services.
* A concrete implementation must be created for each platform, and provided when creating the
class GlAbstraction
{
protected:
-
/**
* Virtual protected destructor, no deletion through this interface
*/
- virtual ~GlAbstraction() {}
+ virtual ~GlAbstraction() = default;
public:
/**
virtual bool IsSurfacelessContextSupported() const = 0;
/**
+ * Returns current gles can support advanced blend equation
+ * @Return true current gles support advanced blend equation
+ */
+ virtual bool IsAdvancedBlendEquationSupported() = 0;
+
+ /**
+ * Returns current gles can support the blend equation
+ * @Return true current gles support the blend equation
+ */
+ virtual bool IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) = 0;
+
+ /**
+ * Returns shader prefix of shading language version.
+ * @Return shader prefix of shading language version.
+ */
+ virtual std::string GetShaderVersionPrefix() = 0;
+
+ /**
+ * Returns vertex shader prefix including shading language version.
+ * @Return vertex shader prefix including shading language version.
+ */
+ virtual std::string GetVertexShaderPrefix() = 0;
+
+ /**
+ * Returns fragment shader prefix including shading language version and extension information.
+ * @Return fragment shader prefix including shading language version and extension information.
+ */
+ virtual std::string GetFragmentShaderPrefix() = 0;
+
+ /**
* Determine whether to convert pixel format or not.
* @param[in] imageGlFormat GLformat of input image.
* @param[in] textureGlFormat GLformat of Texture.
* @param[in] isSubImage Boolian value for the whether the image is subimage or not
* @return Whether the texture will be convert or not.
*/
- virtual bool TextureRequiresConverting( const GLenum imageGlFormat, const GLenum textureGlFormat, const bool isSubImage ) const = 0;
+ virtual bool TextureRequiresConverting(const GLenum imageGlFormat, const GLenum textureGlFormat, const bool isSubImage) const = 0;
/**
* The number of texture units an implementation supports is implementation dependent, but must be at least 8.
static const unsigned int MIN_TEXTURE_UNIT_LIMIT = 8;
/* OpenGL ES 2.0 */
-
+ // clang-format off
virtual void ActiveTexture (GLenum texture) = 0;
virtual void AttachShader (GLuint program, GLuint shader) = 0;
virtual void BindAttribLocation (GLuint program, GLuint index, const char* name) = 0;
virtual void TexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) = 0;
virtual void TexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = 0;
virtual void GetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) = 0;
-
+ virtual void BlendBarrier (void) = 0;
+ // clang-format on
};
} // namespace Integration