#include "main/glheader.h"
#include "main/macros.h"
#include "main/enums.h"
-#include "shader/prog_instruction.h"
-#include "shader/prog_parameter.h"
-#include "shader/program.h"
-#include "shader/shader_api.h"
+#include "main/shaderapi.h"
+#include "program/prog_instruction.h"
+#include "program/program.h"
#include "cso_cache/cso_context.h"
#include "draw/draw_context.h"
#include "st_context.h"
#include "st_program.h"
-#include "st_atom_shader.h"
#include "st_mesa_to_tgsi.h"
#include "st_cb_program.h"
* Called via ctx->Driver.UseProgram() to bind a linked GLSL program
* (vertex shader + fragment shader).
*/
-static void st_use_program( GLcontext *ctx,
- GLuint program )
+static void st_use_program( GLcontext *ctx, struct gl_shader_program *shProg)
{
struct st_context *st = st_context(ctx);
st->dirty.st |= ST_NEW_FRAGMENT_PROGRAM;
st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
-
- _mesa_use_program(ctx, program);
}
stfp->driver_shader = NULL;
}
- if (stfp->state.tokens) {
- st_free_tokens(stfp->state.tokens);
- stfp->state.tokens = NULL;
+ if (stfp->tgsi.tokens) {
+ st_free_tokens(stfp->tgsi.tokens);
+ stfp->tgsi.tokens = NULL;
}
if (stfp->bitmap_program) {
}
-static void st_program_string_notify( GLcontext *ctx,
- GLenum target,
- struct gl_program *prog )
+static GLboolean st_program_string_notify( GLcontext *ctx,
+ GLenum target,
+ struct gl_program *prog )
{
struct st_context *st = st_context(ctx);
stfp->driver_shader = NULL;
}
- if (stfp->state.tokens) {
- st_free_tokens(stfp->state.tokens);
- stfp->state.tokens = NULL;
+ if (stfp->tgsi.tokens) {
+ st_free_tokens(stfp->tgsi.tokens);
+ stfp->tgsi.tokens = NULL;
}
if (st->fp == stfp)
if (st->vp == stvp)
st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
}
+
+ /* XXX check if program is legal, within limits */
+ return GL_TRUE;
}