Use ProgramStringNotify
This commit is contained in:
@@ -62,30 +62,6 @@ static const struct dri_extension brw_extensions[] =
|
|||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void brwLinkProgram(GLcontext *ctx, GLuint program)
|
|
||||||
{
|
|
||||||
struct brw_context *brw = brw_context(ctx);
|
|
||||||
struct brw_vertex_program *vert_prog;
|
|
||||||
struct brw_fragment_program *frag_prog;
|
|
||||||
struct gl_shader_program *sh_prog;
|
|
||||||
_mesa_link_program(ctx, program);
|
|
||||||
|
|
||||||
sh_prog = _mesa_lookup_shader_program(ctx, program);
|
|
||||||
if (sh_prog) {
|
|
||||||
sh_prog->FragmentProgram =
|
|
||||||
_mesa_realloc(sh_prog->FragmentProgram,
|
|
||||||
sizeof(struct gl_fragment_program),
|
|
||||||
sizeof(struct brw_fragment_program));
|
|
||||||
frag_prog = (struct brw_fragment_program *)sh_prog->FragmentProgram;
|
|
||||||
frag_prog->id = brw->program_id++;
|
|
||||||
sh_prog->VertexProgram = _mesa_realloc(sh_prog->VertexProgram,
|
|
||||||
sizeof(struct gl_vertex_program),
|
|
||||||
sizeof(struct brw_vertex_program));
|
|
||||||
vert_prog = (struct brw_vertex_program *)sh_prog->VertexProgram;
|
|
||||||
vert_prog->id = brw->program_id++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void brwUseProgram(GLcontext *ctx, GLuint program)
|
static void brwUseProgram(GLcontext *ctx, GLuint program)
|
||||||
{
|
{
|
||||||
struct brw_context *brw = brw_context(ctx);
|
struct brw_context *brw = brw_context(ctx);
|
||||||
@@ -97,15 +73,12 @@ static void brwUseProgram(GLcontext *ctx, GLuint program)
|
|||||||
ctx->FragmentProgram.Enabled = GL_TRUE;
|
ctx->FragmentProgram.Enabled = GL_TRUE;
|
||||||
brw->attribs.VertexProgram->Current = sh_prog->VertexProgram;
|
brw->attribs.VertexProgram->Current = sh_prog->VertexProgram;
|
||||||
brw->attribs.FragmentProgram->Current = sh_prog->FragmentProgram;
|
brw->attribs.FragmentProgram->Current = sh_prog->FragmentProgram;
|
||||||
brw->state.dirty.brw |= BRW_NEW_VERTEX_PROGRAM;
|
|
||||||
brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void brwInitProgFuncs( struct dd_function_table *functions )
|
static void brwInitProgFuncs( struct dd_function_table *functions )
|
||||||
{
|
{
|
||||||
functions->UseProgram = brwUseProgram;
|
functions->UseProgram = brwUseProgram;
|
||||||
functions->LinkProgram = brwLinkProgram;
|
|
||||||
}
|
}
|
||||||
static void brwInitDriverFunctions( struct dd_function_table *functions )
|
static void brwInitDriverFunctions( struct dd_function_table *functions )
|
||||||
{
|
{
|
||||||
|
@@ -242,6 +242,8 @@ _mesa_init_vertex_program( GLcontext *ctx, struct gl_vertex_program *prog,
|
|||||||
struct gl_program *
|
struct gl_program *
|
||||||
_mesa_new_program(GLcontext *ctx, GLenum target, GLuint id)
|
_mesa_new_program(GLcontext *ctx, GLenum target, GLuint id)
|
||||||
{
|
{
|
||||||
|
if (ctx->Driver.NewProgram)
|
||||||
|
return ctx->Driver.NewProgram(ctx, target, id);
|
||||||
switch (target) {
|
switch (target) {
|
||||||
case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */
|
case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */
|
||||||
return _mesa_init_vertex_program(ctx, CALLOC_STRUCT(gl_vertex_program),
|
return _mesa_init_vertex_program(ctx, CALLOC_STRUCT(gl_vertex_program),
|
||||||
|
Reference in New Issue
Block a user