#include "main/dispatch.h"
#include "main/atifragshader.h"
-#if FEATURE_ATI_fragment_shader
-
#define MESA_DEBUG_ATI_FS 0
static struct ati_fragment_shader DummyShader;
COPY_4V(ctx->ATIFragmentShader.GlobalConstants[dstindex], value);
}
}
-
-#endif /* FEATURE_ATI_fragment_shader */
};
-#if FEATURE_ATI_fragment_shader
-
extern void
_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
extern void GLAPIENTRY
_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
-#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(struct gl_context *ctx, GLuint id)
-{
- return NULL;
-}
-
-static inline void
-_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
- struct ati_fragment_shader *s)
-{
-}
-
-#endif /* FEATURE_ATI_fragment_shader */
#endif /* ATIFRAGSHADER_H */
#include "api_exec.h"
#include "api_loopback.h"
#include "api_validate.h"
-#if FEATURE_ATI_fragment_shader
#include "atifragshader.h"
-#endif
#include "config.h"
#include "mfeatures.h"
#include "bufferobj.h"
save_TexBumpParameterfvATI(pname, p);
}
-#if FEATURE_ATI_fragment_shader
static void GLAPIENTRY
save_BindFragmentShaderATI(GLuint id)
{
CALL_SetFragmentShaderConstantATI(ctx->Exec, (dst, value));
}
}
-#endif
static void GLAPIENTRY
save_Attr1fNV(GLenum attr, GLfloat x)
CALL_TexBumpParameterfvATI(ctx->Exec, (pname, values));
}
break;
-#if FEATURE_ATI_fragment_shader
case OPCODE_BIND_FRAGMENT_SHADER_ATI:
CALL_BindFragmentShaderATI(ctx->Exec, (n[1].i));
break;
CALL_SetFragmentShaderConstantATI(ctx->Exec, (dst, values));
}
break;
-#endif
case OPCODE_ATTR_1F_NV:
CALL_VertexAttrib1fNV(ctx->Exec, (n[1].e, n[2].f));
break;
SET_TexBumpParameterfvATI(table, save_TexBumpParameterfvATI);
/* 245. GL_ATI_fragment_shader */
-#if FEATURE_ATI_fragment_shader
SET_BindFragmentShaderATI(table, save_BindFragmentShaderATI);
SET_SetFragmentShaderConstantATI(table, save_SetFragmentShaderConstantATI);
-#endif
/* 282. GL_NV_fragment_program */
SET_ProgramNamedParameter4fNV(table, save_ProgramNamedParameter4fNV);
ctx->Transform.DepthClamp = state;
break;
-#if FEATURE_ATI_fragment_shader
case GL_FRAGMENT_SHADER_ATI:
if (ctx->API != API_OPENGL)
goto invalid_enum_error;
FLUSH_VERTICES(ctx, _NEW_PROGRAM);
ctx->ATIFragmentShader.Enabled = state;
break;
-#endif
/* GL_MESA_texture_array */
case GL_TEXTURE_1D_ARRAY_EXT:
CHECK_EXTENSION(ARB_depth_clamp);
return ctx->Transform.DepthClamp;
-#if FEATURE_ATI_fragment_shader
case GL_FRAGMENT_SHADER_ATI:
if (ctx->API != API_OPENGL)
goto invalid_enum_error;
CHECK_EXTENSION(ATI_fragment_shader);
return ctx->ATIFragmentShader.Enabled;
-#endif /* FEATURE_ATI_fragment_shader */
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
if (!_mesa_is_desktop_gl(ctx))
ctx->Extensions.ARB_sync = GL_TRUE;
ctx->Extensions.APPLE_object_purgeable = GL_TRUE;
ctx->Extensions.ATI_envmap_bumpmap = GL_TRUE;
-#if FEATURE_ATI_fragment_shader
ctx->Extensions.ATI_fragment_shader = GL_TRUE;
-#endif
ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE;
ctx->Extensions.ATI_texture_env_combine3 = GL_TRUE;
ctx->Extensions.ATI_texture_mirror_once = GL_TRUE;
#define FEATURE_remap_table 0
#endif
-#define FEATURE_ATI_fragment_shader FEATURE_GL
-
#endif /* FEATURES_H */
#include "mfeatures.h"
#include "mtypes.h"
#include "hash.h"
-#if FEATURE_ATI_fragment_shader
#include "atifragshader.h"
-#endif
#include "bufferobj.h"
#include "shared.h"
#include "program/program.h"
gl_fragment_program(ctx->Driver.NewProgram(ctx,
GL_FRAGMENT_PROGRAM_ARB, 0));
-#if FEATURE_ATI_fragment_shader
shared->ATIShaders = _mesa_NewHashTable();
shared->DefaultFragmentShader = _mesa_new_ati_fragment_shader(ctx, 0);
-#endif
shared->ShaderObjects = _mesa_NewHashTable();
}
-#if FEATURE_ATI_fragment_shader
/**
* Callback for deleting an ATI fragment shader object.
* Called by _mesa_HashDeleteAll().
struct gl_context *ctx = (struct gl_context *) userData;
_mesa_delete_ati_fragment_shader(ctx, shader);
}
-#endif
/**
_mesa_reference_vertprog(ctx, &shared->DefaultVertexProgram, NULL);
_mesa_reference_fragprog(ctx, &shared->DefaultFragmentProgram, NULL);
-#if FEATURE_ATI_fragment_shader
_mesa_HashDeleteAll(shared->ATIShaders, delete_fragshader_cb, ctx);
_mesa_DeleteHashTable(shared->ATIShaders);
_mesa_delete_ati_fragment_shader(ctx, shared->DefaultFragmentShader);
-#endif
_mesa_HashDeleteAll(shared->BufferObjects, delete_bufferobj_cb, ctx);
_mesa_DeleteHashTable(shared->BufferObjects);
ctx->GeometryProgram.Cache = _mesa_new_program_cache();
/* XXX probably move this stuff */
-#if FEATURE_ATI_fragment_shader
ctx->ATIFragmentShader.Enabled = GL_FALSE;
ctx->ATIFragmentShader.Current = ctx->Shared->DefaultFragmentShader;
assert(ctx->ATIFragmentShader.Current);
ctx->ATIFragmentShader.Current->RefCount++;
-#endif
}
_mesa_delete_shader_cache(ctx, ctx->FragmentProgram.Cache);
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram.Current, NULL);
_mesa_delete_program_cache(ctx, ctx->GeometryProgram.Cache);
+
/* XXX probably move this stuff */
-#if FEATURE_ATI_fragment_shader
if (ctx->ATIFragmentShader.Current) {
ctx->ATIFragmentShader.Current->RefCount--;
if (ctx->ATIFragmentShader.Current->RefCount <= 0) {
free(ctx->ATIFragmentShader.Current);
}
}
-#endif
+
free((void *) ctx->Program.ErrorString);
}
ctx->Shared->DefaultGeometryProgram);
/* XXX probably move this stuff */
-#if FEATURE_ATI_fragment_shader
if (ctx->ATIFragmentShader.Current) {
ctx->ATIFragmentShader.Current->RefCount--;
if (ctx->ATIFragmentShader.Current->RefCount <= 0) {
ctx->ATIFragmentShader.Current = (struct ati_fragment_shader *) ctx->Shared->DefaultFragmentShader;
assert(ctx->ATIFragmentShader.Current);
ctx->ATIFragmentShader.Current->RefCount++;
-#endif
}