mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 23:50:11 +01:00
i965/fs: Add support for shadow comparitors with gather4
Note that gather4_po_c's parameters are too long for SIMD16. It might be worth emitting 2xSIMD8 messages in this case at some point. Signed-off-by: Chris Forbes <chrisf@ijw.co.nz> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
32f898a71c
commit
3c98d77460
2 changed files with 15 additions and 3 deletions
|
|
@ -435,12 +435,21 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src
|
|||
msg_type = GEN5_SAMPLER_MESSAGE_LOD;
|
||||
break;
|
||||
case SHADER_OPCODE_TG4:
|
||||
assert(brw->gen >= 6);
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4;
|
||||
if (inst->shadow_compare) {
|
||||
assert(brw->gen >= 7);
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C;
|
||||
} else {
|
||||
assert(brw->gen >= 6);
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4;
|
||||
}
|
||||
break;
|
||||
case SHADER_OPCODE_TG4_OFFSET:
|
||||
assert(brw->gen >= 7);
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO;
|
||||
if (inst->shadow_compare) {
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C;
|
||||
} else {
|
||||
msg_type = GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(!"not reached");
|
||||
|
|
|
|||
|
|
@ -1359,6 +1359,9 @@ fs_visitor::emit_texture_gen7(ir_texture *ir, fs_reg dst, fs_reg coordinate,
|
|||
break;
|
||||
case ir_tg4:
|
||||
if (has_nonconstant_offset) {
|
||||
if (ir->shadow_comparitor && dispatch_width == 16)
|
||||
fail("Gen7 does not support gather4_po_c in SIMD16 mode.");
|
||||
|
||||
/* More crazy intermixing */
|
||||
ir->offset->accept(this);
|
||||
fs_reg offset_value = this->result;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue