mesa: add support for GL_AMD_depth_clamp_separate tokens
authorSagar Ghuge <sagar.ghuge@intel.com>
Tue, 21 Aug 2018 20:40:55 +0000 (13:40 -0700)
committerAnuj Phogat <anuj.phogat@gmail.com>
Tue, 28 Aug 2018 19:57:27 +0000 (12:57 -0700)
_mesa_set_enable() and _mesa_IsEnabled() extended to accept new two
tokens GL_DEPTH_CLAMP_NEAR_AMD and GL_DEPTH_CLAMP_FAR_AMD.

v2: Remove unnecessary parentheses (Marek Olsak)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/enable.c

index 30d275075d5714a46f71a481260f385c565433c5..bd3e493da536f5de05101293d3e85175582f6046 100644 (file)
@@ -1017,6 +1017,30 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
          ctx->Transform.DepthClampFar = state;
          break;
 
+      case GL_DEPTH_CLAMP_NEAR_AMD:
+         if (!_mesa_is_desktop_gl(ctx))
+            goto invalid_enum_error;
+         CHECK_EXTENSION(AMD_depth_clamp_separate, cap);
+         if (ctx->Transform.DepthClampNear == state)
+            return;
+         FLUSH_VERTICES(ctx, ctx->DriverFlags.NewDepthClamp ? 0 :
+                                                           _NEW_TRANSFORM);
+         ctx->NewDriverState |= ctx->DriverFlags.NewDepthClamp;
+         ctx->Transform.DepthClampNear = state;
+         break;
+
+      case GL_DEPTH_CLAMP_FAR_AMD:
+         if (!_mesa_is_desktop_gl(ctx))
+            goto invalid_enum_error;
+         CHECK_EXTENSION(AMD_depth_clamp_separate, cap);
+         if (ctx->Transform.DepthClampFar == state)
+            return;
+         FLUSH_VERTICES(ctx, ctx->DriverFlags.NewDepthClamp ? 0 :
+                                                           _NEW_TRANSFORM);
+         ctx->NewDriverState |= ctx->DriverFlags.NewDepthClamp;
+         ctx->Transform.DepthClampFar = state;
+         break;
+
       case GL_FRAGMENT_SHADER_ATI:
          if (ctx->API != API_OPENGL_COMPAT)
             goto invalid_enum_error;
@@ -1689,6 +1713,18 @@ _mesa_IsEnabled( GLenum cap )
          return ctx->Transform.DepthClampNear ||
                 ctx->Transform.DepthClampFar;
 
+      case GL_DEPTH_CLAMP_NEAR_AMD:
+         if (!_mesa_is_desktop_gl(ctx))
+            goto invalid_enum_error;
+         CHECK_EXTENSION(AMD_depth_clamp_separate);
+         return ctx->Transform.DepthClampNear;
+
+      case GL_DEPTH_CLAMP_FAR_AMD:
+         if (!_mesa_is_desktop_gl(ctx))
+            goto invalid_enum_error;
+         CHECK_EXTENSION(AMD_depth_clamp_separate);
+         return ctx->Transform.DepthClampFar;
+
       case GL_FRAGMENT_SHADER_ATI:
          if (ctx->API != API_OPENGL_COMPAT)
             goto invalid_enum_error;