[GPU] XeSL host depth store and VS passthrough shaders

This commit is contained in:
Triang3l 2022-03-27 16:15:53 +03:00
parent 2cd6c31998
commit 3a07559df9
66 changed files with 2622 additions and 1585 deletions

View File

@ -575,29 +575,16 @@ bool D3D12RenderTargetCache::Initialize() {
// and pipelines.
D3D12_ROOT_PARAMETER
host_depth_store_root_parameters[kHostDepthStoreRootParameterCount];
// Rectangle constant.
D3D12_ROOT_PARAMETER& host_depth_store_root_rectangle_constant =
host_depth_store_root_parameters
[kHostDepthStoreRootParameterRectangleConstant];
host_depth_store_root_rectangle_constant.ParameterType =
// Constants.
D3D12_ROOT_PARAMETER& host_depth_store_root_constants =
host_depth_store_root_parameters[kHostDepthStoreRootParameterConstants];
host_depth_store_root_constants.ParameterType =
D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
host_depth_store_root_rectangle_constant.Constants.ShaderRegister = 0;
host_depth_store_root_rectangle_constant.Constants.RegisterSpace = 0;
host_depth_store_root_rectangle_constant.Constants.Num32BitValues =
sizeof(HostDepthStoreRectangleConstant) / sizeof(uint32_t);
host_depth_store_root_rectangle_constant.ShaderVisibility =
D3D12_SHADER_VISIBILITY_ALL;
// Render target constant.
D3D12_ROOT_PARAMETER& host_depth_store_root_render_target_constant =
host_depth_store_root_parameters
[kHostDepthStoreRootParameterRenderTargetConstant];
host_depth_store_root_render_target_constant.ParameterType =
D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
host_depth_store_root_render_target_constant.Constants.ShaderRegister = 1;
host_depth_store_root_render_target_constant.Constants.RegisterSpace = 0;
host_depth_store_root_render_target_constant.Constants.Num32BitValues =
sizeof(HostDepthStoreRenderTargetConstant) / sizeof(uint32_t);
host_depth_store_root_render_target_constant.ShaderVisibility =
host_depth_store_root_constants.Constants.ShaderRegister = 0;
host_depth_store_root_constants.Constants.RegisterSpace = 0;
host_depth_store_root_constants.Constants.Num32BitValues =
sizeof(HostDepthStoreConstants) / sizeof(uint32_t);
host_depth_store_root_constants.ShaderVisibility =
D3D12_SHADER_VISIBILITY_ALL;
// Source.
D3D12_DESCRIPTOR_RANGE host_depth_store_root_source_range;
@ -4599,9 +4586,11 @@ void D3D12RenderTargetCache::PerformTransfersAndResolveClears(
host_depth_store_render_target_constant.msaa_2x_supported =
uint32_t(msaa_2x_supported_);
command_list.D3DSetComputeRoot32BitConstants(
kHostDepthStoreRootParameterRenderTargetConstant,
kHostDepthStoreRootParameterConstants,
sizeof(host_depth_store_render_target_constant) / sizeof(uint32_t),
&host_depth_store_render_target_constant, 0);
&host_depth_store_render_target_constant,
offsetof(HostDepthStoreConstants, render_target) /
sizeof(uint32_t));
// Barriers - don't need to try to combine them with the rest of
// render target transfer barriers now - if this happens, after host
// depth storing, NON_PIXEL_SHADER_RESOURCE -> DEPTH_WRITE will be done
@ -4649,9 +4638,10 @@ void D3D12RenderTargetCache::PerformTransfersAndResolveClears(
host_depth_store_rectangle_constant.width_pixels_div_8_minus_1 =
(transfer_rectangle.width_pixels >> 3) - 1;
command_list.D3DSetComputeRoot32BitConstants(
kHostDepthStoreRootParameterRectangleConstant,
kHostDepthStoreRootParameterConstants,
sizeof(host_depth_store_rectangle_constant) / sizeof(uint32_t),
&host_depth_store_rectangle_constant, 0);
&host_depth_store_rectangle_constant,
offsetof(HostDepthStoreConstants, rectangle) / sizeof(uint32_t));
command_processor_.SubmitBarriers();
command_list.D3DDispatch(
(transfer_rectangle.width_pixels * pixel_size_x + 63) >> 6,

View File

@ -527,39 +527,8 @@ class D3D12RenderTargetCache final : public RenderTargetCache {
}
};
union HostDepthStoreRectangleConstant {
uint32_t constant;
struct {
// - 1 because the maximum is 0x1FFF / 8, not 0x2000 / 8.
uint32_t x_pixels_div_8 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
uint32_t y_pixels_div_8 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
uint32_t width_pixels_div_8_minus_1 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
};
HostDepthStoreRectangleConstant() : constant(0) {
static_assert_size(*this, sizeof(constant));
}
};
union HostDepthStoreRenderTargetConstant {
uint32_t constant;
struct {
uint32_t pitch_tiles : xenos::kEdramPitchTilesBits;
uint32_t resolution_scale_x : 2;
uint32_t resolution_scale_y : 2;
// Whether 2x MSAA is supported natively rather than through 4x.
uint32_t msaa_2x_supported : 1;
};
HostDepthStoreRenderTargetConstant() : constant(0) {
static_assert_size(*this, sizeof(constant));
}
};
enum {
kHostDepthStoreRootParameterRectangleConstant,
kHostDepthStoreRootParameterRenderTargetConstant,
kHostDepthStoreRootParameterConstants,
kHostDepthStoreRootParameterSource,
kHostDepthStoreRootParameterDest,
kHostDepthStoreRootParameterCount,

View File

@ -391,6 +391,41 @@ class RenderTargetCache {
const Rectangle* cutout = nullptr);
};
union HostDepthStoreRectangleConstant {
uint32_t constant;
struct {
// - 1 because the maximum is 0x1FFF / 8, not 0x2000 / 8.
uint32_t x_pixels_div_8 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
uint32_t y_pixels_div_8 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
uint32_t width_pixels_div_8_minus_1 : xenos::kResolveSizeBits - 1 -
xenos::kResolveAlignmentPixelsLog2;
};
HostDepthStoreRectangleConstant() : constant(0) {
static_assert_size(*this, sizeof(constant));
}
};
union HostDepthStoreRenderTargetConstant {
uint32_t constant;
struct {
uint32_t pitch_tiles : xenos::kEdramPitchTilesBits;
uint32_t resolution_scale_x : 2;
uint32_t resolution_scale_y : 2;
// Whether 2x MSAA is supported natively rather than through 4x.
uint32_t msaa_2x_supported : 1;
};
HostDepthStoreRenderTargetConstant() : constant(0) {
static_assert_size(*this, sizeof(constant));
}
};
struct HostDepthStoreConstants {
HostDepthStoreRectangleConstant rectangle;
HostDepthStoreRenderTargetConstant render_target;
};
struct ResolveCopyDumpRectangle {
RenderTarget* render_target;
// If rows == 1:

View File

@ -5,17 +5,11 @@
//
// Buffer Definitions:
//
// cbuffer XeHostDepthStoreRectangleConstants
// cbuffer xesl_push_constants
// {
//
// uint xe_host_depth_store_rectangle;// Offset: 0 Size: 4
//
// }
//
// cbuffer XeHostDepthStoreRenderTargetConstants
// {
//
// uint xe_host_depth_store_render_target;// Offset: 0 Size: 4
// uint xe_host_depth_store_render_target;// Offset: 4 Size: 4
//
// }
//
@ -24,10 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_host_depth_store_source texture float 2d T0 t0 1
// xe_host_depth_store_source texture float4 2d T0 t0 1
// xe_host_depth_store_dest UAV uint4 buf U0 u0 1
// XeHostDepthStoreRectangleConstants cbuffer NA NA CB0 cb0 1
// XeHostDepthStoreRenderTargetConstants cbuffer NA NA CB1 cb1 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -45,15 +38,13 @@
cs_5_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[0:0][1], immediateIndexed, space=0
dcl_constantbuffer CB1[1:1][1], immediateIndexed, space=0
dcl_resource_texture2d (float,float,float,float) T0[0:0], space=0
dcl_uav_typed_buffer (uint,uint,uint,uint) U0[0:0], space=0
dcl_input vThreadID.xy
dcl_temps 4
dcl_temps 5
dcl_thread_group 8, 8, 1
ubfe r0.x, l(10), l(20), CB0[0][0].x
ubfe r0.xy, l(10, 2, 0, 0), l(20, 10, 0, 0), CB0[0][0].xyxx
iadd r0.x, r0.x, l(1)
ubfe r0.y, l(2), l(10), CB1[1][0].x
imul null, r0.x, r0.y, r0.x
uge r0.x, vThreadID.x, r0.x
if_nz r0.x
@ -62,11 +53,11 @@ endif
ushr r0.y, CB0[0][0].x, l(10)
mov r0.x, CB0[0][0].x
bfi r0.xy, l(10, 10, 0, 0), l(3, 3, 0, 0), r0.xyxx, l(0, 0, 0, 0)
ubfe r0.zw, l(0, 0, 2, 2), l(0, 0, 10, 12), CB1[1][0].xxxx
ubfe r0.zw, l(0, 0, 2, 2), l(0, 0, 10, 12), CB0[0][0].yyyy
ishl r1.x, vThreadID.x, l(3)
mov r1.y, vThreadID.y
imad r1.xy, r0.xyxx, r0.zwzz, r1.xyxx
and r0.x, CB1[1][0].x, l(1023)
and r0.x, CB0[0][0].y, l(1023)
imul null, r0.yz, r0.zzwz, l(0, 80, 16, 0)
udiv r2.xy, null, r1.xyxx, r0.yzyy
imad r0.x, r2.y, r0.x, r2.x
@ -76,134 +67,121 @@ imad r0.y, r2.y, r0.y, r2.x
imad r0.x, r0.x, r0.z, r0.y
ushr r0.x, r0.x, l(2)
mov r1.zw, l(0,0,0,0)
ld r2.x, r1.xyww, T0[0].xyzw
iadd r3.xyzw, r1.xyww, l(1, 0, 0, 0)
ld r2.y, r3.xyzw, T0[0].yxzw
iadd r3.xyzw, r1.xyww, l(2, 0, 0, 0)
ld r2.x, r1.xyzw, T0[0].xyzw
iadd r3.xyzw, r1.xyxy, l(2, 0, 1, 0)
mov r4.xy, r3.zwzz
mov r4.zw, l(0,0,0,0)
ld r2.y, r4.xyzw, T0[0].yxzw
mov r3.zw, l(0,0,0,0)
ld r2.z, r3.xyzw, T0[0].yzxw
iadd r3.xyzw, r1.xyww, l(3, 0, 0, 0)
ld r2.w, r3.xyzw, T0[0].yzwx
iadd r3.xyzw, r1.xyxy, l(4, 0, 3, 0)
mov r4.xy, r3.zwzz
mov r4.zw, l(0,0,0,0)
ld r2.w, r4.xyzw, T0[0].yzwx
store_uav_typed U0[0].xyzw, r0.xxxx, r2.xyzw
iadd r0.y, r0.x, l(1)
iadd r2.xyzw, r1.xyww, l(4, 0, 0, 0)
ld r2.x, r2.xyzw, T0[0].xyzw
iadd r3.xyzw, r1.xyww, l(5, 0, 0, 0)
ld r2.y, r3.xyzw, T0[0].yxzw
iadd r3.xyzw, r1.xyww, l(6, 0, 0, 0)
mov r3.zw, l(0,0,0,0)
ld r2.x, r3.xyzw, T0[0].xyzw
iadd r3.xyzw, r1.xyxy, l(6, 0, 5, 0)
mov r4.xy, r3.zwzz
mov r4.zw, l(0,0,0,0)
ld r2.y, r4.xyzw, T0[0].yxzw
mov r3.zw, l(0,0,0,0)
ld r2.z, r3.xyzw, T0[0].yzxw
iadd r1.xyzw, r1.xyzw, l(7, 0, 0, 0)
iadd r1.xy, r1.xyxx, l(7, 0, 0, 0)
mov r1.zw, l(0,0,0,0)
ld r2.w, r1.xyzw, T0[0].yzwx
store_uav_typed U0[0].xyzw, r0.yyyy, r2.xyzw
ret
// Approximately 44 instruction slots used
// Approximately 50 instruction slots used
#endif
const BYTE host_depth_store_1xmsaa_cs[] =
{
68, 88, 66, 67, 240, 197,
52, 115, 102, 12, 206, 220,
26, 47, 204, 31, 163, 187,
103, 82, 1, 0, 0, 0,
196, 9, 0, 0, 5, 0,
68, 88, 66, 67, 245, 164,
50, 194, 210, 99, 179, 114,
212, 91, 203, 114, 230, 214,
20, 69, 1, 0, 0, 0,
192, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
172, 2, 0, 0, 188, 2,
0, 0, 204, 2, 0, 0,
40, 9, 0, 0, 82, 68,
69, 70, 112, 2, 0, 0,
2, 0, 0, 0, 92, 1,
0, 0, 4, 0, 0, 0,
52, 2, 0, 0, 68, 2,
0, 0, 84, 2, 0, 0,
36, 9, 0, 0, 82, 68,
69, 70, 248, 1, 0, 0,
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
70, 2, 0, 0, 19, 19,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
36, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
220, 0, 0, 0, 2, 0,
180, 0, 0, 0, 2, 0,
0, 0, 5, 0, 0, 0,
4, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 247, 0,
0, 0, 0, 0, 207, 0,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 1, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 1, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 16, 1, 0, 0,
0, 0, 232, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
115, 111, 117, 114, 99, 101,
0, 120, 101, 95, 104, 111,
115, 116, 95, 100, 101, 112,
116, 104, 95, 115, 116, 111,
114, 101, 95, 100, 101, 115,
116, 0, 88, 101, 72, 111,
115, 116, 68, 101, 112, 116,
104, 83, 116, 111, 114, 101,
82, 101, 99, 116, 97, 110,
103, 108, 101, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 88, 101, 72, 111, 115,
116, 68, 101, 112, 116, 104,
83, 116, 111, 114, 101, 82,
101, 110, 100, 101, 114, 84,
97, 114, 103, 101, 116, 67,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 171, 171,
16, 1, 0, 0, 1, 0,
0, 0, 140, 1, 0, 0,
120, 101, 95, 104, 111, 115,
116, 95, 100, 101, 112, 116,
104, 95, 115, 116, 111, 114,
101, 95, 115, 111, 117, 114,
99, 101, 0, 120, 101, 95,
104, 111, 115, 116, 95, 100,
101, 112, 116, 104, 95, 115,
116, 111, 114, 101, 95, 100,
101, 115, 116, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
232, 0, 0, 0, 2, 0,
0, 0, 20, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 1, 0,
0, 0, 252, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
180, 1, 0, 0, 0, 0,
100, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 216, 1,
2, 0, 0, 0, 136, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
114, 101, 99, 116, 97, 110,
103, 108, 101, 0, 100, 119,
111, 114, 100, 0, 0, 0,
19, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
210, 1, 0, 0, 36, 2,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 172, 1,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 2, 0,
0, 0, 216, 1, 0, 0,
0, 0, 136, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
99, 116, 97, 110, 103, 108,
101, 0, 100, 119, 111, 114,
100, 0, 0, 0, 19, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 130, 1,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
110, 100, 101, 114, 95, 116,
97, 114, 103, 101, 116, 0,
@ -220,52 +198,44 @@ const BYTE host_depth_store_1xmsaa_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
84, 6, 0, 0, 81, 0,
5, 0, 149, 1, 0, 0,
200, 6, 0, 0, 81, 0,
5, 0, 178, 1, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 7,
70, 142, 48, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 88, 24, 0, 7,
70, 126, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
88, 24, 0, 7, 70, 126,
0, 0, 0, 0, 85, 85,
0, 0, 0, 0, 0, 0,
156, 8, 0, 7, 70, 238,
49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 68, 68, 0, 0,
0, 0, 0, 0, 95, 0,
0, 2, 50, 0, 2, 0,
104, 0, 0, 2, 5, 0,
0, 0, 155, 0, 0, 4,
8, 0, 0, 0, 8, 0,
0, 0, 1, 0, 0, 0,
138, 0, 0, 17, 50, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 10, 0,
0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
20, 0, 0, 0, 10, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 70, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 85, 85, 0, 0,
0, 0, 0, 0, 156, 8,
0, 7, 70, 238, 49, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
68, 68, 0, 0, 0, 0,
0, 0, 95, 0, 0, 2,
50, 0, 2, 0, 104, 0,
0, 2, 4, 0, 0, 0,
155, 0, 0, 4, 8, 0,
0, 0, 8, 0, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 18, 0, 16, 0,
0, 0, 30, 0, 0, 7,
18, 0, 16, 0, 0, 0,
0, 0, 10, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 10, 0, 0, 0,
1, 64, 0, 0, 20, 0,
0, 0, 10, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 7, 18, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 34, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 2, 0, 0, 0,
1, 64, 0, 0, 10, 0,
0, 0, 10, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
38, 0, 0, 8, 0, 208,
0, 0, 18, 0, 16, 0,
0, 0, 0, 0, 26, 0,
@ -311,8 +281,8 @@ const BYTE host_depth_store_1xmsaa_cs[] =
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 0, 0, 0, 12, 0,
0, 0, 6, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 86, 133, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
41, 0, 0, 6, 18, 0,
16, 0, 1, 0, 0, 0,
@ -328,9 +298,9 @@ const BYTE host_depth_store_1xmsaa_cs[] =
0, 0, 70, 0, 16, 0,
1, 0, 0, 0, 1, 0,
0, 9, 18, 0, 16, 0,
0, 0, 0, 0, 10, 128,
48, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 26, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 64, 0, 0,
255, 3, 0, 0, 38, 0,
0, 11, 0, 208, 0, 0,
@ -387,44 +357,60 @@ const BYTE host_depth_store_1xmsaa_cs[] =
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
18, 0, 16, 0, 2, 0,
0, 0, 70, 15, 16, 0,
0, 0, 70, 14, 16, 0,
1, 0, 0, 0, 70, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
3, 0, 0, 0, 70, 15,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
34, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
3, 0, 0, 0, 22, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
3, 0, 0, 0, 70, 15,
3, 0, 0, 0, 70, 4,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
50, 0, 16, 0, 4, 0,
0, 0, 230, 10, 16, 0,
3, 0, 0, 0, 54, 0,
0, 8, 194, 0, 16, 0,
4, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
66, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
3, 0, 0, 0, 150, 124,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
3, 0, 0, 0, 70, 15,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 34, 0,
16, 0, 2, 0, 0, 0,
70, 14, 16, 0, 4, 0,
0, 0, 22, 126, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 8,
194, 0, 16, 0, 3, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 45, 0,
0, 8, 66, 0, 16, 0,
2, 0, 0, 0, 70, 14,
16, 0, 3, 0, 0, 0,
150, 124, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 10, 242, 0,
16, 0, 3, 0, 0, 0,
70, 4, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 54, 0,
0, 5, 50, 0, 16, 0,
4, 0, 0, 0, 230, 10,
16, 0, 3, 0, 0, 0,
54, 0, 0, 8, 194, 0,
16, 0, 4, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
130, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
3, 0, 0, 0, 150, 115,
4, 0, 0, 0, 150, 115,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 164, 0,
0, 8, 242, 224, 33, 0,
@ -436,35 +422,41 @@ const BYTE host_depth_store_1xmsaa_cs[] =
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
1, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
2, 0, 0, 0, 70, 15,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 4, 0,
1, 0, 0, 0, 54, 0,
0, 8, 194, 0, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
18, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
2, 0, 0, 0, 70, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
3, 0, 0, 0, 70, 15,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 18, 0,
16, 0, 2, 0, 0, 0,
70, 14, 16, 0, 3, 0,
0, 0, 70, 126, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 30, 0, 0, 10,
242, 0, 16, 0, 3, 0,
0, 0, 70, 4, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0,
54, 0, 0, 5, 50, 0,
16, 0, 4, 0, 0, 0,
230, 10, 16, 0, 3, 0,
0, 0, 54, 0, 0, 8,
194, 0, 16, 0, 4, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
34, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
3, 0, 0, 0, 22, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
3, 0, 0, 0, 70, 15,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 6, 0,
0, 0, 0, 0, 45, 0,
0, 8, 34, 0, 16, 0,
2, 0, 0, 0, 70, 14,
16, 0, 4, 0, 0, 0,
22, 126, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
54, 0, 0, 8, 194, 0,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
@ -473,38 +465,44 @@ const BYTE host_depth_store_1xmsaa_cs[] =
3, 0, 0, 0, 150, 124,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
1, 0, 0, 0, 70, 14,
0, 10, 50, 0, 16, 0,
1, 0, 0, 0, 70, 0,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 7, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
130, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
1, 0, 0, 0, 150, 115,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 164, 0,
0, 8, 242, 224, 33, 0,
0, 0, 54, 0, 0, 8,
194, 0, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 86, 5, 16, 0,
0, 0, 0, 0, 70, 14,
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
44, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 18, 0, 0, 0,
5, 0, 0, 0, 2, 0,
0, 0, 0, 0, 45, 0,
0, 8, 130, 0, 16, 0,
2, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0,
150, 115, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
164, 0, 0, 8, 242, 224,
33, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 5,
16, 0, 0, 0, 0, 0,
70, 14, 16, 0, 2, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 50, 0, 0, 0,
5, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 5, 0, 0, 0,
2, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0,
0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
@ -515,6 +513,5 @@ const BYTE host_depth_store_1xmsaa_cs[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
2, 0, 0, 0
0, 0, 2, 0, 0, 0
};

View File

@ -5,17 +5,11 @@
//
// Buffer Definitions:
//
// cbuffer XeHostDepthStoreRectangleConstants
// cbuffer xesl_push_constants
// {
//
// uint xe_host_depth_store_rectangle;// Offset: 0 Size: 4
//
// }
//
// cbuffer XeHostDepthStoreRenderTargetConstants
// {
//
// uint xe_host_depth_store_render_target;// Offset: 0 Size: 4
// uint xe_host_depth_store_render_target;// Offset: 4 Size: 4
//
// }
//
@ -24,10 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_host_depth_store_source texture float 2dMS T0 t0 1
// xe_host_depth_store_source texture float4 2dMS T0 t0 1
// xe_host_depth_store_dest UAV uint4 buf U0 u0 1
// XeHostDepthStoreRectangleConstants cbuffer NA NA CB0 cb0 1
// XeHostDepthStoreRenderTargetConstants cbuffer NA NA CB1 cb1 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -45,15 +38,13 @@
cs_5_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[0:0][1], immediateIndexed, space=0
dcl_constantbuffer CB1[1:1][1], immediateIndexed, space=0
dcl_resource_texture2dms(0) (float,float,float,float) T0[0:0], space=0
dcl_uav_typed_buffer (uint,uint,uint,uint) U0[0:0], space=0
dcl_input vThreadID.xy
dcl_temps 5
dcl_thread_group 8, 8, 1
ubfe r0.x, l(10), l(20), CB0[0][0].x
ubfe r0.xy, l(10, 2, 0, 0), l(20, 10, 0, 0), CB0[0][0].xyxx
iadd r0.x, r0.x, l(1)
ubfe r0.y, l(2), l(10), CB1[1][0].x
imul null, r0.x, r0.y, r0.x
uge r0.x, vThreadID.x, r0.x
if_nz r0.x
@ -62,12 +53,12 @@ endif
ushr r0.y, CB0[0][0].x, l(10)
mov r0.x, CB0[0][0].x
bfi r0.xy, l(10, 10, 0, 0), l(3, 3, 0, 0), r0.xyxx, l(0, 0, 0, 0)
ubfe r1.xyz, l(2, 2, 1, 0), l(10, 12, 14, 0), CB1[1][0].xxxx
ubfe r1.xyz, l(2, 2, 1, 0), l(10, 12, 14, 0), CB0[0][0].yyyy
ishl r2.x, vThreadID.x, l(3)
ushr r2.y, vThreadID.y, l(1)
imad r0.xy, r0.xyxx, r1.xyxx, r2.xyxx
and r2.y, vThreadID.y, l(1)
and r1.w, CB1[1][0].x, l(1023)
and r1.w, CB0[0][0].y, l(1023)
ishl r0.z, r0.y, l(1)
mov r2.x, l(0)
iadd r2.xz, r0.xxzx, r2.xxyx
@ -108,115 +99,95 @@ mov r3.zw, l(0,0,0,0)
ldms r2.w, r3.xyzw, T0[0].yzwx, r1.x
store_uav_typed U0[0].xyzw, r0.wwww, r2.xyzw
ret
// Approximately 57 instruction slots used
// Approximately 56 instruction slots used
#endif
const BYTE host_depth_store_2xmsaa_cs[] =
{
68, 88, 66, 67, 220, 153,
96, 168, 160, 176, 100, 61,
221, 246, 187, 57, 87, 53,
74, 27, 1, 0, 0, 0,
104, 11, 0, 0, 5, 0,
68, 88, 66, 67, 93, 44,
123, 4, 117, 130, 24, 111,
100, 32, 239, 250, 72, 125,
9, 219, 1, 0, 0, 0,
192, 10, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
172, 2, 0, 0, 188, 2,
0, 0, 204, 2, 0, 0,
204, 10, 0, 0, 82, 68,
69, 70, 112, 2, 0, 0,
2, 0, 0, 0, 92, 1,
0, 0, 4, 0, 0, 0,
52, 2, 0, 0, 68, 2,
0, 0, 84, 2, 0, 0,
36, 10, 0, 0, 82, 68,
69, 70, 248, 1, 0, 0,
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
70, 2, 0, 0, 19, 19,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
36, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
220, 0, 0, 0, 2, 0,
180, 0, 0, 0, 2, 0,
0, 0, 5, 0, 0, 0,
6, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 247, 0,
0, 0, 0, 0, 207, 0,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 1, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 1, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 16, 1, 0, 0,
0, 0, 232, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
115, 111, 117, 114, 99, 101,
0, 120, 101, 95, 104, 111,
115, 116, 95, 100, 101, 112,
116, 104, 95, 115, 116, 111,
114, 101, 95, 100, 101, 115,
116, 0, 88, 101, 72, 111,
115, 116, 68, 101, 112, 116,
104, 83, 116, 111, 114, 101,
82, 101, 99, 116, 97, 110,
103, 108, 101, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 88, 101, 72, 111, 115,
116, 68, 101, 112, 116, 104,
83, 116, 111, 114, 101, 82,
101, 110, 100, 101, 114, 84,
97, 114, 103, 101, 116, 67,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 171, 171,
16, 1, 0, 0, 1, 0,
0, 0, 140, 1, 0, 0,
120, 101, 95, 104, 111, 115,
116, 95, 100, 101, 112, 116,
104, 95, 115, 116, 111, 114,
101, 95, 115, 111, 117, 114,
99, 101, 0, 120, 101, 95,
104, 111, 115, 116, 95, 100,
101, 112, 116, 104, 95, 115,
116, 111, 114, 101, 95, 100,
101, 115, 116, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
232, 0, 0, 0, 2, 0,
0, 0, 20, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 1, 0,
0, 0, 252, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
180, 1, 0, 0, 0, 0,
100, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 216, 1,
2, 0, 0, 0, 136, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
114, 101, 99, 116, 97, 110,
103, 108, 101, 0, 100, 119,
111, 114, 100, 0, 0, 0,
19, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
210, 1, 0, 0, 36, 2,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 172, 1,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 2, 0,
0, 0, 216, 1, 0, 0,
0, 0, 136, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
99, 116, 97, 110, 103, 108,
101, 0, 100, 119, 111, 114,
100, 0, 0, 0, 19, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 130, 1,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
110, 100, 101, 114, 95, 116,
97, 114, 103, 101, 116, 0,
@ -233,52 +204,44 @@ const BYTE host_depth_store_2xmsaa_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
248, 7, 0, 0, 81, 0,
5, 0, 254, 1, 0, 0,
200, 7, 0, 0, 81, 0,
5, 0, 242, 1, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 7,
70, 142, 48, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 88, 32, 0, 7,
70, 126, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
88, 32, 0, 7, 70, 126,
0, 0, 0, 0, 85, 85,
0, 0, 0, 0, 0, 0,
156, 8, 0, 7, 70, 238,
49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 68, 68, 0, 0,
0, 0, 0, 0, 95, 0,
0, 2, 50, 0, 2, 0,
104, 0, 0, 2, 5, 0,
0, 0, 155, 0, 0, 4,
8, 0, 0, 0, 8, 0,
0, 0, 1, 0, 0, 0,
138, 0, 0, 17, 50, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 10, 0,
0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
20, 0, 0, 0, 10, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 70, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 85, 85, 0, 0,
0, 0, 0, 0, 156, 8,
0, 7, 70, 238, 49, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
68, 68, 0, 0, 0, 0,
0, 0, 95, 0, 0, 2,
50, 0, 2, 0, 104, 0,
0, 2, 5, 0, 0, 0,
155, 0, 0, 4, 8, 0,
0, 0, 8, 0, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 18, 0, 16, 0,
0, 0, 30, 0, 0, 7,
18, 0, 16, 0, 0, 0,
0, 0, 10, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 10, 0, 0, 0,
1, 64, 0, 0, 20, 0,
0, 0, 10, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 7, 18, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 34, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 2, 0, 0, 0,
1, 64, 0, 0, 10, 0,
0, 0, 10, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
38, 0, 0, 8, 0, 208,
0, 0, 18, 0, 16, 0,
0, 0, 0, 0, 26, 0,
@ -324,8 +287,8 @@ const BYTE host_depth_store_2xmsaa_cs[] =
2, 64, 0, 0, 10, 0,
0, 0, 12, 0, 0, 0,
14, 0, 0, 0, 0, 0,
0, 0, 6, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 86, 133, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
41, 0, 0, 6, 18, 0,
16, 0, 2, 0, 0, 0,
@ -347,8 +310,8 @@ const BYTE host_depth_store_2xmsaa_cs[] =
0, 0, 1, 0, 0, 0,
1, 0, 0, 9, 130, 0,
16, 0, 1, 0, 0, 0,
10, 128, 48, 0, 1, 0,
0, 0, 1, 0, 0, 0,
26, 128, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 64,
0, 0, 255, 3, 0, 0,
41, 0, 0, 7, 66, 0,
@ -575,7 +538,7 @@ const BYTE host_depth_store_2xmsaa_cs[] =
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
57, 0, 0, 0, 5, 0,
56, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 17, 0, 0, 0,

View File

@ -5,17 +5,11 @@
//
// Buffer Definitions:
//
// cbuffer XeHostDepthStoreRectangleConstants
// cbuffer xesl_push_constants
// {
//
// uint xe_host_depth_store_rectangle;// Offset: 0 Size: 4
//
// }
//
// cbuffer XeHostDepthStoreRenderTargetConstants
// {
//
// uint xe_host_depth_store_render_target;// Offset: 0 Size: 4
// uint xe_host_depth_store_render_target;// Offset: 4 Size: 4
//
// }
//
@ -24,10 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_host_depth_store_source texture float 2dMS T0 t0 1
// xe_host_depth_store_source texture float4 2dMS T0 t0 1
// xe_host_depth_store_dest UAV uint4 buf U0 u0 1
// XeHostDepthStoreRectangleConstants cbuffer NA NA CB0 cb0 1
// XeHostDepthStoreRenderTargetConstants cbuffer NA NA CB1 cb1 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -45,16 +38,14 @@
cs_5_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[0:0][1], immediateIndexed, space=0
dcl_constantbuffer CB1[1:1][1], immediateIndexed, space=0
dcl_resource_texture2dms(0) (float,float,float,float) T0[0:0], space=0
dcl_uav_typed_buffer (uint,uint,uint,uint) U0[0:0], space=0
dcl_input vThreadID.xy
dcl_temps 5
dcl_thread_group 8, 8, 1
ushr r0.x, vThreadID.x, l(1)
ubfe r0.y, l(10), l(20), CB0[0][0].x
ubfe r0.yz, l(0, 10, 2, 0), l(0, 20, 10, 0), CB0[0][0].xxyx
iadd r0.y, r0.y, l(1)
ubfe r0.z, l(2), l(10), CB1[1][0].x
imul null, r0.y, r0.z, r0.y
uge r0.x, r0.x, r0.y
if_nz r0.x
@ -63,12 +54,12 @@ endif
ushr r0.y, CB0[0][0].x, l(10)
mov r0.x, CB0[0][0].x
bfi r0.xy, l(10, 10, 0, 0), l(3, 3, 0, 0), r0.xyxx, l(0, 0, 0, 0)
ubfe r0.zw, l(0, 0, 2, 2), l(0, 0, 10, 12), CB1[1][0].xxxx
ubfe r0.zw, l(0, 0, 2, 2), l(0, 0, 10, 12), CB0[0][0].yyyy
ishl r1.x, vThreadID.x, l(2)
ushr r1.y, vThreadID.y, l(1)
imad r1.xy, r0.xyxx, r0.zwzz, r1.xyxx
bfi r0.xy, l(31, 31, 0, 0), l(1, 1, 0, 0), r1.xyxx, vThreadID.xyxx
and r2.x, CB1[1][0].x, l(1023)
and r2.x, CB0[0][0].y, l(1023)
imul null, r0.zw, r0.zzzw, l(0, 0, 80, 16)
udiv r2.yz, null, r0.xxyx, r0.zzwz
imad r2.x, r2.z, r2.x, r2.y
@ -97,115 +88,95 @@ ldms r2.z, r1.xyww, T0[0].yzxw, r0.y
ldms r2.w, r1.xyzw, T0[0].yzwx, r0.z
store_uav_typed U0[0].xyzw, r0.wwww, r2.xyzw
ret
// Approximately 46 instruction slots used
// Approximately 45 instruction slots used
#endif
const BYTE host_depth_store_4xmsaa_cs[] =
{
68, 88, 66, 67, 255, 93,
213, 231, 110, 151, 46, 65,
140, 74, 54, 254, 196, 135,
241, 89, 1, 0, 0, 0,
72, 10, 0, 0, 5, 0,
68, 88, 66, 67, 40, 223,
121, 252, 88, 5, 117, 190,
136, 7, 3, 6, 127, 125,
212, 65, 1, 0, 0, 0,
160, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
172, 2, 0, 0, 188, 2,
0, 0, 204, 2, 0, 0,
172, 9, 0, 0, 82, 68,
69, 70, 112, 2, 0, 0,
2, 0, 0, 0, 92, 1,
0, 0, 4, 0, 0, 0,
52, 2, 0, 0, 68, 2,
0, 0, 84, 2, 0, 0,
4, 9, 0, 0, 82, 68,
69, 70, 248, 1, 0, 0,
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
70, 2, 0, 0, 19, 19,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
36, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
220, 0, 0, 0, 2, 0,
180, 0, 0, 0, 2, 0,
0, 0, 5, 0, 0, 0,
6, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 247, 0,
0, 0, 0, 0, 207, 0,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 1, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 1, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 16, 1, 0, 0,
0, 0, 232, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
115, 111, 117, 114, 99, 101,
0, 120, 101, 95, 104, 111,
115, 116, 95, 100, 101, 112,
116, 104, 95, 115, 116, 111,
114, 101, 95, 100, 101, 115,
116, 0, 88, 101, 72, 111,
115, 116, 68, 101, 112, 116,
104, 83, 116, 111, 114, 101,
82, 101, 99, 116, 97, 110,
103, 108, 101, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 88, 101, 72, 111, 115,
116, 68, 101, 112, 116, 104,
83, 116, 111, 114, 101, 82,
101, 110, 100, 101, 114, 84,
97, 114, 103, 101, 116, 67,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 171, 171,
16, 1, 0, 0, 1, 0,
0, 0, 140, 1, 0, 0,
120, 101, 95, 104, 111, 115,
116, 95, 100, 101, 112, 116,
104, 95, 115, 116, 111, 114,
101, 95, 115, 111, 117, 114,
99, 101, 0, 120, 101, 95,
104, 111, 115, 116, 95, 100,
101, 112, 116, 104, 95, 115,
116, 111, 114, 101, 95, 100,
101, 115, 116, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
232, 0, 0, 0, 2, 0,
0, 0, 20, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
51, 1, 0, 0, 1, 0,
0, 0, 252, 1, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
180, 1, 0, 0, 0, 0,
100, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 216, 1,
2, 0, 0, 0, 136, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 120, 101,
95, 104, 111, 115, 116, 95,
100, 101, 112, 116, 104, 95,
115, 116, 111, 114, 101, 95,
114, 101, 99, 116, 97, 110,
103, 108, 101, 0, 100, 119,
111, 114, 100, 0, 0, 0,
19, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
210, 1, 0, 0, 36, 2,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 172, 1,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 2, 0,
0, 0, 216, 1, 0, 0,
0, 0, 136, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
99, 116, 97, 110, 103, 108,
101, 0, 100, 119, 111, 114,
100, 0, 0, 0, 19, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 130, 1,
0, 0, 120, 101, 95, 104,
111, 115, 116, 95, 100, 101,
112, 116, 104, 95, 115, 116,
111, 114, 101, 95, 114, 101,
110, 100, 101, 114, 95, 116,
97, 114, 103, 101, 116, 0,
@ -222,56 +193,48 @@ const BYTE host_depth_store_4xmsaa_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
216, 6, 0, 0, 81, 0,
5, 0, 182, 1, 0, 0,
168, 6, 0, 0, 81, 0,
5, 0, 170, 1, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 89, 0, 0, 7,
70, 142, 48, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 88, 32, 0, 7,
70, 126, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
88, 32, 0, 7, 70, 126,
0, 0, 0, 0, 85, 85,
0, 0, 0, 0, 0, 0,
156, 8, 0, 7, 70, 238,
49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 68, 68, 0, 0,
0, 0, 0, 0, 95, 0,
0, 2, 50, 0, 2, 0,
104, 0, 0, 2, 5, 0,
0, 0, 155, 0, 0, 4,
8, 0, 0, 0, 8, 0,
0, 0, 1, 0, 0, 0,
85, 0, 0, 6, 18, 0,
16, 0, 0, 0, 0, 0,
10, 0, 2, 0, 1, 64,
0, 0, 1, 0, 0, 0,
138, 0, 0, 17, 98, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 10, 0, 0, 0,
2, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 20, 0,
0, 0, 10, 0, 0, 0,
0, 0, 0, 0, 6, 129,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 85, 85, 0, 0,
0, 0, 0, 0, 156, 8,
0, 7, 70, 238, 49, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
68, 68, 0, 0, 0, 0,
0, 0, 95, 0, 0, 2,
50, 0, 2, 0, 104, 0,
0, 2, 5, 0, 0, 0,
155, 0, 0, 4, 8, 0,
0, 0, 8, 0, 0, 0,
1, 0, 0, 0, 85, 0,
0, 6, 18, 0, 16, 0,
0, 0, 0, 0, 10, 0,
2, 0, 1, 64, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 34, 0, 16, 0,
0, 0, 30, 0, 0, 7,
34, 0, 16, 0, 0, 0,
0, 0, 26, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 10, 0, 0, 0,
1, 64, 0, 0, 20, 0,
0, 0, 10, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 7, 34, 0,
16, 0, 0, 0, 0, 0,
26, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
1, 0, 0, 0, 138, 0,
0, 11, 66, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 2, 0, 0, 0,
1, 64, 0, 0, 10, 0,
0, 0, 10, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
38, 0, 0, 8, 0, 208,
0, 0, 34, 0, 16, 0,
0, 0, 0, 0, 42, 0,
@ -318,8 +281,8 @@ const BYTE host_depth_store_4xmsaa_cs[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 0,
0, 0, 12, 0, 0, 0,
6, 128, 48, 0, 1, 0,
0, 0, 1, 0, 0, 0,
86, 133, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 41, 0,
0, 6, 18, 0, 16, 0,
1, 0, 0, 0, 10, 0,
@ -347,8 +310,8 @@ const BYTE host_depth_store_4xmsaa_cs[] =
1, 0, 0, 0, 70, 0,
2, 0, 1, 0, 0, 9,
18, 0, 16, 0, 2, 0,
0, 0, 10, 128, 48, 0,
1, 0, 0, 0, 1, 0,
0, 0, 26, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 64, 0, 0, 255, 3,
0, 0, 38, 0, 0, 11,
@ -516,7 +479,7 @@ const BYTE host_depth_store_4xmsaa_cs[] =
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
46, 0, 0, 0, 5, 0,
45, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 13, 0, 0, 0,

View File

@ -1329,11 +1329,12 @@ switch r0.y
imad r0.yz, r1.yywy, l(0, 0x00010000, 0x00010000, 0), r1.xxzx
break
default
f32tof16 r1.x, r4.x
f32tof16 r1.y, r7.x
f32tof16 r3.x, r5.x
f32tof16 r3.y, r2.x
imad r0.yz, r3.xxyx, l(0, 0x00010000, 0x00010000, 0), r1.xxyx
f32tof16 r0.w, r4.x
f32tof16 r1.x, r5.x
imad r0.y, r1.x, l(0x00010000), r0.w
f32tof16 r0.w, r7.x
f32tof16 r1.x, r2.x
imad r0.z, r1.x, l(0x00010000), r0.w
break
endswitch
ieq r0.w, r3.w, l(1)
@ -1345,20 +1346,20 @@ if_nz r0.w
endif
store_uav_typed U0[0].xyzw, r0.xxxx, r0.yzyy
ret
// Approximately 1299 instruction slots used
// Approximately 1300 instruction slots used
#endif
const BYTE resolve_full_16bpp_cs[] =
{
68, 88, 66, 67, 122, 248,
161, 239, 38, 34, 59, 122,
64, 201, 159, 30, 45, 236,
145, 6, 1, 0, 0, 0,
112, 158, 0, 0, 5, 0,
68, 88, 66, 67, 161, 122,
199, 225, 156, 78, 85, 181,
38, 69, 188, 217, 160, 206,
17, 122, 1, 0, 0, 0,
136, 158, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
208, 2, 0, 0, 224, 2,
0, 0, 240, 2, 0, 0,
212, 157, 0, 0, 82, 68,
236, 157, 0, 0, 82, 68,
69, 70, 148, 2, 0, 0,
1, 0, 0, 0, 236, 0,
0, 0, 3, 0, 0, 0,
@ -1476,8 +1477,8 @@ const BYTE resolve_full_16bpp_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
220, 154, 0, 0, 81, 0,
5, 0, 183, 38, 0, 0,
244, 154, 0, 0, 81, 0,
5, 0, 189, 38, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
@ -8024,27 +8025,31 @@ const BYTE resolve_full_16bpp_cs[] =
16, 0, 1, 0, 0, 0,
2, 0, 0, 1, 10, 0,
0, 1, 130, 0, 0, 5,
18, 0, 16, 0, 1, 0,
130, 0, 16, 0, 0, 0,
0, 0, 10, 0, 16, 0,
4, 0, 0, 0, 130, 0,
0, 5, 34, 0, 16, 0,
0, 5, 18, 0, 16, 0,
1, 0, 0, 0, 10, 0,
16, 0, 7, 0, 0, 0,
130, 0, 0, 5, 18, 0,
16, 0, 3, 0, 0, 0,
10, 0, 16, 0, 5, 0,
16, 0, 5, 0, 0, 0,
35, 0, 0, 9, 34, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 1, 0,
0, 0, 1, 64, 0, 0,
0, 0, 1, 0, 58, 0,
16, 0, 0, 0, 0, 0,
130, 0, 0, 5, 130, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 7, 0,
0, 0, 130, 0, 0, 5,
34, 0, 16, 0, 3, 0,
18, 0, 16, 0, 1, 0,
0, 0, 10, 0, 16, 0,
2, 0, 0, 0, 35, 0,
0, 12, 98, 0, 16, 0,
0, 0, 0, 0, 6, 1,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
0, 0, 6, 1, 16, 0,
1, 0, 0, 0, 2, 0,
0, 9, 66, 0, 16, 0,
0, 0, 0, 0, 10, 0,
16, 0, 1, 0, 0, 0,
1, 64, 0, 0, 0, 0,
1, 0, 58, 0, 16, 0,
0, 0, 0, 0, 2, 0,
0, 1, 23, 0, 0, 1,
32, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
@ -8085,10 +8090,10 @@ const BYTE resolve_full_16bpp_cs[] =
150, 5, 16, 0, 0, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 19, 5, 0, 0,
0, 0, 20, 5, 0, 0,
23, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
133, 0, 0, 0, 30, 1,
133, 0, 0, 0, 31, 1,
0, 0, 172, 0, 0, 0,
61, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0,

View File

@ -1360,11 +1360,12 @@ switch r0.y
imad r0.yz, r1.yywy, l(0, 0x00010000, 0x00010000, 0), r1.xxzx
break
default
f32tof16 r1.x, r5.x
f32tof16 r1.y, r8.x
f32tof16 r2.x, r6.x
f32tof16 r2.y, r7.x
imad r0.yz, r2.xxyx, l(0, 0x00010000, 0x00010000, 0), r1.xxyx
f32tof16 r0.w, r5.x
f32tof16 r1.x, r6.x
imad r0.y, r1.x, l(0x00010000), r0.w
f32tof16 r0.w, r8.x
f32tof16 r1.x, r7.x
imad r0.z, r1.x, l(0x00010000), r0.w
break
endswitch
and r0.w, CB0[0][0].z, l(7)
@ -1377,20 +1378,20 @@ if_nz r0.w
endif
store_uav_typed U0[0].xyzw, r0.xxxx, r0.yzyy
ret
// Approximately 1323 instruction slots used
// Approximately 1324 instruction slots used
#endif
const BYTE resolve_full_16bpp_scaled_cs[] =
{
68, 88, 66, 67, 17, 196,
248, 162, 148, 187, 123, 170,
150, 149, 87, 23, 157, 34,
89, 51, 1, 0, 0, 0,
188, 160, 0, 0, 5, 0,
68, 88, 66, 67, 12, 60,
201, 113, 72, 169, 62, 4,
36, 236, 72, 168, 110, 92,
28, 108, 1, 0, 0, 0,
212, 160, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
56, 3, 0, 0, 72, 3,
0, 0, 88, 3, 0, 0,
32, 160, 0, 0, 82, 68,
56, 160, 0, 0, 82, 68,
69, 70, 252, 2, 0, 0,
2, 0, 0, 0, 52, 1,
0, 0, 4, 0, 0, 0,
@ -1525,8 +1526,8 @@ const BYTE resolve_full_16bpp_scaled_cs[] =
79, 83, 71, 78, 8, 0,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 83, 72,
69, 88, 192, 156, 0, 0,
81, 0, 5, 0, 48, 39,
69, 88, 216, 156, 0, 0,
81, 0, 5, 0, 54, 39,
0, 0, 106, 8, 0, 1,
89, 0, 0, 7, 70, 142,
48, 0, 0, 0, 0, 0,
@ -8148,27 +8149,31 @@ const BYTE resolve_full_16bpp_scaled_cs[] =
16, 0, 1, 0, 0, 0,
2, 0, 0, 1, 10, 0,
0, 1, 130, 0, 0, 5,
18, 0, 16, 0, 1, 0,
130, 0, 16, 0, 0, 0,
0, 0, 10, 0, 16, 0,
5, 0, 0, 0, 130, 0,
0, 5, 34, 0, 16, 0,
0, 5, 18, 0, 16, 0,
1, 0, 0, 0, 10, 0,
16, 0, 8, 0, 0, 0,
130, 0, 0, 5, 18, 0,
16, 0, 2, 0, 0, 0,
10, 0, 16, 0, 6, 0,
16, 0, 6, 0, 0, 0,
35, 0, 0, 9, 34, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 1, 0,
0, 0, 1, 64, 0, 0,
0, 0, 1, 0, 58, 0,
16, 0, 0, 0, 0, 0,
130, 0, 0, 5, 130, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 8, 0,
0, 0, 130, 0, 0, 5,
34, 0, 16, 0, 2, 0,
18, 0, 16, 0, 1, 0,
0, 0, 10, 0, 16, 0,
7, 0, 0, 0, 35, 0,
0, 12, 98, 0, 16, 0,
0, 0, 0, 0, 6, 1,
16, 0, 2, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
0, 0, 6, 1, 16, 0,
1, 0, 0, 0, 2, 0,
0, 9, 66, 0, 16, 0,
0, 0, 0, 0, 10, 0,
16, 0, 1, 0, 0, 0,
1, 64, 0, 0, 0, 0,
1, 0, 58, 0, 16, 0,
0, 0, 0, 0, 2, 0,
0, 1, 23, 0, 0, 1,
1, 0, 0, 9, 130, 0,
16, 0, 0, 0, 0, 0,
@ -8215,10 +8220,10 @@ const BYTE resolve_full_16bpp_scaled_cs[] =
150, 5, 16, 0, 0, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 43, 5, 0, 0,
0, 0, 44, 5, 0, 0,
24, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
133, 0, 0, 0, 39, 1,
133, 0, 0, 0, 40, 1,
0, 0, 180, 0, 0, 0,
63, 0, 0, 0, 32, 0,
0, 0, 0, 0, 0, 0,

View File

@ -1318,15 +1318,15 @@ switch r0.y
imad r6.x, r0.z, l(0x00010000), r0.y
break
case l(31)
f32tof16 r1.x, r4.x
f32tof16 r1.y, r5.x
f32tof16 r1.z, r7.x
f32tof16 r1.w, r6.x
f32tof16 r8.x, r4.y
f32tof16 r8.y, r5.y
f32tof16 r8.z, r7.y
f32tof16 r8.w, r2.y
imad r6.xyzw, r8.wyxz, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r1.wyxz
f32tof16 r0.yz, r4.xxyx
imad r6.z, r0.z, l(0x00010000), r0.y
f32tof16 r0.yz, r5.xxyx
imad r6.y, r0.z, l(0x00010000), r0.y
f32tof16 r0.yz, r7.xxyx
imad r6.w, r0.z, l(0x00010000), r0.y
f32tof16 r0.y, r6.x
f32tof16 r0.z, r2.y
imad r6.x, r0.z, l(0x00010000), r0.y
break
default
mov r6.z, r4.x
@ -1354,15 +1354,15 @@ ret
const BYTE resolve_full_32bpp_cs[] =
{
68, 88, 66, 67, 6, 223,
221, 81, 201, 228, 242, 38,
30, 228, 108, 198, 29, 216,
108, 219, 1, 0, 0, 0,
220, 157, 0, 0, 5, 0,
68, 88, 66, 67, 190, 127,
1, 51, 115, 7, 103, 223,
70, 14, 127, 63, 222, 233,
22, 41, 1, 0, 0, 0,
0, 158, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
208, 2, 0, 0, 224, 2,
0, 0, 240, 2, 0, 0,
64, 157, 0, 0, 82, 68,
100, 157, 0, 0, 82, 68,
69, 70, 148, 2, 0, 0,
1, 0, 0, 0, 236, 0,
0, 0, 3, 0, 0, 0,
@ -1480,8 +1480,8 @@ const BYTE resolve_full_32bpp_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
72, 154, 0, 0, 81, 0,
5, 0, 146, 38, 0, 0,
108, 154, 0, 0, 81, 0,
5, 0, 155, 38, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
@ -7944,41 +7944,47 @@ const BYTE resolve_full_32bpp_cs[] =
0, 0, 2, 0, 0, 1,
6, 0, 0, 3, 1, 64,
0, 0, 31, 0, 0, 0,
130, 0, 0, 5, 18, 0,
16, 0, 1, 0, 0, 0,
10, 0, 16, 0, 4, 0,
130, 0, 0, 5, 98, 0,
16, 0, 0, 0, 0, 0,
6, 1, 16, 0, 4, 0,
0, 0, 35, 0, 0, 9,
66, 0, 16, 0, 6, 0,
0, 0, 42, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 1, 0,
26, 0, 16, 0, 0, 0,
0, 0, 130, 0, 0, 5,
34, 0, 16, 0, 1, 0,
0, 0, 10, 0, 16, 0,
5, 0, 0, 0, 130, 0,
0, 5, 66, 0, 16, 0,
1, 0, 0, 0, 10, 0,
98, 0, 16, 0, 0, 0,
0, 0, 6, 1, 16, 0,
5, 0, 0, 0, 35, 0,
0, 9, 34, 0, 16, 0,
6, 0, 0, 0, 42, 0,
16, 0, 0, 0, 0, 0,
1, 64, 0, 0, 0, 0,
1, 0, 26, 0, 16, 0,
0, 0, 0, 0, 130, 0,
0, 5, 98, 0, 16, 0,
0, 0, 0, 0, 6, 1,
16, 0, 7, 0, 0, 0,
130, 0, 0, 5, 130, 0,
16, 0, 1, 0, 0, 0,
35, 0, 0, 9, 130, 0,
16, 0, 6, 0, 0, 0,
42, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 1, 0, 26, 0,
16, 0, 0, 0, 0, 0,
130, 0, 0, 5, 34, 0,
16, 0, 0, 0, 0, 0,
10, 0, 16, 0, 6, 0,
0, 0, 130, 0, 0, 5,
18, 0, 16, 0, 8, 0,
0, 0, 26, 0, 16, 0,
4, 0, 0, 0, 130, 0,
0, 5, 34, 0, 16, 0,
8, 0, 0, 0, 26, 0,
16, 0, 5, 0, 0, 0,
130, 0, 0, 5, 66, 0,
16, 0, 8, 0, 0, 0,
26, 0, 16, 0, 7, 0,
0, 0, 130, 0, 0, 5,
130, 0, 16, 0, 8, 0,
66, 0, 16, 0, 0, 0,
0, 0, 26, 0, 16, 0,
2, 0, 0, 0, 35, 0,
0, 12, 242, 0, 16, 0,
6, 0, 0, 0, 118, 8,
16, 0, 8, 0, 0, 0,
2, 64, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 118, 8, 16, 0,
1, 0, 0, 0, 2, 0,
0, 9, 18, 0, 16, 0,
6, 0, 0, 0, 42, 0,
16, 0, 0, 0, 0, 0,
1, 64, 0, 0, 0, 0,
1, 0, 26, 0, 16, 0,
0, 0, 0, 0, 2, 0,
0, 1, 10, 0, 0, 1,
54, 0, 0, 5, 66, 0,
16, 0, 6, 0, 0, 0,
@ -8068,7 +8074,7 @@ const BYTE resolve_full_32bpp_cs[] =
0, 0, 23, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 134, 0, 0, 0,
12, 1, 0, 0, 173, 0,
15, 1, 0, 0, 173, 0,
0, 0, 62, 0, 0, 0,
30, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,

View File

@ -1360,15 +1360,15 @@ switch r0.y
imad r9.x, r0.z, l(0x00010000), r0.y
break
case l(31)
f32tof16 r1.x, r5.x
f32tof16 r1.y, r6.x
f32tof16 r1.z, r8.x
f32tof16 r1.w, r9.x
f32tof16 r2.x, r5.y
f32tof16 r2.y, r6.y
f32tof16 r2.z, r8.y
f32tof16 r2.w, r7.y
imad r9.xyzw, r2.wyxz, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r1.wyxz
f32tof16 r0.yz, r5.xxyx
imad r9.z, r0.z, l(0x00010000), r0.y
f32tof16 r0.yz, r6.xxyx
imad r9.y, r0.z, l(0x00010000), r0.y
f32tof16 r0.yz, r8.xxyx
imad r9.w, r0.z, l(0x00010000), r0.y
f32tof16 r0.y, r9.x
f32tof16 r0.z, r7.y
imad r9.x, r0.z, l(0x00010000), r0.y
break
default
mov r9.z, r5.x
@ -1397,15 +1397,15 @@ ret
const BYTE resolve_full_32bpp_scaled_cs[] =
{
68, 88, 66, 67, 19, 170,
1, 90, 249, 15, 80, 164,
255, 208, 31, 117, 114, 147,
62, 94, 1, 0, 0, 0,
4, 162, 0, 0, 5, 0,
68, 88, 66, 67, 116, 11,
112, 163, 68, 217, 200, 16,
201, 60, 125, 107, 17, 99,
192, 101, 1, 0, 0, 0,
40, 162, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
56, 3, 0, 0, 72, 3,
0, 0, 88, 3, 0, 0,
104, 161, 0, 0, 82, 68,
140, 161, 0, 0, 82, 68,
69, 70, 252, 2, 0, 0,
2, 0, 0, 0, 52, 1,
0, 0, 4, 0, 0, 0,
@ -1540,8 +1540,8 @@ const BYTE resolve_full_32bpp_scaled_cs[] =
79, 83, 71, 78, 8, 0,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 83, 72,
69, 88, 8, 158, 0, 0,
81, 0, 5, 0, 130, 39,
69, 88, 44, 158, 0, 0,
81, 0, 5, 0, 139, 39,
0, 0, 106, 8, 0, 1,
89, 0, 0, 7, 70, 142,
48, 0, 0, 0, 0, 0,
@ -8159,40 +8159,46 @@ const BYTE resolve_full_32bpp_scaled_cs[] =
0, 1, 6, 0, 0, 3,
1, 64, 0, 0, 31, 0,
0, 0, 130, 0, 0, 5,
18, 0, 16, 0, 1, 0,
0, 0, 10, 0, 16, 0,
5, 0, 0, 0, 130, 0,
0, 5, 34, 0, 16, 0,
1, 0, 0, 0, 10, 0,
98, 0, 16, 0, 0, 0,
0, 0, 6, 1, 16, 0,
5, 0, 0, 0, 35, 0,
0, 9, 66, 0, 16, 0,
9, 0, 0, 0, 42, 0,
16, 0, 0, 0, 0, 0,
1, 64, 0, 0, 0, 0,
1, 0, 26, 0, 16, 0,
0, 0, 0, 0, 130, 0,
0, 5, 98, 0, 16, 0,
0, 0, 0, 0, 6, 1,
16, 0, 6, 0, 0, 0,
130, 0, 0, 5, 66, 0,
16, 0, 1, 0, 0, 0,
10, 0, 16, 0, 8, 0,
35, 0, 0, 9, 34, 0,
16, 0, 9, 0, 0, 0,
42, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 1, 0, 26, 0,
16, 0, 0, 0, 0, 0,
130, 0, 0, 5, 98, 0,
16, 0, 0, 0, 0, 0,
6, 1, 16, 0, 8, 0,
0, 0, 35, 0, 0, 9,
130, 0, 16, 0, 9, 0,
0, 0, 42, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 1, 0,
26, 0, 16, 0, 0, 0,
0, 0, 130, 0, 0, 5,
130, 0, 16, 0, 1, 0,
34, 0, 16, 0, 0, 0,
0, 0, 10, 0, 16, 0,
9, 0, 0, 0, 130, 0,
0, 5, 18, 0, 16, 0,
2, 0, 0, 0, 26, 0,
16, 0, 5, 0, 0, 0,
130, 0, 0, 5, 34, 0,
16, 0, 2, 0, 0, 0,
26, 0, 16, 0, 6, 0,
0, 0, 130, 0, 0, 5,
66, 0, 16, 0, 2, 0,
0, 0, 26, 0, 16, 0,
8, 0, 0, 0, 130, 0,
0, 5, 130, 0, 16, 0,
2, 0, 0, 0, 26, 0,
0, 5, 66, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 7, 0, 0, 0,
35, 0, 0, 12, 242, 0,
35, 0, 0, 9, 18, 0,
16, 0, 9, 0, 0, 0,
118, 8, 16, 0, 2, 0,
0, 0, 2, 64, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 118, 8,
16, 0, 1, 0, 0, 0,
42, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 1, 0, 26, 0,
16, 0, 0, 0, 0, 0,
2, 0, 0, 1, 10, 0,
0, 1, 54, 0, 0, 5,
66, 0, 16, 0, 9, 0,
@ -8288,7 +8294,7 @@ const BYTE resolve_full_32bpp_scaled_cs[] =
58, 5, 0, 0, 24, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 134, 0,
0, 0, 24, 1, 0, 0,
0, 0, 27, 1, 0, 0,
183, 0, 0, 0, 64, 0,
0, 0, 33, 0, 0, 0,
0, 0, 0, 0, 0, 0,

View File

@ -1151,16 +1151,18 @@ switch r1.y
imad r2.zw, r9.yyyw, l(0, 0, 0x00010000, 0x00010000), r9.xxxz
break
case l(32)
f32tof16 r9.xy, r4.xzxx
f32tof16 r9.zw, r6.xxxz
f32tof16 r10.xy, r4.ywyy
f32tof16 r10.zw, r5.wwwz
imad r5.xyzw, r10.xyzw, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r9.xyzw
f32tof16 r9.xy, r7.xzxx
f32tof16 r9.zw, r8.xxxz
f32tof16 r10.xy, r7.ywyy
f32tof16 r10.zw, r2.wwwz
imad r2.xyzw, r10.xyzw, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r9.xyzw
f32tof16 r1.yw, r4.xxxz
f32tof16 r3.yz, r4.yywy
imad r5.xy, r3.yzyy, l(0x00010000, 0x00010000, 0, 0), r1.ywyy
f32tof16 r1.yw, r6.xxxz
f32tof16 r3.yz, r5.wwzw
imad r5.zw, r3.yyyz, l(0, 0, 0x00010000, 0x00010000), r1.yyyw
f32tof16 r1.yw, r7.xxxz
f32tof16 r3.yz, r7.yywy
imad r2.xy, r3.yzyy, l(0x00010000, 0x00010000, 0, 0), r1.ywyy
f32tof16 r1.yw, r8.xxxz
f32tof16 r3.yz, r2.wwzw
imad r2.zw, r3.yyyz, l(0, 0, 0x00010000, 0x00010000), r1.yyyw
break
default
mov r5.xy, r4.xyxx
@ -1270,20 +1272,20 @@ if_nz r0.z
endif
store_uav_typed U0[0].xyzw, r0.xxxx, r2.xyzw
ret
// Approximately 1224 instruction slots used
// Approximately 1226 instruction slots used
#endif
const BYTE resolve_full_64bpp_cs[] =
{
68, 88, 66, 67, 87, 220,
183, 187, 206, 232, 244, 147,
255, 195, 21, 134, 69, 222,
224, 255, 1, 0, 0, 0,
232, 147, 0, 0, 5, 0,
68, 88, 66, 67, 100, 233,
159, 181, 66, 54, 89, 165,
83, 0, 68, 153, 219, 84,
76, 22, 1, 0, 0, 0,
72, 148, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
208, 2, 0, 0, 224, 2,
0, 0, 240, 2, 0, 0,
76, 147, 0, 0, 82, 68,
172, 147, 0, 0, 82, 68,
69, 70, 148, 2, 0, 0,
1, 0, 0, 0, 236, 0,
0, 0, 3, 0, 0, 0,
@ -1401,8 +1403,8 @@ const BYTE resolve_full_64bpp_cs[] =
71, 78, 8, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 83, 72, 69, 88,
84, 144, 0, 0, 81, 0,
5, 0, 21, 36, 0, 0,
180, 144, 0, 0, 81, 0,
5, 0, 45, 36, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
@ -6941,49 +6943,65 @@ const BYTE resolve_full_64bpp_cs[] =
0, 0, 2, 0, 0, 1,
6, 0, 0, 3, 1, 64,
0, 0, 32, 0, 0, 0,
130, 0, 0, 5, 50, 0,
16, 0, 9, 0, 0, 0,
134, 0, 16, 0, 4, 0,
130, 0, 0, 5, 162, 0,
16, 0, 1, 0, 0, 0,
6, 8, 16, 0, 4, 0,
0, 0, 130, 0, 0, 5,
194, 0, 16, 0, 9, 0,
0, 0, 6, 8, 16, 0,
6, 0, 0, 0, 130, 0,
0, 5, 50, 0, 16, 0,
10, 0, 0, 0, 214, 5,
16, 0, 4, 0, 0, 0,
130, 0, 0, 5, 194, 0,
16, 0, 10, 0, 0, 0,
246, 11, 16, 0, 5, 0,
0, 0, 35, 0, 0, 12,
242, 0, 16, 0, 5, 0,
0, 0, 70, 14, 16, 0,
10, 0, 0, 0, 2, 64,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
70, 14, 16, 0, 9, 0,
0, 0, 130, 0, 0, 5,
50, 0, 16, 0, 9, 0,
0, 0, 134, 0, 16, 0,
7, 0, 0, 0, 130, 0,
0, 5, 194, 0, 16, 0,
9, 0, 0, 0, 6, 8,
16, 0, 8, 0, 0, 0,
130, 0, 0, 5, 50, 0,
16, 0, 10, 0, 0, 0,
214, 5, 16, 0, 7, 0,
0, 0, 130, 0, 0, 5,
194, 0, 16, 0, 10, 0,
0, 0, 246, 11, 16, 0,
2, 0, 0, 0, 35, 0,
0, 12, 242, 0, 16, 0,
2, 0, 0, 0, 70, 14,
16, 0, 10, 0, 0, 0,
98, 0, 16, 0, 3, 0,
0, 0, 86, 7, 16, 0,
4, 0, 0, 0, 35, 0,
0, 12, 50, 0, 16, 0,
5, 0, 0, 0, 150, 5,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 214, 5, 16, 0,
1, 0, 0, 0, 130, 0,
0, 5, 162, 0, 16, 0,
1, 0, 0, 0, 6, 8,
16, 0, 6, 0, 0, 0,
130, 0, 0, 5, 98, 0,
16, 0, 3, 0, 0, 0,
246, 14, 16, 0, 5, 0,
0, 0, 35, 0, 0, 12,
194, 0, 16, 0, 5, 0,
0, 0, 86, 9, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
86, 13, 16, 0, 1, 0,
0, 0, 130, 0, 0, 5,
162, 0, 16, 0, 1, 0,
0, 0, 6, 8, 16, 0,
7, 0, 0, 0, 130, 0,
0, 5, 98, 0, 16, 0,
3, 0, 0, 0, 86, 7,
16, 0, 7, 0, 0, 0,
35, 0, 0, 12, 50, 0,
16, 0, 2, 0, 0, 0,
150, 5, 16, 0, 3, 0,
0, 0, 2, 64, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 70, 14, 16, 0,
9, 0, 0, 0, 2, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 214, 5,
16, 0, 1, 0, 0, 0,
130, 0, 0, 5, 162, 0,
16, 0, 1, 0, 0, 0,
6, 8, 16, 0, 8, 0,
0, 0, 130, 0, 0, 5,
98, 0, 16, 0, 3, 0,
0, 0, 246, 14, 16, 0,
2, 0, 0, 0, 35, 0,
0, 12, 194, 0, 16, 0,
2, 0, 0, 0, 86, 9,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 86, 13, 16, 0,
1, 0, 0, 0, 2, 0,
0, 1, 10, 0, 0, 1,
54, 0, 0, 5, 50, 0,
16, 0, 5, 0, 0, 0,
@ -7561,10 +7579,10 @@ const BYTE resolve_full_64bpp_cs[] =
16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
200, 4, 0, 0, 23, 0,
202, 4, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 118, 0,
0, 0, 234, 0, 0, 0,
0, 0, 236, 0, 0, 0,
178, 0, 0, 0, 59, 0,
0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0,

View File

@ -1174,16 +1174,18 @@ switch r0.y
imad r7.zw, r11.yyyw, l(0, 0, 0x00010000, 0x00010000), r11.xxxz
break
case l(32)
f32tof16 r11.xy, r5.xzxx
f32tof16 r11.zw, r9.xxxz
f32tof16 r12.xy, r5.ywyy
f32tof16 r12.zw, r6.wwwz
imad r6.xyzw, r12.xyzw, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r11.xyzw
f32tof16 r11.xy, r8.xzxx
f32tof16 r11.zw, r10.xxxz
f32tof16 r12.xy, r8.ywyy
f32tof16 r12.zw, r7.wwwz
imad r7.xyzw, r12.xyzw, l(0x00010000, 0x00010000, 0x00010000, 0x00010000), r11.xyzw
f32tof16 r0.yw, r5.xxxz
f32tof16 r1.yz, r5.yywy
imad r6.xy, r1.yzyy, l(0x00010000, 0x00010000, 0, 0), r0.ywyy
f32tof16 r0.yw, r9.xxxz
f32tof16 r1.yz, r6.wwzw
imad r6.zw, r1.yyyz, l(0, 0, 0x00010000, 0x00010000), r0.yyyw
f32tof16 r0.yw, r8.xxxz
f32tof16 r1.yz, r8.yywy
imad r7.xy, r1.yzyy, l(0x00010000, 0x00010000, 0, 0), r0.ywyy
f32tof16 r0.yw, r10.xxxz
f32tof16 r1.yz, r7.wwzw
imad r7.zw, r1.yyyz, l(0, 0, 0x00010000, 0x00010000), r0.yyyw
break
default
mov r6.xy, r5.xyxx
@ -1333,20 +1335,20 @@ if_nz r0.z
endif
store_uav_typed U0[0].xyzw, r0.xxxx, r7.xyzw
ret
// Approximately 1279 instruction slots used
// Approximately 1281 instruction slots used
#endif
const BYTE resolve_full_64bpp_scaled_cs[] =
{
68, 88, 66, 67, 60, 118,
161, 100, 5, 152, 135, 130,
31, 41, 169, 237, 170, 21,
198, 182, 1, 0, 0, 0,
216, 153, 0, 0, 5, 0,
68, 88, 66, 67, 209, 138,
12, 24, 59, 191, 97, 5,
235, 179, 86, 139, 240, 215,
9, 54, 1, 0, 0, 0,
56, 154, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
56, 3, 0, 0, 72, 3,
0, 0, 88, 3, 0, 0,
60, 153, 0, 0, 82, 68,
156, 153, 0, 0, 82, 68,
69, 70, 252, 2, 0, 0,
2, 0, 0, 0, 52, 1,
0, 0, 4, 0, 0, 0,
@ -1481,8 +1483,8 @@ const BYTE resolve_full_64bpp_scaled_cs[] =
79, 83, 71, 78, 8, 0,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 83, 72,
69, 88, 220, 149, 0, 0,
81, 0, 5, 0, 119, 37,
69, 88, 60, 150, 0, 0,
81, 0, 5, 0, 143, 37,
0, 0, 106, 8, 0, 1,
89, 0, 0, 7, 70, 142,
48, 0, 0, 0, 0, 0,
@ -7094,48 +7096,64 @@ const BYTE resolve_full_64bpp_scaled_cs[] =
0, 1, 6, 0, 0, 3,
1, 64, 0, 0, 32, 0,
0, 0, 130, 0, 0, 5,
50, 0, 16, 0, 11, 0,
0, 0, 134, 0, 16, 0,
162, 0, 16, 0, 0, 0,
0, 0, 6, 8, 16, 0,
5, 0, 0, 0, 130, 0,
0, 5, 194, 0, 16, 0,
11, 0, 0, 0, 6, 8,
16, 0, 9, 0, 0, 0,
130, 0, 0, 5, 50, 0,
16, 0, 12, 0, 0, 0,
214, 5, 16, 0, 5, 0,
0, 0, 130, 0, 0, 5,
194, 0, 16, 0, 12, 0,
0, 0, 246, 11, 16, 0,
6, 0, 0, 0, 35, 0,
0, 12, 242, 0, 16, 0,
6, 0, 0, 0, 70, 14,
16, 0, 12, 0, 0, 0,
2, 64, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 70, 14, 16, 0,
11, 0, 0, 0, 130, 0,
0, 5, 50, 0, 16, 0,
11, 0, 0, 0, 134, 0,
16, 0, 8, 0, 0, 0,
130, 0, 0, 5, 194, 0,
16, 0, 11, 0, 0, 0,
6, 8, 16, 0, 10, 0,
0, 0, 130, 0, 0, 5,
50, 0, 16, 0, 12, 0,
0, 0, 214, 5, 16, 0,
8, 0, 0, 0, 130, 0,
0, 5, 194, 0, 16, 0,
12, 0, 0, 0, 246, 11,
16, 0, 7, 0, 0, 0,
35, 0, 0, 12, 242, 0,
16, 0, 7, 0, 0, 0,
70, 14, 16, 0, 12, 0,
0, 5, 98, 0, 16, 0,
1, 0, 0, 0, 86, 7,
16, 0, 5, 0, 0, 0,
35, 0, 0, 12, 50, 0,
16, 0, 6, 0, 0, 0,
150, 5, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 70, 14,
16, 0, 11, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 214, 5,
16, 0, 0, 0, 0, 0,
130, 0, 0, 5, 162, 0,
16, 0, 0, 0, 0, 0,
6, 8, 16, 0, 9, 0,
0, 0, 130, 0, 0, 5,
98, 0, 16, 0, 1, 0,
0, 0, 246, 14, 16, 0,
6, 0, 0, 0, 35, 0,
0, 12, 194, 0, 16, 0,
6, 0, 0, 0, 86, 9,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 86, 13, 16, 0,
0, 0, 0, 0, 130, 0,
0, 5, 162, 0, 16, 0,
0, 0, 0, 0, 6, 8,
16, 0, 8, 0, 0, 0,
130, 0, 0, 5, 98, 0,
16, 0, 1, 0, 0, 0,
86, 7, 16, 0, 8, 0,
0, 0, 35, 0, 0, 12,
50, 0, 16, 0, 7, 0,
0, 0, 150, 5, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
214, 5, 16, 0, 0, 0,
0, 0, 130, 0, 0, 5,
162, 0, 16, 0, 0, 0,
0, 0, 6, 8, 16, 0,
10, 0, 0, 0, 130, 0,
0, 5, 98, 0, 16, 0,
1, 0, 0, 0, 246, 14,
16, 0, 7, 0, 0, 0,
35, 0, 0, 12, 194, 0,
16, 0, 7, 0, 0, 0,
86, 9, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 86, 13,
16, 0, 0, 0, 0, 0,
2, 0, 0, 1, 10, 0,
0, 1, 54, 0, 0, 5,
50, 0, 16, 0, 6, 0,
@ -7877,10 +7895,10 @@ const BYTE resolve_full_64bpp_scaled_cs[] =
70, 14, 16, 0, 7, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 255, 4, 0, 0,
0, 0, 1, 5, 0, 0,
24, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
118, 0, 0, 0, 252, 0,
118, 0, 0, 0, 254, 0,
0, 0, 192, 0, 0, 0,
63, 0, 0, 0, 39, 0,
0, 0, 0, 0, 0, 0,

View File

@ -0,0 +1,333 @@
// Generated with `xb buildshaders`.
#if 0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 25265
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %5663 "main" %gl_GlobalInvocationID
OpExecutionMode %5663 LocalSize 8 8 1
OpMemberDecorate %_struct_990 0 Offset 0
OpMemberDecorate %_struct_990 1 Offset 4
OpDecorate %_struct_990 Block
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %_runtimearr_v4uint ArrayStride 16
OpMemberDecorate %_struct_1972 0 NonReadable
OpMemberDecorate %_struct_1972 0 Offset 0
OpDecorate %_struct_1972 BufferBlock
OpDecorate %4790 DescriptorSet 0
OpDecorate %4790 Binding 0
OpDecorate %3709 DescriptorSet 1
OpDecorate %3709 Binding 0
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%uint = OpTypeInt 32 0
%v2uint = OpTypeVector %uint 2
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1
%1837 = OpConstantComposite %v2uint %uint_2 %uint_1
%v2bool = OpTypeVector %bool 2
%uint_0 = OpConstant %uint 0
%1807 = OpConstantComposite %v2uint %uint_0 %uint_0
%1828 = OpConstantComposite %v2uint %uint_1 %uint_1
%1816 = OpConstantComposite %v2uint %uint_1 %uint_0
%uint_80 = OpConstant %uint 80
%uint_16 = OpConstant %uint 16
%2719 = OpConstantComposite %v2uint %uint_80 %uint_16
%int = OpTypeInt 32 1
%_struct_990 = OpTypeStruct %uint %uint
%_ptr_PushConstant__struct_990 = OpTypePointer PushConstant %_struct_990
%3052 = OpVariable %_ptr_PushConstant__struct_990 PushConstant
%int_1 = OpConstant %int 1
%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint
%uint_10 = OpConstant %uint 10
%uint_12 = OpConstant %uint 12
%2041 = OpConstantComposite %v2uint %uint_10 %uint_12
%uint_3 = OpConstant %uint 3
%int_0 = OpConstant %int 0
%1927 = OpConstantComposite %v2uint %uint_0 %uint_10
%uint_1023 = OpConstant %uint 1023
%uint_20 = OpConstant %uint 20
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%v2int = OpTypeVector %int 2
%1834 = OpConstantComposite %v2uint %uint_3 %uint_0
%v4uint = OpTypeVector %uint 4
%_runtimearr_v4uint = OpTypeRuntimeArray %v4uint
%_struct_1972 = OpTypeStruct %_runtimearr_v4uint
%_ptr_Uniform__struct_1972 = OpTypePointer Uniform %_struct_1972
%4790 = OpVariable %_ptr_Uniform__struct_1972 Uniform
%float = OpTypeFloat 32
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_150 = OpTypePointer UniformConstant %150
%3709 = OpVariable %_ptr_UniformConstant_150 UniformConstant
%v4float = OpTypeVector %float 4
%1824 = OpConstantComposite %v2int %int_1 %int_0
%int_2 = OpConstant %int 2
%1833 = OpConstantComposite %v2int %int_2 %int_0
%int_3 = OpConstant %int 3
%1842 = OpConstantComposite %v2int %int_3 %int_0
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%int_4 = OpConstant %int 4
%1851 = OpConstantComposite %v2int %int_4 %int_0
%int_5 = OpConstant %int 5
%1860 = OpConstantComposite %v2int %int_5 %int_0
%int_6 = OpConstant %int 6
%1869 = OpConstantComposite %v2int %int_6 %int_0
%int_7 = OpConstant %int 7
%1878 = OpConstantComposite %v2int %int_7 %int_0
%uint_8 = OpConstant %uint 8
%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_1
%1870 = OpConstantComposite %v2uint %uint_3 %uint_3
%2213 = OpConstantComposite %v2uint %uint_1023 %uint_1023
%5663 = OpFunction %void None %1282
%15110 = OpLabel
OpSelectionMerge %19578 None
OpSwitch %uint_0 %11880
%11880 = OpLabel
%22245 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
%15627 = OpLoad %uint %22245
%22605 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_0
%21784 = OpLoad %uint %22605
%21170 = OpShiftRightLogical %uint %21784 %uint_20
%15618 = OpBitwiseAnd %uint %21170 %uint_1023
%10265 = OpIAdd %uint %15618 %uint_1
%19929 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_1
%15334 = OpLoad %uint %19929
%10293 = OpCompositeConstruct %v2uint %15334 %15334
%24634 = OpShiftRightLogical %v2uint %10293 %2041
%24203 = OpBitwiseAnd %v2uint %24634 %1870
%10929 = OpCompositeExtract %uint %24203 0
%7670 = OpIMul %uint %10265 %10929
%7287 = OpUGreaterThanEqual %bool %15627 %7670
OpSelectionMerge %16345 DontFlatten
OpBranchConditional %7287 %21992 %16345
%21992 = OpLabel
OpBranch %19578
%16345 = OpLabel
%10771 = OpCompositeConstruct %v2uint %21784 %21784
%13581 = OpShiftRightLogical %v2uint %10771 %1927
%23379 = OpBitwiseAnd %v2uint %13581 %2213
%13680 = OpShiftLeftLogical %v2uint %23379 %1870
%24677 = OpIMul %v2uint %13680 %24203
%7005 = OpLoad %v3uint %gl_GlobalInvocationID
%22399 = OpVectorShuffle %v2uint %7005 %7005 0 1
%21597 = OpShiftLeftLogical %v2uint %22399 %1834
%9038 = OpIAdd %v2uint %24677 %21597
%24559 = OpBitcast %v2int %9038
%8919 = OpBitcast %v2uint %24559
%18334 = OpBitwiseAnd %uint %15334 %uint_1023
%7195 = OpUGreaterThanEqual %v2bool %1807 %1837
%17737 = OpSelect %v2uint %7195 %1828 %1807
%10430 = OpShiftLeftLogical %v2uint %8919 %17737
%16475 = OpShiftRightLogical %v2uint %1807 %1816
%13071 = OpBitwiseAnd %v2uint %16475 %1828
%20272 = OpIAdd %v2uint %10430 %13071
%21145 = OpIMul %v2uint %2719 %24203
%14725 = OpShiftRightLogical %v2uint %21145 %1807
%19799 = OpUDiv %v2uint %20272 %14725
%20390 = OpCompositeExtract %uint %19799 1
%11046 = OpIMul %uint %20390 %18334
%24741 = OpCompositeExtract %uint %19799 0
%20806 = OpIAdd %uint %11046 %24741
%13527 = OpIMul %v2uint %19799 %14725
%20715 = OpISub %v2uint %20272 %13527
%7303 = OpCompositeExtract %uint %21145 0
%22882 = OpCompositeExtract %uint %21145 1
%13170 = OpIMul %uint %7303 %22882
%14551 = OpIMul %uint %20806 %13170
%6805 = OpCompositeExtract %uint %20715 1
%23526 = OpCompositeExtract %uint %14725 0
%22886 = OpIMul %uint %6805 %23526
%6886 = OpCompositeExtract %uint %20715 0
%9696 = OpIAdd %uint %22886 %6886
%19199 = OpShiftLeftLogical %uint %9696 %uint_0
%25264 = OpIAdd %uint %14551 %19199
%6574 = OpShiftRightLogical %uint %25264 %uint_2
%7456 = OpLoad %150 %3709
%17822 = OpImageFetch %v4float %7456 %24559 Lod %int_0
%11864 = OpCompositeExtract %float %17822 0
%19035 = OpIAdd %v2int %24559 %1824
%20902 = OpImageFetch %v4float %7456 %19035 Lod %int_0
%17472 = OpCompositeExtract %float %20902 0
%19036 = OpIAdd %v2int %24559 %1833
%20903 = OpImageFetch %v4float %7456 %19036 Lod %int_0
%17473 = OpCompositeExtract %float %20903 0
%19037 = OpIAdd %v2int %24559 %1842
%19990 = OpImageFetch %v4float %7456 %19037 Lod %int_0
%7256 = OpCompositeExtract %float %19990 0
%6487 = OpCompositeConstruct %v4float %11864 %17472 %17473 %7256
%20366 = OpBitcast %v4uint %6487
%12860 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %6574
OpStore %12860 %20366
%20256 = OpIAdd %uint %6574 %uint_1
%8574 = OpIAdd %v2int %24559 %1851
%10680 = OpImageFetch %v4float %7456 %8574 Lod %int_0
%17474 = OpCompositeExtract %float %10680 0
%19038 = OpIAdd %v2int %24559 %1860
%20904 = OpImageFetch %v4float %7456 %19038 Lod %int_0
%17475 = OpCompositeExtract %float %20904 0
%19039 = OpIAdd %v2int %24559 %1869
%20905 = OpImageFetch %v4float %7456 %19039 Lod %int_0
%17476 = OpCompositeExtract %float %20905 0
%19040 = OpIAdd %v2int %24559 %1878
%19991 = OpImageFetch %v4float %7456 %19040 Lod %int_0
%7257 = OpCompositeExtract %float %19991 0
%6488 = OpCompositeConstruct %v4float %17474 %17475 %17476 %7257
%20367 = OpBitcast %v4uint %6488
%15159 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %20256
OpStore %15159 %20367
OpBranch %19578
%19578 = OpLabel
OpReturn
OpFunctionEnd
#endif
const uint32_t host_depth_store_1xmsaa_cs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x000062B1, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0006000F, 0x00000005,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000F48, 0x00060010, 0x0000161F,
0x00000011, 0x00000008, 0x00000008, 0x00000001, 0x00050048, 0x000003DE,
0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x000003DE, 0x00000001,
0x00000023, 0x00000004, 0x00030047, 0x000003DE, 0x00000002, 0x00040047,
0x00000F48, 0x0000000B, 0x0000001C, 0x00040047, 0x000007DC, 0x00000006,
0x00000010, 0x00040048, 0x000007B4, 0x00000000, 0x00000019, 0x00050048,
0x000007B4, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x000007B4,
0x00000003, 0x00040047, 0x000012B6, 0x00000022, 0x00000000, 0x00040047,
0x000012B6, 0x00000021, 0x00000000, 0x00040047, 0x00000E7D, 0x00000022,
0x00000001, 0x00040047, 0x00000E7D, 0x00000021, 0x00000000, 0x00040047,
0x00000AC7, 0x0000000B, 0x00000019, 0x00020013, 0x00000008, 0x00030021,
0x00000502, 0x00000008, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00020014, 0x00000009,
0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B, 0x0000000B,
0x00000A0D, 0x00000001, 0x0005002C, 0x00000011, 0x0000072D, 0x00000A10,
0x00000A0D, 0x00040017, 0x0000000F, 0x00000009, 0x00000002, 0x0004002B,
0x0000000B, 0x00000A0A, 0x00000000, 0x0005002C, 0x00000011, 0x0000070F,
0x00000A0A, 0x00000A0A, 0x0005002C, 0x00000011, 0x00000724, 0x00000A0D,
0x00000A0D, 0x0005002C, 0x00000011, 0x00000718, 0x00000A0D, 0x00000A0A,
0x0004002B, 0x0000000B, 0x00000AFA, 0x00000050, 0x0004002B, 0x0000000B,
0x00000A3A, 0x00000010, 0x0005002C, 0x00000011, 0x00000A9F, 0x00000AFA,
0x00000A3A, 0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x0004001E,
0x000003DE, 0x0000000B, 0x0000000B, 0x00040020, 0x0000065B, 0x00000009,
0x000003DE, 0x0004003B, 0x0000065B, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x00040020, 0x00000288, 0x00000009,
0x0000000B, 0x0004002B, 0x0000000B, 0x00000A28, 0x0000000A, 0x0004002B,
0x0000000B, 0x00000A2E, 0x0000000C, 0x0005002C, 0x00000011, 0x000007F9,
0x00000A28, 0x00000A2E, 0x0004002B, 0x0000000B, 0x00000A13, 0x00000003,
0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0005002C, 0x00000011,
0x00000787, 0x00000A0A, 0x00000A28, 0x0004002B, 0x0000000B, 0x00000A44,
0x000003FF, 0x0004002B, 0x0000000B, 0x00000A46, 0x00000014, 0x00040017,
0x00000014, 0x0000000B, 0x00000003, 0x00040020, 0x00000291, 0x00000001,
0x00000014, 0x0004003B, 0x00000291, 0x00000F48, 0x00000001, 0x00040020,
0x00000289, 0x00000001, 0x0000000B, 0x00040017, 0x00000012, 0x0000000C,
0x00000002, 0x0005002C, 0x00000011, 0x0000072A, 0x00000A13, 0x00000A0A,
0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0003001D, 0x000007DC,
0x00000017, 0x0003001E, 0x000007B4, 0x000007DC, 0x00040020, 0x00000A31,
0x00000002, 0x000007B4, 0x0004003B, 0x00000A31, 0x000012B6, 0x00000002,
0x00030016, 0x0000000D, 0x00000020, 0x00090019, 0x00000096, 0x0000000D,
0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
0x00040020, 0x00000313, 0x00000000, 0x00000096, 0x0004003B, 0x00000313,
0x00000E7D, 0x00000000, 0x00040017, 0x0000001D, 0x0000000D, 0x00000004,
0x0005002C, 0x00000012, 0x00000720, 0x00000A0E, 0x00000A0B, 0x0004002B,
0x0000000C, 0x00000A11, 0x00000002, 0x0005002C, 0x00000012, 0x00000729,
0x00000A11, 0x00000A0B, 0x0004002B, 0x0000000C, 0x00000A14, 0x00000003,
0x0005002C, 0x00000012, 0x00000732, 0x00000A14, 0x00000A0B, 0x00040020,
0x00000294, 0x00000002, 0x00000017, 0x0004002B, 0x0000000C, 0x00000A17,
0x00000004, 0x0005002C, 0x00000012, 0x0000073B, 0x00000A17, 0x00000A0B,
0x0004002B, 0x0000000C, 0x00000A1A, 0x00000005, 0x0005002C, 0x00000012,
0x00000744, 0x00000A1A, 0x00000A0B, 0x0004002B, 0x0000000C, 0x00000A1D,
0x00000006, 0x0005002C, 0x00000012, 0x0000074D, 0x00000A1D, 0x00000A0B,
0x0004002B, 0x0000000C, 0x00000A20, 0x00000007, 0x0005002C, 0x00000012,
0x00000756, 0x00000A20, 0x00000A0B, 0x0004002B, 0x0000000B, 0x00000A22,
0x00000008, 0x0006002C, 0x00000014, 0x00000AC7, 0x00000A22, 0x00000A22,
0x00000A0D, 0x0005002C, 0x00000011, 0x0000074E, 0x00000A13, 0x00000A13,
0x0005002C, 0x00000011, 0x000008A5, 0x00000A44, 0x00000A44, 0x00050036,
0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8, 0x00003B06,
0x000300F7, 0x00004C7A, 0x00000000, 0x000300FB, 0x00000A0A, 0x00002E68,
0x000200F8, 0x00002E68, 0x00050041, 0x00000289, 0x000056E5, 0x00000F48,
0x00000A0A, 0x0004003D, 0x0000000B, 0x00003D0B, 0x000056E5, 0x00050041,
0x00000288, 0x0000584D, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x0000000B,
0x00005518, 0x0000584D, 0x000500C2, 0x0000000B, 0x000052B2, 0x00005518,
0x00000A46, 0x000500C7, 0x0000000B, 0x00003D02, 0x000052B2, 0x00000A44,
0x00050080, 0x0000000B, 0x00002819, 0x00003D02, 0x00000A0D, 0x00050041,
0x00000288, 0x00004DD9, 0x00000BEC, 0x00000A0E, 0x0004003D, 0x0000000B,
0x00003BE6, 0x00004DD9, 0x00050050, 0x00000011, 0x00002835, 0x00003BE6,
0x00003BE6, 0x000500C2, 0x00000011, 0x0000603A, 0x00002835, 0x000007F9,
0x000500C7, 0x00000011, 0x00005E8B, 0x0000603A, 0x0000074E, 0x00050051,
0x0000000B, 0x00002AB1, 0x00005E8B, 0x00000000, 0x00050084, 0x0000000B,
0x00001DF6, 0x00002819, 0x00002AB1, 0x000500AE, 0x00000009, 0x00001C77,
0x00003D0B, 0x00001DF6, 0x000300F7, 0x00003FD9, 0x00000002, 0x000400FA,
0x00001C77, 0x000055E8, 0x00003FD9, 0x000200F8, 0x000055E8, 0x000200F9,
0x00004C7A, 0x000200F8, 0x00003FD9, 0x00050050, 0x00000011, 0x00002A13,
0x00005518, 0x00005518, 0x000500C2, 0x00000011, 0x0000350D, 0x00002A13,
0x00000787, 0x000500C7, 0x00000011, 0x00005B53, 0x0000350D, 0x000008A5,
0x000500C4, 0x00000011, 0x00003570, 0x00005B53, 0x0000074E, 0x00050084,
0x00000011, 0x00006065, 0x00003570, 0x00005E8B, 0x0004003D, 0x00000014,
0x00001B5D, 0x00000F48, 0x0007004F, 0x00000011, 0x0000577F, 0x00001B5D,
0x00001B5D, 0x00000000, 0x00000001, 0x000500C4, 0x00000011, 0x0000545D,
0x0000577F, 0x0000072A, 0x00050080, 0x00000011, 0x0000234E, 0x00006065,
0x0000545D, 0x0004007C, 0x00000012, 0x00005FEF, 0x0000234E, 0x0004007C,
0x00000011, 0x000022D7, 0x00005FEF, 0x000500C7, 0x0000000B, 0x0000479E,
0x00003BE6, 0x00000A44, 0x000500AE, 0x0000000F, 0x00001C1B, 0x0000070F,
0x0000072D, 0x000600A9, 0x00000011, 0x00004549, 0x00001C1B, 0x00000724,
0x0000070F, 0x000500C4, 0x00000011, 0x000028BE, 0x000022D7, 0x00004549,
0x000500C2, 0x00000011, 0x0000405B, 0x0000070F, 0x00000718, 0x000500C7,
0x00000011, 0x0000330F, 0x0000405B, 0x00000724, 0x00050080, 0x00000011,
0x00004F30, 0x000028BE, 0x0000330F, 0x00050084, 0x00000011, 0x00005299,
0x00000A9F, 0x00005E8B, 0x000500C2, 0x00000011, 0x00003985, 0x00005299,
0x0000070F, 0x00050086, 0x00000011, 0x00004D57, 0x00004F30, 0x00003985,
0x00050051, 0x0000000B, 0x00004FA6, 0x00004D57, 0x00000001, 0x00050084,
0x0000000B, 0x00002B26, 0x00004FA6, 0x0000479E, 0x00050051, 0x0000000B,
0x000060A5, 0x00004D57, 0x00000000, 0x00050080, 0x0000000B, 0x00005146,
0x00002B26, 0x000060A5, 0x00050084, 0x00000011, 0x000034D7, 0x00004D57,
0x00003985, 0x00050082, 0x00000011, 0x000050EB, 0x00004F30, 0x000034D7,
0x00050051, 0x0000000B, 0x00001C87, 0x00005299, 0x00000000, 0x00050051,
0x0000000B, 0x00005962, 0x00005299, 0x00000001, 0x00050084, 0x0000000B,
0x00003372, 0x00001C87, 0x00005962, 0x00050084, 0x0000000B, 0x000038D7,
0x00005146, 0x00003372, 0x00050051, 0x0000000B, 0x00001A95, 0x000050EB,
0x00000001, 0x00050051, 0x0000000B, 0x00005BE6, 0x00003985, 0x00000000,
0x00050084, 0x0000000B, 0x00005966, 0x00001A95, 0x00005BE6, 0x00050051,
0x0000000B, 0x00001AE6, 0x000050EB, 0x00000000, 0x00050080, 0x0000000B,
0x000025E0, 0x00005966, 0x00001AE6, 0x000500C4, 0x0000000B, 0x00004AFF,
0x000025E0, 0x00000A0A, 0x00050080, 0x0000000B, 0x000062B0, 0x000038D7,
0x00004AFF, 0x000500C2, 0x0000000B, 0x000019AE, 0x000062B0, 0x00000A10,
0x0004003D, 0x00000096, 0x00001D20, 0x00000E7D, 0x0007005F, 0x0000001D,
0x0000459E, 0x00001D20, 0x00005FEF, 0x00000002, 0x00000A0B, 0x00050051,
0x0000000D, 0x00002E58, 0x0000459E, 0x00000000, 0x00050080, 0x00000012,
0x00004A5B, 0x00005FEF, 0x00000720, 0x0007005F, 0x0000001D, 0x000051A6,
0x00001D20, 0x00004A5B, 0x00000002, 0x00000A0B, 0x00050051, 0x0000000D,
0x00004440, 0x000051A6, 0x00000000, 0x00050080, 0x00000012, 0x00004A5C,
0x00005FEF, 0x00000729, 0x0007005F, 0x0000001D, 0x000051A7, 0x00001D20,
0x00004A5C, 0x00000002, 0x00000A0B, 0x00050051, 0x0000000D, 0x00004441,
0x000051A7, 0x00000000, 0x00050080, 0x00000012, 0x00004A5D, 0x00005FEF,
0x00000732, 0x0007005F, 0x0000001D, 0x00004E16, 0x00001D20, 0x00004A5D,
0x00000002, 0x00000A0B, 0x00050051, 0x0000000D, 0x00001C58, 0x00004E16,
0x00000000, 0x00070050, 0x0000001D, 0x00001957, 0x00002E58, 0x00004440,
0x00004441, 0x00001C58, 0x0004007C, 0x00000017, 0x00004F8E, 0x00001957,
0x00060041, 0x00000294, 0x0000323C, 0x000012B6, 0x00000A0B, 0x000019AE,
0x0003003E, 0x0000323C, 0x00004F8E, 0x00050080, 0x0000000B, 0x00004F20,
0x000019AE, 0x00000A0D, 0x00050080, 0x00000012, 0x0000217E, 0x00005FEF,
0x0000073B, 0x0007005F, 0x0000001D, 0x000029B8, 0x00001D20, 0x0000217E,
0x00000002, 0x00000A0B, 0x00050051, 0x0000000D, 0x00004442, 0x000029B8,
0x00000000, 0x00050080, 0x00000012, 0x00004A5E, 0x00005FEF, 0x00000744,
0x0007005F, 0x0000001D, 0x000051A8, 0x00001D20, 0x00004A5E, 0x00000002,
0x00000A0B, 0x00050051, 0x0000000D, 0x00004443, 0x000051A8, 0x00000000,
0x00050080, 0x00000012, 0x00004A5F, 0x00005FEF, 0x0000074D, 0x0007005F,
0x0000001D, 0x000051A9, 0x00001D20, 0x00004A5F, 0x00000002, 0x00000A0B,
0x00050051, 0x0000000D, 0x00004444, 0x000051A9, 0x00000000, 0x00050080,
0x00000012, 0x00004A60, 0x00005FEF, 0x00000756, 0x0007005F, 0x0000001D,
0x00004E17, 0x00001D20, 0x00004A60, 0x00000002, 0x00000A0B, 0x00050051,
0x0000000D, 0x00001C59, 0x00004E17, 0x00000000, 0x00070050, 0x0000001D,
0x00001958, 0x00004442, 0x00004443, 0x00004444, 0x00001C59, 0x0004007C,
0x00000017, 0x00004F8F, 0x00001958, 0x00060041, 0x00000294, 0x00003B37,
0x000012B6, 0x00000A0B, 0x00004F20, 0x0003003E, 0x00003B37, 0x00004F8F,
0x000200F9, 0x00004C7A, 0x000200F8, 0x00004C7A, 0x000100FD, 0x00010038,
};

View File

@ -0,0 +1,365 @@
// Generated with `xb buildshaders`.
#if 0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 24742
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %5663 "main" %gl_GlobalInvocationID
OpExecutionMode %5663 LocalSize 8 8 1
OpMemberDecorate %_struct_990 0 Offset 0
OpMemberDecorate %_struct_990 1 Offset 4
OpDecorate %_struct_990 Block
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %_runtimearr_v4uint ArrayStride 16
OpMemberDecorate %_struct_1972 0 NonReadable
OpMemberDecorate %_struct_1972 0 Offset 0
OpDecorate %_struct_1972 BufferBlock
OpDecorate %4790 DescriptorSet 0
OpDecorate %4790 Binding 0
OpDecorate %3709 DescriptorSet 1
OpDecorate %3709 Binding 0
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%uint = OpTypeInt 32 0
%v2uint = OpTypeVector %uint 2
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1
%1837 = OpConstantComposite %v2uint %uint_2 %uint_1
%v2bool = OpTypeVector %bool 2
%uint_0 = OpConstant %uint 0
%1807 = OpConstantComposite %v2uint %uint_0 %uint_0
%1828 = OpConstantComposite %v2uint %uint_1 %uint_1
%1816 = OpConstantComposite %v2uint %uint_1 %uint_0
%uint_80 = OpConstant %uint 80
%uint_16 = OpConstant %uint 16
%2719 = OpConstantComposite %v2uint %uint_80 %uint_16
%int = OpTypeInt 32 1
%_struct_990 = OpTypeStruct %uint %uint
%_ptr_PushConstant__struct_990 = OpTypePointer PushConstant %_struct_990
%3052 = OpVariable %_ptr_PushConstant__struct_990 PushConstant
%int_1 = OpConstant %int 1
%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint
%uint_10 = OpConstant %uint 10
%uint_12 = OpConstant %uint 12
%2041 = OpConstantComposite %v2uint %uint_10 %uint_12
%uint_3 = OpConstant %uint 3
%int_0 = OpConstant %int 0
%1927 = OpConstantComposite %v2uint %uint_0 %uint_10
%uint_1023 = OpConstant %uint 1023
%uint_20 = OpConstant %uint 20
%uint_14 = OpConstant %uint 14
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%v2int = OpTypeVector %int 2
%int_3 = OpConstant %int 3
%v4uint = OpTypeVector %uint 4
%_runtimearr_v4uint = OpTypeRuntimeArray %v4uint
%_struct_1972 = OpTypeStruct %_runtimearr_v4uint
%_ptr_Uniform__struct_1972 = OpTypePointer Uniform %_struct_1972
%4790 = OpVariable %_ptr_Uniform__struct_1972 Uniform
%float = OpTypeFloat 32
%182 = OpTypeImage %float 2D 0 0 1 1 Unknown
%_ptr_UniformConstant_182 = OpTypePointer UniformConstant %182
%3709 = OpVariable %_ptr_UniformConstant_182 UniformConstant
%v4float = OpTypeVector %float 4
%1824 = OpConstantComposite %v2int %int_1 %int_0
%int_2 = OpConstant %int 2
%1833 = OpConstantComposite %v2int %int_2 %int_0
%1842 = OpConstantComposite %v2int %int_3 %int_0
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%int_4 = OpConstant %int 4
%1851 = OpConstantComposite %v2int %int_4 %int_0
%int_5 = OpConstant %int 5
%1860 = OpConstantComposite %v2int %int_5 %int_0
%int_6 = OpConstant %int 6
%1869 = OpConstantComposite %v2int %int_6 %int_0
%int_7 = OpConstant %int 7
%1878 = OpConstantComposite %v2int %int_7 %int_0
%uint_8 = OpConstant %uint 8
%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_1
%1870 = OpConstantComposite %v2uint %uint_3 %uint_3
%2213 = OpConstantComposite %v2uint %uint_1023 %uint_1023
%5663 = OpFunction %void None %1282
%15110 = OpLabel
OpSelectionMerge %19578 None
OpSwitch %uint_0 %11880
%11880 = OpLabel
%22245 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
%15627 = OpLoad %uint %22245
%22605 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_0
%21784 = OpLoad %uint %22605
%21170 = OpShiftRightLogical %uint %21784 %uint_20
%15618 = OpBitwiseAnd %uint %21170 %uint_1023
%10265 = OpIAdd %uint %15618 %uint_1
%19929 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_1
%15334 = OpLoad %uint %19929
%10293 = OpCompositeConstruct %v2uint %15334 %15334
%24634 = OpShiftRightLogical %v2uint %10293 %2041
%24203 = OpBitwiseAnd %v2uint %24634 %1870
%10929 = OpCompositeExtract %uint %24203 0
%7670 = OpIMul %uint %10265 %10929
%7287 = OpUGreaterThanEqual %bool %15627 %7670
OpSelectionMerge %16345 DontFlatten
OpBranchConditional %7287 %21992 %16345
%21992 = OpLabel
OpBranch %19578
%16345 = OpLabel
%10771 = OpCompositeConstruct %v2uint %21784 %21784
%13581 = OpShiftRightLogical %v2uint %10771 %1927
%23379 = OpBitwiseAnd %v2uint %13581 %2213
%16245 = OpShiftLeftLogical %v2uint %23379 %1870
%20127 = OpIMul %v2uint %16245 %24203
%19539 = OpShiftLeftLogical %uint %15627 %uint_3
%17126 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1
%22160 = OpLoad %uint %17126
%22686 = OpShiftRightLogical %uint %22160 %uint_1
%6471 = OpCompositeConstruct %v2uint %19539 %22686
%9483 = OpIAdd %v2uint %20127 %6471
%13160 = OpBitcast %v2int %9483
%11709 = OpBitwiseAnd %uint %22160 %uint_1
%10746 = OpBitcast %v2uint %13160
%11323 = OpBitwiseAnd %uint %15334 %uint_1023
%7195 = OpUGreaterThanEqual %v2bool %1828 %1837
%15571 = OpSelect %v2uint %7195 %1828 %1807
%10986 = OpShiftLeftLogical %v2uint %10746 %15571
%24669 = OpCompositeConstruct %v2uint %11709 %11709
%9093 = OpShiftRightLogical %v2uint %24669 %1816
%16072 = OpBitwiseAnd %v2uint %9093 %1828
%20272 = OpIAdd %v2uint %10986 %16072
%21145 = OpIMul %v2uint %2719 %24203
%14725 = OpShiftRightLogical %v2uint %21145 %1807
%19799 = OpUDiv %v2uint %20272 %14725
%20390 = OpCompositeExtract %uint %19799 1
%11046 = OpIMul %uint %20390 %11323
%24741 = OpCompositeExtract %uint %19799 0
%20806 = OpIAdd %uint %11046 %24741
%13527 = OpIMul %v2uint %19799 %14725
%20715 = OpISub %v2uint %20272 %13527
%7303 = OpCompositeExtract %uint %21145 0
%22882 = OpCompositeExtract %uint %21145 1
%13170 = OpIMul %uint %7303 %22882
%14551 = OpIMul %uint %20806 %13170
%6805 = OpCompositeExtract %uint %20715 1
%23526 = OpCompositeExtract %uint %14725 0
%22886 = OpIMul %uint %6805 %23526
%6886 = OpCompositeExtract %uint %20715 0
%9696 = OpIAdd %uint %22886 %6886
%19199 = OpShiftLeftLogical %uint %9696 %uint_0
%8720 = OpIAdd %uint %14551 %19199
%23683 = OpShiftRightLogical %uint %8720 %uint_2
%13780 = OpShiftRightLogical %uint %15334 %uint_14
%12661 = OpBitwiseAnd %uint %13780 %uint_1
%11491 = OpINotEqual %bool %12661 %uint_0
OpSelectionMerge %8129 None
OpBranchConditional %11491 %22983 %14914
%14914 = OpLabel
%24444 = OpINotEqual %bool %11709 %uint_0
%20803 = OpSelect %int %24444 %int_3 %int_0
OpBranch %8129
%22983 = OpLabel
%7795 = OpINotEqual %bool %11709 %uint_0
%20804 = OpSelect %int %7795 %int_0 %int_1
OpBranch %8129
%8129 = OpLabel
%21086 = OpPhi %int %20804 %22983 %20803 %14914
%12853 = OpLoad %182 %3709
%23440 = OpImageFetch %v4float %12853 %13160 Sample %21086
%11864 = OpCompositeExtract %float %23440 0
%19035 = OpIAdd %v2int %13160 %1824
%20902 = OpImageFetch %v4float %12853 %19035 Sample %21086
%17472 = OpCompositeExtract %float %20902 0
%19036 = OpIAdd %v2int %13160 %1833
%20903 = OpImageFetch %v4float %12853 %19036 Sample %21086
%17473 = OpCompositeExtract %float %20903 0
%19037 = OpIAdd %v2int %13160 %1842
%19990 = OpImageFetch %v4float %12853 %19037 Sample %21086
%7256 = OpCompositeExtract %float %19990 0
%6487 = OpCompositeConstruct %v4float %11864 %17472 %17473 %7256
%20366 = OpBitcast %v4uint %6487
%12860 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %23683
OpStore %12860 %20366
%20256 = OpIAdd %uint %23683 %uint_1
%8574 = OpIAdd %v2int %13160 %1851
%10680 = OpImageFetch %v4float %12853 %8574 Sample %21086
%17474 = OpCompositeExtract %float %10680 0
%19038 = OpIAdd %v2int %13160 %1860
%20904 = OpImageFetch %v4float %12853 %19038 Sample %21086
%17475 = OpCompositeExtract %float %20904 0
%19039 = OpIAdd %v2int %13160 %1869
%20905 = OpImageFetch %v4float %12853 %19039 Sample %21086
%17476 = OpCompositeExtract %float %20905 0
%19040 = OpIAdd %v2int %13160 %1878
%19991 = OpImageFetch %v4float %12853 %19040 Sample %21086
%7257 = OpCompositeExtract %float %19991 0
%6488 = OpCompositeConstruct %v4float %17474 %17475 %17476 %7257
%20367 = OpBitcast %v4uint %6488
%15159 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %20256
OpStore %15159 %20367
OpBranch %19578
%19578 = OpLabel
OpReturn
OpFunctionEnd
#endif
const uint32_t host_depth_store_2xmsaa_cs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x000060A6, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0006000F, 0x00000005,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000F48, 0x00060010, 0x0000161F,
0x00000011, 0x00000008, 0x00000008, 0x00000001, 0x00050048, 0x000003DE,
0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x000003DE, 0x00000001,
0x00000023, 0x00000004, 0x00030047, 0x000003DE, 0x00000002, 0x00040047,
0x00000F48, 0x0000000B, 0x0000001C, 0x00040047, 0x000007DC, 0x00000006,
0x00000010, 0x00040048, 0x000007B4, 0x00000000, 0x00000019, 0x00050048,
0x000007B4, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x000007B4,
0x00000003, 0x00040047, 0x000012B6, 0x00000022, 0x00000000, 0x00040047,
0x000012B6, 0x00000021, 0x00000000, 0x00040047, 0x00000E7D, 0x00000022,
0x00000001, 0x00040047, 0x00000E7D, 0x00000021, 0x00000000, 0x00040047,
0x00000AC7, 0x0000000B, 0x00000019, 0x00020013, 0x00000008, 0x00030021,
0x00000502, 0x00000008, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00020014, 0x00000009,
0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B, 0x0000000B,
0x00000A0D, 0x00000001, 0x0005002C, 0x00000011, 0x0000072D, 0x00000A10,
0x00000A0D, 0x00040017, 0x0000000F, 0x00000009, 0x00000002, 0x0004002B,
0x0000000B, 0x00000A0A, 0x00000000, 0x0005002C, 0x00000011, 0x0000070F,
0x00000A0A, 0x00000A0A, 0x0005002C, 0x00000011, 0x00000724, 0x00000A0D,
0x00000A0D, 0x0005002C, 0x00000011, 0x00000718, 0x00000A0D, 0x00000A0A,
0x0004002B, 0x0000000B, 0x00000AFA, 0x00000050, 0x0004002B, 0x0000000B,
0x00000A3A, 0x00000010, 0x0005002C, 0x00000011, 0x00000A9F, 0x00000AFA,
0x00000A3A, 0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x0004001E,
0x000003DE, 0x0000000B, 0x0000000B, 0x00040020, 0x0000065B, 0x00000009,
0x000003DE, 0x0004003B, 0x0000065B, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x00040020, 0x00000288, 0x00000009,
0x0000000B, 0x0004002B, 0x0000000B, 0x00000A28, 0x0000000A, 0x0004002B,
0x0000000B, 0x00000A2E, 0x0000000C, 0x0005002C, 0x00000011, 0x000007F9,
0x00000A28, 0x00000A2E, 0x0004002B, 0x0000000B, 0x00000A13, 0x00000003,
0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0005002C, 0x00000011,
0x00000787, 0x00000A0A, 0x00000A28, 0x0004002B, 0x0000000B, 0x00000A44,
0x000003FF, 0x0004002B, 0x0000000B, 0x00000A46, 0x00000014, 0x0004002B,
0x0000000B, 0x00000A34, 0x0000000E, 0x00040017, 0x00000014, 0x0000000B,
0x00000003, 0x00040020, 0x00000291, 0x00000001, 0x00000014, 0x0004003B,
0x00000291, 0x00000F48, 0x00000001, 0x00040020, 0x00000289, 0x00000001,
0x0000000B, 0x00040017, 0x00000012, 0x0000000C, 0x00000002, 0x0004002B,
0x0000000C, 0x00000A14, 0x00000003, 0x00040017, 0x00000017, 0x0000000B,
0x00000004, 0x0003001D, 0x000007DC, 0x00000017, 0x0003001E, 0x000007B4,
0x000007DC, 0x00040020, 0x00000A31, 0x00000002, 0x000007B4, 0x0004003B,
0x00000A31, 0x000012B6, 0x00000002, 0x00030016, 0x0000000D, 0x00000020,
0x00090019, 0x000000B6, 0x0000000D, 0x00000001, 0x00000000, 0x00000000,
0x00000001, 0x00000001, 0x00000000, 0x00040020, 0x00000333, 0x00000000,
0x000000B6, 0x0004003B, 0x00000333, 0x00000E7D, 0x00000000, 0x00040017,
0x0000001D, 0x0000000D, 0x00000004, 0x0005002C, 0x00000012, 0x00000720,
0x00000A0E, 0x00000A0B, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000002,
0x0005002C, 0x00000012, 0x00000729, 0x00000A11, 0x00000A0B, 0x0005002C,
0x00000012, 0x00000732, 0x00000A14, 0x00000A0B, 0x00040020, 0x00000294,
0x00000002, 0x00000017, 0x0004002B, 0x0000000C, 0x00000A17, 0x00000004,
0x0005002C, 0x00000012, 0x0000073B, 0x00000A17, 0x00000A0B, 0x0004002B,
0x0000000C, 0x00000A1A, 0x00000005, 0x0005002C, 0x00000012, 0x00000744,
0x00000A1A, 0x00000A0B, 0x0004002B, 0x0000000C, 0x00000A1D, 0x00000006,
0x0005002C, 0x00000012, 0x0000074D, 0x00000A1D, 0x00000A0B, 0x0004002B,
0x0000000C, 0x00000A20, 0x00000007, 0x0005002C, 0x00000012, 0x00000756,
0x00000A20, 0x00000A0B, 0x0004002B, 0x0000000B, 0x00000A22, 0x00000008,
0x0006002C, 0x00000014, 0x00000AC7, 0x00000A22, 0x00000A22, 0x00000A0D,
0x0005002C, 0x00000011, 0x0000074E, 0x00000A13, 0x00000A13, 0x0005002C,
0x00000011, 0x000008A5, 0x00000A44, 0x00000A44, 0x00050036, 0x00000008,
0x0000161F, 0x00000000, 0x00000502, 0x000200F8, 0x00003B06, 0x000300F7,
0x00004C7A, 0x00000000, 0x000300FB, 0x00000A0A, 0x00002E68, 0x000200F8,
0x00002E68, 0x00050041, 0x00000289, 0x000056E5, 0x00000F48, 0x00000A0A,
0x0004003D, 0x0000000B, 0x00003D0B, 0x000056E5, 0x00050041, 0x00000288,
0x0000584D, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x0000000B, 0x00005518,
0x0000584D, 0x000500C2, 0x0000000B, 0x000052B2, 0x00005518, 0x00000A46,
0x000500C7, 0x0000000B, 0x00003D02, 0x000052B2, 0x00000A44, 0x00050080,
0x0000000B, 0x00002819, 0x00003D02, 0x00000A0D, 0x00050041, 0x00000288,
0x00004DD9, 0x00000BEC, 0x00000A0E, 0x0004003D, 0x0000000B, 0x00003BE6,
0x00004DD9, 0x00050050, 0x00000011, 0x00002835, 0x00003BE6, 0x00003BE6,
0x000500C2, 0x00000011, 0x0000603A, 0x00002835, 0x000007F9, 0x000500C7,
0x00000011, 0x00005E8B, 0x0000603A, 0x0000074E, 0x00050051, 0x0000000B,
0x00002AB1, 0x00005E8B, 0x00000000, 0x00050084, 0x0000000B, 0x00001DF6,
0x00002819, 0x00002AB1, 0x000500AE, 0x00000009, 0x00001C77, 0x00003D0B,
0x00001DF6, 0x000300F7, 0x00003FD9, 0x00000002, 0x000400FA, 0x00001C77,
0x000055E8, 0x00003FD9, 0x000200F8, 0x000055E8, 0x000200F9, 0x00004C7A,
0x000200F8, 0x00003FD9, 0x00050050, 0x00000011, 0x00002A13, 0x00005518,
0x00005518, 0x000500C2, 0x00000011, 0x0000350D, 0x00002A13, 0x00000787,
0x000500C7, 0x00000011, 0x00005B53, 0x0000350D, 0x000008A5, 0x000500C4,
0x00000011, 0x00003F75, 0x00005B53, 0x0000074E, 0x00050084, 0x00000011,
0x00004E9F, 0x00003F75, 0x00005E8B, 0x000500C4, 0x0000000B, 0x00004C53,
0x00003D0B, 0x00000A13, 0x00050041, 0x00000289, 0x000042E6, 0x00000F48,
0x00000A0D, 0x0004003D, 0x0000000B, 0x00005690, 0x000042E6, 0x000500C2,
0x0000000B, 0x0000589E, 0x00005690, 0x00000A0D, 0x00050050, 0x00000011,
0x00001947, 0x00004C53, 0x0000589E, 0x00050080, 0x00000011, 0x0000250B,
0x00004E9F, 0x00001947, 0x0004007C, 0x00000012, 0x00003368, 0x0000250B,
0x000500C7, 0x0000000B, 0x00002DBD, 0x00005690, 0x00000A0D, 0x0004007C,
0x00000011, 0x000029FA, 0x00003368, 0x000500C7, 0x0000000B, 0x00002C3B,
0x00003BE6, 0x00000A44, 0x000500AE, 0x0000000F, 0x00001C1B, 0x00000724,
0x0000072D, 0x000600A9, 0x00000011, 0x00003CD3, 0x00001C1B, 0x00000724,
0x0000070F, 0x000500C4, 0x00000011, 0x00002AEA, 0x000029FA, 0x00003CD3,
0x00050050, 0x00000011, 0x0000605D, 0x00002DBD, 0x00002DBD, 0x000500C2,
0x00000011, 0x00002385, 0x0000605D, 0x00000718, 0x000500C7, 0x00000011,
0x00003EC8, 0x00002385, 0x00000724, 0x00050080, 0x00000011, 0x00004F30,
0x00002AEA, 0x00003EC8, 0x00050084, 0x00000011, 0x00005299, 0x00000A9F,
0x00005E8B, 0x000500C2, 0x00000011, 0x00003985, 0x00005299, 0x0000070F,
0x00050086, 0x00000011, 0x00004D57, 0x00004F30, 0x00003985, 0x00050051,
0x0000000B, 0x00004FA6, 0x00004D57, 0x00000001, 0x00050084, 0x0000000B,
0x00002B26, 0x00004FA6, 0x00002C3B, 0x00050051, 0x0000000B, 0x000060A5,
0x00004D57, 0x00000000, 0x00050080, 0x0000000B, 0x00005146, 0x00002B26,
0x000060A5, 0x00050084, 0x00000011, 0x000034D7, 0x00004D57, 0x00003985,
0x00050082, 0x00000011, 0x000050EB, 0x00004F30, 0x000034D7, 0x00050051,
0x0000000B, 0x00001C87, 0x00005299, 0x00000000, 0x00050051, 0x0000000B,
0x00005962, 0x00005299, 0x00000001, 0x00050084, 0x0000000B, 0x00003372,
0x00001C87, 0x00005962, 0x00050084, 0x0000000B, 0x000038D7, 0x00005146,
0x00003372, 0x00050051, 0x0000000B, 0x00001A95, 0x000050EB, 0x00000001,
0x00050051, 0x0000000B, 0x00005BE6, 0x00003985, 0x00000000, 0x00050084,
0x0000000B, 0x00005966, 0x00001A95, 0x00005BE6, 0x00050051, 0x0000000B,
0x00001AE6, 0x000050EB, 0x00000000, 0x00050080, 0x0000000B, 0x000025E0,
0x00005966, 0x00001AE6, 0x000500C4, 0x0000000B, 0x00004AFF, 0x000025E0,
0x00000A0A, 0x00050080, 0x0000000B, 0x00002210, 0x000038D7, 0x00004AFF,
0x000500C2, 0x0000000B, 0x00005C83, 0x00002210, 0x00000A10, 0x000500C2,
0x0000000B, 0x000035D4, 0x00003BE6, 0x00000A34, 0x000500C7, 0x0000000B,
0x00003175, 0x000035D4, 0x00000A0D, 0x000500AB, 0x00000009, 0x00002CE3,
0x00003175, 0x00000A0A, 0x000300F7, 0x00001FC1, 0x00000000, 0x000400FA,
0x00002CE3, 0x000059C7, 0x00003A42, 0x000200F8, 0x00003A42, 0x000500AB,
0x00000009, 0x00005F7C, 0x00002DBD, 0x00000A0A, 0x000600A9, 0x0000000C,
0x00005143, 0x00005F7C, 0x00000A14, 0x00000A0B, 0x000200F9, 0x00001FC1,
0x000200F8, 0x000059C7, 0x000500AB, 0x00000009, 0x00001E73, 0x00002DBD,
0x00000A0A, 0x000600A9, 0x0000000C, 0x00005144, 0x00001E73, 0x00000A0B,
0x00000A0E, 0x000200F9, 0x00001FC1, 0x000200F8, 0x00001FC1, 0x000700F5,
0x0000000C, 0x0000525E, 0x00005144, 0x000059C7, 0x00005143, 0x00003A42,
0x0004003D, 0x000000B6, 0x00003235, 0x00000E7D, 0x0007005F, 0x0000001D,
0x00005B90, 0x00003235, 0x00003368, 0x00000040, 0x0000525E, 0x00050051,
0x0000000D, 0x00002E58, 0x00005B90, 0x00000000, 0x00050080, 0x00000012,
0x00004A5B, 0x00003368, 0x00000720, 0x0007005F, 0x0000001D, 0x000051A6,
0x00003235, 0x00004A5B, 0x00000040, 0x0000525E, 0x00050051, 0x0000000D,
0x00004440, 0x000051A6, 0x00000000, 0x00050080, 0x00000012, 0x00004A5C,
0x00003368, 0x00000729, 0x0007005F, 0x0000001D, 0x000051A7, 0x00003235,
0x00004A5C, 0x00000040, 0x0000525E, 0x00050051, 0x0000000D, 0x00004441,
0x000051A7, 0x00000000, 0x00050080, 0x00000012, 0x00004A5D, 0x00003368,
0x00000732, 0x0007005F, 0x0000001D, 0x00004E16, 0x00003235, 0x00004A5D,
0x00000040, 0x0000525E, 0x00050051, 0x0000000D, 0x00001C58, 0x00004E16,
0x00000000, 0x00070050, 0x0000001D, 0x00001957, 0x00002E58, 0x00004440,
0x00004441, 0x00001C58, 0x0004007C, 0x00000017, 0x00004F8E, 0x00001957,
0x00060041, 0x00000294, 0x0000323C, 0x000012B6, 0x00000A0B, 0x00005C83,
0x0003003E, 0x0000323C, 0x00004F8E, 0x00050080, 0x0000000B, 0x00004F20,
0x00005C83, 0x00000A0D, 0x00050080, 0x00000012, 0x0000217E, 0x00003368,
0x0000073B, 0x0007005F, 0x0000001D, 0x000029B8, 0x00003235, 0x0000217E,
0x00000040, 0x0000525E, 0x00050051, 0x0000000D, 0x00004442, 0x000029B8,
0x00000000, 0x00050080, 0x00000012, 0x00004A5E, 0x00003368, 0x00000744,
0x0007005F, 0x0000001D, 0x000051A8, 0x00003235, 0x00004A5E, 0x00000040,
0x0000525E, 0x00050051, 0x0000000D, 0x00004443, 0x000051A8, 0x00000000,
0x00050080, 0x00000012, 0x00004A5F, 0x00003368, 0x0000074D, 0x0007005F,
0x0000001D, 0x000051A9, 0x00003235, 0x00004A5F, 0x00000040, 0x0000525E,
0x00050051, 0x0000000D, 0x00004444, 0x000051A9, 0x00000000, 0x00050080,
0x00000012, 0x00004A60, 0x00003368, 0x00000756, 0x0007005F, 0x0000001D,
0x00004E17, 0x00003235, 0x00004A60, 0x00000040, 0x0000525E, 0x00050051,
0x0000000D, 0x00001C59, 0x00004E17, 0x00000000, 0x00070050, 0x0000001D,
0x00001958, 0x00004442, 0x00004443, 0x00004444, 0x00001C59, 0x0004007C,
0x00000017, 0x00004F8F, 0x00001958, 0x00060041, 0x00000294, 0x00003B37,
0x000012B6, 0x00000A0B, 0x00004F20, 0x0003003E, 0x00003B37, 0x00004F8F,
0x000200F9, 0x00004C7A, 0x000200F8, 0x00004C7A, 0x000100FD, 0x00010038,
};

View File

@ -0,0 +1,332 @@
// Generated with `xb buildshaders`.
#if 0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 24815
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %5663 "main" %gl_GlobalInvocationID
OpExecutionMode %5663 LocalSize 8 8 1
OpMemberDecorate %_struct_990 0 Offset 0
OpMemberDecorate %_struct_990 1 Offset 4
OpDecorate %_struct_990 Block
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %_runtimearr_v4uint ArrayStride 16
OpMemberDecorate %_struct_1972 0 NonReadable
OpMemberDecorate %_struct_1972 0 Offset 0
OpDecorate %_struct_1972 BufferBlock
OpDecorate %4790 DescriptorSet 0
OpDecorate %4790 Binding 0
OpDecorate %3709 DescriptorSet 1
OpDecorate %3709 Binding 0
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%uint = OpTypeInt 32 0
%v2uint = OpTypeVector %uint 2
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1
%1837 = OpConstantComposite %v2uint %uint_2 %uint_1
%v2bool = OpTypeVector %bool 2
%uint_0 = OpConstant %uint 0
%1807 = OpConstantComposite %v2uint %uint_0 %uint_0
%1828 = OpConstantComposite %v2uint %uint_1 %uint_1
%1816 = OpConstantComposite %v2uint %uint_1 %uint_0
%uint_80 = OpConstant %uint 80
%uint_16 = OpConstant %uint 16
%2719 = OpConstantComposite %v2uint %uint_80 %uint_16
%int = OpTypeInt 32 1
%_struct_990 = OpTypeStruct %uint %uint
%_ptr_PushConstant__struct_990 = OpTypePointer PushConstant %_struct_990
%3052 = OpVariable %_ptr_PushConstant__struct_990 PushConstant
%int_1 = OpConstant %int 1
%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint
%uint_10 = OpConstant %uint 10
%uint_12 = OpConstant %uint 12
%2041 = OpConstantComposite %v2uint %uint_10 %uint_12
%uint_3 = OpConstant %uint 3
%int_0 = OpConstant %int 0
%1927 = OpConstantComposite %v2uint %uint_0 %uint_10
%uint_1023 = OpConstant %uint 1023
%uint_20 = OpConstant %uint 20
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%v2int = OpTypeVector %int 2
%v4uint = OpTypeVector %uint 4
%_runtimearr_v4uint = OpTypeRuntimeArray %v4uint
%_struct_1972 = OpTypeStruct %_runtimearr_v4uint
%_ptr_Uniform__struct_1972 = OpTypePointer Uniform %_struct_1972
%4790 = OpVariable %_ptr_Uniform__struct_1972 Uniform
%float = OpTypeFloat 32
%182 = OpTypeImage %float 2D 0 0 1 1 Unknown
%_ptr_UniformConstant_182 = OpTypePointer UniformConstant %182
%3709 = OpVariable %_ptr_UniformConstant_182 UniformConstant
%v4float = OpTypeVector %float 4
%1824 = OpConstantComposite %v2int %int_1 %int_0
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%int_2 = OpConstant %int 2
%1833 = OpConstantComposite %v2int %int_2 %int_0
%int_3 = OpConstant %int 3
%1842 = OpConstantComposite %v2int %int_3 %int_0
%uint_8 = OpConstant %uint 8
%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_1
%1870 = OpConstantComposite %v2uint %uint_3 %uint_3
%2213 = OpConstantComposite %v2uint %uint_1023 %uint_1023
%5663 = OpFunction %void None %1282
%15110 = OpLabel
OpSelectionMerge %19578 None
OpSwitch %uint_0 %11880
%11880 = OpLabel
%24696 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
%12457 = OpLoad %uint %24696
%24008 = OpShiftRightLogical %uint %12457 %uint_1
%8790 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_0
%22808 = OpLoad %uint %8790
%21170 = OpShiftRightLogical %uint %22808 %uint_20
%15618 = OpBitwiseAnd %uint %21170 %uint_1023
%10265 = OpIAdd %uint %15618 %uint_1
%19929 = OpAccessChain %_ptr_PushConstant_uint %3052 %int_1
%15334 = OpLoad %uint %19929
%10293 = OpCompositeConstruct %v2uint %15334 %15334
%24634 = OpShiftRightLogical %v2uint %10293 %2041
%24203 = OpBitwiseAnd %v2uint %24634 %1870
%10929 = OpCompositeExtract %uint %24203 0
%7670 = OpIMul %uint %10265 %10929
%7287 = OpUGreaterThanEqual %bool %24008 %7670
OpSelectionMerge %16345 DontFlatten
OpBranchConditional %7287 %21992 %16345
%21992 = OpLabel
OpBranch %19578
%16345 = OpLabel
%10771 = OpCompositeConstruct %v2uint %22808 %22808
%13581 = OpShiftRightLogical %v2uint %10771 %1927
%23379 = OpBitwiseAnd %v2uint %13581 %2213
%16245 = OpShiftLeftLogical %v2uint %23379 %1870
%20127 = OpIMul %v2uint %16245 %24203
%19539 = OpShiftLeftLogical %uint %12457 %uint_2
%17126 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1
%22160 = OpLoad %uint %17126
%22686 = OpShiftRightLogical %uint %22160 %uint_1
%6471 = OpCompositeConstruct %v2uint %19539 %22686
%8058 = OpIAdd %v2uint %20127 %6471
%8432 = OpBitcast %v2int %8058
%7291 = OpBitcast %v2uint %8432
%22610 = OpShiftLeftLogical %v2uint %7291 %1828
%8742 = OpLoad %v3uint %gl_GlobalInvocationID
%16994 = OpVectorShuffle %v2uint %8742 %8742 0 1
%24648 = OpBitwiseAnd %v2uint %16994 %1828
%15693 = OpBitwiseOr %v2uint %22610 %24648
%23331 = OpBitwiseAnd %uint %15334 %uint_1023
%17642 = OpUGreaterThanEqual %v2bool %1807 %1837
%17737 = OpSelect %v2uint %17642 %1828 %1807
%10430 = OpShiftLeftLogical %v2uint %15693 %17737
%16475 = OpShiftRightLogical %v2uint %1807 %1816
%13071 = OpBitwiseAnd %v2uint %16475 %1828
%20272 = OpIAdd %v2uint %10430 %13071
%21145 = OpIMul %v2uint %2719 %24203
%14725 = OpShiftRightLogical %v2uint %21145 %1807
%19799 = OpUDiv %v2uint %20272 %14725
%20390 = OpCompositeExtract %uint %19799 1
%11046 = OpIMul %uint %20390 %23331
%24741 = OpCompositeExtract %uint %19799 0
%20806 = OpIAdd %uint %11046 %24741
%13527 = OpIMul %v2uint %19799 %14725
%20715 = OpISub %v2uint %20272 %13527
%7303 = OpCompositeExtract %uint %21145 0
%22882 = OpCompositeExtract %uint %21145 1
%13170 = OpIMul %uint %7303 %22882
%14551 = OpIMul %uint %20806 %13170
%6805 = OpCompositeExtract %uint %20715 1
%23526 = OpCompositeExtract %uint %14725 0
%22886 = OpIMul %uint %6805 %23526
%6886 = OpCompositeExtract %uint %20715 0
%9696 = OpIAdd %uint %22886 %6886
%19199 = OpShiftLeftLogical %uint %9696 %uint_0
%8815 = OpIAdd %uint %14551 %19199
%22761 = OpShiftRightLogical %uint %8815 %uint_2
%10583 = OpBitwiseAnd %uint %22160 %uint_1
%16337 = OpShiftLeftLogical %uint %10583 %uint_1
%21075 = OpBitcast %int %16337
%8163 = OpIAdd %int %21075 %int_1
%22164 = OpLoad %182 %3709
%9165 = OpImageFetch %v4float %22164 %8432 Sample %21075
%17307 = OpCompositeExtract %float %9165 0
%6654 = OpImageFetch %v4float %22164 %8432 Sample %8163
%15080 = OpCompositeExtract %float %6654 0
%19035 = OpIAdd %v2int %8432 %1824
%20275 = OpImageFetch %v4float %22164 %19035 Sample %21075
%22915 = OpCompositeExtract %float %20275 0
%24813 = OpImageFetch %v4float %22164 %19035 Sample %8163
%23935 = OpCompositeExtract %float %24813 0
%6487 = OpCompositeConstruct %v4float %17307 %15080 %22915 %23935
%20366 = OpBitcast %v4uint %6487
%12860 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %22761
OpStore %12860 %20366
%20256 = OpIAdd %uint %22761 %uint_1
%8574 = OpIAdd %v2int %8432 %1833
%10053 = OpImageFetch %v4float %22164 %8574 Sample %21075
%22916 = OpCompositeExtract %float %10053 0
%6655 = OpImageFetch %v4float %22164 %8574 Sample %8163
%15081 = OpCompositeExtract %float %6655 0
%19036 = OpIAdd %v2int %8432 %1842
%20276 = OpImageFetch %v4float %22164 %19036 Sample %21075
%22917 = OpCompositeExtract %float %20276 0
%24814 = OpImageFetch %v4float %22164 %19036 Sample %8163
%23936 = OpCompositeExtract %float %24814 0
%6488 = OpCompositeConstruct %v4float %22916 %15081 %22917 %23936
%20367 = OpBitcast %v4uint %6488
%15159 = OpAccessChain %_ptr_Uniform_v4uint %4790 %int_0 %20256
OpStore %15159 %20367
OpBranch %19578
%19578 = OpLabel
OpReturn
OpFunctionEnd
#endif
const uint32_t host_depth_store_4xmsaa_cs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x000060EF, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0006000F, 0x00000005,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000F48, 0x00060010, 0x0000161F,
0x00000011, 0x00000008, 0x00000008, 0x00000001, 0x00050048, 0x000003DE,
0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x000003DE, 0x00000001,
0x00000023, 0x00000004, 0x00030047, 0x000003DE, 0x00000002, 0x00040047,
0x00000F48, 0x0000000B, 0x0000001C, 0x00040047, 0x000007DC, 0x00000006,
0x00000010, 0x00040048, 0x000007B4, 0x00000000, 0x00000019, 0x00050048,
0x000007B4, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x000007B4,
0x00000003, 0x00040047, 0x000012B6, 0x00000022, 0x00000000, 0x00040047,
0x000012B6, 0x00000021, 0x00000000, 0x00040047, 0x00000E7D, 0x00000022,
0x00000001, 0x00040047, 0x00000E7D, 0x00000021, 0x00000000, 0x00040047,
0x00000AC7, 0x0000000B, 0x00000019, 0x00020013, 0x00000008, 0x00030021,
0x00000502, 0x00000008, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00020014, 0x00000009,
0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B, 0x0000000B,
0x00000A0D, 0x00000001, 0x0005002C, 0x00000011, 0x0000072D, 0x00000A10,
0x00000A0D, 0x00040017, 0x0000000F, 0x00000009, 0x00000002, 0x0004002B,
0x0000000B, 0x00000A0A, 0x00000000, 0x0005002C, 0x00000011, 0x0000070F,
0x00000A0A, 0x00000A0A, 0x0005002C, 0x00000011, 0x00000724, 0x00000A0D,
0x00000A0D, 0x0005002C, 0x00000011, 0x00000718, 0x00000A0D, 0x00000A0A,
0x0004002B, 0x0000000B, 0x00000AFA, 0x00000050, 0x0004002B, 0x0000000B,
0x00000A3A, 0x00000010, 0x0005002C, 0x00000011, 0x00000A9F, 0x00000AFA,
0x00000A3A, 0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x0004001E,
0x000003DE, 0x0000000B, 0x0000000B, 0x00040020, 0x0000065B, 0x00000009,
0x000003DE, 0x0004003B, 0x0000065B, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x00040020, 0x00000288, 0x00000009,
0x0000000B, 0x0004002B, 0x0000000B, 0x00000A28, 0x0000000A, 0x0004002B,
0x0000000B, 0x00000A2E, 0x0000000C, 0x0005002C, 0x00000011, 0x000007F9,
0x00000A28, 0x00000A2E, 0x0004002B, 0x0000000B, 0x00000A13, 0x00000003,
0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0005002C, 0x00000011,
0x00000787, 0x00000A0A, 0x00000A28, 0x0004002B, 0x0000000B, 0x00000A44,
0x000003FF, 0x0004002B, 0x0000000B, 0x00000A46, 0x00000014, 0x00040017,
0x00000014, 0x0000000B, 0x00000003, 0x00040020, 0x00000291, 0x00000001,
0x00000014, 0x0004003B, 0x00000291, 0x00000F48, 0x00000001, 0x00040020,
0x00000289, 0x00000001, 0x0000000B, 0x00040017, 0x00000012, 0x0000000C,
0x00000002, 0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0003001D,
0x000007DC, 0x00000017, 0x0003001E, 0x000007B4, 0x000007DC, 0x00040020,
0x00000A31, 0x00000002, 0x000007B4, 0x0004003B, 0x00000A31, 0x000012B6,
0x00000002, 0x00030016, 0x0000000D, 0x00000020, 0x00090019, 0x000000B6,
0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001,
0x00000000, 0x00040020, 0x00000333, 0x00000000, 0x000000B6, 0x0004003B,
0x00000333, 0x00000E7D, 0x00000000, 0x00040017, 0x0000001D, 0x0000000D,
0x00000004, 0x0005002C, 0x00000012, 0x00000720, 0x00000A0E, 0x00000A0B,
0x00040020, 0x00000294, 0x00000002, 0x00000017, 0x0004002B, 0x0000000C,
0x00000A11, 0x00000002, 0x0005002C, 0x00000012, 0x00000729, 0x00000A11,
0x00000A0B, 0x0004002B, 0x0000000C, 0x00000A14, 0x00000003, 0x0005002C,
0x00000012, 0x00000732, 0x00000A14, 0x00000A0B, 0x0004002B, 0x0000000B,
0x00000A22, 0x00000008, 0x0006002C, 0x00000014, 0x00000AC7, 0x00000A22,
0x00000A22, 0x00000A0D, 0x0005002C, 0x00000011, 0x0000074E, 0x00000A13,
0x00000A13, 0x0005002C, 0x00000011, 0x000008A5, 0x00000A44, 0x00000A44,
0x00050036, 0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8,
0x00003B06, 0x000300F7, 0x00004C7A, 0x00000000, 0x000300FB, 0x00000A0A,
0x00002E68, 0x000200F8, 0x00002E68, 0x00050041, 0x00000289, 0x00006078,
0x00000F48, 0x00000A0A, 0x0004003D, 0x0000000B, 0x000030A9, 0x00006078,
0x000500C2, 0x0000000B, 0x00005DC8, 0x000030A9, 0x00000A0D, 0x00050041,
0x00000288, 0x00002256, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x0000000B,
0x00005918, 0x00002256, 0x000500C2, 0x0000000B, 0x000052B2, 0x00005918,
0x00000A46, 0x000500C7, 0x0000000B, 0x00003D02, 0x000052B2, 0x00000A44,
0x00050080, 0x0000000B, 0x00002819, 0x00003D02, 0x00000A0D, 0x00050041,
0x00000288, 0x00004DD9, 0x00000BEC, 0x00000A0E, 0x0004003D, 0x0000000B,
0x00003BE6, 0x00004DD9, 0x00050050, 0x00000011, 0x00002835, 0x00003BE6,
0x00003BE6, 0x000500C2, 0x00000011, 0x0000603A, 0x00002835, 0x000007F9,
0x000500C7, 0x00000011, 0x00005E8B, 0x0000603A, 0x0000074E, 0x00050051,
0x0000000B, 0x00002AB1, 0x00005E8B, 0x00000000, 0x00050084, 0x0000000B,
0x00001DF6, 0x00002819, 0x00002AB1, 0x000500AE, 0x00000009, 0x00001C77,
0x00005DC8, 0x00001DF6, 0x000300F7, 0x00003FD9, 0x00000002, 0x000400FA,
0x00001C77, 0x000055E8, 0x00003FD9, 0x000200F8, 0x000055E8, 0x000200F9,
0x00004C7A, 0x000200F8, 0x00003FD9, 0x00050050, 0x00000011, 0x00002A13,
0x00005918, 0x00005918, 0x000500C2, 0x00000011, 0x0000350D, 0x00002A13,
0x00000787, 0x000500C7, 0x00000011, 0x00005B53, 0x0000350D, 0x000008A5,
0x000500C4, 0x00000011, 0x00003F75, 0x00005B53, 0x0000074E, 0x00050084,
0x00000011, 0x00004E9F, 0x00003F75, 0x00005E8B, 0x000500C4, 0x0000000B,
0x00004C53, 0x000030A9, 0x00000A10, 0x00050041, 0x00000289, 0x000042E6,
0x00000F48, 0x00000A0D, 0x0004003D, 0x0000000B, 0x00005690, 0x000042E6,
0x000500C2, 0x0000000B, 0x0000589E, 0x00005690, 0x00000A0D, 0x00050050,
0x00000011, 0x00001947, 0x00004C53, 0x0000589E, 0x00050080, 0x00000011,
0x00001F7A, 0x00004E9F, 0x00001947, 0x0004007C, 0x00000012, 0x000020F0,
0x00001F7A, 0x0004007C, 0x00000011, 0x00001C7B, 0x000020F0, 0x000500C4,
0x00000011, 0x00005852, 0x00001C7B, 0x00000724, 0x0004003D, 0x00000014,
0x00002226, 0x00000F48, 0x0007004F, 0x00000011, 0x00004262, 0x00002226,
0x00002226, 0x00000000, 0x00000001, 0x000500C7, 0x00000011, 0x00006048,
0x00004262, 0x00000724, 0x000500C5, 0x00000011, 0x00003D4D, 0x00005852,
0x00006048, 0x000500C7, 0x0000000B, 0x00005B23, 0x00003BE6, 0x00000A44,
0x000500AE, 0x0000000F, 0x000044EA, 0x0000070F, 0x0000072D, 0x000600A9,
0x00000011, 0x00004549, 0x000044EA, 0x00000724, 0x0000070F, 0x000500C4,
0x00000011, 0x000028BE, 0x00003D4D, 0x00004549, 0x000500C2, 0x00000011,
0x0000405B, 0x0000070F, 0x00000718, 0x000500C7, 0x00000011, 0x0000330F,
0x0000405B, 0x00000724, 0x00050080, 0x00000011, 0x00004F30, 0x000028BE,
0x0000330F, 0x00050084, 0x00000011, 0x00005299, 0x00000A9F, 0x00005E8B,
0x000500C2, 0x00000011, 0x00003985, 0x00005299, 0x0000070F, 0x00050086,
0x00000011, 0x00004D57, 0x00004F30, 0x00003985, 0x00050051, 0x0000000B,
0x00004FA6, 0x00004D57, 0x00000001, 0x00050084, 0x0000000B, 0x00002B26,
0x00004FA6, 0x00005B23, 0x00050051, 0x0000000B, 0x000060A5, 0x00004D57,
0x00000000, 0x00050080, 0x0000000B, 0x00005146, 0x00002B26, 0x000060A5,
0x00050084, 0x00000011, 0x000034D7, 0x00004D57, 0x00003985, 0x00050082,
0x00000011, 0x000050EB, 0x00004F30, 0x000034D7, 0x00050051, 0x0000000B,
0x00001C87, 0x00005299, 0x00000000, 0x00050051, 0x0000000B, 0x00005962,
0x00005299, 0x00000001, 0x00050084, 0x0000000B, 0x00003372, 0x00001C87,
0x00005962, 0x00050084, 0x0000000B, 0x000038D7, 0x00005146, 0x00003372,
0x00050051, 0x0000000B, 0x00001A95, 0x000050EB, 0x00000001, 0x00050051,
0x0000000B, 0x00005BE6, 0x00003985, 0x00000000, 0x00050084, 0x0000000B,
0x00005966, 0x00001A95, 0x00005BE6, 0x00050051, 0x0000000B, 0x00001AE6,
0x000050EB, 0x00000000, 0x00050080, 0x0000000B, 0x000025E0, 0x00005966,
0x00001AE6, 0x000500C4, 0x0000000B, 0x00004AFF, 0x000025E0, 0x00000A0A,
0x00050080, 0x0000000B, 0x0000226F, 0x000038D7, 0x00004AFF, 0x000500C2,
0x0000000B, 0x000058E9, 0x0000226F, 0x00000A10, 0x000500C7, 0x0000000B,
0x00002957, 0x00005690, 0x00000A0D, 0x000500C4, 0x0000000B, 0x00003FD1,
0x00002957, 0x00000A0D, 0x0004007C, 0x0000000C, 0x00005253, 0x00003FD1,
0x00050080, 0x0000000C, 0x00001FE3, 0x00005253, 0x00000A0E, 0x0004003D,
0x000000B6, 0x00005694, 0x00000E7D, 0x0007005F, 0x0000001D, 0x000023CD,
0x00005694, 0x000020F0, 0x00000040, 0x00005253, 0x00050051, 0x0000000D,
0x0000439B, 0x000023CD, 0x00000000, 0x0007005F, 0x0000001D, 0x000019FE,
0x00005694, 0x000020F0, 0x00000040, 0x00001FE3, 0x00050051, 0x0000000D,
0x00003AE8, 0x000019FE, 0x00000000, 0x00050080, 0x00000012, 0x00004A5B,
0x000020F0, 0x00000720, 0x0007005F, 0x0000001D, 0x00004F33, 0x00005694,
0x00004A5B, 0x00000040, 0x00005253, 0x00050051, 0x0000000D, 0x00005983,
0x00004F33, 0x00000000, 0x0007005F, 0x0000001D, 0x000060ED, 0x00005694,
0x00004A5B, 0x00000040, 0x00001FE3, 0x00050051, 0x0000000D, 0x00005D7F,
0x000060ED, 0x00000000, 0x00070050, 0x0000001D, 0x00001957, 0x0000439B,
0x00003AE8, 0x00005983, 0x00005D7F, 0x0004007C, 0x00000017, 0x00004F8E,
0x00001957, 0x00060041, 0x00000294, 0x0000323C, 0x000012B6, 0x00000A0B,
0x000058E9, 0x0003003E, 0x0000323C, 0x00004F8E, 0x00050080, 0x0000000B,
0x00004F20, 0x000058E9, 0x00000A0D, 0x00050080, 0x00000012, 0x0000217E,
0x000020F0, 0x00000729, 0x0007005F, 0x0000001D, 0x00002745, 0x00005694,
0x0000217E, 0x00000040, 0x00005253, 0x00050051, 0x0000000D, 0x00005984,
0x00002745, 0x00000000, 0x0007005F, 0x0000001D, 0x000019FF, 0x00005694,
0x0000217E, 0x00000040, 0x00001FE3, 0x00050051, 0x0000000D, 0x00003AE9,
0x000019FF, 0x00000000, 0x00050080, 0x00000012, 0x00004A5C, 0x000020F0,
0x00000732, 0x0007005F, 0x0000001D, 0x00004F34, 0x00005694, 0x00004A5C,
0x00000040, 0x00005253, 0x00050051, 0x0000000D, 0x00005985, 0x00004F34,
0x00000000, 0x0007005F, 0x0000001D, 0x000060EE, 0x00005694, 0x00004A5C,
0x00000040, 0x00001FE3, 0x00050051, 0x0000000D, 0x00005D80, 0x000060EE,
0x00000000, 0x00070050, 0x0000001D, 0x00001958, 0x00005984, 0x00003AE9,
0x00005985, 0x00005D80, 0x0004007C, 0x00000017, 0x00004F8F, 0x00001958,
0x00060041, 0x00000294, 0x00003B37, 0x000012B6, 0x00000A0B, 0x00004F20,
0x0003003E, 0x00003B37, 0x00004F8F, 0x000200F9, 0x00004C7A, 0x000200F8,
0x00004C7A, 0x000100FD, 0x00010038,
};

View File

@ -0,0 +1,76 @@
// Generated with `xb buildshaders`.
#if 0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 24988
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %5663 "main" %4930 %5474
OpMemberDecorate %_struct_2935 0 BuiltIn Position
OpMemberDecorate %_struct_2935 1 BuiltIn PointSize
OpMemberDecorate %_struct_2935 2 BuiltIn ClipDistance
OpMemberDecorate %_struct_2935 3 BuiltIn CullDistance
OpDecorate %_struct_2935 Block
OpDecorate %5474 Location 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%uint = OpTypeInt 32 0
%uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%_struct_2935 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_ptr_Output__struct_2935 = OpTypePointer Output %_struct_2935
%4930 = OpVariable %_ptr_Output__struct_2935 Output
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%5474 = OpVariable %_ptr_Input_v2float Input
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5663 = OpFunction %void None %1282
%24987 = OpLabel
%17674 = OpLoad %v2float %5474
%21995 = OpCompositeExtract %float %17674 0
%23384 = OpCompositeExtract %float %17674 1
%18260 = OpCompositeConstruct %v4float %21995 %23384 %float_0 %float_1
%12055 = OpAccessChain %_ptr_Output_v4float %4930 %int_0
OpStore %12055 %18260
OpReturn
OpFunctionEnd
#endif
const uint32_t passthrough_position_xy_vs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x0000619C, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000000,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001342, 0x00001562, 0x00050048,
0x00000B77, 0x00000000, 0x0000000B, 0x00000000, 0x00050048, 0x00000B77,
0x00000001, 0x0000000B, 0x00000001, 0x00050048, 0x00000B77, 0x00000002,
0x0000000B, 0x00000003, 0x00050048, 0x00000B77, 0x00000003, 0x0000000B,
0x00000004, 0x00030047, 0x00000B77, 0x00000002, 0x00040047, 0x00001562,
0x0000001E, 0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502,
0x00000008, 0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x0000001D,
0x0000000D, 0x00000004, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x0004001C, 0x0000022A,
0x0000000D, 0x00000A0D, 0x0006001E, 0x00000B77, 0x0000001D, 0x0000000D,
0x0000022A, 0x0000022A, 0x00040020, 0x00000231, 0x00000003, 0x00000B77,
0x0004003B, 0x00000231, 0x00001342, 0x00000003, 0x00040015, 0x0000000C,
0x00000020, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000,
0x00040017, 0x00000013, 0x0000000D, 0x00000002, 0x00040020, 0x00000290,
0x00000001, 0x00000013, 0x0004003B, 0x00000290, 0x00001562, 0x00000001,
0x0004002B, 0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000D,
0x0000008A, 0x3F800000, 0x00040020, 0x0000029A, 0x00000003, 0x0000001D,
0x00050036, 0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8,
0x0000619B, 0x0004003D, 0x00000013, 0x0000450A, 0x00001562, 0x00050051,
0x0000000D, 0x000055EB, 0x0000450A, 0x00000000, 0x00050051, 0x0000000D,
0x00005B58, 0x0000450A, 0x00000001, 0x00070050, 0x0000001D, 0x00004754,
0x000055EB, 0x00005B58, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000029A,
0x00002F17, 0x00001342, 0x00000A0B, 0x0003003E, 0x00002F17, 0x00004754,
0x000100FD, 0x00010038,
};

View File

@ -1,37 +0,0 @@
#ifndef XENIA_GPU_D3D12_SHADERS_EDRAM_HLSLI_
#define XENIA_GPU_D3D12_SHADERS_EDRAM_HLSLI_
#include "pixel_formats.hlsli"
#define kXenosMsaaSamples_1X 0u
#define kXenosMsaaSamples_2X 1u
#define kXenosMsaaSamples_4X 2u
uint XeEdramOffsetInts(uint2 pixel_index, uint base_tiles, uint pitch_tiles,
uint msaa_samples, bool is_depth, uint format_ints_log2,
uint pixel_sample_index, uint2 resolution_scale) {
uint2 rt_sample_index =
pixel_index <<
uint2(msaa_samples >= uint2(kXenosMsaaSamples_4X, kXenosMsaaSamples_2X));
rt_sample_index += (pixel_sample_index >> uint2(1u, 0u)) & 1u;
// For now, while the actual storage of 64bpp render targets in comparison to
// 32bpp is not known, storing 40x16 64bpp samples per tile for simplicity of
// addressing in different scenarios.
uint2 tile_size_at_32bpp = uint2(80u, 16u) * resolution_scale;
uint2 tile_size_samples = tile_size_at_32bpp >> uint2(format_ints_log2, 0u);
uint2 tile_offset_xy = rt_sample_index / tile_size_samples;
base_tiles += tile_offset_xy.y * pitch_tiles + tile_offset_xy.x;
rt_sample_index -= tile_offset_xy * tile_size_samples;
if (is_depth) {
uint tile_width_half = tile_size_samples.x >> 1u;
rt_sample_index.x =
uint(int(rt_sample_index.x) +
((rt_sample_index.x >= tile_width_half) ? -int(tile_width_half)
: int(tile_width_half)));
}
return base_tiles * (tile_size_at_32bpp.x * tile_size_at_32bpp.y) +
((rt_sample_index.y * tile_size_samples.x + rt_sample_index.x) <<
format_ints_log2);
}
#endif // XENIA_GPU_D3D12_SHADERS_EDRAM_HLSLI_

View File

@ -0,0 +1,50 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_GPU_SHADERS_EDRAM_XESLI_
#define XENIA_GPU_SHADERS_EDRAM_XESLI_
#include "pixel_formats.xesli"
#define kXenosMsaaSamples_1X 0u
#define kXenosMsaaSamples_2X 1u
#define kXenosMsaaSamples_4X 2u
uint XeEdramOffsetInts(xesl_uint2 pixel_index, uint base_tiles,
uint pitch_tiles, uint msaa_samples, bool is_depth,
uint format_ints_log2, uint pixel_sample_index,
xesl_uint2 resolution_scale) {
xesl_uint2 rt_sample_index =
pixel_index <<
xesl_uint2(xesl_greaterThanEqual(
msaa_samples.xx,
xesl_uint2(kXenosMsaaSamples_4X, kXenosMsaaSamples_2X)));
rt_sample_index += (pixel_sample_index.xx >> xesl_uint2(1u, 0u)) & 1u;
// For now, while the actual storage of 64bpp render targets in comparison to
// 32bpp is not known, storing 40x16 64bpp samples per tile for simplicity of
// addressing in different scenarios.
xesl_uint2 tile_size_at_32bpp = xesl_uint2(80u, 16u) * resolution_scale;
xesl_uint2 tile_size_samples =
tile_size_at_32bpp >> xesl_uint2(format_ints_log2, 0u);
xesl_uint2 tile_offset_xy = rt_sample_index / tile_size_samples;
base_tiles += tile_offset_xy.y * pitch_tiles + tile_offset_xy.x;
rt_sample_index -= tile_offset_xy * tile_size_samples;
if (is_depth) {
uint tile_width_half = tile_size_samples.x >> 1u;
rt_sample_index.x =
uint(int(rt_sample_index.x) +
((rt_sample_index.x >= tile_width_half) ? -int(tile_width_half)
: int(tile_width_half)));
}
return base_tiles * (tile_size_at_32bpp.x * tile_size_at_32bpp.y) +
((rt_sample_index.y * tile_size_samples.x + rt_sample_index.x) <<
format_ints_log2);
}
#endif // XENIA_GPU_SHADERS_EDRAM_XESLI_

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "xenos_draw.hlsli"
struct XePSInput {

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "xenos_draw.hlsli"
struct XePSInput {

View File

@ -1,49 +0,0 @@
#ifndef XENIA_GPU_D3D12_SHADERS_HOST_DEPTH_STORE_HLSLI_
#define XENIA_GPU_D3D12_SHADERS_HOST_DEPTH_STORE_HLSLI_
cbuffer XeHostDepthStoreRectangleConstants : register(b0) {
uint xe_host_depth_store_rectangle;
};
cbuffer XeHostDepthStoreRenderTargetConstants : register(b1) {
uint xe_host_depth_store_render_target;
};
RWBuffer<uint4> xe_host_depth_store_dest : register(u0);
uint2 XeHostDepthStoreResolutionScale() {
return (xe_host_depth_store_render_target.xx >> uint2(10u, 12u)) & 0x3u;
}
uint2 XeHostDepthStoreUnscaledOrigin() {
return ((xe_host_depth_store_rectangle.xx >> uint2(0u, 10u)) & 0x3FFu) << 3u;
}
uint2 XeHostDepthStoreScaledOrigin() {
return XeHostDepthStoreUnscaledOrigin() * XeHostDepthStoreResolutionScale();
}
uint XeHostDepthStoreUnscaledWidthDiv8Minus1() {
return (xe_host_depth_store_rectangle >> 20u) & 0x3FFu;
}
uint XeHostDepthStoreScaledWidthDiv8() {
return (XeHostDepthStoreUnscaledWidthDiv8Minus1() + 1u) *
XeHostDepthStoreResolutionScale().x;
}
// As host depth is needed for at most one transfer destination per update, base
// is not passed to the shader - (0, 0) of the render target is at 0 of the
// destination buffer.
uint XeHostDepthStorePitchTiles() {
return xe_host_depth_store_render_target & 0x3FFu;
}
bool XeHostDepthStoreMsaa2xSupported() {
return bool((xe_host_depth_store_render_target >> 14u) & 0x1u);
}
// 40-sample columns are not swapped for addressing simplicity (because this is
// used for depth -> depth transfers, where swapping isn't needed).
#endif // XENIA_GPU_D3D12_SHADERS_HOST_DEPTH_STORE_HLSLI_

View File

@ -0,0 +1,61 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_GPU_SHADERS_HOST_DEPTH_STORE_XESLI_
#define XENIA_GPU_SHADERS_HOST_DEPTH_STORE_XESLI_
#include "../../ui/shaders/xesl.xesli"
xesl_push_constants_begin(b0, space0)
uint xe_host_depth_store_rectangle;
uint xe_host_depth_store_render_target;
xesl_push_constants_end
xesl_uint2 XeHostDepthStoreResolutionScale() {
uint rt_constant = xesl_push_constant(xe_host_depth_store_render_target);
return (rt_constant.xx >> xesl_uint2(10u, 12u)) & 0x3u;
}
xesl_uint2 XeHostDepthStoreUnscaledOrigin() {
uint rectangle_constant = xesl_push_constant(xe_host_depth_store_rectangle);
return ((rectangle_constant.xx >> xesl_uint2(0u, 10u)) & 0x3FFu) << 3u;
}
xesl_uint2 XeHostDepthStoreScaledOrigin() {
return XeHostDepthStoreUnscaledOrigin() * XeHostDepthStoreResolutionScale();
}
uint XeHostDepthStoreUnscaledWidthDiv8Minus1() {
uint rectangle_constant = xesl_push_constant(xe_host_depth_store_rectangle);
return (rectangle_constant >> 20u) & 0x3FFu;
}
uint XeHostDepthStoreScaledWidthDiv8() {
return (XeHostDepthStoreUnscaledWidthDiv8Minus1() + 1u) *
XeHostDepthStoreResolutionScale().x;
}
// As host depth is needed for at most one transfer destination per update, base
// is not passed to the shader - (0, 0) of the render target is at 0 of the
// destination buffer.
uint XeHostDepthStorePitchTiles() {
uint rt_constant = xesl_push_constant(xe_host_depth_store_render_target);
return rt_constant & 0x3FFu;
}
bool XeHostDepthStoreMsaa2xSupported() {
uint rt_constant = xesl_push_constant(xe_host_depth_store_render_target);
return bool((rt_constant >> 14u) & 0x1u);
}
// 40-sample columns are not swapped for addressing simplicity (because this is
// used for depth -> depth transfers, where swapping isn't needed).
#endif // XENIA_GPU_SHADERS_HOST_DEPTH_STORE_XESLI_

View File

@ -1,32 +0,0 @@
#include "edram.hlsli"
#include "host_depth_store.hlsli"
Texture2D<float> xe_host_depth_store_source : register(t0);
[numthreads(8, 8, 1)]
void main(uint3 xe_thread_id : SV_DispatchThreadID) {
// 1 thread = 8 samples (same as resolve granularity).
uint2 resolution_scale = XeHostDepthStoreResolutionScale();
// Group height can't cross resolve granularity, Y overflow check not needed.
[branch] if (xe_thread_id.x >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
uint2 pixel_index =
XeHostDepthStoreScaledOrigin() + (xe_thread_id.xy << uint2(3u, 0u));
uint edram_address_int4s =
XeEdramOffsetInts(pixel_index, 0u, XeHostDepthStorePitchTiles(),
kXenosMsaaSamples_1X, false, 0u, 0u,
XeHostDepthStoreResolutionScale())
>> 2u;
int3 source_pixel_index = int3(pixel_index, 0);
xe_host_depth_store_dest[edram_address_int4s] = asuint(float4(
xe_host_depth_store_source.Load(source_pixel_index),
xe_host_depth_store_source.Load(source_pixel_index + int3(1, 0, 0)),
xe_host_depth_store_source.Load(source_pixel_index + int3(2, 0, 0)),
xe_host_depth_store_source.Load(source_pixel_index + int3(3, 0, 0))));
xe_host_depth_store_dest[edram_address_int4s + 1u] = asuint(float4(
xe_host_depth_store_source.Load(source_pixel_index + int3(4, 0, 0)),
xe_host_depth_store_source.Load(source_pixel_index + int3(5, 0, 0)),
xe_host_depth_store_source.Load(source_pixel_index + int3(6, 0, 0)),
xe_host_depth_store_source.Load(source_pixel_index + int3(7, 0, 0))));
}

View File

@ -0,0 +1,59 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "../../ui/shaders/xesl.xesli"
#include "edram.xesli"
#include "host_depth_store.xesli"
xesl_entry
xesl_writeTypedStorageBuffer(xesl_uint4, xe_host_depth_store_dest, set=0,
binding=0, u0, space0)
xesl_entry_binding_next
xesl_texture(xesl_texture2D, xe_host_depth_store_source, set=1, binding=0, t0,
space0)
xesl_entry_bindings_end_local_size(8, 8, 1)
xesl_input_global_invocation_id
xesl_entry_signature_end
// 1 thread = 8 samples (same as resolve granularity).
// Group height can't cross resolve granularity, Y overflow check not needed.
xesl_dont_flatten
if (xesl_GlobalInvocationID.x >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
xesl_int2 pixel_index =
xesl_int2(XeHostDepthStoreScaledOrigin() +
(xesl_GlobalInvocationID.xy << xesl_uint2(3u, 0u)));
uint edram_address_int4s =
XeEdramOffsetInts(xesl_uint2(pixel_index), 0u,
XeHostDepthStorePitchTiles(), kXenosMsaaSamples_1X,
false, 0u, 0u, XeHostDepthStoreResolutionScale())
>> 2u;
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2D(xe_host_depth_store_source, pixel_index, 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(1, 0), 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(2, 0), 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(3, 0), 0).r)));
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s + 1u,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(4, 0), 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(5, 0), 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(6, 0), 0).r,
xesl_texelFetch2D(xe_host_depth_store_source,
pixel_index + xesl_int2(7, 0), 0).r)));
xesl_entry_end

View File

@ -1,43 +0,0 @@
#include "edram.hlsli"
#include "host_depth_store.hlsli"
Texture2DMS<float> xe_host_depth_store_source : register(t0);
[numthreads(8, 8, 1)]
void main(uint3 xe_thread_id : SV_DispatchThreadID) {
// 1 thread = 8 samples (8x0.5 pixels, resolve granularity is 8 pixels).
// Group height can't cross resolve granularity, Y overflow check not needed.
[branch] if (xe_thread_id.x >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
uint2 pixel_index = XeHostDepthStoreScaledOrigin() +
uint2(xe_thread_id.x << 3u, xe_thread_id.y >> 1u);
uint dest_sample_index = xe_thread_id.y & 1u;
uint edram_address_int4s =
XeEdramOffsetInts(pixel_index, 0u, XeHostDepthStorePitchTiles(),
kXenosMsaaSamples_2X, false, 0u, dest_sample_index,
XeHostDepthStoreResolutionScale())
>> 2u;
// Top and bottom to Direct3D 10.1+ top 1 and bottom 0 (for 2x) or top-left 0
// and bottom-right 3 (for 4x).
int source_sample_index =
XeHostDepthStoreMsaa2xSupported() ? (dest_sample_index ? 0u : 1u)
: (dest_sample_index ? 3u : 0u);
xe_host_depth_store_dest[edram_address_int4s] = asuint(float4(
xe_host_depth_store_source.Load(int2(pixel_index), source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(1, 0),
source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(2, 0),
source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(3, 0),
source_sample_index)));
xe_host_depth_store_dest[edram_address_int4s + 1u] = asuint(float4(
xe_host_depth_store_source.Load(int2(pixel_index) + int2(4, 0),
source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(5, 0),
source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(6, 0),
source_sample_index),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(7, 0),
source_sample_index)));
}

View File

@ -0,0 +1,75 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "../../ui/shaders/xesl.xesli"
#include "edram.xesli"
#include "host_depth_store.xesli"
xesl_entry
xesl_writeTypedStorageBuffer(xesl_uint4, xe_host_depth_store_dest, set=0,
binding=0, u0, space0)
xesl_entry_binding_next
xesl_texture(xesl_texture2DMS, xe_host_depth_store_source, set=1, binding=0,
t0, space0)
xesl_entry_bindings_end_local_size(8, 8, 1)
xesl_input_global_invocation_id
xesl_entry_signature_end
// 1 thread = 8 samples (8x0.5 pixels, resolve granularity is 8 pixels).
// Group height can't cross resolve granularity, Y overflow check not needed.
xesl_dont_flatten
if (xesl_GlobalInvocationID.x >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
xesl_int2 pixel_index =
xesl_int2(XeHostDepthStoreScaledOrigin() +
xesl_uint2(xesl_GlobalInvocationID.x << 3u,
xesl_GlobalInvocationID.y >> 1u));
uint dest_sample_index = xesl_GlobalInvocationID.y & 1u;
uint edram_address_int4s =
XeEdramOffsetInts(xesl_uint2(pixel_index), 0u,
XeHostDepthStorePitchTiles(), kXenosMsaaSamples_2X,
false, 0u, dest_sample_index,
XeHostDepthStoreResolutionScale())
>> 2u;
// Top and bottom to Direct3D 10.1+ and Vulkan top 1 and bottom 0 (for 2x) or
// top-left 0 and bottom-right 3 (for 4x).
int source_sample_index =
XeHostDepthStoreMsaa2xSupported() ? (bool(dest_sample_index) ? 0 : 1)
: (bool(dest_sample_index) ? 3 : 0);
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2DMS(xe_host_depth_store_source, pixel_index,
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(1, 0),
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(2, 0),
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(3, 0),
source_sample_index).r)));
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s + 1u,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(4, 0),
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(5, 0),
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(6, 0),
source_sample_index).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(7, 0),
source_sample_index).r)));
xesl_entry_end

View File

@ -1,40 +0,0 @@
#include "edram.hlsli"
#include "host_depth_store.hlsli"
Texture2DMS<float> xe_host_depth_store_source : register(t0);
[numthreads(8, 8, 1)]
void main(uint3 xe_thread_id : SV_DispatchThreadID) {
// 1 thread = 8 samples (4x0.5 pixels, resolve granularity is 8 pixels).
// Group height can't cross resolve granularity, Y overflow check not needed.
[branch] if ((xe_thread_id.x >> 1u) >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
uint2 pixel_index = XeHostDepthStoreScaledOrigin() +
uint2(xe_thread_id.x << 2u, xe_thread_id.y >> 1u);
// For simplicity, passing samples directly, not pixels, to XeEdramOffsetInts.
uint edram_address_int4s =
XeEdramOffsetInts((pixel_index << 1u) | (xe_thread_id.xy & 1u), 0u,
XeHostDepthStorePitchTiles(), kXenosMsaaSamples_1X,
false, 0u, 0u, XeHostDepthStoreResolutionScale())
>> 2u;
// Render target horizontal sample in bit 0, vertical sample in bit 1.
int source_sample_left = int((xe_thread_id.y & 1u) << 1u);
int source_sample_right = source_sample_left + 1;
xe_host_depth_store_dest[edram_address_int4s] = asuint(float4(
xe_host_depth_store_source.Load(int2(pixel_index), source_sample_left),
xe_host_depth_store_source.Load(int2(pixel_index), source_sample_right),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(1, 0),
source_sample_left),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(1, 0),
source_sample_right)));
xe_host_depth_store_dest[edram_address_int4s + 1u] = asuint(float4(
xe_host_depth_store_source.Load(int2(pixel_index) + int2(2, 0),
source_sample_left),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(2, 0),
source_sample_right),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(3, 0),
source_sample_left),
xe_host_depth_store_source.Load(int2(pixel_index) + int2(3, 0),
source_sample_right)));
}

View File

@ -0,0 +1,72 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "../../ui/shaders/xesl.xesli"
#include "edram.xesli"
#include "host_depth_store.xesli"
xesl_entry
xesl_writeTypedStorageBuffer(xesl_uint4, xe_host_depth_store_dest, set=0,
binding=0, u0, space0)
xesl_entry_binding_next
xesl_texture(xesl_texture2DMS, xe_host_depth_store_source, set=1, binding=0,
t0, space0)
xesl_entry_bindings_end_local_size(8, 8, 1)
xesl_input_global_invocation_id
xesl_entry_signature_end
// 1 thread = 8 samples (4x0.5 pixels, resolve granularity is 8 pixels).
// Group height can't cross resolve granularity, Y overflow check not needed.
xesl_dont_flatten
if ((xesl_GlobalInvocationID.x >> 1u) >= XeHostDepthStoreScaledWidthDiv8()) {
return;
}
xesl_int2 pixel_index =
xesl_int2(XeHostDepthStoreScaledOrigin() +
xesl_uint2(xesl_GlobalInvocationID.x << 2u,
xesl_GlobalInvocationID.y >> 1u));
// For simplicity, passing samples directly, not pixels, to XeEdramOffsetInts.
uint edram_address_int4s =
XeEdramOffsetInts(
(xesl_uint2(pixel_index) << 1u) | (xesl_GlobalInvocationID.xy & 1u),
0u, XeHostDepthStorePitchTiles(), kXenosMsaaSamples_1X, false, 0u, 0u,
XeHostDepthStoreResolutionScale())
>> 2u;
// Render target horizontal sample in bit 0, vertical sample in bit 1.
int source_sample_left = int((xesl_GlobalInvocationID.y & 1u) << 1u);
int source_sample_right = source_sample_left + 1;
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2DMS(xe_host_depth_store_source, pixel_index,
source_sample_left).r,
xesl_texelFetch2DMS(xe_host_depth_store_source, pixel_index,
source_sample_right).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(1, 0),
source_sample_left).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(1, 0),
source_sample_right).r)));
xesl_writeTypedStorageBufferStore(
xe_host_depth_store_dest, edram_address_int4s + 1u,
xesl_floatBitsToUint(xesl_float4(
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(2, 0),
source_sample_left).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(2, 0),
source_sample_right).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(3, 0),
source_sample_left).r,
xesl_texelFetch2DMS(xe_host_depth_store_source,
pixel_index + xesl_int2(3, 0),
source_sample_right).r)));
xesl_entry_end

View File

@ -1,3 +0,0 @@
float4 main(float2 position : POSITION) : SV_Position {
return float4(position, 0.0, 1.0);
}

View File

@ -0,0 +1,19 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "../../ui/shaders/xesl.xesli"
xesl_entry
xesl_entry_bindings_end
xesl_input(xesl_float2, xe_in_position, 0, POSITION)
xesl_entry_signature_next
xesl_output_position
xesl_entry_signature_end
xesl_Position = xesl_float4(xe_in_position, 0.0, 1.0);
xesl_entry_end

View File

@ -1,8 +1,8 @@
#ifndef XENIA_GPU_D3D12_SHADERS_RESOLVE_HLSLI_
#define XENIA_GPU_D3D12_SHADERS_RESOLVE_HLSLI_
#include "edram.hlsli"
#include "pixel_formats.hlsli"
#include "edram.xesli"
#include "pixel_formats.xesli"
#include "texture_address.hlsli"
cbuffer XeResolveConstants : register(b0) {

View File

@ -1,5 +1,5 @@
#include "endian.hlsli"
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "resolve.hlsli"
RWBuffer<uint2> xe_resolve_dest : register(u0);

View File

@ -1,5 +1,5 @@
#include "endian.hlsli"
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "resolve.hlsli"
RWBuffer<uint4> xe_resolve_dest : register(u0);

View File

@ -1,5 +1,5 @@
#include "endian.hlsli"
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "resolve.hlsli"
RWBuffer<uint4> xe_resolve_dest : register(u0);

View File

@ -1,5 +1,5 @@
#include "endian.hlsli"
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "resolve.hlsli"
RWBuffer<uint2> xe_resolve_dest : register(u0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TRANSFORM(blocks) \
(XeFloat20e4To32((blocks) >> 8u))
#include "texture_load_32bpb.hlsli"

View File

@ -1,5 +1,5 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TRANSFORM(blocks) \
(XeFloat20e4To32((blocks) >> 8u))
#include "texture_load_32bpb.hlsli"

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TRANSFORM(blocks) \
(asuint(XeUNorm24To32((blocks) >> 8u)))
#include "texture_load_32bpb.hlsli"

View File

@ -1,5 +1,5 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TRANSFORM(blocks) \
(asuint(XeUNorm24To32((blocks) >> 8u)))
#include "texture_load_32bpb.hlsli"

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,4 +1,4 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#include "texture_load.hlsli"
Buffer<uint4> xe_texture_load_source : register(t0);

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR10G11B11UNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR10G11B11UNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR10G11B11SNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR10G11B11SNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR11G11B10UNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR11G11B10UNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR11G11B10SNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_32BPB_TO_64BPB XeR11G11B10SNormToRGBA16
#include "texture_load_32bpb_64bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR4G4B4A4ToB4G4R4A4
#include "texture_load_16bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR4G4B4A4ToB4G4R4A4
#include "texture_load_16bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G5B5A1ToB5G5R5A1
#include "texture_load_16bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G5B5A1ToB5G5R5A1
#include "texture_load_16bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G5B6ToB5G6R5WithRBGASwizzle
#include "texture_load_16bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G5B6ToB5G6R5WithRBGASwizzle
#include "texture_load_16bpb.hlsli"

View File

@ -1,3 +1,3 @@
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G6B5ToB5G6R5
#include "texture_load_16bpb.hlsli"

View File

@ -1,4 +1,4 @@
#define XE_TEXTURE_LOAD_RESOLUTION_SCALED
#include "pixel_formats.hlsli"
#include "pixel_formats.xesli"
#define XE_TEXTURE_LOAD_16BPB_TRANSFORM XeR5G6B5ToB5G6R5
#include "texture_load_16bpb.hlsli"

View File

@ -14,6 +14,7 @@
// arguments.
// Required GLSL extensions:
// - GL_EXT_control_flow_attributes
// - GL_EXT_samplerless_texture_functions
// For functions, it's preferable to take the identifiers here from an existing
@ -85,7 +86,7 @@
// Everything here must be separated with xesl_entry_binding_next, with no
// leading or trailing separators.
// - Texel buffer, texture, sampler bindings.
// xesl_entry_bindings_end
// xesl_entry_bindings_end or (for CS) xesl_entry_bindings_end_local_size
// Everything here must be separated with xesl_entry_signature_next, with no
// leading or trailing separators.
// - Linked stage inputs.
@ -103,9 +104,14 @@
// Both binding and signature entry names may be placed in the global scope in
// the target language, make sure they don't collide with anything there.
#if XESL_LANGUAGE_GLSL
#define xesl_entry_bindings_end_local_size(x, y, z) \
layout(local_size_x=(x), local_size_y=(y), local_size_z=(z)) in;
#define xesl_entry_signature_end void main() {
#elif XESL_LANGUAGE_HLSL
#define xesl_entry_bindings_end void main(
#define xesl_entry_bindings_end_local_size(x, y, z) \
[numthreads(x, y, z)] \
xesl_entry_bindings_end
#define xesl_entry_signature_next ,
#define xesl_entry_signature_end ) {
#else
@ -196,8 +202,12 @@
#define xesl_push_constant(name) xesl_push_constants.name
#endif // XESL_PUSH_CONSTANTS_GLOBAL
// Texture, sampler and image declarations must be in the entry point bindings
// declaration.
// Buffer, texture, sampler and image declarations must be in the entry point
// bindings declaration.
// - xesl_typedStorageBuffer is a buffer limited to 1/2/4-component vectors of
// 32-bit integers and floats, a typed buffer on Direct3D, but a storage
// buffer (as opposed to a texel buffer, which has a very small minimum
// requirement for the maximum size) on Vulkan.
// - xesl_texture is a separate texture.
// - xesl_samplerState is a separate sampler.
// - xesl_sampler is a combined texture / sampler where available, internally
@ -206,8 +216,21 @@
#define XESL_COMBINED_TEXTURE_SAMPLER 1
// Types.
#define xesl_texture2D texture2D
#define xesl_texture2DMS texture2DMS
#define xesl_sampler2D sampler2D
// Binding declarations.
#define xesl_typedStorageBuffer(value_type, name, glsl_set, glsl_binding, \
hlsl_t, hlsl_t_space) \
layout(std430, glsl_set, glsl_binding) \
readonly buffer xesl_id_buffer_##name { \
value_type data[]; \
} name;
#define xesl_writeTypedStorageBuffer(value_type, name, glsl_set, \
glsl_binding, hlsl_u, hlsl_u_space) \
layout(std430, glsl_set, glsl_binding) \
writeonly buffer xesl_id_buffer_##name { \
value_type data[]; \
} name;
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space) \
layout(glsl_set, glsl_binding) uniform texture_type name;
@ -217,9 +240,15 @@
#define xesl_sampler(sampler_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space, hlsl_s, hlsl_s_space) \
layout(glsl_set, glsl_binding) uniform sampler_type name;
// Fetching.
// Fetching and storing.
#define xesl_typedStorageBufferLoad(name, position) \
((name).data[uint(position)])
#define xesl_writeTypedStorageBufferStore(name, position, value) \
((name).data[uint(position)] = (value))
#define xesl_texelFetch2D(texture_name, position, lod) \
texelFetch(texture_name, position, lod)
#define xesl_texelFetch2DMS(texture_name, position, sample_index) \
texelFetch(texture_name, position, sample_index)
#define xesl_textureSampleLod2D_sep(texture_name, sampler_name, position, \
lod) \
textureLod(sampler2D(texture_name, sampler_name), position, lod)
@ -243,17 +272,29 @@
textureGather(texture_sampler_name, position, 3)
#elif XESL_LANGUAGE_HLSL
// Types.
#define xesl_texture2D Texture2D
#define xesl_texture2D Texture2D<float4>
#define xesl_texture2DMS Texture2DMS<float4>
// Binding declarations.
#define xesl_typedStorageBuffer(value_type, name, glsl_set, glsl_binding, \
hlsl_t, hlsl_t_space) \
Buffer<value_type> name : register(hlsl_t, hlsl_t_space);
#define xesl_writeTypedStorageBuffer(value_type, name, glsl_set, \
glsl_binding, hlsl_u, hlsl_u_space) \
RWBuffer<value_type> name : register(hlsl_u, hlsl_u_space);
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space) \
texture_type name : register(hlsl_t, hlsl_t_space);
#define xesl_samplerState(name, glsl_set, glsl_binding, hlsl_s, \
hlsl_s_space) \
SamplerState name : register(hlsl_s, hlsl_s_space);
// Fetching.
// Fetching and storing.
#define xesl_typedStorageBufferLoad(name, position) ((name)[uint(position)])
#define xesl_writeTypedStorageBufferStore(name, position, value) \
((name)[uint(position)] = (value))
#define xesl_texelFetch2D(texture_name, position, lod) \
((texture_name).Load(int3(position, lod)))
#define xesl_texelFetch2DMS(texture_name, position, sample_index) \
((texture_name).Load(position, sample_index))
#define xesl_textureSampleLod2D_sep(texture_name, sampler_name, position, \
lod) \
((texture_name).SampleLevel(sampler_name, position, lod))
@ -266,7 +307,7 @@
#define xesl_textureGatherAlpha2D_sep(texture_name, sampler_name, position) \
((texture_name).GatherAlpha(sampler_name, position))
#else
#error xesl_texture and xesl_samplerState not defined for the target language.
#error Buffers and textures not defined for the target language.
#endif // XESL_LANGUAGE
// If there's no language specialization doing this already, implement combined
// textures / samplers as separate, with `xesl_id_texture_` and
@ -324,11 +365,19 @@
#define XESL_FRAG_COORD_W_IS_INVERSE 1
#define xesl_VertexID gl_VertexIndex
#define xesl_FragCoord gl_FragCoord
#define xesl_WorkGroupID gl_WorkGroupID
#define xesl_LocalInvocationID gl_LocalInvocationID
#define xesl_GlobalInvocationID gl_GlobalInvocationID
#define xesl_LocalInvocationIndex gl_LocalInvocationIndex
#define xesl_Position gl_Position
#define xesl_input(type, name, index, hlsl_semantic) \
layout(location=index) in type name;
#define xesl_input_vertex_id
#define xesl_input_frag_coord
#define xesl_input_work_group_id
#define xesl_input_local_invocation_id
#define xesl_input_global_invocation_id
#define xesl_input_local_invocation_index
#define xesl_output(type, name, index, hlsl_semantic) \
layout(location=index) out type name;
#define xesl_output_position
@ -342,6 +391,14 @@
uint xesl_id_vertex_id : SV_VertexID
#define xesl_input_frag_coord \
xesl_float4 xesl_FragCoord : SV_Position
#define xesl_input_work_group_id \
xesl_uint3 xesl_WorkGroupID : SV_GroupID
#define xesl_input_local_invocation_id \
xesl_uint3 xesl_LocalInvocationID : SV_GroupThreadID
#define xesl_input_global_invocation_id \
xesl_uint3 xesl_GlobalInvocationID : SV_DispatchThreadID
#define xesl_input_local_invocation_index \
uint xesl_LocalInvocationIndex : SV_GroupIndex
#define xesl_output(type, name, index, hlsl_semantic) \
out type name : hlsl_semantic
#define xesl_output_position \
@ -361,9 +418,54 @@
#define XESL_Y_SCREEN_DIRECTION -1.0
#endif // XESL_LANGUAGE_GLSL
// Attributes.
#if XESL_LANGUAGE_GLSL
#define xesl_flatten [[flatten]]
#define xesl_dont_flatten [[dont_flatten]]
#elif XESL_LANGUAGE_HLSL
#define xesl_flatten [flatten]
#define xesl_dont_flatten [branch]
#endif // XESL_LANGUAGE
#ifndef xesl_flatten
#define xesl_flatten
#endif // !xesl_flatten
#ifndef xesl_dont_flatten
#define xesl_dont_flatten
#endif // !xesl_dont_flatten
// Function aliases.
#if XESL_LANGUAGE_HLSL
#if XESL_LANGUAGE_GLSL
#define xesl_lessThan lessThan
#define xesl_lessThanEqual lessThanEqual
#define xesl_greaterThan greaterThan
#define xesl_greaterThanEqual greaterThanEqual
#define xesl_equal equal
#define xesl_notEqual notEqual
#define xesl_not not
#define xesl_select(condition, true_result, false_result) \
mix(false_result, true_result, condition)
#elif XESL_LANGUAGE_HLSL
#define xesl_lessThan(x, y) ((x) < (y))
#define xesl_lessThanEqual(x, y) ((x) <= (y))
#define xesl_greaterThan(x, y) ((x) > (y))
#define xesl_greaterThanEqual(x, y) ((x) >= (y))
#define xesl_equal(x, y) ((x) == (y))
#define xesl_notEqual(x, y) ((x) != (y))
#define xesl_not(x) (!(x))
#define xesl_select(condition, true_result, false_result) \
((condition) ? (true_result) : (false_result))
#else
#error Comparison operations not defined for the target language.
#endif
#if XESL_LANGUAGE_GLSL
#define xesl_floatBitsToInt floatBitsToInt
#define xesl_floatBitsToUint floatBitsToUint
#define xesl_intBitsToFloat intBitsToFloat
#define xesl_uintBitsToFloat uintBitsToFloat
#elif XESL_LANGUAGE_HLSL
// Using functions instead of #define for implicit argument conversion.
int xesl_floatBitsToInt(float value) { return asint(value); }
xesl_int2 xesl_floatBitsToInt(xesl_float2 value) { return asint(value); }
@ -382,11 +484,8 @@
xesl_float3 xesl_uintBitsToFloat(xesl_uint3 value) { return asfloat(value); }
xesl_float4 xesl_uintBitsToFloat(xesl_uint4 value) { return asfloat(value); }
#else
#define xesl_floatBitsToInt floatBitsToInt
#define xesl_floatBitsToUint floatBitsToUint
#define xesl_intBitsToFloat intBitsToFloat
#define xesl_uintBitsToFloat uintBitsToFloat
#endif // XESL_LANGUAGE_HLSL
#error Float bit casting not defined for the target language.
#endif // XESL_LANGUAGE
#if XESL_LANGUAGE_GLSL
float xesl_saturate(float value) {
@ -406,6 +505,16 @@
#define xesl_saturate saturate
#endif // XESL_LANGUAGE_GLSL
#if XESL_LANGUAGE_GLSL
#define xesl_findLSB findLSB
#define xesl_findMSB findMSB
#elif XESL_LANGUAGE_HLSL
#define xesl_findLSB firstbitlow
#define xesl_findMSB firstbithigh
#else
#error Bit count operations not defined for the target language.
#endif // XESL_LANGUAGE
#if XESL_LANGUAGE_GLSL
#define xesl_packHalf2x16 packHalf2x16
#elif XESL_LANGUAGE_HLSL

View File

@ -1020,6 +1020,7 @@ class BuildShadersCommand(Command):
# preserves line numbers in error and warning messages.
spirv_xesl_wrapper = \
'#version 460\n' + \
'#extension GL_EXT_control_flow_attributes : require\n' + \
'#extension GL_EXT_samplerless_texture_functions : require\n' + \
'#extension GL_GOOGLE_include_directive : require\n' + \
'#include "%s"\n'