Blame SOURCES/0002-add-GL_ARB_shader_texture_lod-support.patch

525926
From 78636289b073d67209a20145ef0dc003f2d77db6 Mon Sep 17 00:00:00 2001
525926
From: Sian Cao <yinshuiboy@gmail.com>
525926
Date: Tue, 12 Apr 2016 11:36:51 +0800
525926
Subject: Add GL_ARB_shader_texture_lod support
525926
525926
The patch is used to do lod biased texturing. I can achieve
525926
faster blurring of images instead of using large blur radius.
525926
525926
Signed-off-by:
525926
 Sian Cao <yinshuiboy@gmail.com>: initial
525926
525926
---
525926
 cogl/cogl-context.h                |  1 +
525926
 cogl/cogl-glsl-shader.c            | 13 +++++++++++--
525926
 cogl/cogl-types.h                  |  3 ++-
525926
 cogl/driver/gl/gl/cogl-driver-gl.c |  7 +++++++
525926
 4 files changed, 21 insertions(+), 3 deletions(-)
525926
525926
diff --git a/cogl/cogl-context.h b/cogl/cogl-context.h
525926
index 07badeb..261ce49 100644
525926
--- a/cogl/cogl-context.h
525926
+++ b/cogl/cogl-context.h
525926
@@ -290,6 +290,7 @@ typedef enum _CoglFeatureID
525926
   COGL_FEATURE_ID_PER_VERTEX_POINT_SIZE,
525926
   COGL_FEATURE_ID_TEXTURE_RG,
525926
   COGL_FEATURE_ID_BUFFER_AGE,
525926
+  COGL_FEATURE_ID_SHADER_TEXTURE_LOD,
525926
 
525926
   /*< private >*/
525926
   _COGL_N_FEATURE_IDS   /*< skip >*/
525926
diff --git a/cogl/cogl-glsl-shader.c b/cogl/cogl-glsl-shader.c
525926
index 196e0c7..4fb0eb5 100644
525926
--- a/cogl/cogl-glsl-shader.c
525926
+++ b/cogl/cogl-glsl-shader.c
525926
@@ -87,8 +87,8 @@ _cogl_glsl_shader_set_source_with_boilerplate (CoglContext *ctx,
525926
   const char *vertex_boilerplate;
525926
   const char *fragment_boilerplate;
525926
 
525926
-  const char **strings = g_alloca (sizeof (char *) * (count_in + 4));
525926
-  GLint *lengths = g_alloca (sizeof (GLint) * (count_in + 4));
525926
+  const char **strings = g_alloca (sizeof (char *) * (count_in + 5));
525926
+  GLint *lengths = g_alloca (sizeof (GLint) * (count_in + 5));
525926
   char *version_string;
525926
   int count = 0;
525926
 
525926
@@ -111,6 +111,15 @@ _cogl_glsl_shader_set_source_with_boilerplate (CoglContext *ctx,
525926
       lengths[count++] = sizeof (texture_3d_extension) - 1;
525926
     }
525926
 
525926
+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_GL_PROGRAMMABLE) &&
525926
+      cogl_has_feature (ctx, COGL_FEATURE_ID_SHADER_TEXTURE_LOD))
525926
+    {
525926
+      static const char shader_texture_lod_ext[] =
525926
+        "#extension GL_ARB_shader_texture_lod : enable\n";
525926
+      strings[count] = shader_texture_lod_ext;
525926
+      lengths[count++] = sizeof (shader_texture_lod_ext) - 1;
525926
+    }
525926
+
525926
   if (shader_gl_type == GL_VERTEX_SHADER)
525926
     {
525926
       strings[count] = vertex_boilerplate;
525926
diff --git a/cogl/cogl-types.h b/cogl/cogl-types.h
525926
index 6accf8d..77964c6 100644
525926
--- a/cogl/cogl-types.h
525926
+++ b/cogl/cogl-types.h
525926
@@ -470,7 +470,8 @@ typedef enum
525926
   COGL_FEATURE_MAP_BUFFER_FOR_READ    = (1 << 21),
525926
   COGL_FEATURE_MAP_BUFFER_FOR_WRITE   = (1 << 22),
525926
   COGL_FEATURE_ONSCREEN_MULTIPLE      = (1 << 23),
525926
-  COGL_FEATURE_DEPTH_TEXTURE          = (1 << 24)
525926
+  COGL_FEATURE_DEPTH_TEXTURE          = (1 << 24),
525926
+  COGL_FEATURE_SHADER_TEXTURE_LOD     = (1 << 25)
525926
 } CoglFeatureFlags;
525926
 
525926
 /**
525926
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c
525926
index 716d1dd..f305b6a 100644
525926
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
525926
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
525926
@@ -568,6 +568,13 @@ _cogl_driver_update_features (CoglContext *ctx,
525926
                       COGL_FEATURE_ID_TEXTURE_RECTANGLE, TRUE);
525926
     }
525926
 
525926
+  if (_cogl_check_extension ("GL_ARB_shader_texture_lod", gl_extensions))
525926
+    {
525926
+      flags |= COGL_FEATURE_SHADER_TEXTURE_LOD;
525926
+      COGL_FLAGS_SET (ctx->features,
525926
+                      COGL_FEATURE_ID_SHADER_TEXTURE_LOD, TRUE);
525926
+    }
525926
+
525926
   if (ctx->glTexImage3D)
525926
     {
525926
       flags |= COGL_FEATURE_TEXTURE_3D;
525926
-- 
525926
2.9.5
525926