amdgpu: additional heuristic for CB extents detection
Found in CUSA00144
This commit is contained in:
parent
f041276b04
commit
8144f835a9
|
@ -199,19 +199,12 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
|
|||
|
||||
switch (reg_addr) {
|
||||
case ContextRegs::CbColor0Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor1Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor2Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor3Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor4Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor5Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor6Base:
|
||||
[[fallthrough]];
|
||||
case ContextRegs::CbColor7Base: {
|
||||
const auto col_buf_id = (reg_addr - ContextRegs::CbColor0Base) /
|
||||
(ContextRegs::CbColor1Base - ContextRegs::CbColor0Base);
|
||||
|
@ -227,6 +220,26 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
|
|||
}
|
||||
break;
|
||||
}
|
||||
case ContextRegs::CbColor0Cmask:
|
||||
case ContextRegs::CbColor1Cmask:
|
||||
case ContextRegs::CbColor2Cmask:
|
||||
case ContextRegs::CbColor3Cmask:
|
||||
case ContextRegs::CbColor4Cmask:
|
||||
case ContextRegs::CbColor5Cmask:
|
||||
case ContextRegs::CbColor6Cmask:
|
||||
case ContextRegs::CbColor7Cmask: {
|
||||
const auto col_buf_id = (reg_addr - ContextRegs::CbColor0Cmask) /
|
||||
(ContextRegs::CbColor1Cmask - ContextRegs::CbColor0Cmask);
|
||||
ASSERT(col_buf_id < NumColorBuffers);
|
||||
|
||||
const auto nop_offset = header->type3.count;
|
||||
if (nop_offset == 0x04) {
|
||||
ASSERT_MSG(payload[nop_offset] == 0xc0001000,
|
||||
"NOP hint is missing in CB setup sequence");
|
||||
last_cb_extent[col_buf_id].raw = payload[nop_offset + 1];
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ContextRegs::DbZInfo: {
|
||||
if (header->type3.count == 8) {
|
||||
ASSERT_MSG(payload[20] == 0xc0001000,
|
||||
|
|
|
@ -786,6 +786,14 @@ struct Liverpool {
|
|||
CbColor5Base = 0xA363,
|
||||
CbColor6Base = 0xA372,
|
||||
CbColor7Base = 0xA381,
|
||||
CbColor0Cmask = 0xA31F,
|
||||
CbColor1Cmask = 0xA32E,
|
||||
CbColor2Cmask = 0xA33D,
|
||||
CbColor3Cmask = 0xA34C,
|
||||
CbColor4Cmask = 0xA35B,
|
||||
CbColor5Cmask = 0xA36A,
|
||||
CbColor6Cmask = 0xA379,
|
||||
CbColor7Cmask = 0xA388,
|
||||
};
|
||||
|
||||
struct PolygonOffset {
|
||||
|
|
Loading…
Reference in New Issue