[Tizen] Not execute the remove callback
[platform/core/uifw/dali-core.git] / dali / integration-api / gl-abstraction.h
index bffcd67..43ad7df 100644 (file)
@@ -2,7 +2,7 @@
 #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.
@@ -18,6 +18,7 @@
  *
  */
 
+#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.
@@ -87,7 +86,6 @@ using GLsync   = __GLsync*;
 
 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
@@ -96,11 +94,10 @@ namespace Integration
 class GlAbstraction
 {
 protected:
-
   /**
    * Virtual protected destructor, no deletion through this interface
    */
-  virtual ~GlAbstraction() {}
+  virtual ~GlAbstraction() = default;
 
 public:
   /**
@@ -122,13 +119,43 @@ 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.
@@ -136,7 +163,7 @@ public:
   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;
@@ -386,7 +413,8 @@ public:
   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