mesa: Make FEATURE_ATI_fragment_shader more modular.
authorChia-I Wu <olv@lunarg.com>
Wed, 12 May 2010 05:26:14 +0000 (13:26 +0800)
committerChia-I Wu <olv@lunarg.com>
Wed, 12 May 2010 05:46:53 +0000 (13:46 +0800)
This allows atifragshader.h to be used without knowing if
FEATURE_ATI_fragment_shader is enabled.  As a result, atifragshader.c is
removed from the omit list in ES overlay.

src/mesa/es/Makefile
src/mesa/main/api_exec.c
src/mesa/shader/atifragshader.c
src/mesa/shader/atifragshader.h

index e5819491d00bd9e7462cc10b12ed3b753f94c661..cdd770f7d8638cb0214039ca80270b5ece319690 100644 (file)
@@ -32,10 +32,6 @@ VBO_OMITTED :=                               \
        vbo/vbo_save_loopback.c
 VBO_SOURCES := $(filter-out $(VBO_OMITTED), $(VBO_SOURCES))
 
-SHADER_OMITTED :=                      \
-       shader/atifragshader.c
-SHADER_SOURCES := $(filter-out $(SHADER_OMITTED), $(SHADER_SOURCES))
-
 # adjust source dir
 ES_SOURCES := $(addprefix $(MESA)/, $(MESA_SOURCES))
 ES_GALLIUM_SOURCES := $(addprefix $(MESA)/, $(MESA_GALLIUM_SOURCES))
index ad18472dea3e1efbaeda6aefeb183a7c0e77d079..7bd6e328132d0b2bd46007f490af5606b2980782 100644 (file)
@@ -36,9 +36,7 @@
 #if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
 #include "shader/arbprogram.h"
 #endif
-#if FEATURE_ATI_fragment_shader
 #include "shader/atifragshader.h"
-#endif
 #include "attrib.h"
 #include "blend.h"
 #if FEATURE_ARB_vertex_buffer_object
@@ -715,22 +713,7 @@ _mesa_create_exec_table(void)
 #endif
 
   /* GL_ATI_fragment_shader */
-#if FEATURE_ATI_fragment_shader
-   SET_GenFragmentShadersATI(exec, _mesa_GenFragmentShadersATI);
-   SET_BindFragmentShaderATI(exec, _mesa_BindFragmentShaderATI);
-   SET_DeleteFragmentShaderATI(exec, _mesa_DeleteFragmentShaderATI);
-   SET_BeginFragmentShaderATI(exec, _mesa_BeginFragmentShaderATI);
-   SET_EndFragmentShaderATI(exec, _mesa_EndFragmentShaderATI);
-   SET_PassTexCoordATI(exec, _mesa_PassTexCoordATI);
-   SET_SampleMapATI(exec, _mesa_SampleMapATI);
-   SET_ColorFragmentOp1ATI(exec, _mesa_ColorFragmentOp1ATI);
-   SET_ColorFragmentOp2ATI(exec, _mesa_ColorFragmentOp2ATI);
-   SET_ColorFragmentOp3ATI(exec, _mesa_ColorFragmentOp3ATI);
-   SET_AlphaFragmentOp1ATI(exec, _mesa_AlphaFragmentOp1ATI);
-   SET_AlphaFragmentOp2ATI(exec, _mesa_AlphaFragmentOp2ATI);
-   SET_AlphaFragmentOp3ATI(exec, _mesa_AlphaFragmentOp3ATI);
-   SET_SetFragmentShaderConstantATI(exec, _mesa_SetFragmentShaderConstantATI);
-#endif
+   _mesa_init_ati_fragment_shader_dispatch(exec);
 
   /* GL_ATI_envmap_bumpmap */
    SET_GetTexBumpParameterivATI(exec, _mesa_GetTexBumpParameterivATI);
index 870f77e30dc7307491c89d8bba88e83af61e4c04..21bb9589cb08e9744bbaafed95905d0e24b08e2e 100644 (file)
 #include "main/macros.h"
 #include "main/enums.h"
 #include "main/mtypes.h"
+#include "main/dispatch.h"
 #include "atifragshader.h"
 
+#if FEATURE_ATI_fragment_shader
+
 #define MESA_DEBUG_ATI_FS 0
 
 static struct ati_fragment_shader DummyShader;
 
 
+void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+   SET_GenFragmentShadersATI(disp, _mesa_GenFragmentShadersATI);
+   SET_BindFragmentShaderATI(disp, _mesa_BindFragmentShaderATI);
+   SET_DeleteFragmentShaderATI(disp, _mesa_DeleteFragmentShaderATI);
+   SET_BeginFragmentShaderATI(disp, _mesa_BeginFragmentShaderATI);
+   SET_EndFragmentShaderATI(disp, _mesa_EndFragmentShaderATI);
+   SET_PassTexCoordATI(disp, _mesa_PassTexCoordATI);
+   SET_SampleMapATI(disp, _mesa_SampleMapATI);
+   SET_ColorFragmentOp1ATI(disp, _mesa_ColorFragmentOp1ATI);
+   SET_ColorFragmentOp2ATI(disp, _mesa_ColorFragmentOp2ATI);
+   SET_ColorFragmentOp3ATI(disp, _mesa_ColorFragmentOp3ATI);
+   SET_AlphaFragmentOp1ATI(disp, _mesa_AlphaFragmentOp1ATI);
+   SET_AlphaFragmentOp2ATI(disp, _mesa_AlphaFragmentOp2ATI);
+   SET_AlphaFragmentOp3ATI(disp, _mesa_AlphaFragmentOp3ATI);
+   SET_SetFragmentShaderConstantATI(disp, _mesa_SetFragmentShaderConstantATI);
+}
+
+
 /**
  * Allocate and initialize a new ATI fragment shader object.
  */
@@ -767,3 +790,5 @@ _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)
       COPY_4V(ctx->ATIFragmentShader.GlobalConstants[dstindex], value);
    }
 }
+
+#endif /* FEATURE_ATI_fragment_shader */
index e1dc20e60651b94fec5db95b6a3048d40e10921b..31c335ec8155407543d2fc4ad10c7e90abe5c232 100644 (file)
@@ -60,6 +60,11 @@ struct atifs_setupinst
 };
 
 
+#if FEATURE_ATI_fragment_shader
+
+extern void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
+
 extern struct ati_fragment_shader *
 _mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id);
 
@@ -120,4 +125,25 @@ _mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
 extern void GLAPIENTRY
 _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
 
-#endif
+#else /* FEATURE_ATI_fragment_shader */
+
+static INLINE void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+}
+
+static INLINE struct ati_fragment_shader *
+_mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id)
+{
+   return NULL;
+}
+
+static INLINE void
+_mesa_delete_ati_fragment_shader(GLcontext *ctx,
+                                 struct ati_fragment_shader *s)
+{
+}
+
+#endif /* FEATURE_ATI_fragment_shader */
+
+#endif /* ATIFRAGSHADER_H */