mesa: Make FEATURE_ATI_fragment_shader more modular.

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.
This commit is contained in:
Chia-I Wu
2010-05-12 13:26:14 +08:00
parent 82c6c31f55
commit eb5100accc
4 changed files with 53 additions and 23 deletions

View 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))

View 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);

View File

@@ -28,13 +28,36 @@
#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 */

View 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 */