[GPU] Common resolve code based on compute shaders, swap MSAA samples 1 and 2, change ROV write rounding, random refactoring

This commit is contained in:
Triang3l
2020-08-09 21:33:10 +03:00
parent 72e41e2bf8
commit bd5f77bc3b
378 changed files with 72288 additions and 37207 deletions

View File

@@ -0,0 +1,26 @@
#define XE_RESOLVE_CLEAR
#include "resolve.hlsli"
RWBuffer<uint4> xe_resolve_dest : register(u0);
[numthreads(8, 8, 1)]
void main(uint3 xe_thread_id : SV_DispatchThreadID) {
// 1 thread = 8 samples (same as resolve granularity).
uint2 extent_scale =
uint2(XeResolveEdramMsaaSamples() >= uint2(kXenosMsaaSamples_4X,
kXenosMsaaSamples_2X));
// Group height is the same as resolve granularity, Y overflow check not
// needed.
[branch] if (xe_thread_id.x >= (XeResolveSizeDiv8().x << extent_scale.x)) {
return;
}
uint address_int4s =
XeEdramOffsetInts(
(xe_thread_id.xy << uint2(3u, 0u)) +
(XeResolveOffset() << extent_scale),
XeResolveEdramBaseTiles(), XeResolveEdramPitchTiles(),
kXenosMsaaSamples_1X, XeResolveEdramIsDepth(), 0u)
>> 2u;
xe_resolve_dest[address_int4s] = xe_resolve_clear_value.xxxx;
xe_resolve_dest[address_int4s + 1u] = xe_resolve_clear_value.xxxx;
}