+ break;
case EXTRA_GLSL_130:
api_check = GL_TRUE;
if (ctx->Const.GLSLVersion >= 130)
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 41cb2c1..a63aba7 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -798,6 +798,10 @@ descriptor=[
[ "MIN_FRAGMENT_INTERPOLATION_OFFSET",
"CONTEXT_FLOAT(Const.MinFragmentInterpolationOffset), extra_ARB_gpu_shader5" ],
[ "MAX_FRAGMENT_INTERPOLATION_OFFSET",
"CONTEXT_FLOAT(Const.MaxFragmentInterpolationOffset), extra_ARB_gpu_shader5" ],
[ "FRAGMENT_INTERPOLATION_OFFSET_BITS",
"CONST(FRAGMENT_INTERPOLATION_OFFSET_BITS), extra_ARB_gpu_shader5" ],
+
+# GL_ARB_cull_distance
+ [ "MAX_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes),
extra_ARB_cull_distance" ],
+ [ "MAX_COMBINED_CLIP_AND_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes),
extra_ARB_cull_distance" ],
]},
# Enums restricted to OpenGL Core profile
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 8342517..6425c06 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -236,6 +236,8 @@ typedef enum
VARYING_SLOT_CLIP_VERTEX, /* Does not appear in FS */
VARYING_SLOT_CLIP_DIST0,
VARYING_SLOT_CLIP_DIST1,
+ VARYING_SLOT_CULL_DIST0,
+ VARYING_SLOT_CULL_DIST1,
VARYING_SLOT_PRIMITIVE_ID, /* Does not appear in VS */
VARYING_SLOT_LAYER, /* Appears as VS or GS output */
VARYING_SLOT_VIEWPORT, /* Appears as VS or GS output */
@@ -272,6 +274,8 @@ typedef enum
#define VARYING_BIT_CLIP_VERTEX BITFIELD64_BIT(VARYING_SLOT_CLIP_VERTEX)
#define VARYING_BIT_CLIP_DIST0 BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST0)
#define VARYING_BIT_CLIP_DIST1 BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST1)
+#define VARYING_BIT_CULL_DIST0 BITFIELD64_BIT(VARYING_SLOT_CULL_DIST0)
+#define VARYING_BIT_CULL_DIST1 BITFIELD64_BIT(VARYING_SLOT_CULL_DIST1)
#define VARYING_BIT_PRIMITIVE_ID BITFIELD64_BIT(VARYING_SLOT_PRIMITIVE_ID)
#define VARYING_BIT_LAYER BITFIELD64_BIT(VARYING_SLOT_LAYER)
#define VARYING_BIT_VIEWPORT BITFIELD64_BIT(VARYING_SLOT_VIEWPORT)
@@ -2111,8 +2115,7 @@ struct gl_program
* For vertex and geometry shaders, true if the program uses the
* gl_ClipDistance output. Ignored for fragment shaders.
*/
- GLboolean UsesClipDistanceOut;
-
+ GLboolean UsesClipCullDistanceOut;
/** Named parameters, constants, etc. from program text */
struct gl_program_parameter_list *Parameters;
@@ -2697,9 +2700,9 @@ struct gl_shader_program
* True if gl_ClipDistance is written to. Copied into
* gl_geometry_program by _mesa_copy_linked_program_data().
*/
- GLboolean UsesClipDistance;
- GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or
- 0 if not present. */
+ GLboolean UsesClipCullDistance;
+ GLuint ClipCullDistanceArraySize; /**< Size of the gl_ClipDistance array,
+ or 0 if not present. */
bool UsesEndPrimitive;
bool UsesStreams;
} Geom;
@@ -2710,9 +2713,9 @@ struct gl_shader_program
* True if gl_ClipDistance is written to. Copied into gl_vertex_program
* by _mesa_copy_linked_program_data().
*/
- GLboolean UsesClipDistance;
- GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or
- 0 if not present. */
+ GLboolean UsesClipCullDistance;
+ GLuint ClipCullDistanceArraySize; /**< Size of the gl_ClipDistance array,
+ or 0 if not present. */
} Vert;
/**
@@ -2744,7 +2747,7 @@ struct gl_shader_program
* Size of the gl_ClipDistance array that is output from the last pipeline
* stage before the fragment shader.
*/
- unsigned LastClipDistanceArraySize;
+ unsigned LastClipCullDistanceArraySize;
unsigned NumUniformBlocks;
struct gl_uniform_block *UniformBlocks;
@@ -3617,6 +3620,7 @@ struct gl_extensions
GLboolean ARB_conditional_render_inverted;
GLboolean ARB_conservative_depth;
GLboolean ARB_copy_image;
+ GLboolean ARB_cull_distance;
GLboolean ARB_depth_buffer_float;
GLboolean ARB_depth_clamp;
GLboolean ARB_depth_texture;
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index a04b287..7b26173 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -1942,7 +1942,7 @@ _mesa_copy_linked_program_data(gl_shader_stage type,
{
switch (type) {
case MESA_SHADER_VERTEX:
- dst->UsesClipDistanceOut = src->Vert.UsesClipDistance;
+ dst->UsesClipCullDistanceOut = src->Vert.UsesClipCullDistance;
break;
case MESA_SHADER_GEOMETRY: {
struct gl_geometry_program *dst_gp = (struct gl_geometry_program *) dst;
@@ -1951,7 +1951,7 @@ _mesa_copy_linked_program_data(gl_shader_stage type,
dst_gp->Invocations = src->Geom.Invocations;
dst_gp->InputType = src->Geom.InputType;
dst_gp->OutputType = src->Geom.OutputType;
- dst->UsesClipDistanceOut = src->Geom.UsesClipDistance;
+ dst->UsesClipCullDistanceOut = src->Geom.UsesClipCullDistance;
dst_gp->UsesEndPrimitive = src->Geom.UsesEndPrimitive;
dst_gp->UsesStreams = src->Geom.UsesStreams;
}
diff --git a/src/mesa/main/tests/enum_strings.cpp
b/src/mesa/main/tests/enum_strings.cpp
index dc5fe75..959db15 100644
--- a/src/mesa/main/tests/enum_strings.cpp
+++ b/src/mesa/main/tests/enum_strings.cpp
@@ -789,6 +789,8 @@ const struct enum_info everything[] = {
{ 0x8261, "GL_NO_RESET_NOTIFICATION_ARB" },
{ 0x826E, "GL_MAX_UNIFORM_LOCATIONS" },
{ 0x82DF, "GL_TEXTURE_IMMUTABLE_LEVELS" },
+ { 0x82F9, "GL_MAX_CULL_DISTANCES" },
+ { 0x82FA, "GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES" },
{ 0x8362, "GL_UNSIGNED_BYTE_2_3_3_REV" },
{ 0x8363, "GL_UNSIGNED_SHORT_5_6_5" },
{ 0x8364, "GL_UNSIGNED_SHORT_5_6_5_REV" },
--
2.4.1
_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau