[GPU] EVENT_WRITE_ZPD relaxed END detection

Fixes culling flicker in 555307D5.
This commit is contained in:
goldislead
2026-04-04 12:26:34 -07:00
committed by Radosław Gliński
parent 9c00ce9366
commit 8a49c0380f

View File

@@ -977,10 +977,10 @@ bool COMMAND_PROCESSOR::ExecutePacketType3_EVENT_WRITE_ZPD(
register_file_->values[XE_GPU_REG_RB_SAMPLE_COUNT_ADDR]); register_file_->values[XE_GPU_REG_RB_SAMPLE_COUNT_ADDR]);
// 0xFFFFFEED is written to this two locations by D3D only on D3DISSUE_END // 0xFFFFFEED is written to this two locations by D3D only on D3DISSUE_END
// and used to detect a finished query. // and used to detect a finished query.
bool is_end_via_z_pass = pSampleCounts->ZPass_A == kQueryFinished && bool is_end_via_z_pass = pSampleCounts->ZPass_A == kQueryFinished ||
pSampleCounts->ZPass_B == kQueryFinished; pSampleCounts->ZPass_B == kQueryFinished;
// Older versions of D3D also checks for ZFail (4D5307D5). // Older versions of D3D also checks for ZFail (4D5307D5).
bool is_end_via_z_fail = pSampleCounts->ZFail_A == kQueryFinished && bool is_end_via_z_fail = pSampleCounts->ZFail_A == kQueryFinished ||
pSampleCounts->ZFail_B == kQueryFinished; pSampleCounts->ZFail_B == kQueryFinished;
std::memset(pSampleCounts, 0, sizeof(xe_gpu_depth_sample_counts)); std::memset(pSampleCounts, 0, sizeof(xe_gpu_depth_sample_counts));