mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-18 04:18:23 +02:00
i965: Gen4-5: Include alpha func/ref in program key
V2: Better explanation of the rationale for doing this. Signed-off-by: Chris Forbes <chrisf@ijw.co.nz> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
dbcd633040
commit
1080fc610e
2 changed files with 18 additions and 0 deletions
|
|
@ -290,6 +290,10 @@ brw_wm_debug_recompile(struct brw_context *brw,
|
|||
old_key->drawable_height, key->drawable_height);
|
||||
found |= key_debug(brw, "input slots valid",
|
||||
old_key->input_slots_valid, key->input_slots_valid);
|
||||
found |= key_debug(brw, "mrt alpha test function",
|
||||
old_key->alpha_test_func, key->alpha_test_func);
|
||||
found |= key_debug(brw, "mrt alpha test reference value",
|
||||
old_key->alpha_test_ref, key->alpha_test_ref);
|
||||
|
||||
found |= brw_debug_recompile_sampler_key(brw, &old_key->tex, &key->tex);
|
||||
|
||||
|
|
@ -500,6 +504,18 @@ static void brw_wm_populate_key( struct brw_context *brw,
|
|||
BRW_FS_VARYING_INPUT_MASK) > 16)
|
||||
key->input_slots_valid = brw->vue_map_geom_out.slots_valid;
|
||||
|
||||
|
||||
/* _NEW_COLOR | _NEW_BUFFERS */
|
||||
/* Pre-gen6, the hardware alpha test always used each render
|
||||
* target's alpha to do alpha test, as opposed to render target 0's alpha
|
||||
* like GL requires. Fix that by building the alpha test into the
|
||||
* shader, and we'll skip enabling the fixed function alpha test.
|
||||
*/
|
||||
if (brw->gen < 6 && ctx->DrawBuffer->_NumColorDrawBuffers > 1 && ctx->Color.AlphaEnabled) {
|
||||
key->alpha_test_func = ctx->Color.AlphaFunc;
|
||||
key->alpha_test_ref = ctx->Color.AlphaRef;
|
||||
}
|
||||
|
||||
/* The unique fragment program ID */
|
||||
key->program_string_id = fp->id;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ struct brw_wm_prog_key {
|
|||
GLushort drawable_height;
|
||||
GLbitfield64 input_slots_valid;
|
||||
GLuint program_string_id:32;
|
||||
GLenum alpha_test_func; /* < For Gen4/5 MRT alpha test */
|
||||
float alpha_test_ref;
|
||||
|
||||
struct brw_sampler_prog_key_data tex;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue