st/mesa: add a debug option to compile shaders at link time
v2: fix crashes Tested-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -185,9 +185,6 @@ st_prepare_vertex_program(struct gl_context *ctx,
|
||||
if (stvp->Base.IsPositionInvariant)
|
||||
_mesa_insert_mvp_code(ctx, &stvp->Base);
|
||||
|
||||
if (!stvp->glsl_to_tgsi)
|
||||
assert(stvp->Base.Base.NumInstructions > 1);
|
||||
|
||||
/*
|
||||
* Determine number of inputs, the mappings between VERT_ATTRIB_x
|
||||
* and TGSI generic input indexes, plus input attrib semantic info.
|
||||
@@ -1318,3 +1315,47 @@ st_print_current_vertex_program(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compile one shader variant.
|
||||
*/
|
||||
void
|
||||
st_precompile_shader_variant(struct st_context *st,
|
||||
struct gl_program *prog)
|
||||
{
|
||||
switch (prog->Target) {
|
||||
case GL_VERTEX_PROGRAM_ARB: {
|
||||
struct st_vertex_program *p = (struct st_vertex_program *)prog;
|
||||
struct st_vp_variant_key key;
|
||||
|
||||
memset(&key, 0, sizeof(key));
|
||||
key.st = st;
|
||||
st_get_vp_variant(st, p, &key);
|
||||
break;
|
||||
}
|
||||
|
||||
case GL_GEOMETRY_PROGRAM_NV: {
|
||||
struct st_geometry_program *p = (struct st_geometry_program *)prog;
|
||||
struct st_gp_variant_key key;
|
||||
|
||||
memset(&key, 0, sizeof(key));
|
||||
key.st = st;
|
||||
st_get_gp_variant(st, p, &key);
|
||||
break;
|
||||
}
|
||||
|
||||
case GL_FRAGMENT_PROGRAM_ARB: {
|
||||
struct st_fragment_program *p = (struct st_fragment_program *)prog;
|
||||
struct st_fp_variant_key key;
|
||||
|
||||
memset(&key, 0, sizeof(key));
|
||||
key.st = st;
|
||||
st_get_fp_variant(st, p, &key);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user