diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/main/context.c | 6 | ||||
| -rw-r--r-- | src/mesa/main/getstring.c | 5 | ||||
| -rw-r--r-- | src/mesa/main/texstate.c | 10 | ||||
| -rw-r--r-- | src/mesa/shader/shaderobjects.c | 4 | ||||
| -rw-r--r-- | src/mesa/shader/shaderobjects.h | 18 | ||||
| -rwxr-xr-x | src/mesa/shader/shaderobjects_3dlabs.c | 112 | ||||
| -rwxr-xr-x | src/mesa/shader/shaderobjects_3dlabs.h | 7 | ||||
| -rw-r--r-- | src/mesa/swrast/s_arbshader.c | 5 | ||||
| -rw-r--r-- | src/mesa/swrast/s_arbshader.h | 4 | ||||
| -rw-r--r-- | src/mesa/swrast/s_span.c | 10 | ||||
| -rw-r--r-- | src/mesa/tnl/t_pipeline.h | 2 | ||||
| -rw-r--r-- | src/mesa/tnl/t_vb_arbshader.c | 4 | 
12 files changed, 180 insertions, 7 deletions
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index b30d552362..afe6048c80 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -704,7 +704,9 @@ alloc_shared_state( GLcontext *ctx )     ss->ArrayObjects = _mesa_NewHashTable(); +#if FEATURE_ARB_shader_objects     ss->GL2Objects = _mesa_NewHashTable (); +#endif     ss->Default1D = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_1D);     if (!ss->Default1D) @@ -775,8 +777,10 @@ alloc_shared_state( GLcontext *ctx )     if (ss->ArrayObjects)        _mesa_DeleteHashTable (ss->ArrayObjects); +#if FEATURE_ARB_shader_objects     if (ss->GL2Objects)        _mesa_DeleteHashTable (ss->GL2Objects); +#endif  #if FEATURE_EXT_framebuffer_object     if (ss->FrameBuffers) @@ -929,7 +933,9 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )     _mesa_HashDeleteAll(ss->ArrayObjects, delete_arrayobj_cb, ctx);     _mesa_DeleteHashTable(ss->ArrayObjects); +#if FEATURE_ARB_shader_objects     _mesa_DeleteHashTable(ss->GL2Objects); +#endif  #if FEATURE_EXT_framebuffer_object     _mesa_DeleteHashTable(ss->FrameBuffers); diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c index a741f8310b..fba8e1634f 100644 --- a/src/mesa/main/getstring.c +++ b/src/mesa/main/getstring.c @@ -55,7 +55,10 @@ _mesa_GetString( GLenum name )     static const char *version_1_4 = "1.4 Mesa " MESA_VERSION_STRING;     static const char *version_1_5 = "1.5 Mesa " MESA_VERSION_STRING;     static const char *version_2_0 = "1.5 Mesa " MESA_VERSION_STRING;/*XXX FIX*/ + +#if FEATURE_ARB_shading_language_100     static const char *sl_version_110 = "1.10 Mesa " MESA_VERSION_STRING; +#endif     ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); @@ -144,7 +147,9 @@ _mesa_GetString( GLenum name )           }           /* FALL-THROUGH */  #endif +#if FEATURE_ARB_shading_language_100        error: +#endif        default:           _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" );           return (const GLubyte *) 0; diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index ea3873c380..0687e5760c 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -2894,8 +2894,11 @@ static void  update_texture_state( GLcontext *ctx )  {     GLuint unit; + +#if FEATURE_ARB_fragment_shader     struct gl2_program_intf **prog = ctx->ShaderObjects.CurrentProgram;     GLbitfield progteximageusage[MAX_TEXTURE_IMAGE_UNITS]; +#endif     ctx->NewState |= _NEW_TEXTURE; /* TODO: only set this if there are   				   * actual changes.  @@ -2906,6 +2909,7 @@ update_texture_state( GLcontext *ctx )     ctx->Texture._TexMatEnabled = 0;     ctx->Texture._TexGenEnabled = 0; +#if FEATURE_ARB_fragment_shader     /*      * Grab texture image usage state from shader program. It must be      * grabbed every time uniform sampler changes, so maybe there is a @@ -2914,6 +2918,7 @@ update_texture_state( GLcontext *ctx )     if (ctx->ShaderObjects._FragmentShaderPresent) {        (**prog).GetTextureImageUsage (prog, progteximageusage);     } +#endif /* FEATURE_ARB_fragment_shader */     /*      * Update texture unit state. @@ -2927,10 +2932,13 @@ update_texture_state( GLcontext *ctx )        texUnit->_GenFlags = 0;        /* Get the bitmask of texture enables */ +#if FEATURE_ARB_fragment_shader        if (ctx->ShaderObjects._FragmentShaderPresent) {           enableBits = progteximageusage[unit];        } -      else if (ctx->FragmentProgram._Enabled) { +      else +#endif +      if (ctx->FragmentProgram._Enabled) {           enableBits = ctx->FragmentProgram.Current->TexturesUsed[unit];        }        else { diff --git a/src/mesa/shader/shaderobjects.c b/src/mesa/shader/shaderobjects.c index 3d31546453..f26ff12adf 100644 --- a/src/mesa/shader/shaderobjects.c +++ b/src/mesa/shader/shaderobjects.c @@ -36,6 +36,8 @@  #include "shaderobjects_3dlabs.h" +#if FEATURE_ARB_shader_objects +  #define RELEASE_GENERIC(x)\     (**x)._unknown.Release ((struct gl2_unknown_intf **) (x)) @@ -1198,6 +1200,8 @@ _mesa_GetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name)  	return loc;  } +#endif +  GLvoid  _mesa_init_shaderobjects (GLcontext *ctx)  { diff --git a/src/mesa/shader/shaderobjects.h b/src/mesa/shader/shaderobjects.h index 818049d17b..cc67021629 100644 --- a/src/mesa/shader/shaderobjects.h +++ b/src/mesa/shader/shaderobjects.h @@ -27,6 +27,8 @@  #include "context.h" +#if FEATURE_ARB_shader_objects +  /**   * gl2 unique interface identifier.   * Each gl2 interface has its own interface id used for object queries. @@ -40,7 +42,8 @@ enum gl2_uiid     UIID_FRAGMENT_SHADER,	/* fragment shader */     UIID_VERTEX_SHADER,		/* vertex shader */     UIID_PROGRAM,		/* program object */ -   UIID_3DLABS_SHHANDLE		/* encapsulates 3dlabs' ShHandle */ +   UIID_3DLABS_SHHANDLE,         /* encapsulates 3DLabs' ShHandle */ +   UIID_DEBUG                    /* debug object */  };  struct gl2_unknown_intf @@ -127,8 +130,15 @@ struct gl2_3dlabs_shhandle_intf     GLvoid *(* GetShHandle) (struct gl2_3dlabs_shhandle_intf **);  }; +struct gl2_debug_intf +{ +   struct gl2_generic_intf _generic; +   GLvoid (* ClearDebugLog) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType); +   GLvoid (* GetDebugLog) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType, +                           GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +   GLsizei (* GetDebugLogLength) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType); +}; -#if FEATURE_ARB_shader_objects  extern void GLAPIENTRY  _mesa_DeleteObjectARB(GLhandleARB obj); @@ -260,9 +270,9 @@ _mesa_GetAttribLocationARB (GLhandleARB, const GLcharARB *);  #endif /* FEATURE_ARB_vertex_shader */ +#endif /* FEATURE_ARB_shader_objects */ +  extern void  _mesa_init_shaderobjects (GLcontext *ctx); -#endif /* FEATURE_ARB_shader_objects */ -  #endif /* SHADEROBJECTS_H */ diff --git a/src/mesa/shader/shaderobjects_3dlabs.c b/src/mesa/shader/shaderobjects_3dlabs.c index deeb40332a..0def13d3b8 100755 --- a/src/mesa/shader/shaderobjects_3dlabs.c +++ b/src/mesa/shader/shaderobjects_3dlabs.c @@ -44,6 +44,8 @@  #include "slang_link.h"  #endif +#if FEATURE_ARB_shader_objects +  struct gl2_unknown_obj  {  	GLuint reference_count; @@ -1774,6 +1776,101 @@ _vertex_shader_constructor (struct gl2_vertex_shader_impl *impl)  #endif  } +struct gl2_debug_obj +{ +   struct gl2_generic_obj _generic; +}; + +struct gl2_debug_impl +{ +   struct gl2_debug_intf *_vftbl; +   struct gl2_debug_obj _obj; +}; + +static GLvoid +_debug_destructor (struct gl2_unknown_intf **intf) +{ +   struct gl2_debug_impl *impl = (struct gl2_debug_impl *) (intf); + +   (void) (impl); +   /* TODO */ + +   _generic_destructor (intf); +} + +static struct gl2_unknown_intf ** +_debug_QueryInterface (struct gl2_unknown_intf **intf, enum gl2_uiid uiid) +{ +   if (uiid == UIID_DEBUG) { +      (**intf).AddRef (intf); +      return intf; +   } +   return _generic_QueryInterface (intf, uiid); +} + +static GLenum +_debug_GetType (struct gl2_generic_intf **intf) +{ +   return /*GL_DEBUG_OBJECT_MESA*/0; +} + +static GLvoid +_debug_ClearDebugLog (struct gl2_debug_intf **intf, GLenum logType, GLenum shaderType) +{ +   struct gl2_debug_impl *impl = (struct gl2_debug_impl *) (intf); + +   (void) (impl); +   /* TODO */ +} + +static GLvoid +_debug_GetDebugLog (struct gl2_debug_intf **intf, GLenum logType, GLenum shaderType, +                    GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) +{ +   struct gl2_debug_impl *impl = (struct gl2_debug_impl *) (intf); + +   (void) (impl); +   /* TODO */ +} + +static GLsizei +_debug_GetDebugLogLength (struct gl2_debug_intf **intf, GLenum logType, GLenum shaderType) +{ +   struct gl2_debug_impl *impl = (struct gl2_debug_impl *) (intf); + +   (void) (impl); +   /* TODO */ + +   return 0; +} + +static struct gl2_debug_intf _debug_vftbl = { +   { +      { +         _unknown_AddRef, +         _unknown_Release, +         _debug_QueryInterface +      }, +      _generic_Delete, +      _debug_GetType, +      _generic_GetName, +      _generic_GetDeleteStatus, +      _generic_GetInfoLog, +      _generic_GetInfoLogLength +   }, +   _debug_ClearDebugLog, +   _debug_GetDebugLog, +   _debug_GetDebugLogLength +}; + +static GLvoid +_debug_constructor (struct gl2_debug_impl *impl) +{ +   _generic_constructor ((struct gl2_generic_impl *) (impl)); +   impl->_vftbl = &_debug_vftbl; +   impl->_obj._generic._unknown._destructor = _debug_destructor; +} +  GLhandleARB  _mesa_3dlabs_create_shader_object (GLenum shaderType)  { @@ -1823,6 +1920,19 @@ _mesa_3dlabs_create_program_object (void)  	return 0;  } +GLhandleARB +_mesa_3dlabs_create_debug_object (GLvoid) +{ +   struct gl2_debug_impl *obj; + +   obj = (struct gl2_debug_impl *) (_mesa_malloc (sizeof (struct gl2_debug_impl))); +   if (obj != NULL) { +      _debug_constructor (obj); +      return obj->_obj._generic.name; +   } +   return 0; +} +  #include "slang_assemble.h"  #include "slang_execute.h" @@ -1859,6 +1969,8 @@ GLvoid _slang_exec_vertex_shader (struct gl2_program_intf **pro)  	exec_shader (pro, SLANG_SHADER_VERTEX);  } +#endif +  void  _mesa_init_shaderobjects_3dlabs (GLcontext *ctx)  { diff --git a/src/mesa/shader/shaderobjects_3dlabs.h b/src/mesa/shader/shaderobjects_3dlabs.h index 8bf273ae9d..2092dd923e 100755 --- a/src/mesa/shader/shaderobjects_3dlabs.h +++ b/src/mesa/shader/shaderobjects_3dlabs.h @@ -25,6 +25,8 @@  #ifndef SHADEROBJECTS_3DLABS_H  #define SHADEROBJECTS_3DLABS_H +#if FEATURE_ARB_shader_objects +  extern int _slang_fetch_discard (struct gl2_program_intf **pro, GLboolean *val);  extern GLvoid _slang_exec_fragment_shader (struct gl2_program_intf **pro); @@ -37,6 +39,11 @@ _mesa_3dlabs_create_shader_object (GLenum);  extern GLhandleARB  _mesa_3dlabs_create_program_object (GLvoid); +extern GLhandleARB +_mesa_3dlabs_create_debug_object (GLvoid); + +#endif /* FEATURE_ARB_shader_objects */ +  extern void  _mesa_init_shaderobjects_3dlabs (GLcontext *ctx); diff --git a/src/mesa/swrast/s_arbshader.c b/src/mesa/swrast/s_arbshader.c index a2dc1353f0..c3f85ee157 100644 --- a/src/mesa/swrast/s_arbshader.c +++ b/src/mesa/swrast/s_arbshader.c @@ -35,6 +35,8 @@  #include "slang_utility.h"  #include "slang_link.h" +#if FEATURE_ARB_fragment_shader +  void  _swrast_exec_arbshader(GLcontext *ctx, struct sw_span *span)  { @@ -113,3 +115,6 @@ _swrast_exec_arbshader(GLcontext *ctx, struct sw_span *span)        }     }  } + +#endif /* FEATURE_ARB_fragment_shader */ + diff --git a/src/mesa/swrast/s_arbshader.h b/src/mesa/swrast/s_arbshader.h index 7cce6f8362..805cd4da38 100644 --- a/src/mesa/swrast/s_arbshader.h +++ b/src/mesa/swrast/s_arbshader.h @@ -28,7 +28,11 @@  #include "s_context.h" +#if FEATURE_ARB_fragment_shader +  extern void _swrast_exec_arbshader (GLcontext *ctx, struct sw_span *span); +#endif /* FEATURE_ARB_fragment_shader */ +  #endif diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index ff3ed420c4..d143105416 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -1197,12 +1197,15 @@ _swrast_write_rgba_span( GLcontext *ctx, struct sw_span *span)           interpolate_fog(ctx, span);        /* Compute fragment colors with fragment program or texture lookups */ +#if FEATURE_ARB_fragment_shader        if (ctx->ShaderObjects._FragmentShaderPresent) {           if (span->interpMask & SPAN_Z)              _swrast_span_interpolate_z (ctx, span);           _swrast_exec_arbshader (ctx, span);        } -      else if (ctx->FragmentProgram._Active) { +      else +#endif +      if (ctx->FragmentProgram._Active) {           /* frag prog may need Z values */           if (span->interpMask & SPAN_Z)              _swrast_span_interpolate_z(ctx, span); @@ -1281,12 +1284,15 @@ _swrast_write_rgba_span( GLcontext *ctx, struct sw_span *span)        if (span->interpMask & SPAN_FOG)           interpolate_fog(ctx, span); +#if FEATURE_ARB_fragment_shader        if (ctx->ShaderObjects._FragmentShaderPresent) {           if (span->interpMask & SPAN_Z)              _swrast_span_interpolate_z (ctx, span);           _swrast_exec_arbshader (ctx, span);        } -      else if (ctx->FragmentProgram._Active) +      else +#endif +      if (ctx->FragmentProgram._Active)           _swrast_exec_fragment_program( ctx, span );        else if (ctx->ATIFragmentShader._Enabled)           _swrast_exec_fragment_shader( ctx, span ); diff --git a/src/mesa/tnl/t_pipeline.h b/src/mesa/tnl/t_pipeline.h index e5622c9d56..b987ba4116 100644 --- a/src/mesa/tnl/t_pipeline.h +++ b/src/mesa/tnl/t_pipeline.h @@ -54,7 +54,9 @@ extern const struct tnl_pipeline_stage _tnl_texture_transform_stage;  extern const struct tnl_pipeline_stage _tnl_point_attenuation_stage;  extern const struct tnl_pipeline_stage _tnl_arb_vertex_program_stage;  extern const struct tnl_pipeline_stage _tnl_vertex_program_stage; +#if FEATURE_ARB_vertex_shader  extern const struct tnl_pipeline_stage _tnl_arb_vertex_shader_stage; +#endif  extern const struct tnl_pipeline_stage _tnl_render_stage;  /* Shorthand to plug in the default pipeline: diff --git a/src/mesa/tnl/t_vb_arbshader.c b/src/mesa/tnl/t_vb_arbshader.c index 174d798543..13aa3ea910 100644 --- a/src/mesa/tnl/t_vb_arbshader.c +++ b/src/mesa/tnl/t_vb_arbshader.c @@ -34,6 +34,8 @@  #include "slang_utility.h"  #include "slang_link.h" +#if FEATURE_ARB_vertex_shader +  typedef struct  {  	GLvector4f outputs[VERT_RESULT_MAX]; @@ -295,3 +297,5 @@ const struct tnl_pipeline_stage _tnl_arb_vertex_shader_stage = {  	run_arb_vertex_shader  }; +#endif /* FEATURE_ARB_vertex_shader */ +  | 
