mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 20:00:11 +01:00
i965/vec4: Extract function to set up vec4 prog key for precompiling.
This will allow us to re-use it for precompiling geometry shaders. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
068df64ba6
commit
e0f34301b2
3 changed files with 27 additions and 14 deletions
|
|
@ -1592,6 +1592,28 @@ brw_vs_emit(struct brw_context *brw,
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
brw_vec4_setup_prog_key_for_precompile(struct gl_context *ctx,
|
||||
struct brw_vec4_prog_key *key,
|
||||
GLuint id, struct gl_program *prog)
|
||||
{
|
||||
key->program_string_id = id;
|
||||
key->clamp_vertex_color = ctx->API == API_OPENGL_COMPAT;
|
||||
|
||||
unsigned sampler_count = _mesa_fls(prog->SamplersUsed);
|
||||
for (unsigned i = 0; i < sampler_count; i++) {
|
||||
if (prog->ShadowSamplers & (1 << i)) {
|
||||
/* Assume DEPTH_TEXTURE_MODE is the default: X, X, X, 1 */
|
||||
key->tex.swizzles[i] =
|
||||
MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_ONE);
|
||||
} else {
|
||||
/* Color sampler: assume no swizzling. */
|
||||
key->tex.swizzles[i] = SWIZZLE_XYZW;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a,
|
||||
const struct brw_vec4_prog_data *b)
|
||||
|
|
|
|||
|
|
@ -74,6 +74,10 @@ struct brw_vec4_prog_key {
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void
|
||||
brw_vec4_setup_prog_key_for_precompile(struct gl_context *ctx,
|
||||
struct brw_vec4_prog_key *key,
|
||||
GLuint id, struct gl_program *prog);
|
||||
bool brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a,
|
||||
const struct brw_vec4_prog_data *b);
|
||||
void brw_vec4_prog_data_free(const struct brw_vec4_prog_data *prog_data);
|
||||
|
|
|
|||
|
|
@ -534,20 +534,7 @@ brw_vs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
|
||||
memset(&key, 0, sizeof(key));
|
||||
|
||||
key.base.program_string_id = bvp->id;
|
||||
key.base.clamp_vertex_color = ctx->API == API_OPENGL_COMPAT;
|
||||
|
||||
unsigned sampler_count = _mesa_fls(vp->Base.SamplersUsed);
|
||||
for (unsigned i = 0; i < sampler_count; i++) {
|
||||
if (vp->Base.ShadowSamplers & (1 << i)) {
|
||||
/* Assume DEPTH_TEXTURE_MODE is the default: X, X, X, 1 */
|
||||
key.base.tex.swizzles[i] =
|
||||
MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_ONE);
|
||||
} else {
|
||||
/* Color sampler: assume no swizzling. */
|
||||
key.base.tex.swizzles[i] = SWIZZLE_XYZW;
|
||||
}
|
||||
}
|
||||
brw_vec4_setup_prog_key_for_precompile(ctx, &key.base, bvp->id, &vp->Base);
|
||||
|
||||
success = do_vs_prog(brw, prog, bvp, &key);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue