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:
Marek Olšák
2015-04-10 23:58:34 +02:00
parent 993a6288f7
commit 99eef3b8b3
6 changed files with 55 additions and 4 deletions

View File

@@ -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);
}
}