GPU: app-armed forced small-resolve readback window (Skate 3 photo grab)
This commit is contained in:
parent
9d9504aa02
commit
0585bf885a
8 changed files with 1035 additions and 585 deletions
|
|
@ -35,6 +35,7 @@ REXCVAR_DECLARE(bool, scaled_resolve_texture_loads_update_guest_memory);
|
|||
REXCVAR_DECLARE(int32_t, scaled_resolve_small_texture_readback_max_length);
|
||||
REXCVAR_DECLARE(std::string, readback_resolve);
|
||||
REXCVAR_DECLARE(bool, readback_resolve_half_pixel_offset);
|
||||
REXCVAR_DECLARE(int32_t, native_render_force_resolve_readback_max_length);
|
||||
REXCVAR_DECLARE(bool, readback_memexport);
|
||||
REXCVAR_DECLARE(bool, readback_memexport_fast);
|
||||
REXCVAR_DECLARE(bool, occlusion_query_enable);
|
||||
|
|
|
|||
|
|
@ -89,6 +89,18 @@ REXCVAR_DEFINE_INT32(scaled_resolve_small_texture_readback_max_length, 0x2D0000,
|
|||
.range(0, 16 * 1024 * 1024)
|
||||
.lifecycle(rex::cvar::Lifecycle::kHotReload);
|
||||
|
||||
REXCVAR_DEFINE_INT32(native_render_force_resolve_readback_max_length, 0, "GPU",
|
||||
"When > 0, render-to-texture resolves up to this unscaled byte length are "
|
||||
"read back synchronously into CPU-visible guest memory even when "
|
||||
"readback_resolve is disabled and regardless of gameplay state. Intended "
|
||||
"to be ARMED TEMPORARILY by the app layer around flows where the game "
|
||||
"reads resolved pixels on the CPU (Skate 3 photo grab: "
|
||||
"ScreenshotBackEnd::GrabScreenshot JPEG-encodes a 1152x640 PostFX "
|
||||
"screenshot target from guest memory; without readback the saved photo "
|
||||
"is black). 0 disables (default).")
|
||||
.range(0, 16 * 1024 * 1024)
|
||||
.lifecycle(rex::cvar::Lifecycle::kHotReload);
|
||||
|
||||
REXCVAR_DEFINE_BOOL(readback_memexport, false, "GPU",
|
||||
"Enable CPU readback of shader memexport writes for guest memory "
|
||||
"coherency (can reduce correctness issues, but may add GPU/CPU sync cost)")
|
||||
|
|
|
|||
|
|
@ -3665,7 +3665,12 @@ bool D3D12CommandProcessor::IssueCopy() {
|
|||
}
|
||||
ReadbackResolveMode readback_mode = GetReadbackResolveMode(REXCVAR_GET(d3d12_readback_resolve));
|
||||
const bool gameplay_state_active = IsGameplayStateActive(kernel_state_);
|
||||
if (readback_mode == ReadbackResolveMode::kDisabled &&
|
||||
// The app layer arms this around CPU screenshot grabs (Skate 3 photo flow);
|
||||
// resolves within its length bound must take the readback path regardless
|
||||
// of gameplay/scaling state.
|
||||
const bool force_readback_window =
|
||||
REXCVAR_GET(native_render_force_resolve_readback_max_length) > 0;
|
||||
if (readback_mode == ReadbackResolveMode::kDisabled && !force_readback_window &&
|
||||
(!texture_cache_->IsDrawResolutionScaled() || gameplay_state_active)) {
|
||||
uint32_t written_address, written_length;
|
||||
// Time the whole resolve (render target dump, copy and clear) for the GPU
|
||||
|
|
@ -3706,7 +3711,17 @@ bool D3D12CommandProcessor::IssueCopy_ReadbackResolvePath() {
|
|||
!IsGameplayStateActive(kernel_state_) && is_scaled &&
|
||||
written_address == kImportSkaterPreviewResolveAddress &&
|
||||
written_length == kImportSkaterPreviewResolveLength;
|
||||
if (!force_scaled_resolve_cpu_copy) {
|
||||
// App-armed readback window (Skate 3 photo grab): the game CPU-reads the
|
||||
// resolved 1152x640 PostFX screenshot target (also 0x04911000) while the
|
||||
// gameplay presence context is still 1 (photo missions), so the targeted
|
||||
// Import-Skater branch above never fires there. Bounded by length so
|
||||
// framebuffer-sized resolves stay excluded.
|
||||
const int32_t force_readback_max_length =
|
||||
REXCVAR_GET(native_render_force_resolve_readback_max_length);
|
||||
const bool force_window_cpu_copy =
|
||||
force_readback_max_length > 0 &&
|
||||
written_length <= uint32_t(force_readback_max_length);
|
||||
if (!force_scaled_resolve_cpu_copy && !force_window_cpu_copy) {
|
||||
return true;
|
||||
}
|
||||
readback_mode = ReadbackResolveMode::kFull;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,30 @@
|
|||
#if 0
|
||||
//
|
||||
// Generated by Microsoft (R) D3D Shader Disassembler
|
||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
||||
//
|
||||
//
|
||||
// Buffer Definitions:
|
||||
//
|
||||
// cbuffer XeResolveDownscaleConstants
|
||||
// {
|
||||
//
|
||||
// uint xe_downscale_scale_x; // Offset: 0 Size: 4
|
||||
// uint xe_downscale_scale_y; // Offset: 4 Size: 4
|
||||
// uint xe_downscale_pixel_size_log2; // Offset: 8 Size: 4
|
||||
// uint xe_downscale_tile_count; // Offset: 12 Size: 4
|
||||
// uint xe_downscale_half_pixel_offset;// Offset: 16 Size: 4
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// Resource Bindings:
|
||||
//
|
||||
// Name Type Format Dim ID HLSL Bind Count
|
||||
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
|
||||
// xe_resolve_source texture byte r/o T0 t0 1
|
||||
// xe_resolve_dest UAV byte r/w U0 u0 1
|
||||
// XeResolveDownscaleConstants cbuffer NA NA CB0 cb0 1
|
||||
//
|
||||
//
|
||||
//
|
||||
// Input signature:
|
||||
|
|
@ -15,7 +39,7 @@
|
|||
// -------------------- ----- ------ -------- -------- ------- ------
|
||||
// no Output
|
||||
cs_5_1
|
||||
dcl_globalFlags refactoringAllowed | allResourcesBound
|
||||
dcl_globalFlags refactoringAllowed
|
||||
dcl_constantbuffer CB0[0:0][2], immediateIndexed, space=0
|
||||
dcl_resource_raw T0[0:0], space=0
|
||||
dcl_uav_raw U0[0:0], space=0
|
||||
|
|
@ -26,53 +50,62 @@ dcl_tgsm_structured g0, 4, 1024
|
|||
dcl_thread_group 32, 32, 1
|
||||
uge r0.x, vThreadGroupID.x, CB0[0][0].w
|
||||
if_nz r0.x
|
||||
ret
|
||||
endif
|
||||
ret
|
||||
endif
|
||||
imad r0.x, vThreadIDInGroup.y, l(32), vThreadIDInGroup.x
|
||||
ishl r0.yz, l(0, 1, 1024, 0), CB0[0][0].zzzz
|
||||
imul null, r0.w, CB0[0][0].y, CB0[0][0].x
|
||||
ine r1.y, CB0[0][1].x, l(0)
|
||||
ult r1.z, l(1), r0.w
|
||||
and r1.y, r1.z, r1.y
|
||||
if_nz r1.y
|
||||
ushr r1.yz, CB0[0][0].xxyx, l(0, 1, 1, 0)
|
||||
imad r1.y, r1.z, CB0[0][0].x, r1.y
|
||||
else
|
||||
mov r1.y, l(0)
|
||||
endif
|
||||
imul null, r1.xz, r0.wwyw, r0.zzxz
|
||||
imul null, r0.w, r0.w, r1.z
|
||||
imad r0.w, vThreadGroupID.x, r1.x, r0.w
|
||||
imad r0.y, r1.y, r0.y, r0.w
|
||||
ine r1.x, CB0[0][1].x, l(0)
|
||||
ult r1.y, l(1), r0.w
|
||||
and r1.x, r1.y, r1.x
|
||||
if_nz r1.x
|
||||
ushr r1.xy, CB0[0][0].xyxx, l(1, 1, 0, 0)
|
||||
else
|
||||
mov r1.xy, l(0,0,0,0)
|
||||
endif
|
||||
imul null, r0.y, r0.y, r0.x
|
||||
imad r0.y, vThreadGroupID.x, r0.z, r0.y
|
||||
ushr r0.z, r0.y, l(4)
|
||||
and r1.z, r0.y, l(15)
|
||||
ushr r1.z, r1.z, CB0[0][0].z
|
||||
iadd r1.w, -CB0[0][0].z, l(4)
|
||||
imad r1.x, CB0[0][0].x, r1.z, r1.x
|
||||
ushr r1.z, r1.x, r1.w
|
||||
ishl r0.w, r0.w, l(4)
|
||||
imad r1.y, r1.z, CB0[0][0].y, r1.y
|
||||
ishl r1.y, r1.y, l(4)
|
||||
imad r0.z, r0.z, r0.w, r1.y
|
||||
bfi r0.w, r1.w, CB0[0][0].z, r1.x, l(0)
|
||||
iadd r0.z, r0.w, r0.z
|
||||
ult r0.w, CB0[0][0].z, l(2)
|
||||
if_nz r0.w
|
||||
if_z CB0[0][0].z
|
||||
and r0.w, r0.y, l(-4)
|
||||
and r0.w, r0.z, l(-4)
|
||||
ld_raw r0.w, r0.w, T0[0].xxxx
|
||||
bfi r1.xw, l(2, 0, 0, 2), l(3, 0, 0, 3), r0.yyyx, l(0, 0, 0, 0)
|
||||
bfi r1.xw, l(2, 0, 0, 2), l(3, 0, 0, 3), r0.zzzx, l(0, 0, 0, 0)
|
||||
ushr r0.w, r0.w, r1.x
|
||||
ushr r1.x, r0.x, l(2)
|
||||
and r1.z, r0.x, l(3)
|
||||
bfi r0.w, l(8), r1.w, r0.w, l(0)
|
||||
if_z r1.z
|
||||
store_structured g0.x, r1.x, l(0), r0.w
|
||||
endif
|
||||
endif
|
||||
sync_g_t
|
||||
if_nz r1.z
|
||||
mov r1.y, l(0)
|
||||
atomic_or g0, r1.xyxx, r0.w
|
||||
endif
|
||||
endif
|
||||
sync_g_t
|
||||
if_z r1.z
|
||||
and r0.w, r0.x, l(1020)
|
||||
imad r0.w, vThreadGroupID.x, l(1024), r0.w
|
||||
ld_structured r1.x, r1.x, l(0), g0.xxxx
|
||||
store_raw U0[0].x, r0.w, r1.x
|
||||
endif
|
||||
else
|
||||
and r0.w, r0.y, l(-4)
|
||||
endif
|
||||
else
|
||||
and r0.w, r0.z, l(-4)
|
||||
ld_raw r0.w, r0.w, T0[0].xxxx
|
||||
ishl r1.x, r0.y, l(3)
|
||||
ishl r1.x, r0.z, l(3)
|
||||
and r1.x, r1.x, l(16)
|
||||
ushr r0.w, r0.w, r1.x
|
||||
ushr r1.x, r0.x, l(1)
|
||||
|
|
@ -81,147 +114,596 @@ if_nz r0.w
|
|||
bfi r0.x, l(16), r0.x, r0.w, l(0)
|
||||
if_z r1.z
|
||||
store_structured g0.x, r1.x, l(0), r0.x
|
||||
endif
|
||||
endif
|
||||
sync_g_t
|
||||
if_nz r1.z
|
||||
mov r1.y, l(0)
|
||||
atomic_or g0, r1.xyxx, r0.x
|
||||
endif
|
||||
endif
|
||||
sync_g_t
|
||||
if_z r1.z
|
||||
ishl r0.x, r1.x, l(2)
|
||||
imad r0.x, vThreadGroupID.x, l(2048), r0.x
|
||||
ld_structured r0.w, r1.x, l(0), g0.xxxx
|
||||
store_raw U0[0].x, r0.x, r0.w
|
||||
endif
|
||||
endif
|
||||
else
|
||||
imad r0.z, vThreadGroupID.x, r0.z, r1.z
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ieq r0.x, CB0[0][0].z, l(2)
|
||||
if_nz r0.x
|
||||
ld_raw r0.x, r0.y, T0[0].xxxx
|
||||
store_raw U0[0].x, r0.z, r0.x
|
||||
else
|
||||
ld_raw r0.x, r0.z, T0[0].xxxx
|
||||
store_raw U0[0].x, r0.y, r0.x
|
||||
else
|
||||
ieq r0.x, CB0[0][0].z, l(3)
|
||||
if_nz r0.x
|
||||
ld_raw r0.xy, r0.y, T0[0].xyxx
|
||||
store_raw U0[0].xy, r0.z, r0.xyxx
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ret
|
||||
// Approximately 0 instruction slots used
|
||||
ld_raw r0.xz, r0.z, T0[0].xxyx
|
||||
store_raw U0[0].xy, r0.y, r0.xzxx
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ret
|
||||
// Approximately 94 instruction slots used
|
||||
#endif
|
||||
|
||||
const BYTE resolve_downscale_cs[] = {
|
||||
68, 88, 66, 67, 235, 139, 102, 94, 189, 150, 220, 235, 94, 229, 59, 205, 74, 78, 159, 167,
|
||||
1, 0, 0, 0, 164, 8, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 60, 0, 0, 0,
|
||||
76, 0, 0, 0, 73, 83, 71, 78, 8, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
|
||||
79, 83, 71, 78, 8, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 83, 72, 69, 88,
|
||||
80, 8, 0, 0, 81, 0, 5, 0, 20, 2, 0, 0, 106, 8, 8, 1, 89, 0, 0, 7,
|
||||
70, 142, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 161, 0, 0, 6, 70, 126, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 6, 70, 238, 49, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 2, 18, 16, 2, 0,
|
||||
95, 0, 0, 2, 50, 32, 2, 0, 104, 0, 0, 2, 2, 0, 0, 0, 160, 0, 0, 5,
|
||||
0, 240, 17, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 155, 0, 0, 4,
|
||||
32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 8, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 16, 2, 0, 58, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 31, 0, 4, 3, 10, 0, 16, 0, 0, 0, 0, 0, 62, 0, 0, 1,
|
||||
21, 0, 0, 1, 35, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 26, 32, 2, 0,
|
||||
1, 64, 0, 0, 32, 0, 0, 0, 10, 32, 2, 0, 41, 0, 0, 12, 98, 0, 16, 0,
|
||||
0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0,
|
||||
0, 0, 0, 0, 166, 138, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
38, 0, 0, 12, 0, 208, 0, 0, 130, 0, 16, 0, 0, 0, 0, 0, 26, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 128, 48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 9, 34, 0, 16, 0, 1, 0, 0, 0,
|
||||
10, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 79, 0, 0, 7, 66, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0,
|
||||
1, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 7, 34, 0, 16, 0,
|
||||
1, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 1, 0, 0, 0,
|
||||
31, 0, 4, 3, 26, 0, 16, 0, 1, 0, 0, 0, 85, 0, 0, 12, 98, 0, 16, 0,
|
||||
1, 0, 0, 0, 6, 129, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
35, 0, 0, 11, 34, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0,
|
||||
10, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 16, 0,
|
||||
1, 0, 0, 0, 18, 0, 0, 1, 54, 0, 0, 5, 34, 0, 16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0, 0, 0, 21, 0, 0, 1, 38, 0, 0, 8, 0, 208, 0, 0,
|
||||
82, 0, 16, 0, 1, 0, 0, 0, 246, 13, 16, 0, 0, 0, 0, 0, 166, 8, 16, 0,
|
||||
0, 0, 0, 0, 38, 0, 0, 8, 0, 208, 0, 0, 130, 0, 16, 0, 0, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0, 35, 0, 0, 8,
|
||||
130, 0, 16, 0, 0, 0, 0, 0, 10, 16, 2, 0, 10, 0, 16, 0, 1, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0, 0, 0, 35, 0, 0, 9, 34, 0, 16, 0, 0, 0, 0, 0,
|
||||
26, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 79, 0, 0, 9, 130, 0, 16, 0, 0, 0, 0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 2, 0, 0, 0,
|
||||
31, 0, 4, 3, 58, 0, 16, 0, 0, 0, 0, 0, 31, 0, 0, 5, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 7, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 252, 255, 255, 255,
|
||||
165, 0, 0, 8, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0,
|
||||
6, 112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 20, 146, 0, 16, 0,
|
||||
1, 0, 0, 0, 2, 64, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 2, 64, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 86, 1, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 7, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0,
|
||||
85, 0, 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 2, 0, 0, 0, 1, 0, 0, 7, 66, 0, 16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 3, 0, 0, 0, 140, 0, 0, 11,
|
||||
130, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 8, 0, 0, 0, 58, 0, 16, 0,
|
||||
1, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0,
|
||||
31, 0, 0, 3, 42, 0, 16, 0, 1, 0, 0, 0, 168, 0, 0, 9, 18, 240, 17, 0,
|
||||
0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1, 190, 24, 0, 1, 31, 0, 4, 3,
|
||||
42, 0, 16, 0, 1, 0, 0, 0, 54, 0, 0, 5, 34, 0, 16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0, 0, 0, 170, 0, 0, 7, 0, 240, 17, 0, 0, 0, 0, 0,
|
||||
70, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1,
|
||||
190, 24, 0, 1, 31, 0, 0, 3, 42, 0, 16, 0, 1, 0, 0, 0, 1, 0, 0, 7,
|
||||
130, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0,
|
||||
252, 3, 0, 0, 35, 0, 0, 8, 130, 0, 16, 0, 0, 0, 0, 0, 10, 16, 2, 0,
|
||||
1, 64, 0, 0, 0, 4, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 167, 0, 0, 9,
|
||||
18, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 6, 240, 17, 0, 0, 0, 0, 0, 166, 0, 0, 8, 18, 224, 33, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 21, 0, 0, 1, 18, 0, 0, 1, 1, 0, 0, 7, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 252, 255, 255, 255,
|
||||
165, 0, 0, 8, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0,
|
||||
6, 112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 7, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 16, 0, 0, 0, 85, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 85, 0, 0, 7,
|
||||
18, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0,
|
||||
1, 0, 0, 0, 1, 0, 0, 7, 66, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64, 0, 0, 1, 0, 0, 0, 140, 0, 0, 11, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64, 0, 0, 1, 0, 0, 0, 1, 64, 0, 0, 4, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 140, 0, 0, 11,
|
||||
18, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 16, 0, 0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0,
|
||||
31, 0, 0, 3, 42, 0, 16, 0, 1, 0, 0, 0, 168, 0, 0, 9, 18, 240, 17, 0,
|
||||
0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1, 190, 24, 0, 1, 31, 0, 4, 3,
|
||||
42, 0, 16, 0, 1, 0, 0, 0, 54, 0, 0, 5, 34, 0, 16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0, 0, 0, 170, 0, 0, 7, 0, 240, 17, 0, 0, 0, 0, 0,
|
||||
70, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1,
|
||||
190, 24, 0, 1, 31, 0, 0, 3, 42, 0, 16, 0, 1, 0, 0, 0, 41, 0, 0, 7,
|
||||
18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0,
|
||||
2, 0, 0, 0, 35, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, 10, 16, 2, 0,
|
||||
1, 64, 0, 0, 0, 8, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 167, 0, 0, 9,
|
||||
130, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 6, 240, 17, 0, 0, 0, 0, 0, 166, 0, 0, 8, 18, 224, 33, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 21, 0, 0, 1, 21, 0, 0, 1, 18, 0, 0, 1, 35, 0, 0, 8,
|
||||
66, 0, 16, 0, 0, 0, 0, 0, 10, 16, 2, 0, 42, 0, 16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 1, 0, 0, 0, 32, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0,
|
||||
2, 0, 0, 0, 31, 0, 4, 3, 10, 0, 16, 0, 0, 0, 0, 0, 165, 0, 0, 8,
|
||||
18, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 6, 112, 32, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 8, 18, 224, 33, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0,
|
||||
18, 0, 0, 1, 32, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 3, 0, 0, 0,
|
||||
31, 0, 4, 3, 10, 0, 16, 0, 0, 0, 0, 0, 165, 0, 0, 8, 50, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 70, 112, 32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 166, 0, 0, 8, 50, 224, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0, 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1,
|
||||
21, 0, 0, 1, 21, 0, 0, 1, 62, 0, 0, 1};
|
||||
const BYTE resolve_downscale_cs[] =
|
||||
{
|
||||
68, 88, 66, 67, 138, 22,
|
||||
160, 35, 69, 243, 236, 133,
|
||||
116, 189, 71, 210, 139, 14,
|
||||
226, 43, 1, 0, 0, 0,
|
||||
24, 13, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
228, 2, 0, 0, 244, 2,
|
||||
0, 0, 4, 3, 0, 0,
|
||||
124, 12, 0, 0, 82, 68,
|
||||
69, 70, 168, 2, 0, 0,
|
||||
1, 0, 0, 0, 244, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
60, 0, 0, 0, 1, 5,
|
||||
83, 67, 0, 133, 0, 0,
|
||||
125, 2, 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,
|
||||
180, 0, 0, 0, 7, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 198, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
6, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 214, 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,
|
||||
120, 101, 95, 114, 101, 115,
|
||||
111, 108, 118, 101, 95, 115,
|
||||
111, 117, 114, 99, 101, 0,
|
||||
120, 101, 95, 114, 101, 115,
|
||||
111, 108, 118, 101, 95, 100,
|
||||
101, 115, 116, 0, 88, 101,
|
||||
82, 101, 115, 111, 108, 118,
|
||||
101, 68, 111, 119, 110, 115,
|
||||
99, 97, 108, 101, 67, 111,
|
||||
110, 115, 116, 97, 110, 116,
|
||||
115, 0, 171, 171, 214, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
12, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 212, 1,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 2, 0,
|
||||
0, 0, 240, 1, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 20, 2, 0, 0,
|
||||
4, 0, 0, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
240, 1, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
41, 2, 0, 0, 8, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
2, 0, 0, 0, 240, 1,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 70, 2,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
4, 0, 0, 0, 2, 0,
|
||||
0, 0, 240, 1, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 94, 2, 0, 0,
|
||||
16, 0, 0, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
240, 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, 100, 111, 119,
|
||||
110, 115, 99, 97, 108, 101,
|
||||
95, 115, 99, 97, 108, 101,
|
||||
95, 120, 0, 100, 119, 111,
|
||||
114, 100, 0, 171, 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,
|
||||
233, 1, 0, 0, 120, 101,
|
||||
95, 100, 111, 119, 110, 115,
|
||||
99, 97, 108, 101, 95, 115,
|
||||
99, 97, 108, 101, 95, 121,
|
||||
0, 120, 101, 95, 100, 111,
|
||||
119, 110, 115, 99, 97, 108,
|
||||
101, 95, 112, 105, 120, 101,
|
||||
108, 95, 115, 105, 122, 101,
|
||||
95, 108, 111, 103, 50, 0,
|
||||
120, 101, 95, 100, 111, 119,
|
||||
110, 115, 99, 97, 108, 101,
|
||||
95, 116, 105, 108, 101, 95,
|
||||
99, 111, 117, 110, 116, 0,
|
||||
120, 101, 95, 100, 111, 119,
|
||||
110, 115, 99, 97, 108, 101,
|
||||
95, 104, 97, 108, 102, 95,
|
||||
112, 105, 120, 101, 108, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
0, 77, 105, 99, 114, 111,
|
||||
115, 111, 102, 116, 32, 40,
|
||||
82, 41, 32, 72, 76, 83,
|
||||
76, 32, 83, 104, 97, 100,
|
||||
101, 114, 32, 67, 111, 109,
|
||||
112, 105, 108, 101, 114, 32,
|
||||
49, 48, 46, 49, 0, 171,
|
||||
171, 171, 73, 83, 71, 78,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
79, 83, 71, 78, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
8, 0, 0, 0, 83, 72,
|
||||
69, 88, 112, 9, 0, 0,
|
||||
81, 0, 5, 0, 92, 2,
|
||||
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, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 161, 0,
|
||||
0, 6, 70, 126, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 157, 0,
|
||||
0, 6, 70, 238, 49, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 95, 0,
|
||||
0, 2, 18, 16, 2, 0,
|
||||
95, 0, 0, 2, 50, 32,
|
||||
2, 0, 104, 0, 0, 2,
|
||||
2, 0, 0, 0, 160, 0,
|
||||
0, 5, 0, 240, 17, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 4, 0, 0,
|
||||
155, 0, 0, 4, 32, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
1, 0, 0, 0, 80, 0,
|
||||
0, 8, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 16,
|
||||
2, 0, 58, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
31, 0, 4, 3, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 21, 0,
|
||||
0, 1, 35, 0, 0, 7,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 32, 2, 0,
|
||||
1, 64, 0, 0, 32, 0,
|
||||
0, 0, 10, 32, 2, 0,
|
||||
41, 0, 0, 12, 98, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 4, 0, 0, 0, 0,
|
||||
0, 0, 166, 138, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
38, 0, 0, 12, 0, 208,
|
||||
0, 0, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 10, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
39, 0, 0, 9, 18, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
79, 0, 0, 7, 34, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 1, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 26, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 1, 0,
|
||||
0, 0, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 1, 0,
|
||||
0, 0, 85, 0, 0, 12,
|
||||
50, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 64, 0, 0, 1, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
54, 0, 0, 8, 50, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 21, 0, 0, 1,
|
||||
38, 0, 0, 8, 0, 208,
|
||||
0, 0, 34, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 35, 0, 0, 8,
|
||||
34, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 16, 2, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 0, 16, 0,
|
||||
0, 0, 0, 0, 85, 0,
|
||||
0, 7, 66, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 4, 0,
|
||||
0, 0, 1, 0, 0, 7,
|
||||
66, 0, 16, 0, 1, 0,
|
||||
0, 0, 26, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
85, 0, 0, 9, 66, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
42, 0, 16, 0, 1, 0,
|
||||
0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
30, 0, 0, 10, 130, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
42, 128, 48, 128, 65, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
4, 0, 0, 0, 35, 0,
|
||||
0, 11, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 10, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
1, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
85, 0, 0, 7, 66, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 1, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
1, 0, 0, 0, 41, 0,
|
||||
0, 7, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 4, 0,
|
||||
0, 0, 35, 0, 0, 11,
|
||||
34, 0, 16, 0, 1, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
1, 0, 0, 0, 26, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 26, 0, 16, 0,
|
||||
1, 0, 0, 0, 41, 0,
|
||||
0, 7, 34, 0, 16, 0,
|
||||
1, 0, 0, 0, 26, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 4, 0,
|
||||
0, 0, 35, 0, 0, 9,
|
||||
66, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
26, 0, 16, 0, 1, 0,
|
||||
0, 0, 140, 0, 0, 13,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
1, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
30, 0, 0, 7, 66, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 0, 0, 79, 0,
|
||||
0, 9, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
2, 0, 0, 0, 31, 0,
|
||||
4, 3, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 31, 0,
|
||||
0, 5, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 7, 130, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
252, 255, 255, 255, 165, 0,
|
||||
0, 8, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 112, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
140, 0, 0, 20, 146, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
2, 64, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 166, 2,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 85, 0, 0, 7,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
85, 0, 0, 7, 18, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
2, 0, 0, 0, 1, 0,
|
||||
0, 7, 66, 0, 16, 0,
|
||||
1, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 3, 0,
|
||||
0, 0, 140, 0, 0, 11,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
8, 0, 0, 0, 58, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 31, 0,
|
||||
0, 3, 42, 0, 16, 0,
|
||||
1, 0, 0, 0, 168, 0,
|
||||
0, 9, 18, 240, 17, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 21, 0,
|
||||
0, 1, 190, 24, 0, 1,
|
||||
31, 0, 4, 3, 42, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
54, 0, 0, 5, 34, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 0, 170, 0, 0, 7,
|
||||
0, 240, 17, 0, 0, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
1, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 190, 24,
|
||||
0, 1, 31, 0, 0, 3,
|
||||
42, 0, 16, 0, 1, 0,
|
||||
0, 0, 1, 0, 0, 7,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 252, 3, 0, 0,
|
||||
35, 0, 0, 8, 130, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 16, 2, 0, 1, 64,
|
||||
0, 0, 0, 4, 0, 0,
|
||||
58, 0, 16, 0, 0, 0,
|
||||
0, 0, 167, 0, 0, 9,
|
||||
18, 0, 16, 0, 1, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
6, 240, 17, 0, 0, 0,
|
||||
0, 0, 166, 0, 0, 8,
|
||||
18, 224, 33, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
58, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 21, 0,
|
||||
0, 1, 18, 0, 0, 1,
|
||||
1, 0, 0, 7, 130, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
252, 255, 255, 255, 165, 0,
|
||||
0, 8, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 112, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
41, 0, 0, 7, 18, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
3, 0, 0, 0, 1, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 16, 0,
|
||||
0, 0, 85, 0, 0, 7,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
85, 0, 0, 7, 18, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 7, 66, 0, 16, 0,
|
||||
1, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 1, 0,
|
||||
0, 0, 140, 0, 0, 11,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 140, 0,
|
||||
0, 11, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 58, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
31, 0, 0, 3, 42, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
168, 0, 0, 9, 18, 240,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 1, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 190, 24,
|
||||
0, 1, 31, 0, 4, 3,
|
||||
42, 0, 16, 0, 1, 0,
|
||||
0, 0, 54, 0, 0, 5,
|
||||
34, 0, 16, 0, 1, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 0, 170, 0,
|
||||
0, 7, 0, 240, 17, 0,
|
||||
0, 0, 0, 0, 70, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 21, 0, 0, 1,
|
||||
190, 24, 0, 1, 31, 0,
|
||||
0, 3, 42, 0, 16, 0,
|
||||
1, 0, 0, 0, 41, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 2, 0,
|
||||
0, 0, 35, 0, 0, 8,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 16, 2, 0,
|
||||
1, 64, 0, 0, 0, 8,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 167, 0,
|
||||
0, 9, 130, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 0, 6, 240, 17, 0,
|
||||
0, 0, 0, 0, 166, 0,
|
||||
0, 8, 18, 224, 33, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 21, 0,
|
||||
0, 1, 18, 0, 0, 1,
|
||||
32, 0, 0, 9, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
31, 0, 4, 3, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
165, 0, 0, 8, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 6, 112, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 166, 0, 0, 8,
|
||||
18, 224, 33, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
26, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 18, 0,
|
||||
0, 1, 32, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 3, 0,
|
||||
0, 0, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 165, 0, 0, 8,
|
||||
82, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 0, 0, 6, 113,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 166, 0,
|
||||
0, 8, 50, 224, 33, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 26, 0, 16, 0,
|
||||
0, 0, 0, 0, 134, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 21, 0,
|
||||
0, 1, 21, 0, 0, 1,
|
||||
62, 0, 0, 1, 83, 84,
|
||||
65, 84, 148, 0, 0, 0,
|
||||
94, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
19, 0, 0, 0, 7, 0,
|
||||
0, 0, 11, 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, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 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,
|
||||
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, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
4, 0, 0, 0
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,10 +13,38 @@
|
|||
// Operates on 32x32 tiled data format used by Xbox 360.
|
||||
// Each thread handles one output pixel (one 32x32 tile = 1024 threads).
|
||||
//
|
||||
// By default, picks the top-left pixel of each scale_x * scale_y block.
|
||||
// When xe_downscale_half_pixel_offset is set, samples from (scale/2, scale/2)
|
||||
// within each block to compensate for the half-pixel offset becoming a
|
||||
// full-pixel offset at higher resolutions.
|
||||
// Scaled resolve buffer layout (established from the resolve write shaders,
|
||||
// e.g. resolve_fast_32bpp_1x2xmsaa_scaled, and the scaled texture load
|
||||
// shaders; they must agree, and both use this):
|
||||
//
|
||||
// scaled_byte_address = guest_unit_byte_address * (scale_x * scale_y)
|
||||
// + (sub_x * scale_y + sub_y) * 16
|
||||
// + byte_within_scaled_unit
|
||||
//
|
||||
// where a "unit" is a 16-byte span of the guest tiled layout, holding
|
||||
// W = 16 >> pixel_size_log2 texels that are consecutive along X for
|
||||
// 16/32/64bpp (a property of the Xbox 360 tiled address function's low
|
||||
// 4 bits); sub_x selects among the scale_x duplicated 16-byte blocks the
|
||||
// unit expands to along X of the SCALED image, and sub_y among the scale_y
|
||||
// duplicated rows. Note the (x-major, y-minor) sub ordering and the 16-BYTE
|
||||
// duplication granularity: the scaled image texel for guest texel t of a
|
||||
// unit, at sub-position (ox, oy) within its scale_x * scale_y block, is
|
||||
//
|
||||
// q = scale_x * t + ox; sub_x = q / W; texel_in_scaled_unit = q % W.
|
||||
//
|
||||
// (The previous version of this shader assumed per-PIXEL contiguous
|
||||
// duplication with y-major sub ordering, which sampled alternating wrong
|
||||
// rows/columns and produced a sawtooth weave in every readback, visible in
|
||||
// e.g. the Skate 3 photo grab.)
|
||||
//
|
||||
// For 8bpp the guest 16-byte unit is not purely consecutive along X (it
|
||||
// spans an extra Y bit), so the X mapping below is approximate for half of
|
||||
// the bytes there; no current readback consumer uses 8bpp surfaces.
|
||||
//
|
||||
// By default, picks the top-left host pixel of each scale_x * scale_y block.
|
||||
// When xe_downscale_half_pixel_offset is set, samples from
|
||||
// (scale_x/2, scale_y/2) within each block to compensate for the D3D9-style
|
||||
// half-pixel offset becoming a multi-pixel offset at higher resolutions.
|
||||
|
||||
layout(local_size_x = 32, local_size_y = 32, local_size_z = 1) in;
|
||||
|
||||
|
|
@ -27,10 +55,7 @@ layout(push_constant) uniform ResolveDownscaleConstants {
|
|||
uint xe_downscale_tile_count; // Number of 32x32 tiles to process
|
||||
uint xe_downscale_source_offset_bytes; // Byte offset into source buffer
|
||||
// When non-zero, apply half-pixel offset correction by sampling from
|
||||
// (scale/2, scale/2) within each scaled block instead of (0, 0).
|
||||
// This compensates for the D3D9-style half-pixel offset used by Xbox 360
|
||||
// games, which at Nx resolution scaling shifts rendered content by
|
||||
// (N/2, N/2) host pixels.
|
||||
// (scale_x/2, scale_y/2) within each scaled block instead of (0, 0).
|
||||
uint xe_downscale_half_pixel_offset;
|
||||
};
|
||||
|
||||
|
|
@ -62,32 +87,36 @@ void main() {
|
|||
uint pixel_size = 1u << xe_downscale_pixel_size_log2;
|
||||
uint tile_size_1x = 32u * 32u * pixel_size;
|
||||
uint scale_xy = xe_downscale_scale_x * xe_downscale_scale_y;
|
||||
uint tile_size_scaled = tile_size_1x * scale_xy;
|
||||
|
||||
// Compute offset within each scaled block to sample from.
|
||||
// Without half-pixel correction: sample from (0, 0) = linear offset 0.
|
||||
// With half-pixel correction: sample from (scale/2, scale/2) to compensate
|
||||
// for the D3D9-style half-pixel offset shifting content by (N/2, N/2) pixels
|
||||
// at Nx resolution.
|
||||
uint block_sample_offset = 0u;
|
||||
// Sub-position within each scale_x * scale_y block to sample from.
|
||||
uint offset_x = 0u;
|
||||
uint offset_y = 0u;
|
||||
if (xe_downscale_half_pixel_offset != 0u && scale_xy > 1u) {
|
||||
uint offset_x = xe_downscale_scale_x >> 1u;
|
||||
uint offset_y = xe_downscale_scale_y >> 1u;
|
||||
block_sample_offset = offset_x + offset_y * xe_downscale_scale_x;
|
||||
offset_x = xe_downscale_scale_x >> 1u;
|
||||
offset_y = xe_downscale_scale_y >> 1u;
|
||||
}
|
||||
|
||||
// Source offset: base of the scaled block plus offset within block
|
||||
// Add source_offset_bytes to handle buffer-relative addressing
|
||||
// This must be done before division to preserve sub-dword byte position
|
||||
// Guest-relative tiled byte address of this output pixel. Both the source
|
||||
// range (scaled by scale_xy) and the destination range start at the same
|
||||
// guest address, so all addressing below is range-relative.
|
||||
uint guest_byte_offset = tile_index * tile_size_1x + pixel_index * pixel_size;
|
||||
// Its 16-byte unit and texel index within the unit.
|
||||
uint unit = guest_byte_offset >> 4u;
|
||||
uint texel_in_unit = (guest_byte_offset & 15u) >> xe_downscale_pixel_size_log2;
|
||||
// Representative scaled texel within the unit's (W * scale_x)-texel span.
|
||||
uint unit_texels_log2 = 4u - xe_downscale_pixel_size_log2; // W = 16 / pixel_size
|
||||
uint q = xe_downscale_scale_x * texel_in_unit + offset_x;
|
||||
uint sub_x = q >> unit_texels_log2;
|
||||
uint texel_in_scaled_unit = q & ((1u << unit_texels_log2) - 1u);
|
||||
|
||||
uint src_byte_offset = xe_downscale_source_offset_bytes +
|
||||
tile_index * tile_size_scaled +
|
||||
pixel_index * pixel_size * scale_xy +
|
||||
block_sample_offset * pixel_size;
|
||||
unit * (scale_xy << 4u) +
|
||||
(sub_x * xe_downscale_scale_y + offset_y) * 16u +
|
||||
(texel_in_scaled_unit << xe_downscale_pixel_size_log2);
|
||||
uint src_offset = src_byte_offset >> 2u;
|
||||
|
||||
// Destination offset in 1x buffer
|
||||
uint dst_byte_offset = tile_index * tile_size_1x +
|
||||
pixel_index * pixel_size;
|
||||
uint dst_byte_offset = guest_byte_offset;
|
||||
uint dst_offset = dst_byte_offset >> 2u;
|
||||
|
||||
// Copy pixel based on size
|
||||
|
|
|
|||
|
|
@ -11,10 +11,38 @@
|
|||
// Operates on 32x32 tiled data format used by Xbox 360.
|
||||
// Each thread handles one output pixel (one 32x32 tile = 1024 threads).
|
||||
//
|
||||
// By default, picks the top-left pixel of each scale_x * scale_y block.
|
||||
// When xe_downscale_half_pixel_offset is set, samples from (scale/2, scale/2)
|
||||
// within each block to compensate for the half-pixel offset becoming a
|
||||
// full-pixel offset at higher resolutions.
|
||||
// Scaled resolve buffer layout (established from the resolve write shaders,
|
||||
// e.g. resolve_fast_32bpp_1x2xmsaa_scaled, and the scaled texture load
|
||||
// shaders; they must agree, and both use this):
|
||||
//
|
||||
// scaled_byte_address = guest_unit_byte_address * (scale_x * scale_y)
|
||||
// + (sub_x * scale_y + sub_y) * 16
|
||||
// + byte_within_scaled_unit
|
||||
//
|
||||
// where a "unit" is a 16-byte span of the guest tiled layout, holding
|
||||
// W = 16 >> pixel_size_log2 texels that are consecutive along X for
|
||||
// 16/32/64bpp (a property of the Xbox 360 tiled address function's low
|
||||
// 4 bits); sub_x selects among the scale_x duplicated 16-byte blocks the
|
||||
// unit expands to along X of the SCALED image, and sub_y among the scale_y
|
||||
// duplicated rows. Note the (x-major, y-minor) sub ordering and the 16-BYTE
|
||||
// duplication granularity: the scaled image texel for guest texel t of a
|
||||
// unit, at sub-position (ox, oy) within its scale_x * scale_y block, is
|
||||
//
|
||||
// q = scale_x * t + ox; sub_x = q / W; texel_in_scaled_unit = q % W.
|
||||
//
|
||||
// (The previous version of this shader assumed per-PIXEL contiguous
|
||||
// duplication with y-major sub ordering, which sampled alternating wrong
|
||||
// rows/columns and produced a sawtooth weave in every readback, visible in
|
||||
// e.g. the Skate 3 photo grab.)
|
||||
//
|
||||
// For 8bpp the guest 16-byte unit is not purely consecutive along X (it
|
||||
// spans an extra Y bit), so the X mapping below is approximate for half of
|
||||
// the bytes there; no current readback consumer uses 8bpp surfaces.
|
||||
//
|
||||
// By default, picks the top-left host pixel of each scale_x * scale_y block.
|
||||
// When xe_downscale_half_pixel_offset is set, samples from
|
||||
// (scale_x/2, scale_y/2) within each block to compensate for the D3D9-style
|
||||
// half-pixel offset becoming a multi-pixel offset at higher resolutions.
|
||||
|
||||
cbuffer XeResolveDownscaleConstants : register(b0) {
|
||||
uint xe_downscale_scale_x; // 1 to kMaxDrawResolutionScaleAlongAxis
|
||||
|
|
@ -22,10 +50,7 @@ cbuffer XeResolveDownscaleConstants : register(b0) {
|
|||
uint xe_downscale_pixel_size_log2; // 0=8bit, 1=16bit, 2=32bit, 3=64bit
|
||||
uint xe_downscale_tile_count; // Number of 32x32 tiles to process
|
||||
// When non-zero, apply half-pixel offset correction by sampling from
|
||||
// (scale/2, scale/2) within each scaled block instead of (0, 0).
|
||||
// This compensates for the D3D9-style half-pixel offset used by Xbox 360
|
||||
// games, which at Nx resolution scaling shifts rendered content by
|
||||
// (N/2, N/2) host pixels.
|
||||
// (scale_x/2, scale_y/2) within each scaled block instead of (0, 0).
|
||||
uint xe_downscale_half_pixel_offset;
|
||||
};
|
||||
|
||||
|
|
@ -33,7 +58,6 @@ ByteAddressBuffer xe_resolve_source : register(t0);
|
|||
RWByteAddressBuffer xe_resolve_dest : register(u0);
|
||||
|
||||
// Groupshared memory for coalescing sub-32-bit writes
|
||||
// Max tile size at 1x is 32*32*8 bytes = 8KB for 64-bit pixels
|
||||
// We only need this for 8-bit and 16-bit where we coalesce to 32-bit stores
|
||||
groupshared uint gs_tile_data[32 * 32];
|
||||
|
||||
|
|
@ -56,28 +80,34 @@ void main(uint3 xe_group_id : SV_GroupID,
|
|||
uint pixel_size = 1u << xe_downscale_pixel_size_log2;
|
||||
uint tile_size_1x = 32 * 32 * pixel_size;
|
||||
uint scale_xy = xe_downscale_scale_x * xe_downscale_scale_y;
|
||||
uint tile_size_scaled = tile_size_1x * scale_xy;
|
||||
|
||||
// Compute offset within each scaled block to sample from.
|
||||
// Without half-pixel correction: sample from (0, 0) = linear offset 0.
|
||||
// With half-pixel correction: sample from (scale/2, scale/2) to compensate
|
||||
// for the D3D9-style half-pixel offset shifting content by (N/2, N/2) pixels
|
||||
// at Nx resolution.
|
||||
uint block_sample_offset = 0u;
|
||||
// Sub-position within each scale_x * scale_y block to sample from.
|
||||
uint offset_x = 0u;
|
||||
uint offset_y = 0u;
|
||||
[branch] if (xe_downscale_half_pixel_offset != 0u && scale_xy > 1u) {
|
||||
uint offset_x = xe_downscale_scale_x >> 1u;
|
||||
uint offset_y = xe_downscale_scale_y >> 1u;
|
||||
block_sample_offset = offset_x + offset_y * xe_downscale_scale_x;
|
||||
offset_x = xe_downscale_scale_x >> 1u;
|
||||
offset_y = xe_downscale_scale_y >> 1u;
|
||||
}
|
||||
|
||||
// Source offset: base of the scaled block plus offset within block
|
||||
uint src_offset = tile_index * tile_size_scaled +
|
||||
pixel_index * pixel_size * scale_xy +
|
||||
block_sample_offset * pixel_size;
|
||||
// Guest-relative tiled byte address of this output pixel. Both the source
|
||||
// range (scaled by scale_xy) and the destination range start at the same
|
||||
// guest address, so all addressing below is range-relative.
|
||||
uint guest_byte_offset = tile_index * tile_size_1x + pixel_index * pixel_size;
|
||||
// Its 16-byte unit and texel index within the unit.
|
||||
uint unit = guest_byte_offset >> 4u;
|
||||
uint texel_in_unit = (guest_byte_offset & 15u) >> xe_downscale_pixel_size_log2;
|
||||
// Representative scaled texel within the unit's (W * scale_x)-texel span.
|
||||
uint unit_texels_log2 = 4u - xe_downscale_pixel_size_log2; // W = 16 / pixel_size
|
||||
uint q = xe_downscale_scale_x * texel_in_unit + offset_x;
|
||||
uint sub_x = q >> unit_texels_log2;
|
||||
uint texel_in_scaled_unit = q & ((1u << unit_texels_log2) - 1u);
|
||||
|
||||
uint src_offset = unit * (scale_xy << 4u) +
|
||||
(sub_x * xe_downscale_scale_y + offset_y) * 16u +
|
||||
(texel_in_scaled_unit << xe_downscale_pixel_size_log2);
|
||||
|
||||
// Destination offset in 1x buffer
|
||||
uint dst_offset = tile_index * tile_size_1x +
|
||||
pixel_index * pixel_size;
|
||||
uint dst_offset = guest_byte_offset;
|
||||
|
||||
// Copy pixel based on size
|
||||
[branch] switch (xe_downscale_pixel_size_log2) {
|
||||
|
|
|
|||
|
|
@ -1,376 +1,238 @@
|
|||
// Generated with `xb buildshaders`.
|
||||
#if 0
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 11
|
||||
; Bound: 25190
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %5663 "main" %gl_WorkGroupID %gl_LocalInvocationID
|
||||
OpExecutionMode %5663 LocalSize 32 32 1
|
||||
OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId
|
||||
OpDecorate %_struct_1056 Block
|
||||
OpMemberDecorate %_struct_1056 0 Offset 0
|
||||
OpMemberDecorate %_struct_1056 1 Offset 4
|
||||
OpMemberDecorate %_struct_1056 2 Offset 8
|
||||
OpMemberDecorate %_struct_1056 3 Offset 12
|
||||
OpMemberDecorate %_struct_1056 4 Offset 16
|
||||
OpMemberDecorate %_struct_1056 5 Offset 20
|
||||
OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId
|
||||
OpDecorate %_runtimearr_uint ArrayStride 4
|
||||
OpDecorate %_struct_1948 BufferBlock
|
||||
OpMemberDecorate %_struct_1948 0 NonWritable
|
||||
OpMemberDecorate %_struct_1948 0 Offset 0
|
||||
OpDecorate %3152 NonWritable
|
||||
OpDecorate %3152 Binding 0
|
||||
OpDecorate %3152 DescriptorSet 0
|
||||
OpDecorate %_runtimearr_uint_0 ArrayStride 4
|
||||
OpDecorate %_struct_1949 BufferBlock
|
||||
OpMemberDecorate %_struct_1949 0 NonReadable
|
||||
OpMemberDecorate %_struct_1949 0 Offset 0
|
||||
OpDecorate %5522 NonReadable
|
||||
OpDecorate %5522 Binding 1
|
||||
OpDecorate %5522 DescriptorSet 0
|
||||
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
|
||||
%void = OpTypeVoid
|
||||
%1282 = OpTypeFunction %void
|
||||
%uint = OpTypeInt 32 0
|
||||
%v3uint = OpTypeVector %uint 3
|
||||
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||||
%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%_ptr_Input_uint = OpTypePointer Input %uint
|
||||
%_struct_1056 = OpTypeStruct %uint %uint %uint %uint %uint %uint
|
||||
%_ptr_PushConstant__struct_1056 = OpTypePointer PushConstant %_struct_1056
|
||||
%4930 = OpVariable %_ptr_PushConstant__struct_1056 PushConstant
|
||||
%int = OpTypeInt 32 1
|
||||
%int_3 = OpConstant %int 3
|
||||
%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint
|
||||
%bool = OpTypeBool
|
||||
%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%uint_32 = OpConstant %uint 32
|
||||
%int_2 = OpConstant %int 2
|
||||
%uint_1024 = OpConstant %uint 1024
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_5 = OpConstant %int 5
|
||||
%int_4 = OpConstant %int 4
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%_runtimearr_uint = OpTypeRuntimeArray %uint
|
||||
%_struct_1948 = OpTypeStruct %_runtimearr_uint
|
||||
%_ptr_Uniform__struct_1948 = OpTypePointer Uniform %_struct_1948
|
||||
%3152 = OpVariable %_ptr_Uniform__struct_1948 Uniform
|
||||
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_8 = OpConstant %uint 8
|
||||
%uint_255 = OpConstant %uint 255
|
||||
%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
|
||||
%_ptr_Workgroup__arr_uint_uint_1024 = OpTypePointer Workgroup %_arr_uint_uint_1024
|
||||
%4017 = OpVariable %_ptr_Workgroup__arr_uint_uint_1024 Workgroup
|
||||
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
|
||||
%uint_264 = OpConstant %uint 264
|
||||
%_runtimearr_uint_0 = OpTypeRuntimeArray %uint
|
||||
%_struct_1949 = OpTypeStruct %_runtimearr_uint_0
|
||||
%_ptr_Uniform__struct_1949 = OpTypePointer Uniform %_struct_1949
|
||||
%5522 = OpVariable %_ptr_Uniform__struct_1949 Uniform
|
||||
%uint_256 = OpConstant %uint 256
|
||||
%uint_65535 = OpConstant %uint 65535
|
||||
%uint_16 = OpConstant %uint 16
|
||||
%uint_512 = OpConstant %uint 512
|
||||
%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_32 %uint_32 %uint_1
|
||||
%5663 = OpFunction %void None %1282
|
||||
%15110 = OpLabel
|
||||
OpSelectionMerge %14903 None
|
||||
OpSwitch %uint_0 %11880
|
||||
%11880 = OpLabel
|
||||
%22245 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0
|
||||
%15627 = OpLoad %uint %22245
|
||||
%22225 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_3
|
||||
%7085 = OpLoad %uint %22225
|
||||
%7405 = OpUGreaterThanEqual %bool %15627 %7085
|
||||
OpSelectionMerge %16413 None
|
||||
OpBranchConditional %7405 %21992 %16413
|
||||
%21992 = OpLabel
|
||||
OpBranch %14903
|
||||
%16413 = OpLabel
|
||||
%20632 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_1
|
||||
%15628 = OpLoad %uint %20632
|
||||
%21427 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_0
|
||||
%12090 = OpLoad %uint %21427
|
||||
%6234 = OpIMul %uint %15628 %uint_32
|
||||
%8353 = OpIAdd %uint %6234 %12090
|
||||
%16525 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_2
|
||||
%13159 = OpLoad %uint %16525
|
||||
%15178 = OpShiftLeftLogical %uint %uint_1 %13159
|
||||
%21815 = OpIMul %uint %uint_1024 %15178
|
||||
%13000 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_0
|
||||
%18628 = OpLoad %uint %13000
|
||||
%21428 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_1
|
||||
%12166 = OpLoad %uint %21428
|
||||
%24613 = OpIMul %uint %18628 %12166
|
||||
%13723 = OpIMul %uint %21815 %24613
|
||||
%8597 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_5
|
||||
%21470 = OpLoad %uint %8597
|
||||
%24311 = OpINotEqual %bool %21470 %uint_0
|
||||
%23629 = OpUGreaterThan %bool %24613 %uint_1
|
||||
%11037 = OpLogicalAnd %bool %24311 %23629
|
||||
OpSelectionMerge %23266 None
|
||||
OpBranchConditional %11037 %11410 %23266
|
||||
%11410 = OpLabel
|
||||
%20167 = OpShiftRightLogical %uint %18628 %uint_1
|
||||
%24779 = OpShiftRightLogical %uint %12166 %uint_1
|
||||
%16010 = OpIMul %uint %24779 %18628
|
||||
%19240 = OpIAdd %uint %20167 %16010
|
||||
OpBranch %23266
|
||||
%23266 = OpLabel
|
||||
%19748 = OpPhi %uint %uint_0 %16413 %19240 %11410
|
||||
%25074 = OpAccessChain %_ptr_PushConstant_uint %4930 %int_4
|
||||
%25189 = OpLoad %uint %25074
|
||||
%7507 = OpIMul %uint %15627 %13723
|
||||
%17182 = OpIAdd %uint %25189 %7507
|
||||
%19692 = OpIMul %uint %8353 %15178
|
||||
%16238 = OpIMul %uint %19692 %24613
|
||||
%6869 = OpIAdd %uint %17182 %16238
|
||||
%21638 = OpIMul %uint %19748 %15178
|
||||
%18521 = OpIAdd %uint %6869 %21638
|
||||
%7572 = OpShiftRightLogical %uint %18521 %uint_2
|
||||
%6935 = OpIMul %uint %15627 %21815
|
||||
%9665 = OpIAdd %uint %6935 %19692
|
||||
%9085 = OpShiftRightLogical %uint %9665 %uint_2
|
||||
OpSelectionMerge %18023 None
|
||||
OpSwitch %13159 %18023 0 %11881 1 %16414 2 %16415 3 %8158
|
||||
%11881 = OpLabel
|
||||
%24791 = OpAccessChain %_ptr_Uniform_uint %3152 %int_0 %7572
|
||||
%12865 = OpLoad %uint %24791
|
||||
%12121 = OpBitwiseAnd %uint %18521 %uint_3
|
||||
%13987 = OpIMul %uint %12121 %uint_8
|
||||
%14461 = OpShiftRightLogical %uint %12865 %13987
|
||||
%15580 = OpBitwiseAnd %uint %14461 %uint_255
|
||||
%19824 = OpShiftRightLogical %uint %8353 %uint_2
|
||||
%19243 = OpBitwiseAnd %uint %8353 %uint_3
|
||||
%14114 = OpIMul %uint %19243 %uint_8
|
||||
%23170 = OpShiftLeftLogical %uint %15580 %14114
|
||||
%15629 = OpIEqual %bool %19243 %uint_0
|
||||
OpSelectionMerge %20883 None
|
||||
OpBranchConditional %15629 %12148 %20883
|
||||
%12148 = OpLabel
|
||||
%21533 = OpAccessChain %_ptr_Workgroup_uint %4017 %19824
|
||||
OpStore %21533 %23170
|
||||
OpBranch %20883
|
||||
%20883 = OpLabel
|
||||
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||||
%15932 = OpINotEqual %bool %19243 %uint_0
|
||||
OpSelectionMerge %9094 None
|
||||
OpBranchConditional %15932 %15549 %9094
|
||||
%15549 = OpLabel
|
||||
%9637 = OpAccessChain %_ptr_Workgroup_uint %4017 %19824
|
||||
%6303 = OpAtomicOr %uint %9637 %uint_1 %uint_0 %23170
|
||||
OpBranch %9094
|
||||
%9094 = OpLabel
|
||||
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||||
OpSelectionMerge %18021 None
|
||||
OpBranchConditional %15629 %20882 %18021
|
||||
%20882 = OpLabel
|
||||
%10747 = OpIMul %uint %15627 %uint_256
|
||||
%14186 = OpIAdd %uint %10747 %19824
|
||||
%14036 = OpAccessChain %_ptr_Workgroup_uint %4017 %19824
|
||||
%15421 = OpLoad %uint %14036
|
||||
%23477 = OpAccessChain %_ptr_Uniform_uint %5522 %int_0 %14186
|
||||
OpStore %23477 %15421
|
||||
OpBranch %18021
|
||||
%18021 = OpLabel
|
||||
OpBranch %18023
|
||||
%16414 = OpLabel
|
||||
%23178 = OpAccessChain %_ptr_Uniform_uint %3152 %int_0 %7572
|
||||
%12866 = OpLoad %uint %23178
|
||||
%12122 = OpBitwiseAnd %uint %18521 %uint_2
|
||||
%13988 = OpIMul %uint %12122 %uint_8
|
||||
%14462 = OpShiftRightLogical %uint %12866 %13988
|
||||
%15581 = OpBitwiseAnd %uint %14462 %uint_65535
|
||||
%19825 = OpShiftRightLogical %uint %8353 %uint_1
|
||||
%19244 = OpBitwiseAnd %uint %8353 %uint_1
|
||||
%14115 = OpIMul %uint %19244 %uint_16
|
||||
%23171 = OpShiftLeftLogical %uint %15581 %14115
|
||||
%15630 = OpIEqual %bool %19244 %uint_0
|
||||
OpSelectionMerge %20884 None
|
||||
OpBranchConditional %15630 %12149 %20884
|
||||
%12149 = OpLabel
|
||||
%21534 = OpAccessChain %_ptr_Workgroup_uint %4017 %19825
|
||||
OpStore %21534 %23171
|
||||
OpBranch %20884
|
||||
%20884 = OpLabel
|
||||
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||||
%15933 = OpINotEqual %bool %19244 %uint_0
|
||||
OpSelectionMerge %9095 None
|
||||
OpBranchConditional %15933 %15550 %9095
|
||||
%15550 = OpLabel
|
||||
%9638 = OpAccessChain %_ptr_Workgroup_uint %4017 %19825
|
||||
%6304 = OpAtomicOr %uint %9638 %uint_1 %uint_0 %23171
|
||||
OpBranch %9095
|
||||
%9095 = OpLabel
|
||||
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||||
OpSelectionMerge %18022 None
|
||||
OpBranchConditional %15630 %20885 %18022
|
||||
%20885 = OpLabel
|
||||
%10748 = OpIMul %uint %15627 %uint_512
|
||||
%14187 = OpIAdd %uint %10748 %19825
|
||||
%14037 = OpAccessChain %_ptr_Workgroup_uint %4017 %19825
|
||||
%15422 = OpLoad %uint %14037
|
||||
%23478 = OpAccessChain %_ptr_Uniform_uint %5522 %int_0 %14187
|
||||
OpStore %23478 %15422
|
||||
OpBranch %18022
|
||||
%18022 = OpLabel
|
||||
OpBranch %18023
|
||||
%16415 = OpLabel
|
||||
%20633 = OpAccessChain %_ptr_Uniform_uint %3152 %int_0 %7572
|
||||
%15646 = OpLoad %uint %20633
|
||||
%23479 = OpAccessChain %_ptr_Uniform_uint %5522 %int_0 %9085
|
||||
OpStore %23479 %15646
|
||||
OpBranch %18023
|
||||
%8158 = OpLabel
|
||||
%20634 = OpAccessChain %_ptr_Uniform_uint %3152 %int_0 %7572
|
||||
%15647 = OpLoad %uint %20634
|
||||
%21178 = OpAccessChain %_ptr_Uniform_uint %5522 %int_0 %9085
|
||||
OpStore %21178 %15647
|
||||
%19686 = OpIAdd %uint %9085 %uint_1
|
||||
%13384 = OpIAdd %uint %7572 %uint_1
|
||||
%10810 = OpAccessChain %_ptr_Uniform_uint %3152 %int_0 %13384
|
||||
%15423 = OpLoad %uint %10810
|
||||
%23480 = OpAccessChain %_ptr_Uniform_uint %5522 %int_0 %19686
|
||||
OpStore %23480 %15423
|
||||
OpBranch %18023
|
||||
%18023 = OpLabel
|
||||
OpBranch %14903
|
||||
%14903 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
#endif
|
||||
|
||||
// 1116.2.0
|
||||
#pragma once
|
||||
const uint32_t resolve_downscale_cs[] = {
|
||||
0x07230203, 0x00010000, 0x0008000B, 0x00006266, 0x00000000, 0x00020011, 0x00000001, 0x0006000B,
|
||||
0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E, 0x00000000, 0x0003000E, 0x00000000, 0x00000001,
|
||||
0x0007000F, 0x00000005, 0x0000161F, 0x6E69616D, 0x00000000, 0x00000BEF, 0x00000DA3, 0x00060010,
|
||||
0x0000161F, 0x00000011, 0x00000020, 0x00000020, 0x00000001, 0x00040047, 0x00000BEF, 0x0000000B,
|
||||
0x0000001A, 0x00030047, 0x00000420, 0x00000002, 0x00050048, 0x00000420, 0x00000000, 0x00000023,
|
||||
0x00000000, 0x00050048, 0x00000420, 0x00000001, 0x00000023, 0x00000004, 0x00050048, 0x00000420,
|
||||
0x00000002, 0x00000023, 0x00000008, 0x00050048, 0x00000420, 0x00000003, 0x00000023, 0x0000000C,
|
||||
0x00050048, 0x00000420, 0x00000004, 0x00000023, 0x00000010, 0x00050048, 0x00000420, 0x00000005,
|
||||
0x00000023, 0x00000014, 0x00040047, 0x00000DA3, 0x0000000B, 0x0000001B, 0x00040047, 0x000007D0,
|
||||
0x00000006, 0x00000004, 0x00030047, 0x0000079C, 0x00000003, 0x00040048, 0x0000079C, 0x00000000,
|
||||
0x00000018, 0x00050048, 0x0000079C, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x00000C50,
|
||||
0x00000018, 0x00040047, 0x00000C50, 0x00000021, 0x00000000, 0x00040047, 0x00000C50, 0x00000022,
|
||||
0x00000000, 0x00040047, 0x000007D1, 0x00000006, 0x00000004, 0x00030047, 0x0000079D, 0x00000003,
|
||||
0x00040048, 0x0000079D, 0x00000000, 0x00000019, 0x00050048, 0x0000079D, 0x00000000, 0x00000023,
|
||||
0x00000000, 0x00030047, 0x00001592, 0x00000019, 0x00040047, 0x00001592, 0x00000021, 0x00000001,
|
||||
0x00040047, 0x00001592, 0x00000022, 0x00000000, 0x00040047, 0x000000FC, 0x0000000B, 0x00000019,
|
||||
0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00040015, 0x0000000B, 0x00000020,
|
||||
0x00000000, 0x00040017, 0x00000014, 0x0000000B, 0x00000003, 0x00040020, 0x00000291, 0x00000001,
|
||||
0x00000014, 0x0004003B, 0x00000291, 0x00000BEF, 0x00000001, 0x0004002B, 0x0000000B, 0x00000A0A,
|
||||
0x00000000, 0x00040020, 0x00000288, 0x00000001, 0x0000000B, 0x0008001E, 0x00000420, 0x0000000B,
|
||||
0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x00040020, 0x0000069D, 0x00000009,
|
||||
0x00000420, 0x0004003B, 0x0000069D, 0x00001342, 0x00000009, 0x00040015, 0x0000000C, 0x00000020,
|
||||
0x00000001, 0x0004002B, 0x0000000C, 0x00000A14, 0x00000003, 0x00040020, 0x00000289, 0x00000009,
|
||||
0x0000000B, 0x00020014, 0x00000009, 0x0004003B, 0x00000291, 0x00000DA3, 0x00000001, 0x0004002B,
|
||||
0x0000000B, 0x00000A0D, 0x00000001, 0x0004002B, 0x0000000B, 0x00000A6A, 0x00000020, 0x0004002B,
|
||||
0x0000000C, 0x00000A11, 0x00000002, 0x0004002B, 0x0000000B, 0x00000A47, 0x00000400, 0x0004002B,
|
||||
0x0000000C, 0x00000A0B, 0x00000000, 0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B,
|
||||
0x0000000C, 0x00000A1A, 0x00000005, 0x0004002B, 0x0000000C, 0x00000A17, 0x00000004, 0x0004002B,
|
||||
0x0000000B, 0x00000A10, 0x00000002, 0x0003001D, 0x000007D0, 0x0000000B, 0x0003001E, 0x0000079C,
|
||||
0x000007D0, 0x00040020, 0x00000A19, 0x00000002, 0x0000079C, 0x0004003B, 0x00000A19, 0x00000C50,
|
||||
0x00000002, 0x00040020, 0x0000028A, 0x00000002, 0x0000000B, 0x0004002B, 0x0000000B, 0x00000A13,
|
||||
0x00000003, 0x0004002B, 0x0000000B, 0x00000A22, 0x00000008, 0x0004002B, 0x0000000B, 0x00000144,
|
||||
0x000000FF, 0x0004001C, 0x00000293, 0x0000000B, 0x00000A47, 0x00040020, 0x00000510, 0x00000004,
|
||||
0x00000293, 0x0004003B, 0x00000510, 0x00000FB1, 0x00000004, 0x00040020, 0x0000028B, 0x00000004,
|
||||
0x0000000B, 0x0004002B, 0x0000000B, 0x0000015F, 0x00000108, 0x0003001D, 0x000007D1, 0x0000000B,
|
||||
0x0003001E, 0x0000079D, 0x000007D1, 0x00040020, 0x00000A1B, 0x00000002, 0x0000079D, 0x0004003B,
|
||||
0x00000A1B, 0x00001592, 0x00000002, 0x0004002B, 0x0000000B, 0x00000147, 0x00000100, 0x0004002B,
|
||||
0x0000000B, 0x000001C1, 0x0000FFFF, 0x0004002B, 0x0000000B, 0x00000A3A, 0x00000010, 0x0004002B,
|
||||
0x0000000B, 0x00000447, 0x00000200, 0x0006002C, 0x00000014, 0x000000FC, 0x00000A6A, 0x00000A6A,
|
||||
0x00000A0D, 0x00050036, 0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8, 0x00003B06,
|
||||
0x000300F7, 0x00003A37, 0x00000000, 0x000300FB, 0x00000A0A, 0x00002E68, 0x000200F8, 0x00002E68,
|
||||
0x00050041, 0x00000288, 0x000056E5, 0x00000BEF, 0x00000A0A, 0x0004003D, 0x0000000B, 0x00003D0B,
|
||||
0x000056E5, 0x00050041, 0x00000289, 0x000056D1, 0x00001342, 0x00000A14, 0x0004003D, 0x0000000B,
|
||||
0x00001BAD, 0x000056D1, 0x000500AE, 0x00000009, 0x00001CED, 0x00003D0B, 0x00001BAD, 0x000300F7,
|
||||
0x0000401D, 0x00000000, 0x000400FA, 0x00001CED, 0x000055E8, 0x0000401D, 0x000200F8, 0x000055E8,
|
||||
0x000200F9, 0x00003A37, 0x000200F8, 0x0000401D, 0x00050041, 0x00000288, 0x00005098, 0x00000DA3,
|
||||
0x00000A0D, 0x0004003D, 0x0000000B, 0x00003D0C, 0x00005098, 0x00050041, 0x00000288, 0x000053B3,
|
||||
0x00000DA3, 0x00000A0A, 0x0004003D, 0x0000000B, 0x00002F3A, 0x000053B3, 0x00050084, 0x0000000B,
|
||||
0x0000185A, 0x00003D0C, 0x00000A6A, 0x00050080, 0x0000000B, 0x000020A1, 0x0000185A, 0x00002F3A,
|
||||
0x00050041, 0x00000289, 0x0000408D, 0x00001342, 0x00000A11, 0x0004003D, 0x0000000B, 0x00003367,
|
||||
0x0000408D, 0x000500C4, 0x0000000B, 0x00003B4A, 0x00000A0D, 0x00003367, 0x00050084, 0x0000000B,
|
||||
0x00005537, 0x00000A47, 0x00003B4A, 0x00050041, 0x00000289, 0x000032C8, 0x00001342, 0x00000A0B,
|
||||
0x0004003D, 0x0000000B, 0x000048C4, 0x000032C8, 0x00050041, 0x00000289, 0x000053B4, 0x00001342,
|
||||
0x00000A0E, 0x0004003D, 0x0000000B, 0x00002F86, 0x000053B4, 0x00050084, 0x0000000B, 0x00006025,
|
||||
0x000048C4, 0x00002F86, 0x00050084, 0x0000000B, 0x0000359B, 0x00005537, 0x00006025, 0x00050041,
|
||||
0x00000289, 0x00002195, 0x00001342, 0x00000A1A, 0x0004003D, 0x0000000B, 0x000053DE, 0x00002195,
|
||||
0x000500AB, 0x00000009, 0x00005EF7, 0x000053DE, 0x00000A0A, 0x000500AC, 0x00000009, 0x00005C4D,
|
||||
0x00006025, 0x00000A0D, 0x000500A7, 0x00000009, 0x00002B1D, 0x00005EF7, 0x00005C4D, 0x000300F7,
|
||||
0x00005AE2, 0x00000000, 0x000400FA, 0x00002B1D, 0x00002C92, 0x00005AE2, 0x000200F8, 0x00002C92,
|
||||
0x000500C2, 0x0000000B, 0x00004EC7, 0x000048C4, 0x00000A0D, 0x000500C2, 0x0000000B, 0x000060CB,
|
||||
0x00002F86, 0x00000A0D, 0x00050084, 0x0000000B, 0x00003E8A, 0x000060CB, 0x000048C4, 0x00050080,
|
||||
0x0000000B, 0x00004B28, 0x00004EC7, 0x00003E8A, 0x000200F9, 0x00005AE2, 0x000200F8, 0x00005AE2,
|
||||
0x000700F5, 0x0000000B, 0x00004D24, 0x00000A0A, 0x0000401D, 0x00004B28, 0x00002C92, 0x00050041,
|
||||
0x00000289, 0x000061F2, 0x00001342, 0x00000A17, 0x0004003D, 0x0000000B, 0x00006265, 0x000061F2,
|
||||
0x00050084, 0x0000000B, 0x00001D53, 0x00003D0B, 0x0000359B, 0x00050080, 0x0000000B, 0x0000431E,
|
||||
0x00006265, 0x00001D53, 0x00050084, 0x0000000B, 0x00004CEC, 0x000020A1, 0x00003B4A, 0x00050084,
|
||||
0x0000000B, 0x00003F6E, 0x00004CEC, 0x00006025, 0x00050080, 0x0000000B, 0x00001AD5, 0x0000431E,
|
||||
0x00003F6E, 0x00050084, 0x0000000B, 0x00005486, 0x00004D24, 0x00003B4A, 0x00050080, 0x0000000B,
|
||||
0x00004859, 0x00001AD5, 0x00005486, 0x000500C2, 0x0000000B, 0x00001D94, 0x00004859, 0x00000A10,
|
||||
0x00050084, 0x0000000B, 0x00001B17, 0x00003D0B, 0x00005537, 0x00050080, 0x0000000B, 0x000025C1,
|
||||
0x00001B17, 0x00004CEC, 0x000500C2, 0x0000000B, 0x0000237D, 0x000025C1, 0x00000A10, 0x000300F7,
|
||||
0x00004667, 0x00000000, 0x000B00FB, 0x00003367, 0x00004667, 0x00000000, 0x00002E69, 0x00000001,
|
||||
0x0000401E, 0x00000002, 0x0000401F, 0x00000003, 0x00001FDE, 0x000200F8, 0x00002E69, 0x00060041,
|
||||
0x0000028A, 0x000060D7, 0x00000C50, 0x00000A0B, 0x00001D94, 0x0004003D, 0x0000000B, 0x00003241,
|
||||
0x000060D7, 0x000500C7, 0x0000000B, 0x00002F59, 0x00004859, 0x00000A13, 0x00050084, 0x0000000B,
|
||||
0x000036A3, 0x00002F59, 0x00000A22, 0x000500C2, 0x0000000B, 0x0000387D, 0x00003241, 0x000036A3,
|
||||
0x000500C7, 0x0000000B, 0x00003CDC, 0x0000387D, 0x00000144, 0x000500C2, 0x0000000B, 0x00004D70,
|
||||
0x000020A1, 0x00000A10, 0x000500C7, 0x0000000B, 0x00004B2B, 0x000020A1, 0x00000A13, 0x00050084,
|
||||
0x0000000B, 0x00003722, 0x00004B2B, 0x00000A22, 0x000500C4, 0x0000000B, 0x00005A82, 0x00003CDC,
|
||||
0x00003722, 0x000500AA, 0x00000009, 0x00003D0D, 0x00004B2B, 0x00000A0A, 0x000300F7, 0x00005193,
|
||||
0x00000000, 0x000400FA, 0x00003D0D, 0x00002F74, 0x00005193, 0x000200F8, 0x00002F74, 0x00050041,
|
||||
0x0000028B, 0x0000541D, 0x00000FB1, 0x00004D70, 0x0003003E, 0x0000541D, 0x00005A82, 0x000200F9,
|
||||
0x00005193, 0x000200F8, 0x00005193, 0x000400E0, 0x00000A10, 0x00000A10, 0x0000015F, 0x000500AB,
|
||||
0x00000009, 0x00003E3C, 0x00004B2B, 0x00000A0A, 0x000300F7, 0x00002386, 0x00000000, 0x000400FA,
|
||||
0x00003E3C, 0x00003CBD, 0x00002386, 0x000200F8, 0x00003CBD, 0x00050041, 0x0000028B, 0x000025A5,
|
||||
0x00000FB1, 0x00004D70, 0x000700F1, 0x0000000B, 0x0000189F, 0x000025A5, 0x00000A0D, 0x00000A0A,
|
||||
0x00005A82, 0x000200F9, 0x00002386, 0x000200F8, 0x00002386, 0x000400E0, 0x00000A10, 0x00000A10,
|
||||
0x0000015F, 0x000300F7, 0x00004665, 0x00000000, 0x000400FA, 0x00003D0D, 0x00005192, 0x00004665,
|
||||
0x000200F8, 0x00005192, 0x00050084, 0x0000000B, 0x000029FB, 0x00003D0B, 0x00000147, 0x00050080,
|
||||
0x0000000B, 0x0000376A, 0x000029FB, 0x00004D70, 0x00050041, 0x0000028B, 0x000036D4, 0x00000FB1,
|
||||
0x00004D70, 0x0004003D, 0x0000000B, 0x00003C3D, 0x000036D4, 0x00060041, 0x0000028A, 0x00005BB5,
|
||||
0x00001592, 0x00000A0B, 0x0000376A, 0x0003003E, 0x00005BB5, 0x00003C3D, 0x000200F9, 0x00004665,
|
||||
0x000200F8, 0x00004665, 0x000200F9, 0x00004667, 0x000200F8, 0x0000401E, 0x00060041, 0x0000028A,
|
||||
0x00005A8A, 0x00000C50, 0x00000A0B, 0x00001D94, 0x0004003D, 0x0000000B, 0x00003242, 0x00005A8A,
|
||||
0x000500C7, 0x0000000B, 0x00002F5A, 0x00004859, 0x00000A10, 0x00050084, 0x0000000B, 0x000036A4,
|
||||
0x00002F5A, 0x00000A22, 0x000500C2, 0x0000000B, 0x0000387E, 0x00003242, 0x000036A4, 0x000500C7,
|
||||
0x0000000B, 0x00003CDD, 0x0000387E, 0x000001C1, 0x000500C2, 0x0000000B, 0x00004D71, 0x000020A1,
|
||||
0x00000A0D, 0x000500C7, 0x0000000B, 0x00004B2C, 0x000020A1, 0x00000A0D, 0x00050084, 0x0000000B,
|
||||
0x00003723, 0x00004B2C, 0x00000A3A, 0x000500C4, 0x0000000B, 0x00005A83, 0x00003CDD, 0x00003723,
|
||||
0x000500AA, 0x00000009, 0x00003D0E, 0x00004B2C, 0x00000A0A, 0x000300F7, 0x00005194, 0x00000000,
|
||||
0x000400FA, 0x00003D0E, 0x00002F75, 0x00005194, 0x000200F8, 0x00002F75, 0x00050041, 0x0000028B,
|
||||
0x0000541E, 0x00000FB1, 0x00004D71, 0x0003003E, 0x0000541E, 0x00005A83, 0x000200F9, 0x00005194,
|
||||
0x000200F8, 0x00005194, 0x000400E0, 0x00000A10, 0x00000A10, 0x0000015F, 0x000500AB, 0x00000009,
|
||||
0x00003E3D, 0x00004B2C, 0x00000A0A, 0x000300F7, 0x00002387, 0x00000000, 0x000400FA, 0x00003E3D,
|
||||
0x00003CBE, 0x00002387, 0x000200F8, 0x00003CBE, 0x00050041, 0x0000028B, 0x000025A6, 0x00000FB1,
|
||||
0x00004D71, 0x000700F1, 0x0000000B, 0x000018A0, 0x000025A6, 0x00000A0D, 0x00000A0A, 0x00005A83,
|
||||
0x000200F9, 0x00002387, 0x000200F8, 0x00002387, 0x000400E0, 0x00000A10, 0x00000A10, 0x0000015F,
|
||||
0x000300F7, 0x00004666, 0x00000000, 0x000400FA, 0x00003D0E, 0x00005195, 0x00004666, 0x000200F8,
|
||||
0x00005195, 0x00050084, 0x0000000B, 0x000029FC, 0x00003D0B, 0x00000447, 0x00050080, 0x0000000B,
|
||||
0x0000376B, 0x000029FC, 0x00004D71, 0x00050041, 0x0000028B, 0x000036D5, 0x00000FB1, 0x00004D71,
|
||||
0x0004003D, 0x0000000B, 0x00003C3E, 0x000036D5, 0x00060041, 0x0000028A, 0x00005BB6, 0x00001592,
|
||||
0x00000A0B, 0x0000376B, 0x0003003E, 0x00005BB6, 0x00003C3E, 0x000200F9, 0x00004666, 0x000200F8,
|
||||
0x00004666, 0x000200F9, 0x00004667, 0x000200F8, 0x0000401F, 0x00060041, 0x0000028A, 0x00005099,
|
||||
0x00000C50, 0x00000A0B, 0x00001D94, 0x0004003D, 0x0000000B, 0x00003D1E, 0x00005099, 0x00060041,
|
||||
0x0000028A, 0x00005BB7, 0x00001592, 0x00000A0B, 0x0000237D, 0x0003003E, 0x00005BB7, 0x00003D1E,
|
||||
0x000200F9, 0x00004667, 0x000200F8, 0x00001FDE, 0x00060041, 0x0000028A, 0x0000509A, 0x00000C50,
|
||||
0x00000A0B, 0x00001D94, 0x0004003D, 0x0000000B, 0x00003D1F, 0x0000509A, 0x00060041, 0x0000028A,
|
||||
0x000052BA, 0x00001592, 0x00000A0B, 0x0000237D, 0x0003003E, 0x000052BA, 0x00003D1F, 0x00050080,
|
||||
0x0000000B, 0x00004CE6, 0x0000237D, 0x00000A0D, 0x00050080, 0x0000000B, 0x00003448, 0x00001D94,
|
||||
0x00000A0D, 0x00060041, 0x0000028A, 0x00002A3A, 0x00000C50, 0x00000A0B, 0x00003448, 0x0004003D,
|
||||
0x0000000B, 0x00003C3F, 0x00002A3A, 0x00060041, 0x0000028A, 0x00005BB8, 0x00001592, 0x00000A0B,
|
||||
0x00004CE6, 0x0003003E, 0x00005BB8, 0x00003C3F, 0x000200F9, 0x00004667, 0x000200F8, 0x00004667,
|
||||
0x000200F9, 0x00003A37, 0x000200F8, 0x00003A37, 0x000100FD, 0x00010038,
|
||||
0x07230203,0x00010000,0x0008000b,0x0000012a,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000001f,0x00060010,
|
||||
0x00000004,0x00000011,0x00000020,0x00000020,0x00000001,0x00030003,0x00000002,0x000001cc,
|
||||
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x656c6974,0x646e695f,
|
||||
0x00007865,0x00060005,0x0000000b,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00090005,
|
||||
0x00000011,0x6f736552,0x4465766c,0x736e776f,0x656c6163,0x736e6f43,0x746e6174,0x00000073,
|
||||
0x00090006,0x00000011,0x00000000,0x645f6578,0x736e776f,0x656c6163,0x6163735f,0x785f656c,
|
||||
0x00000000,0x00090006,0x00000011,0x00000001,0x645f6578,0x736e776f,0x656c6163,0x6163735f,
|
||||
0x795f656c,0x00000000,0x000b0006,0x00000011,0x00000002,0x645f6578,0x736e776f,0x656c6163,
|
||||
0x7869705f,0x735f6c65,0x5f657a69,0x32676f6c,0x00000000,0x00090006,0x00000011,0x00000003,
|
||||
0x645f6578,0x736e776f,0x656c6163,0x6c69745f,0x6f635f65,0x00746e75,0x000c0006,0x00000011,
|
||||
0x00000004,0x645f6578,0x736e776f,0x656c6163,0x756f735f,0x5f656372,0x7366666f,0x625f7465,
|
||||
0x73657479,0x00000000,0x000b0006,0x00000011,0x00000005,0x645f6578,0x736e776f,0x656c6163,
|
||||
0x6c61685f,0x69705f66,0x5f6c6578,0x7366666f,0x00007465,0x00030005,0x00000013,0x00000000,
|
||||
0x00030005,0x0000001e,0x00776f72,0x00080005,0x0000001f,0x4c5f6c67,0x6c61636f,0x6f766e49,
|
||||
0x69746163,0x44496e6f,0x00000000,0x00040005,0x00000023,0x756c6f63,0x00006e6d,0x00050005,
|
||||
0x00000026,0x65786970,0x6e695f6c,0x00786564,0x00050005,0x0000002c,0x65786970,0x69735f6c,
|
||||
0x0000657a,0x00060005,0x00000031,0x656c6974,0x7a69735f,0x78315f65,0x00000000,0x00050005,
|
||||
0x00000035,0x6c616373,0x79785f65,0x00000000,0x00050005,0x0000003d,0x7366666f,0x785f7465,
|
||||
0x00000000,0x00050005,0x0000003e,0x7366666f,0x795f7465,0x00000000,0x00070005,0x0000004e,
|
||||
0x73657567,0x79625f74,0x6f5f6574,0x65736666,0x00000074,0x00040005,0x00000056,0x74696e75,
|
||||
0x00000000,0x00060005,0x0000005a,0x65786574,0x6e695f6c,0x696e755f,0x00000074,0x00070005,
|
||||
0x00000061,0x74696e75,0x7865745f,0x5f736c65,0x32676f6c,0x00000000,0x00030005,0x00000065,
|
||||
0x00000071,0x00040005,0x0000006c,0x5f627573,0x00000078,0x00080005,0x00000070,0x65786574,
|
||||
0x6e695f6c,0x6163735f,0x5f64656c,0x74696e75,0x00000000,0x00060005,0x00000076,0x5f637273,
|
||||
0x65747962,0x66666f5f,0x00746573,0x00050005,0x0000008d,0x5f637273,0x7366666f,0x00007465,
|
||||
0x00060005,0x00000091,0x5f747364,0x65747962,0x66666f5f,0x00746573,0x00050005,0x00000093,
|
||||
0x5f747364,0x7366666f,0x00007465,0x00050005,0x0000009d,0x5f637273,0x64726f77,0x00000000,
|
||||
0x00060005,0x0000009f,0x72756f53,0x75426563,0x72656666,0x00000000,0x00050006,0x0000009f,
|
||||
0x00000000,0x61746164,0x00000000,0x00070005,0x000000a1,0x725f6578,0x6c6f7365,0x735f6576,
|
||||
0x6372756f,0x00000065,0x00050005,0x000000a6,0x65747962,0x6c61765f,0x00000000,0x00050005,
|
||||
0x000000b0,0x6b636170,0x646e695f,0x00007865,0x00050005,0x000000b3,0x65747962,0x736f705f,
|
||||
0x00000000,0x00060005,0x000000b6,0x746e6f63,0x75626972,0x6e6f6974,0x00000000,0x00060005,
|
||||
0x000000c1,0x745f7367,0x5f656c69,0x61746164,0x00000000,0x00050005,0x000000d4,0x74736544,
|
||||
0x66667542,0x00007265,0x00050006,0x000000d4,0x00000000,0x61746164,0x00000000,0x00060005,
|
||||
0x000000d6,0x725f6578,0x6c6f7365,0x645f6576,0x00747365,0x00050005,0x000000e1,0x5f637273,
|
||||
0x64726f77,0x00000000,0x00050005,0x000000e5,0x726f6873,0x61765f74,0x0000006c,0x00050005,
|
||||
0x000000ed,0x6b636170,0x646e695f,0x00007865,0x00050005,0x000000f0,0x726f6873,0x6f705f74,
|
||||
0x00000073,0x00060005,0x000000f3,0x746e6f63,0x75626972,0x6e6f6974,0x00000000,0x00040047,
|
||||
0x0000000b,0x0000000b,0x0000001a,0x00030047,0x00000011,0x00000002,0x00050048,0x00000011,
|
||||
0x00000000,0x00000023,0x00000000,0x00050048,0x00000011,0x00000001,0x00000023,0x00000004,
|
||||
0x00050048,0x00000011,0x00000002,0x00000023,0x00000008,0x00050048,0x00000011,0x00000003,
|
||||
0x00000023,0x0000000c,0x00050048,0x00000011,0x00000004,0x00000023,0x00000010,0x00050048,
|
||||
0x00000011,0x00000005,0x00000023,0x00000014,0x00040047,0x0000001f,0x0000000b,0x0000001b,
|
||||
0x00040047,0x0000009e,0x00000006,0x00000004,0x00030047,0x0000009f,0x00000003,0x00040048,
|
||||
0x0000009f,0x00000000,0x00000018,0x00050048,0x0000009f,0x00000000,0x00000023,0x00000000,
|
||||
0x00030047,0x000000a1,0x00000018,0x00040047,0x000000a1,0x00000021,0x00000000,0x00040047,
|
||||
0x000000a1,0x00000022,0x00000000,0x00040047,0x000000d3,0x00000006,0x00000004,0x00030047,
|
||||
0x000000d4,0x00000003,0x00040048,0x000000d4,0x00000000,0x00000019,0x00050048,0x000000d4,
|
||||
0x00000000,0x00000023,0x00000000,0x00030047,0x000000d6,0x00000019,0x00040047,0x000000d6,
|
||||
0x00000021,0x00000001,0x00040047,0x000000d6,0x00000022,0x00000000,0x00040047,0x00000129,
|
||||
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
|
||||
0x00000006,0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006,0x00040017,
|
||||
0x00000009,0x00000006,0x00000003,0x00040020,0x0000000a,0x00000001,0x00000009,0x0004003b,
|
||||
0x0000000a,0x0000000b,0x00000001,0x0004002b,0x00000006,0x0000000c,0x00000000,0x00040020,
|
||||
0x0000000d,0x00000001,0x00000006,0x0008001e,0x00000011,0x00000006,0x00000006,0x00000006,
|
||||
0x00000006,0x00000006,0x00000006,0x00040020,0x00000012,0x00000009,0x00000011,0x0004003b,
|
||||
0x00000012,0x00000013,0x00000009,0x00040015,0x00000014,0x00000020,0x00000001,0x0004002b,
|
||||
0x00000014,0x00000015,0x00000003,0x00040020,0x00000016,0x00000009,0x00000006,0x00020014,
|
||||
0x00000019,0x0004003b,0x0000000a,0x0000001f,0x00000001,0x0004002b,0x00000006,0x00000020,
|
||||
0x00000001,0x0004002b,0x00000006,0x00000028,0x00000020,0x0004002b,0x00000014,0x0000002d,
|
||||
0x00000002,0x0004002b,0x00000006,0x00000032,0x00000400,0x0004002b,0x00000014,0x00000036,
|
||||
0x00000000,0x0004002b,0x00000014,0x00000039,0x00000001,0x0004002b,0x00000014,0x0000003f,
|
||||
0x00000005,0x0004002b,0x00000006,0x00000058,0x00000004,0x0004002b,0x00000006,0x0000005c,
|
||||
0x0000000f,0x0004002b,0x00000014,0x00000077,0x00000004,0x0004002b,0x00000006,0x00000085,
|
||||
0x00000010,0x0004002b,0x00000006,0x0000008f,0x00000002,0x0003001d,0x0000009e,0x00000006,
|
||||
0x0003001e,0x0000009f,0x0000009e,0x00040020,0x000000a0,0x00000002,0x0000009f,0x0004003b,
|
||||
0x000000a0,0x000000a1,0x00000002,0x00040020,0x000000a3,0x00000002,0x00000006,0x0004002b,
|
||||
0x00000006,0x000000a9,0x00000003,0x0004002b,0x00000006,0x000000ab,0x00000008,0x0004002b,
|
||||
0x00000006,0x000000ae,0x000000ff,0x0004001c,0x000000bf,0x00000006,0x00000032,0x00040020,
|
||||
0x000000c0,0x00000004,0x000000bf,0x0004003b,0x000000c0,0x000000c1,0x00000004,0x00040020,
|
||||
0x000000c4,0x00000004,0x00000006,0x0004002b,0x00000006,0x000000c6,0x00000108,0x0003001d,
|
||||
0x000000d3,0x00000006,0x0003001e,0x000000d4,0x000000d3,0x00040020,0x000000d5,0x00000002,
|
||||
0x000000d4,0x0004003b,0x000000d5,0x000000d6,0x00000002,0x0004002b,0x00000006,0x000000d8,
|
||||
0x00000100,0x0004002b,0x00000006,0x000000eb,0x0000ffff,0x0004002b,0x00000006,0x0000010c,
|
||||
0x00000200,0x0006002c,0x00000009,0x00000129,0x00000028,0x00000028,0x00000020,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,
|
||||
0x00000008,0x00000007,0x0004003b,0x00000007,0x0000001e,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000023,0x00000007,0x0004003b,0x00000007,0x00000026,0x00000007,0x0004003b,0x00000007,
|
||||
0x0000002c,0x00000007,0x0004003b,0x00000007,0x00000031,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000035,0x00000007,0x0004003b,0x00000007,0x0000003d,0x00000007,0x0004003b,0x00000007,
|
||||
0x0000003e,0x00000007,0x0004003b,0x00000007,0x0000004e,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000056,0x00000007,0x0004003b,0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000061,0x00000007,0x0004003b,0x00000007,0x00000065,0x00000007,0x0004003b,0x00000007,
|
||||
0x0000006c,0x00000007,0x0004003b,0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000076,0x00000007,0x0004003b,0x00000007,0x0000008d,0x00000007,0x0004003b,0x00000007,
|
||||
0x00000091,0x00000007,0x0004003b,0x00000007,0x00000093,0x00000007,0x0004003b,0x00000007,
|
||||
0x0000009d,0x00000007,0x0004003b,0x00000007,0x000000a6,0x00000007,0x0004003b,0x00000007,
|
||||
0x000000b0,0x00000007,0x0004003b,0x00000007,0x000000b3,0x00000007,0x0004003b,0x00000007,
|
||||
0x000000b6,0x00000007,0x0004003b,0x00000007,0x000000e1,0x00000007,0x0004003b,0x00000007,
|
||||
0x000000e5,0x00000007,0x0004003b,0x00000007,0x000000ed,0x00000007,0x0004003b,0x00000007,
|
||||
0x000000f0,0x00000007,0x0004003b,0x00000007,0x000000f3,0x00000007,0x00050041,0x0000000d,
|
||||
0x0000000e,0x0000000b,0x0000000c,0x0004003d,0x00000006,0x0000000f,0x0000000e,0x0003003e,
|
||||
0x00000008,0x0000000f,0x0004003d,0x00000006,0x00000010,0x00000008,0x00050041,0x00000016,
|
||||
0x00000017,0x00000013,0x00000015,0x0004003d,0x00000006,0x00000018,0x00000017,0x000500ae,
|
||||
0x00000019,0x0000001a,0x00000010,0x00000018,0x000300f7,0x0000001c,0x00000000,0x000400fa,
|
||||
0x0000001a,0x0000001b,0x0000001c,0x000200f8,0x0000001b,0x000100fd,0x000200f8,0x0000001c,
|
||||
0x00050041,0x0000000d,0x00000021,0x0000001f,0x00000020,0x0004003d,0x00000006,0x00000022,
|
||||
0x00000021,0x0003003e,0x0000001e,0x00000022,0x00050041,0x0000000d,0x00000024,0x0000001f,
|
||||
0x0000000c,0x0004003d,0x00000006,0x00000025,0x00000024,0x0003003e,0x00000023,0x00000025,
|
||||
0x0004003d,0x00000006,0x00000027,0x0000001e,0x00050084,0x00000006,0x00000029,0x00000027,
|
||||
0x00000028,0x0004003d,0x00000006,0x0000002a,0x00000023,0x00050080,0x00000006,0x0000002b,
|
||||
0x00000029,0x0000002a,0x0003003e,0x00000026,0x0000002b,0x00050041,0x00000016,0x0000002e,
|
||||
0x00000013,0x0000002d,0x0004003d,0x00000006,0x0000002f,0x0000002e,0x000500c4,0x00000006,
|
||||
0x00000030,0x00000020,0x0000002f,0x0003003e,0x0000002c,0x00000030,0x0004003d,0x00000006,
|
||||
0x00000033,0x0000002c,0x00050084,0x00000006,0x00000034,0x00000032,0x00000033,0x0003003e,
|
||||
0x00000031,0x00000034,0x00050041,0x00000016,0x00000037,0x00000013,0x00000036,0x0004003d,
|
||||
0x00000006,0x00000038,0x00000037,0x00050041,0x00000016,0x0000003a,0x00000013,0x00000039,
|
||||
0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050084,0x00000006,0x0000003c,0x00000038,
|
||||
0x0000003b,0x0003003e,0x00000035,0x0000003c,0x0003003e,0x0000003d,0x0000000c,0x0003003e,
|
||||
0x0000003e,0x0000000c,0x00050041,0x00000016,0x00000040,0x00000013,0x0000003f,0x0004003d,
|
||||
0x00000006,0x00000041,0x00000040,0x000500ab,0x00000019,0x00000042,0x00000041,0x0000000c,
|
||||
0x0004003d,0x00000006,0x00000043,0x00000035,0x000500ac,0x00000019,0x00000044,0x00000043,
|
||||
0x00000020,0x000500a7,0x00000019,0x00000045,0x00000042,0x00000044,0x000300f7,0x00000047,
|
||||
0x00000000,0x000400fa,0x00000045,0x00000046,0x00000047,0x000200f8,0x00000046,0x00050041,
|
||||
0x00000016,0x00000048,0x00000013,0x00000036,0x0004003d,0x00000006,0x00000049,0x00000048,
|
||||
0x000500c2,0x00000006,0x0000004a,0x00000049,0x00000020,0x0003003e,0x0000003d,0x0000004a,
|
||||
0x00050041,0x00000016,0x0000004b,0x00000013,0x00000039,0x0004003d,0x00000006,0x0000004c,
|
||||
0x0000004b,0x000500c2,0x00000006,0x0000004d,0x0000004c,0x00000020,0x0003003e,0x0000003e,
|
||||
0x0000004d,0x000200f9,0x00000047,0x000200f8,0x00000047,0x0004003d,0x00000006,0x0000004f,
|
||||
0x00000008,0x0004003d,0x00000006,0x00000050,0x00000031,0x00050084,0x00000006,0x00000051,
|
||||
0x0000004f,0x00000050,0x0004003d,0x00000006,0x00000052,0x00000026,0x0004003d,0x00000006,
|
||||
0x00000053,0x0000002c,0x00050084,0x00000006,0x00000054,0x00000052,0x00000053,0x00050080,
|
||||
0x00000006,0x00000055,0x00000051,0x00000054,0x0003003e,0x0000004e,0x00000055,0x0004003d,
|
||||
0x00000006,0x00000057,0x0000004e,0x000500c2,0x00000006,0x00000059,0x00000057,0x00000058,
|
||||
0x0003003e,0x00000056,0x00000059,0x0004003d,0x00000006,0x0000005b,0x0000004e,0x000500c7,
|
||||
0x00000006,0x0000005d,0x0000005b,0x0000005c,0x00050041,0x00000016,0x0000005e,0x00000013,
|
||||
0x0000002d,0x0004003d,0x00000006,0x0000005f,0x0000005e,0x000500c2,0x00000006,0x00000060,
|
||||
0x0000005d,0x0000005f,0x0003003e,0x0000005a,0x00000060,0x00050041,0x00000016,0x00000062,
|
||||
0x00000013,0x0000002d,0x0004003d,0x00000006,0x00000063,0x00000062,0x00050082,0x00000006,
|
||||
0x00000064,0x00000058,0x00000063,0x0003003e,0x00000061,0x00000064,0x00050041,0x00000016,
|
||||
0x00000066,0x00000013,0x00000036,0x0004003d,0x00000006,0x00000067,0x00000066,0x0004003d,
|
||||
0x00000006,0x00000068,0x0000005a,0x00050084,0x00000006,0x00000069,0x00000067,0x00000068,
|
||||
0x0004003d,0x00000006,0x0000006a,0x0000003d,0x00050080,0x00000006,0x0000006b,0x00000069,
|
||||
0x0000006a,0x0003003e,0x00000065,0x0000006b,0x0004003d,0x00000006,0x0000006d,0x00000065,
|
||||
0x0004003d,0x00000006,0x0000006e,0x00000061,0x000500c2,0x00000006,0x0000006f,0x0000006d,
|
||||
0x0000006e,0x0003003e,0x0000006c,0x0000006f,0x0004003d,0x00000006,0x00000071,0x00000065,
|
||||
0x0004003d,0x00000006,0x00000072,0x00000061,0x000500c4,0x00000006,0x00000073,0x00000020,
|
||||
0x00000072,0x00050082,0x00000006,0x00000074,0x00000073,0x00000020,0x000500c7,0x00000006,
|
||||
0x00000075,0x00000071,0x00000074,0x0003003e,0x00000070,0x00000075,0x00050041,0x00000016,
|
||||
0x00000078,0x00000013,0x00000077,0x0004003d,0x00000006,0x00000079,0x00000078,0x0004003d,
|
||||
0x00000006,0x0000007a,0x00000056,0x0004003d,0x00000006,0x0000007b,0x00000035,0x000500c4,
|
||||
0x00000006,0x0000007c,0x0000007b,0x00000058,0x00050084,0x00000006,0x0000007d,0x0000007a,
|
||||
0x0000007c,0x00050080,0x00000006,0x0000007e,0x00000079,0x0000007d,0x0004003d,0x00000006,
|
||||
0x0000007f,0x0000006c,0x00050041,0x00000016,0x00000080,0x00000013,0x00000039,0x0004003d,
|
||||
0x00000006,0x00000081,0x00000080,0x00050084,0x00000006,0x00000082,0x0000007f,0x00000081,
|
||||
0x0004003d,0x00000006,0x00000083,0x0000003e,0x00050080,0x00000006,0x00000084,0x00000082,
|
||||
0x00000083,0x00050084,0x00000006,0x00000086,0x00000084,0x00000085,0x00050080,0x00000006,
|
||||
0x00000087,0x0000007e,0x00000086,0x0004003d,0x00000006,0x00000088,0x00000070,0x00050041,
|
||||
0x00000016,0x00000089,0x00000013,0x0000002d,0x0004003d,0x00000006,0x0000008a,0x00000089,
|
||||
0x000500c4,0x00000006,0x0000008b,0x00000088,0x0000008a,0x00050080,0x00000006,0x0000008c,
|
||||
0x00000087,0x0000008b,0x0003003e,0x00000076,0x0000008c,0x0004003d,0x00000006,0x0000008e,
|
||||
0x00000076,0x000500c2,0x00000006,0x00000090,0x0000008e,0x0000008f,0x0003003e,0x0000008d,
|
||||
0x00000090,0x0004003d,0x00000006,0x00000092,0x0000004e,0x0003003e,0x00000091,0x00000092,
|
||||
0x0004003d,0x00000006,0x00000094,0x00000091,0x000500c2,0x00000006,0x00000095,0x00000094,
|
||||
0x0000008f,0x0003003e,0x00000093,0x00000095,0x00050041,0x00000016,0x00000096,0x00000013,
|
||||
0x0000002d,0x0004003d,0x00000006,0x00000097,0x00000096,0x000300f7,0x0000009c,0x00000000,
|
||||
0x000b00fb,0x00000097,0x0000009c,0x00000000,0x00000098,0x00000001,0x00000099,0x00000002,
|
||||
0x0000009a,0x00000003,0x0000009b,0x000200f8,0x00000098,0x0004003d,0x00000006,0x000000a2,
|
||||
0x0000008d,0x00060041,0x000000a3,0x000000a4,0x000000a1,0x00000036,0x000000a2,0x0004003d,
|
||||
0x00000006,0x000000a5,0x000000a4,0x0003003e,0x0000009d,0x000000a5,0x0004003d,0x00000006,
|
||||
0x000000a7,0x0000009d,0x0004003d,0x00000006,0x000000a8,0x00000076,0x000500c7,0x00000006,
|
||||
0x000000aa,0x000000a8,0x000000a9,0x00050084,0x00000006,0x000000ac,0x000000aa,0x000000ab,
|
||||
0x000500c2,0x00000006,0x000000ad,0x000000a7,0x000000ac,0x000500c7,0x00000006,0x000000af,
|
||||
0x000000ad,0x000000ae,0x0003003e,0x000000a6,0x000000af,0x0004003d,0x00000006,0x000000b1,
|
||||
0x00000026,0x000500c2,0x00000006,0x000000b2,0x000000b1,0x0000008f,0x0003003e,0x000000b0,
|
||||
0x000000b2,0x0004003d,0x00000006,0x000000b4,0x00000026,0x000500c7,0x00000006,0x000000b5,
|
||||
0x000000b4,0x000000a9,0x0003003e,0x000000b3,0x000000b5,0x0004003d,0x00000006,0x000000b7,
|
||||
0x000000a6,0x0004003d,0x00000006,0x000000b8,0x000000b3,0x00050084,0x00000006,0x000000b9,
|
||||
0x000000b8,0x000000ab,0x000500c4,0x00000006,0x000000ba,0x000000b7,0x000000b9,0x0003003e,
|
||||
0x000000b6,0x000000ba,0x0004003d,0x00000006,0x000000bb,0x000000b3,0x000500aa,0x00000019,
|
||||
0x000000bc,0x000000bb,0x0000000c,0x000300f7,0x000000be,0x00000000,0x000400fa,0x000000bc,
|
||||
0x000000bd,0x000000be,0x000200f8,0x000000bd,0x0004003d,0x00000006,0x000000c2,0x000000b0,
|
||||
0x0004003d,0x00000006,0x000000c3,0x000000b6,0x00050041,0x000000c4,0x000000c5,0x000000c1,
|
||||
0x000000c2,0x0003003e,0x000000c5,0x000000c3,0x000200f9,0x000000be,0x000200f8,0x000000be,
|
||||
0x000400e0,0x0000008f,0x0000008f,0x000000c6,0x0004003d,0x00000006,0x000000c7,0x000000b3,
|
||||
0x000500ab,0x00000019,0x000000c8,0x000000c7,0x0000000c,0x000300f7,0x000000ca,0x00000000,
|
||||
0x000400fa,0x000000c8,0x000000c9,0x000000ca,0x000200f8,0x000000c9,0x0004003d,0x00000006,
|
||||
0x000000cb,0x000000b0,0x00050041,0x000000c4,0x000000cc,0x000000c1,0x000000cb,0x0004003d,
|
||||
0x00000006,0x000000cd,0x000000b6,0x000700f1,0x00000006,0x000000ce,0x000000cc,0x00000020,
|
||||
0x0000000c,0x000000cd,0x000200f9,0x000000ca,0x000200f8,0x000000ca,0x000400e0,0x0000008f,
|
||||
0x0000008f,0x000000c6,0x0004003d,0x00000006,0x000000cf,0x000000b3,0x000500aa,0x00000019,
|
||||
0x000000d0,0x000000cf,0x0000000c,0x000300f7,0x000000d2,0x00000000,0x000400fa,0x000000d0,
|
||||
0x000000d1,0x000000d2,0x000200f8,0x000000d1,0x0004003d,0x00000006,0x000000d7,0x00000008,
|
||||
0x00050084,0x00000006,0x000000d9,0x000000d7,0x000000d8,0x0004003d,0x00000006,0x000000da,
|
||||
0x000000b0,0x00050080,0x00000006,0x000000db,0x000000d9,0x000000da,0x0004003d,0x00000006,
|
||||
0x000000dc,0x000000b0,0x00050041,0x000000c4,0x000000dd,0x000000c1,0x000000dc,0x0004003d,
|
||||
0x00000006,0x000000de,0x000000dd,0x00060041,0x000000a3,0x000000df,0x000000d6,0x00000036,
|
||||
0x000000db,0x0003003e,0x000000df,0x000000de,0x000200f9,0x000000d2,0x000200f8,0x000000d2,
|
||||
0x000200f9,0x0000009c,0x000200f8,0x00000099,0x0004003d,0x00000006,0x000000e2,0x0000008d,
|
||||
0x00060041,0x000000a3,0x000000e3,0x000000a1,0x00000036,0x000000e2,0x0004003d,0x00000006,
|
||||
0x000000e4,0x000000e3,0x0003003e,0x000000e1,0x000000e4,0x0004003d,0x00000006,0x000000e6,
|
||||
0x000000e1,0x0004003d,0x00000006,0x000000e7,0x00000076,0x000500c7,0x00000006,0x000000e8,
|
||||
0x000000e7,0x0000008f,0x00050084,0x00000006,0x000000e9,0x000000e8,0x000000ab,0x000500c2,
|
||||
0x00000006,0x000000ea,0x000000e6,0x000000e9,0x000500c7,0x00000006,0x000000ec,0x000000ea,
|
||||
0x000000eb,0x0003003e,0x000000e5,0x000000ec,0x0004003d,0x00000006,0x000000ee,0x00000026,
|
||||
0x000500c2,0x00000006,0x000000ef,0x000000ee,0x00000020,0x0003003e,0x000000ed,0x000000ef,
|
||||
0x0004003d,0x00000006,0x000000f1,0x00000026,0x000500c7,0x00000006,0x000000f2,0x000000f1,
|
||||
0x00000020,0x0003003e,0x000000f0,0x000000f2,0x0004003d,0x00000006,0x000000f4,0x000000e5,
|
||||
0x0004003d,0x00000006,0x000000f5,0x000000f0,0x00050084,0x00000006,0x000000f6,0x000000f5,
|
||||
0x00000085,0x000500c4,0x00000006,0x000000f7,0x000000f4,0x000000f6,0x0003003e,0x000000f3,
|
||||
0x000000f7,0x0004003d,0x00000006,0x000000f8,0x000000f0,0x000500aa,0x00000019,0x000000f9,
|
||||
0x000000f8,0x0000000c,0x000300f7,0x000000fb,0x00000000,0x000400fa,0x000000f9,0x000000fa,
|
||||
0x000000fb,0x000200f8,0x000000fa,0x0004003d,0x00000006,0x000000fc,0x000000ed,0x0004003d,
|
||||
0x00000006,0x000000fd,0x000000f3,0x00050041,0x000000c4,0x000000fe,0x000000c1,0x000000fc,
|
||||
0x0003003e,0x000000fe,0x000000fd,0x000200f9,0x000000fb,0x000200f8,0x000000fb,0x000400e0,
|
||||
0x0000008f,0x0000008f,0x000000c6,0x0004003d,0x00000006,0x000000ff,0x000000f0,0x000500ab,
|
||||
0x00000019,0x00000100,0x000000ff,0x0000000c,0x000300f7,0x00000102,0x00000000,0x000400fa,
|
||||
0x00000100,0x00000101,0x00000102,0x000200f8,0x00000101,0x0004003d,0x00000006,0x00000103,
|
||||
0x000000ed,0x00050041,0x000000c4,0x00000104,0x000000c1,0x00000103,0x0004003d,0x00000006,
|
||||
0x00000105,0x000000f3,0x000700f1,0x00000006,0x00000106,0x00000104,0x00000020,0x0000000c,
|
||||
0x00000105,0x000200f9,0x00000102,0x000200f8,0x00000102,0x000400e0,0x0000008f,0x0000008f,
|
||||
0x000000c6,0x0004003d,0x00000006,0x00000107,0x000000f0,0x000500aa,0x00000019,0x00000108,
|
||||
0x00000107,0x0000000c,0x000300f7,0x0000010a,0x00000000,0x000400fa,0x00000108,0x00000109,
|
||||
0x0000010a,0x000200f8,0x00000109,0x0004003d,0x00000006,0x0000010b,0x00000008,0x00050084,
|
||||
0x00000006,0x0000010d,0x0000010b,0x0000010c,0x0004003d,0x00000006,0x0000010e,0x000000ed,
|
||||
0x00050080,0x00000006,0x0000010f,0x0000010d,0x0000010e,0x0004003d,0x00000006,0x00000110,
|
||||
0x000000ed,0x00050041,0x000000c4,0x00000111,0x000000c1,0x00000110,0x0004003d,0x00000006,
|
||||
0x00000112,0x00000111,0x00060041,0x000000a3,0x00000113,0x000000d6,0x00000036,0x0000010f,
|
||||
0x0003003e,0x00000113,0x00000112,0x000200f9,0x0000010a,0x000200f8,0x0000010a,0x000200f9,
|
||||
0x0000009c,0x000200f8,0x0000009a,0x0004003d,0x00000006,0x00000115,0x00000093,0x0004003d,
|
||||
0x00000006,0x00000116,0x0000008d,0x00060041,0x000000a3,0x00000117,0x000000a1,0x00000036,
|
||||
0x00000116,0x0004003d,0x00000006,0x00000118,0x00000117,0x00060041,0x000000a3,0x00000119,
|
||||
0x000000d6,0x00000036,0x00000115,0x0003003e,0x00000119,0x00000118,0x000200f9,0x0000009c,
|
||||
0x000200f8,0x0000009b,0x0004003d,0x00000006,0x0000011b,0x00000093,0x0004003d,0x00000006,
|
||||
0x0000011c,0x0000008d,0x00060041,0x000000a3,0x0000011d,0x000000a1,0x00000036,0x0000011c,
|
||||
0x0004003d,0x00000006,0x0000011e,0x0000011d,0x00060041,0x000000a3,0x0000011f,0x000000d6,
|
||||
0x00000036,0x0000011b,0x0003003e,0x0000011f,0x0000011e,0x0004003d,0x00000006,0x00000120,
|
||||
0x00000093,0x00050080,0x00000006,0x00000121,0x00000120,0x00000020,0x0004003d,0x00000006,
|
||||
0x00000122,0x0000008d,0x00050080,0x00000006,0x00000123,0x00000122,0x00000020,0x00060041,
|
||||
0x000000a3,0x00000124,0x000000a1,0x00000036,0x00000123,0x0004003d,0x00000006,0x00000125,
|
||||
0x00000124,0x00060041,0x000000a3,0x00000126,0x000000d6,0x00000036,0x00000121,0x0003003e,
|
||||
0x00000126,0x00000125,0x000200f9,0x0000009c,0x000200f8,0x0000009c,0x000100fd,0x00010038
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5214,7 +5214,12 @@ bool VulkanCommandProcessor::IssueCopy() {
|
|||
ResolveAutoReadbackMode(GetReadbackResolveMode(REXCVAR_GET(vulkan_readback_resolve)),
|
||||
kernel_state_);
|
||||
const bool gameplay_state_active = IsGameplayStateActive(kernel_state_);
|
||||
if (readback_mode == ReadbackResolveMode::kDisabled &&
|
||||
// The app layer arms this around CPU screenshot grabs (Skate 3 photo flow);
|
||||
// resolves within its length bound must take the readback path regardless
|
||||
// of gameplay/scaling state.
|
||||
const bool force_readback_window =
|
||||
REXCVAR_GET(native_render_force_resolve_readback_max_length) > 0;
|
||||
if (readback_mode == ReadbackResolveMode::kDisabled && !force_readback_window &&
|
||||
(!texture_cache_->IsDrawResolutionScaled() || gameplay_state_active)) {
|
||||
uint32_t written_address = 0;
|
||||
uint32_t written_length = 0;
|
||||
|
|
@ -5543,6 +5548,7 @@ bool VulkanCommandProcessor::IssueCopy_ReadbackResolvePath() {
|
|||
kernel_state_);
|
||||
bool force_scaled_resolve_sync_only = false;
|
||||
bool force_scaled_resolve_cpu_copy = false;
|
||||
bool force_window_cpu_copy = false;
|
||||
if (readback_mode == ReadbackResolveMode::kDisabled) {
|
||||
constexpr uint32_t kImportSkaterPreviewResolveAddress = UINT32_C(0x04911000);
|
||||
constexpr uint32_t kImportSkaterPreviewResolveLength = UINT32_C(0x2D0000);
|
||||
|
|
@ -5550,14 +5556,26 @@ bool VulkanCommandProcessor::IssueCopy_ReadbackResolvePath() {
|
|||
!IsGameplayStateActive(kernel_state_) && is_scaled &&
|
||||
written_address == kImportSkaterPreviewResolveAddress &&
|
||||
written_length == kImportSkaterPreviewResolveLength;
|
||||
if (!force_scaled_resolve_cpu_copy) {
|
||||
// App-armed readback window (Skate 3 photo grab): the game CPU-reads the
|
||||
// resolved 1152x640 PostFX screenshot target (also 0x04911000) while the
|
||||
// gameplay presence context is still 1 (photo missions), so the targeted
|
||||
// Import-Skater branch above never fires there. Bounded by length so
|
||||
// framebuffer-sized resolves stay excluded.
|
||||
const int32_t force_readback_max_length =
|
||||
REXCVAR_GET(native_render_force_resolve_readback_max_length);
|
||||
force_window_cpu_copy = force_readback_max_length > 0 &&
|
||||
written_length <= uint32_t(force_readback_max_length);
|
||||
if (!force_scaled_resolve_cpu_copy && !force_window_cpu_copy) {
|
||||
log_readback_decision("disabled-after-resolve", readback_mode);
|
||||
return true;
|
||||
}
|
||||
readback_mode = ReadbackResolveMode::kFull;
|
||||
force_scaled_resolve_sync_only = true;
|
||||
log_readback_decision("targeted-scaled-resolve-full", readback_mode, false, true,
|
||||
kImportSkaterPreviewResolveLength);
|
||||
log_readback_decision(
|
||||
force_scaled_resolve_cpu_copy ? "targeted-scaled-resolve-full" : "forced-window-full",
|
||||
readback_mode, false, true,
|
||||
force_scaled_resolve_cpu_copy ? kImportSkaterPreviewResolveLength
|
||||
: uint32_t(force_readback_max_length));
|
||||
}
|
||||
|
||||
const int32_t max_readback_length = REXCVAR_GET(vulkan_readback_resolve_max_length);
|
||||
|
|
@ -5842,7 +5860,8 @@ bool VulkanCommandProcessor::IssueCopy_ReadbackResolvePath() {
|
|||
}
|
||||
|
||||
bool should_copy =
|
||||
(!force_scaled_resolve_sync_only || force_scaled_resolve_cpu_copy) &&
|
||||
(!force_scaled_resolve_sync_only || force_scaled_resolve_cpu_copy ||
|
||||
force_window_cpu_copy) &&
|
||||
((readback_mode == ReadbackResolveMode::kSome) ? is_cache_miss : true);
|
||||
log_readback_decision(should_copy ? "copy-guest-memory" : "cache-hit-skip", readback_mode,
|
||||
is_cache_miss, should_copy, uint32_t(resolve_key));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue