mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 02:10:11 +01:00
i965: Add infrastucture for sample lod-zero operations.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
07353599e0
commit
75dccf5ac2
6 changed files with 33 additions and 0 deletions
|
|
@ -977,8 +977,10 @@ enum opcode {
|
|||
SHADER_OPCODE_TXD_LOGICAL,
|
||||
SHADER_OPCODE_TXF,
|
||||
SHADER_OPCODE_TXF_LOGICAL,
|
||||
SHADER_OPCODE_TXF_LZ,
|
||||
SHADER_OPCODE_TXL,
|
||||
SHADER_OPCODE_TXL_LOGICAL,
|
||||
SHADER_OPCODE_TXL_LZ,
|
||||
SHADER_OPCODE_TXS,
|
||||
SHADER_OPCODE_TXS_LOGICAL,
|
||||
FS_OPCODE_TXB,
|
||||
|
|
@ -1645,6 +1647,9 @@ enum brw_message_target {
|
|||
#define GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO 17
|
||||
#define GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C 18
|
||||
#define HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE 20
|
||||
#define GEN9_SAMPLER_MESSAGE_SAMPLE_LZ 24
|
||||
#define GEN9_SAMPLER_MESSAGE_SAMPLE_C_LZ 25
|
||||
#define GEN9_SAMPLER_MESSAGE_SAMPLE_LD_LZ 26
|
||||
#define GEN9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W 28
|
||||
#define GEN7_SAMPLER_MESSAGE_SAMPLE_LD_MCS 29
|
||||
#define GEN7_SAMPLER_MESSAGE_SAMPLE_LD2DMS 30
|
||||
|
|
|
|||
|
|
@ -551,6 +551,9 @@ static const char *const gen5_sampler_msg_type[] = {
|
|||
[GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO] = "gather4_po",
|
||||
[GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C] = "gather4_po_c",
|
||||
[HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE] = "sample_d_c",
|
||||
[GEN9_SAMPLER_MESSAGE_SAMPLE_LZ] = "sample_lz",
|
||||
[GEN9_SAMPLER_MESSAGE_SAMPLE_C_LZ] = "sample_c_lz",
|
||||
[GEN9_SAMPLER_MESSAGE_SAMPLE_LD_LZ] = "ld_lz",
|
||||
[GEN9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W] = "ld2dms_w",
|
||||
[GEN7_SAMPLER_MESSAGE_SAMPLE_LD_MCS] = "ld_mcs",
|
||||
[GEN7_SAMPLER_MESSAGE_SAMPLE_LD2DMS] = "ld2dms",
|
||||
|
|
|
|||
|
|
@ -980,12 +980,14 @@ fs_visitor::implied_mrf_writes(fs_inst *inst)
|
|||
case FS_OPCODE_TXB:
|
||||
case SHADER_OPCODE_TXD:
|
||||
case SHADER_OPCODE_TXF:
|
||||
case SHADER_OPCODE_TXF_LZ:
|
||||
case SHADER_OPCODE_TXF_CMS:
|
||||
case SHADER_OPCODE_TXF_CMS_W:
|
||||
case SHADER_OPCODE_TXF_MCS:
|
||||
case SHADER_OPCODE_TG4:
|
||||
case SHADER_OPCODE_TG4_OFFSET:
|
||||
case SHADER_OPCODE_TXL:
|
||||
case SHADER_OPCODE_TXL_LZ:
|
||||
case SHADER_OPCODE_TXS:
|
||||
case SHADER_OPCODE_LOD:
|
||||
case SHADER_OPCODE_SAMPLEINFO:
|
||||
|
|
@ -4249,6 +4251,7 @@ lower_sampler_logical_send_gen7(const fs_builder &bld, fs_inst *inst, opcode op,
|
|||
|
||||
coordinate_done = true;
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_TXF_CMS:
|
||||
case SHADER_OPCODE_TXF_CMS_W:
|
||||
case SHADER_OPCODE_TXF_UMS:
|
||||
|
|
|
|||
|
|
@ -781,6 +781,14 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src
|
|||
msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LOD;
|
||||
}
|
||||
break;
|
||||
case SHADER_OPCODE_TXL_LZ:
|
||||
assert(devinfo->gen >= 9);
|
||||
if (inst->shadow_compare) {
|
||||
msg_type = GEN9_SAMPLER_MESSAGE_SAMPLE_C_LZ;
|
||||
} else {
|
||||
msg_type = GEN9_SAMPLER_MESSAGE_SAMPLE_LZ;
|
||||
}
|
||||
break;
|
||||
case SHADER_OPCODE_TXS:
|
||||
msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_RESINFO;
|
||||
break;
|
||||
|
|
@ -796,6 +804,10 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src
|
|||
case SHADER_OPCODE_TXF:
|
||||
msg_type = GEN5_SAMPLER_MESSAGE_SAMPLE_LD;
|
||||
break;
|
||||
case SHADER_OPCODE_TXF_LZ:
|
||||
assert(devinfo->gen >= 9);
|
||||
msg_type = GEN9_SAMPLER_MESSAGE_SAMPLE_LD_LZ;
|
||||
break;
|
||||
case SHADER_OPCODE_TXF_CMS_W:
|
||||
assert(devinfo->gen >= 9);
|
||||
msg_type = GEN9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W;
|
||||
|
|
@ -2122,11 +2134,13 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||
case FS_OPCODE_TXB:
|
||||
case SHADER_OPCODE_TXD:
|
||||
case SHADER_OPCODE_TXF:
|
||||
case SHADER_OPCODE_TXF_LZ:
|
||||
case SHADER_OPCODE_TXF_CMS:
|
||||
case SHADER_OPCODE_TXF_CMS_W:
|
||||
case SHADER_OPCODE_TXF_UMS:
|
||||
case SHADER_OPCODE_TXF_MCS:
|
||||
case SHADER_OPCODE_TXL:
|
||||
case SHADER_OPCODE_TXL_LZ:
|
||||
case SHADER_OPCODE_TXS:
|
||||
case SHADER_OPCODE_LOD:
|
||||
case SHADER_OPCODE_TG4:
|
||||
|
|
|
|||
|
|
@ -215,7 +215,9 @@ schedule_node::set_latency_gen7(bool is_haswell)
|
|||
case SHADER_OPCODE_TEX:
|
||||
case SHADER_OPCODE_TXD:
|
||||
case SHADER_OPCODE_TXF:
|
||||
case SHADER_OPCODE_TXF_LZ:
|
||||
case SHADER_OPCODE_TXL:
|
||||
case SHADER_OPCODE_TXL_LZ:
|
||||
/* 18 cycles:
|
||||
* mov(8) g115<1>F 0F { align1 WE_normal 1Q };
|
||||
* mov(8) g114<1>F 0F { align1 WE_normal 1Q };
|
||||
|
|
|
|||
|
|
@ -218,10 +218,14 @@ brw_instruction_name(const struct brw_device_info *devinfo, enum opcode op)
|
|||
return "txf";
|
||||
case SHADER_OPCODE_TXF_LOGICAL:
|
||||
return "txf_logical";
|
||||
case SHADER_OPCODE_TXF_LZ:
|
||||
return "txf_lz";
|
||||
case SHADER_OPCODE_TXL:
|
||||
return "txl";
|
||||
case SHADER_OPCODE_TXL_LOGICAL:
|
||||
return "txl_logical";
|
||||
case SHADER_OPCODE_TXL_LZ:
|
||||
return "txl_lz";
|
||||
case SHADER_OPCODE_TXS:
|
||||
return "txs";
|
||||
case SHADER_OPCODE_TXS_LOGICAL:
|
||||
|
|
@ -802,11 +806,13 @@ backend_instruction::is_tex() const
|
|||
opcode == FS_OPCODE_TXB ||
|
||||
opcode == SHADER_OPCODE_TXD ||
|
||||
opcode == SHADER_OPCODE_TXF ||
|
||||
opcode == SHADER_OPCODE_TXF_LZ ||
|
||||
opcode == SHADER_OPCODE_TXF_CMS ||
|
||||
opcode == SHADER_OPCODE_TXF_CMS_W ||
|
||||
opcode == SHADER_OPCODE_TXF_UMS ||
|
||||
opcode == SHADER_OPCODE_TXF_MCS ||
|
||||
opcode == SHADER_OPCODE_TXL ||
|
||||
opcode == SHADER_OPCODE_TXL_LZ ||
|
||||
opcode == SHADER_OPCODE_TXS ||
|
||||
opcode == SHADER_OPCODE_LOD ||
|
||||
opcode == SHADER_OPCODE_TG4 ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue