From c4e1242fa26f55c260f2b030e43ffc8a5ac5d0b7 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Wed, 14 Jan 2026 23:05:08 +0300 Subject: [PATCH 1/5] [D3D12] Include recent D3D12 headers from the Microsoft GitHub --- .gitmodules | 3 +++ src/xenia/ui/d3d12/d3d12_api.h | 12 +++++++++--- src/xenia/ui/dxgi_include_win.h | 23 +++++++++++++++++++++++ src/xenia/ui/presenter.h | 3 ++- src/xenia/ui/window_win.h | 3 ++- third_party/DirectX-Headers | 1 + 6 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/xenia/ui/dxgi_include_win.h create mode 160000 third_party/DirectX-Headers diff --git a/.gitmodules b/.gitmodules index c27065533..89cc18110 100644 --- a/.gitmodules +++ b/.gitmodules @@ -85,3 +85,6 @@ [submodule "third_party/VulkanMemoryAllocator"] path = third_party/VulkanMemoryAllocator url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git +[submodule "third_party/DirectX-Headers"] + path = third_party/DirectX-Headers + url = https://github.com/microsoft/DirectX-Headers.git diff --git a/src/xenia/ui/d3d12/d3d12_api.h b/src/xenia/ui/d3d12/d3d12_api.h index 82bc44bff..98eb495da 100644 --- a/src/xenia/ui/d3d12/d3d12_api.h +++ b/src/xenia/ui/d3d12/d3d12_api.h @@ -13,11 +13,17 @@ // Must be included before D3D and DXGI for things like NOMINMAX. #include "xenia/base/platform_win.h" +// Include the up to date versions of the headers of DXGI and Direct3D 12 rather +// than the ones from the Windows SDK before other headers that may also +// potentially include their headers. + +#include "xenia/ui/dxgi_include_win.h" + +#include "third_party/DirectX-Headers/include/directx/d3d12.h" +#include "third_party/DirectX-Headers/include/directx/d3d12sdklayers.h" + #include -#include -#include #include -#include #include // For Microsoft::WRL::ComPtr. #include diff --git a/src/xenia/ui/dxgi_include_win.h b/src/xenia/ui/dxgi_include_win.h new file mode 100644 index 000000000..58347b019 --- /dev/null +++ b/src/xenia/ui/dxgi_include_win.h @@ -0,0 +1,23 @@ +/** + ****************************************************************************** + * Xenia : Xbox 360 Emulator Research Project * + ****************************************************************************** + * Copyright 2026 Ben Vanik. All rights reserved. * + * Released under the BSD license - see LICENSE in the root for more details. * + ****************************************************************************** + */ + +#ifndef XENIA_UI_DXGI_INCLUDE_WIN_H_ +#define XENIA_UI_DXGI_INCLUDE_WIN_H_ + +// Must be included before Windows headers for definitions like NOMINMAX. +#include "xenia/base/platform_win.h" + +// Include the up to date versions of the DXGI header dependencies rather than +// the ones from the Windows SDK before including the DXGI header. +#include "third_party/DirectX-Headers/include/directx/dxgicommon.h" +#include "third_party/DirectX-Headers/include/directx/dxgiformat.h" + +#include + +#endif // XENIA_UI_DXGI_INCLUDE_WIN_H_ diff --git a/src/xenia/ui/presenter.h b/src/xenia/ui/presenter.h index 9862546ab..b1d38224e 100644 --- a/src/xenia/ui/presenter.h +++ b/src/xenia/ui/presenter.h @@ -39,7 +39,8 @@ // Windows handle types. #include "xenia/base/platform_win.h" -#include +#include "xenia/ui/dxgi_include_win.h" + #include #endif // XE_PLATFORM diff --git a/src/xenia/ui/window_win.h b/src/xenia/ui/window_win.h index dd5d8b978..38c50a061 100644 --- a/src/xenia/ui/window_win.h +++ b/src/xenia/ui/window_win.h @@ -19,8 +19,9 @@ // Must be included before Windows headers for things like NOMINMAX. #include "xenia/base/platform_win.h" +#include "xenia/ui/dxgi_include_win.h" + #include -#include namespace xe { namespace ui { diff --git a/third_party/DirectX-Headers b/third_party/DirectX-Headers new file mode 160000 index 000000000..33374754f --- /dev/null +++ b/third_party/DirectX-Headers @@ -0,0 +1 @@ +Subproject commit 33374754f65baac0500dda6187e371136357246f From 88f95a8bd6e2e41c188693b0b4dc5e1d6157b212 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Thu, 15 Jan 2026 11:56:45 +0300 Subject: [PATCH 2/5] [GPU] Change "element" name back to "block" in texture addressing The 32_32_32_FLOAT format seems to be vertex-only, so it looks like there can't be storage elements smaller than a single texel. So, use a more precise name that can't be confused with "picture element" (pixel) or "texture element" (texel) that represents a single logical pixel rather than a storage block of pixels. --- src/xenia/gpu/draw_util.cc | 4 +- src/xenia/gpu/shaders/resolve.xesli | 17 ++- src/xenia/gpu/shaders/texture_address.xesli | 132 ++++++++++---------- src/xenia/gpu/shaders/texture_load.xesli | 18 +-- src/xenia/gpu/texture_address.h | 87 ++++++------- 5 files changed, 124 insertions(+), 134 deletions(-) diff --git a/src/xenia/gpu/draw_util.cc b/src/xenia/gpu/draw_util.cc index 94e2abe37..9d54e2afc 100644 --- a/src/xenia/gpu/draw_util.cc +++ b/src/xenia/gpu/draw_util.cc @@ -1005,12 +1005,12 @@ bool GetResolveInfo(const RegisterFile& regs, const Memory& memory, auto rb_copy_dest_pitch = regs.Get(); const uint32_t copy_dest_pitch_aligned = xe::align(rb_copy_dest_pitch.copy_dest_pitch, - texture_address::kStoragePitchHeightAlignmentElements); + texture_address::kStoragePitchHeightAlignmentBlocks); info_out.copy_dest_coordinate_info.pitch_aligned_div_32 = copy_dest_pitch_aligned >> 5; const uint32_t copy_dest_height_aligned = xe::align(rb_copy_dest_pitch.copy_dest_height, - texture_address::kStoragePitchHeightAlignmentElements); + texture_address::kStoragePitchHeightAlignmentBlocks); info_out.copy_dest_coordinate_info.height_aligned_div_32 = copy_dest_height_aligned >> 5; const FormatInfo& dest_format_info = *FormatInfo::Get(dest_format); diff --git a/src/xenia/gpu/shaders/resolve.xesli b/src/xenia/gpu/shaders/resolve.xesli index 18e64d6e1..397bb7281 100644 --- a/src/xenia/gpu/shaders/resolve.xesli +++ b/src/xenia/gpu/shaders/resolve.xesli @@ -161,7 +161,7 @@ uint XeResolveEdramPixelStrideInts(XeResolveInfo resolve_info) { #ifndef XE_RESOLVE_CLEAR uint XeResolveDestPixelAddress(const XeResolveInfo resolve_info, uint2_xe host_position, - const uint bytes_per_element_log2) { + const uint bytes_per_block_log2) { host_position += resolve_info.dest_xy_offset_scaled; uint address; uint2_xe guest_position = host_position; @@ -170,19 +170,18 @@ uint XeResolveEdramPixelStrideInts(XeResolveInfo resolve_info) { resolution_scaled_addressing = XeniaTextureGetResolutionScaledAddressing( host_position.xy, resolve_info.resolution_scale, - bytes_per_element_log2); + bytes_per_block_log2); guest_position = resolution_scaled_addressing.guest_group_origin; #endif dont_flatten_xe if (resolve_info.dest_is_array) { address = uint(XenosTextureTiledAddress3D( int3_xe(uint3_xe(guest_position, resolve_info.dest_slice)), resolve_info.dest_row_pitch_macro_tiles, - resolve_info.dest_slice_pitch_3d_macro_tiles, - bytes_per_element_log2)); + resolve_info.dest_slice_pitch_3d_macro_tiles, bytes_per_block_log2)); } else { address = uint(XenosTextureTiledAddress2D( int2_xe(guest_position), resolve_info.dest_row_pitch_macro_tiles, - bytes_per_element_log2)); + bytes_per_block_log2)); } #ifdef XE_RESOLVE_RESOLUTION_SCALED address = address * (resolve_info.resolution_scale.x * @@ -195,18 +194,18 @@ uint XeResolveEdramPixelStrideInts(XeResolveInfo resolve_info) { // XOR to apply to the byte address to flip the bits corresponding to the // given X coordinate bits within the macro tile width, or with resolution - // scaling, within XeniaTextureResolutionScaledGroupElements.x. + // scaling, within XeniaTextureResolutionScaledGroupBlocks.x. // Addition is recommended instead of XOR if the bits are known to be 0 in the // original address, so the host GPU driver can optimize it into a constant // store offset if available in the host hardware shader instruction set // architecture. uint XeResolveLocalXAddressXor(const uint x, - const uint bytes_per_element_log2) { + const uint bytes_per_block_log2) { #ifdef XE_RESOLVE_RESOLUTION_SCALED - return x << bytes_per_element_log2; + return x << bytes_per_block_log2; #else return uint(XenosTextureTiledAddressXInMacroXor(int(x), - bytes_per_element_log2)); + bytes_per_block_log2)); #endif } diff --git a/src/xenia/gpu/shaders/texture_address.xesli b/src/xenia/gpu/shaders/texture_address.xesli index a555c4642..3b5851540 100644 --- a/src/xenia/gpu/shaders/texture_address.xesli +++ b/src/xenia/gpu/shaders/texture_address.xesli @@ -26,15 +26,15 @@ int XenosTextureTiledAddressCombine(const int outer_inner_bytes, const int bank, } int XenosTextureTiledAddress2D(const int2_xe p, const uint pitch_macro_tiles, - const uint bytes_per_element_log2) { - const int outer_elements = + const uint bytes_per_block_log2) { + const int outer_blocks = ((p.y >> XENOS_TEXTURE_MACRO_TILE_HEIGHT_2D_LOG2) * int(pitch_macro_tiles) + (p.x >> XENOS_TEXTURE_MACRO_TILE_WIDTH_LOG2)) << 6; - const int inner_elements = (((p.y >> 1) & 0x7) << 3) | (p.x & 0x7); - const int outer_inner_bytes = - (outer_elements | inner_elements) << bytes_per_element_log2; + const int inner_blocks = (((p.y >> 1) & 0x7) << 3) | (p.x & 0x7); + const int outer_inner_bytes = (outer_blocks | inner_blocks) + << bytes_per_block_log2; const int bank = (p.y >> 4) & 0x1; const int pipe = ((p.x >> 3) & 0x3) ^ (((p.y >> 3) & 0x1) << 1); return XenosTextureTiledAddressCombine(outer_inner_bytes, bank, pipe, @@ -43,18 +43,18 @@ int XenosTextureTiledAddress2D(const int2_xe p, const uint pitch_macro_tiles, int XenosTextureTiledAddress3D(const int3_xe p, const uint pitch_macro_tiles, const uint height_macro_tiles, - const uint bytes_per_element_log2) { - const int outer_elements = + const uint bytes_per_block_log2) { + const int outer_blocks = ((((p.z >> XENOS_TEXTURE_MACRO_TILE_DEPTH_LOG2) * int(height_macro_tiles) + (p.y >> XENOS_TEXTURE_MACRO_TILE_HEIGHT_3D_LOG2)) * int(pitch_macro_tiles)) + (p.x >> XENOS_TEXTURE_MACRO_TILE_WIDTH_LOG2)) << 7; - const int inner_elements = + const int inner_blocks = ((p.z & 0x3) << 5) | (((p.y >> 1) & 0x3) << 3) | (p.x & 0x7); - const int outer_inner_bytes = - (outer_elements | inner_elements) << bytes_per_element_log2; + const int outer_inner_bytes = (outer_blocks | inner_blocks) + << bytes_per_block_log2; const int bank = ((p.y >> 3) ^ (p.z >> 2)) & 0x1; const int pipe = ((p.x >> 3) & 0x3) ^ (bank << 1); return XenosTextureTiledAddressCombine(outer_inner_bytes, bank, pipe, @@ -65,49 +65,49 @@ int XenosTextureTiledAddress3D(const int3_xe p, const uint pitch_macro_tiles, // X coordinate bits within the width of a macro tile. // Note that in a tiled address, bit 7 is X[4] ^ Y[3] ^ Z[2], not X[4] alone. int XenosTextureTiledAddressXInMacroXor(const int x, - const uint bytes_per_element_log2) { - return XenosTextureTiledAddressCombine((x & 0x7) << bytes_per_element_log2, + const uint bytes_per_block_log2) { + return XenosTextureTiledAddressCombine((x & 0x7) << bytes_per_block_log2, 0, (x >> 3) & 0x3, 0); } -// The lowest bits of an element index within a micro tile are X[2:0]. +// The lowest bits of an block index within a micro tile are X[2:0]. // In a tiled address, the bit 4 is always Y[0]. -// However, the bits [3:0] are the lower bits of the micro tile element index -// times the number of bytes per element. -// Because of this, a number of elements, that depends on the count of bytes per -// element, along the X axis (aligned to this amount) is stored consecutively in +// However, the bits [3:0] are the lower bits of the micro tile block index +// times the number of bytes per block. +// Because of this, a number of blocks, that depends on the count of bytes per +// block, along the X axis (aligned to this amount) is stored consecutively in // guest memory: -// - 1bpe: 8 elements (8 bytes - limited by address bit 3 being Y[1] for 1bpe). -// - 2bpe: 8 elements (16 bytes - limited by address bit 4 always being Y[0]). -// - 4bpe: 4 elements. -// - 8bpe: 2 elements. -// - 16bpe: 1 element. -// This makes it possible to access multiple elements in a single row using -// 8-byte or (for >= 2bpe) 16-byte loads and stores, and that's particularly -// useful when transferring texture data between tiled and linear storage. +// - 1bpe: 8 blocks (8 bytes - limited by address bit 3 being Y[1] for 1bpe). +// - 2bpe: 8 blocks (16 bytes - limited by address bit 4 always being Y[0]). +// - 4bpe: 4 blocks. +// - 8bpe: 2 blocks. +// - 16bpe: 1 block. +// This makes it possible to access multiple blocks in a single row using 8-byte +// or (for >= 2bpe) 16-byte loads and stores, and that's particularly useful +// when transferring texture data between tiled and linear storage. // With resolution scaling, one scaled group of bytes in guest addresses // corresponds to `scale.x * scale.y` groups of the same size on the host. // -// A single group contains a full rectangular region of elements. This means -// that, for instance, if the Y[1] tiled address bit is within the group size, -// Y[0] must be within it too, so division is enough to go from host to guest +// A single group contains a full rectangular region of blocks. This means that, +// for instance, if the Y[1] tiled address bit is within the group size, Y[0] +// must be within it too, so division is enough to go from host to guest // coordinates for the origin of the group. // // The address of the guest group on the host is the guest tiled address of its // origin in guest coordinates multiplied by `scale.x * scale.y`. // -// Within a guest group, the addressing of elements is controlled by the host. -// Specifically, host groups are arranged in a guest group as block-linear -// column-major (for storage locality along both axes), and elements in a host +// Within a guest group, the addressing of blocks is controlled by the host. +// Specifically, host groups are arranged in a guest group as group-linear +// column-major (for storage locality along both axes), and blocks in a host // group are laid out as linear row-major (guest tiling therefore is applied // only to whole guest groups, not within them, for simplicity). // // Addressing with resolution scaling is not intended to allow for -// reinterpretation of resolution-scaled data between different numbers of bits -// per element. Rather, it's designed for simple and efficient access on the -// host, primarily when copying between tiled and linear storage, and to reduce -// the differences in shader logic between unscaled and scaled data. +// reinterpretation of resolution-scaled data between different numbers of bytes +// per block. Rather, it's designed for simple and efficient access on the host, +// primarily when copying between tiled and linear storage, and to reduce the +// differences in shader logic between unscaled and scaled data. // // However, the groups are still small enough to preserve most of the tiling // properties on a macro level, most importantly the possibility to resolve @@ -121,32 +121,32 @@ int XenosTextureTiledAddressXInMacroXor(const int x, // per pixel being the only needed metadata. // // A common pattern in Xenia is copying multiple 8-byte or (for >= 2bpe) 16-byte -// sequences of consecutive elements along the X axis in a single shader +// sequences of consecutive blocks along the X axis in a single shader // invocation, by computing the tiled address once and merely flipping X bits in // it. // // With the resolution scaling group size being no larger than 2^7 bytes, it may // contain guest X bits [3:0] for <= 4bpe, [1:0] for 8bpe, and [0] for 16bpe // (note that though X[3] always goes to address[6], for 8bpe, X[2] is -// address[8], so a group can't be wider than 4 elements, and similarly for X[1] +// address[8], so a group can't be wider than 4 blocks, and similarly for X[1] // for 16bpe). // // Given these requirements, the group sizes are chosen as follows: // - 1bpe - lower 7 bits of an unscaled address are X0, X1, X2, Y1, Y0, Y2, X3: -// - Group width: 2^4 elements (maximum within 7 bits), or 2^4 bytes. -// - Group height: 2^3 elements (Y[2:0] between X[3:0]). +// - Group width: 2^4 blocks (maximum within 7 bits), or 2^4 bytes. +// - Group height: 2^3 blocks (Y[2:0] between X[3:0]). // - 2bpe - lower 7 bits of an unscaled address are 0, X0, X1, X2, Y0, Y1, X3: -// - Group width: 2^4 elements (maximum within 7 bits), or 2^5 bytes. -// - Group height: 2^2 elements (Y[1:0] between X[3:0]). +// - Group width: 2^4 blocks (maximum within 7 bits), or 2^5 bytes. +// - Group height: 2^2 blocks (Y[1:0] between X[3:0]). // - 4bpe - lower 7 bits of an unscaled address are 0, 0, X0, X1, Y0, X2, X3: -// - Group width: 2^4 elements (maximum within 7 bits), or 2^6 bytes. -// - Group height: 2^1 elements (Y[0] between X[3:0]). +// - Group width: 2^4 blocks (maximum within 7 bits), or 2^6 bytes. +// - Group height: 2^1 blocks (Y[0] between X[3:0]). // - 8bpe - lower 7 bits of an unscaled address are 0, 0, 0, X0, Y0, X1, X3: -// - Group width: 2^2 elements (X[2] is beyond 7 bits), or 2^5 bytes. -// - Group height: 2^1 elements (Y[0] between X[1:0]). +// - Group width: 2^2 blocks (X[2] is beyond 7 bits), or 2^5 bytes. +// - Group height: 2^1 blocks (Y[0] between X[1:0]). // - 16bpe - lower 7 bits of an unscaled address are 0, 0, 0, 0, Y0, X0, X3: -// - Group width: 2^1 elements (X[2:1] is beyond 7 bits), or 2^5 bytes. -// - Group height: 2^1 elements (Y[0] below X[0]). +// - Group width: 2^1 blocks (X[2:1] is beyond 7 bits), or 2^5 bytes. +// - Group height: 2^1 blocks (Y[0] below X[0]). // // 2^6 bytes copied per invocation is likely to be optimal, as that consumes 16 // 32-bit VGPRs, out of a total of 24 (1024 / 40 rounded down to 4) available @@ -154,19 +154,17 @@ int XenosTextureTiledAddressXInMacroXor(const int x, // (although the occupancy of copy shaders is likely to be limited by memory // accesses instead anyway). // -// Note that with the given group sizes, as well as with elements in a host -// group stored as row-major, for 1bpe, 16x1 host elements are stored -// consecutively with resolution scaling (even though in guest tiling, only 8x1 -// elements are), so they can be accessed via one 16-byte operation rather than -// two 8-byte ones. +// Note that with the given group sizes, as well as with blocks in a host group +// stored as row-major, for 1bpe, 16x1 host blocks are stored consecutively with +// resolution scaling (even though in guest tiling, only 8x1 blocks are), so +// they can be accessed via one 16-byte operation rather than two 8-byte ones. // Expected to be called for a compile-time constant. -uint2_xe XeniaTextureResolutionScaledGroupElementsLog2( - const uint bytes_per_element_log2) { +uint2_xe XeniaTextureResolutionScaledGroupBlocksLog2( + const uint bytes_per_block_log2) { // Based on the tiled address properties, see the comment above for details. - return uint2_xe( - bytes_per_element_log2 >= 3u ? 5u - bytes_per_element_log2 : 4u, - 3u - min(bytes_per_element_log2, 2u)); + return uint2_xe(bytes_per_block_log2 >= 3u ? 5u - bytes_per_block_log2 : 4u, + 3u - min(bytes_per_block_log2, 2u)); } struct XeniaTextureResolutionScaledAddressing { @@ -177,20 +175,20 @@ struct XeniaTextureResolutionScaledAddressing { XeniaTextureResolutionScaledAddressing XeniaTextureGetResolutionScaledAddressing(const uint2_xe position, const uint2_xe resolution_scale, - const uint bytes_per_element_log2) { + const uint bytes_per_block_log2) { XeniaTextureResolutionScaledAddressing addressing; - const uint2_xe group_elements_log2 = - XeniaTextureResolutionScaledGroupElementsLog2(bytes_per_element_log2); + const uint2_xe group_blocks_log2 = + XeniaTextureResolutionScaledGroupBlocksLog2(bytes_per_block_log2); - const uint2_xe host_group_id_in_texture = position >> group_elements_log2; + const uint2_xe host_group_id_in_texture = position >> group_blocks_log2; const uint2_xe guest_group_id_in_texture = host_group_id_in_texture / resolution_scale; const uint2_xe host_group_id_in_guest_group = host_group_id_in_texture - resolution_scale * guest_group_id_in_texture; addressing.guest_group_origin = - guest_group_id_in_texture << group_elements_log2; + guest_group_id_in_texture << group_blocks_log2; // Host groups are stored as column-major in a guest group, but this can be // changed freely. @@ -198,18 +196,18 @@ XeniaTextureGetResolutionScaledAddressing(const uint2_xe position, host_group_id_in_guest_group.x * resolution_scale.y + host_group_id_in_guest_group.y; // Shifts are expanded rather than chained because the number of bytes per - // element, and thus also the group size, are expected to be compile-time + // block, and thus also the group size, are expected to be compile-time // constants, so this is expected to be combined using GPU bitfield insert // instructions. const uint group_width_bytes_log2 = - group_elements_log2.x + bytes_per_element_log2; + group_blocks_log2.x + bytes_per_block_log2; const uint2_xe position_in_host_group = - position & ((uint_x2_xe(1u) << group_elements_log2) - 1u); + position & ((uint_x2_xe(1u) << group_blocks_log2) - 1u); addressing.host_byte_offset_in_guest_group = (host_group_index_in_guest_group << - (group_width_bytes_log2 + group_elements_log2.y)) | + (group_width_bytes_log2 + group_blocks_log2.y)) | (position_in_host_group.y << group_width_bytes_log2) | - (position_in_host_group.x << bytes_per_element_log2); + (position_in_host_group.x << bytes_per_block_log2); return addressing; } diff --git a/src/xenia/gpu/shaders/texture_load.xesli b/src/xenia/gpu/shaders/texture_load.xesli index f2a28cb59..cc1b3664e 100644 --- a/src/xenia/gpu/shaders/texture_load.xesli +++ b/src/xenia/gpu/shaders/texture_load.xesli @@ -98,14 +98,14 @@ XeTextureLoadInfo XeTextureLoadGetInfo(param_push_consts_xe) { uint XeTextureLoadSourceAddress(const XeTextureLoadInfo load_info, const uint3_xe host_position, - const uint bytes_per_element_log2) { + const uint bytes_per_block_log2) { uint address; uint3_xe guest_position = host_position; #ifdef XE_TEXTURE_LOAD_RESOLUTION_SCALED const XeniaTextureResolutionScaledAddressing resolution_scaled_addressing = XeniaTextureGetResolutionScaledAddressing(host_position.xy, load_info.resolution_scale, - bytes_per_element_log2); + bytes_per_block_log2); guest_position.xy = resolution_scaled_addressing.guest_group_origin; #else dont_flatten_xe if (!load_info.is_tiled) { @@ -114,7 +114,7 @@ uint XeTextureLoadSourceAddress(const XeTextureLoadInfo load_info, (guest_position.y + load_info.guest_z_stride_block_rows_aligned * guest_position.z)) << - bytes_per_element_log2; + bytes_per_block_log2; } else #endif { @@ -124,12 +124,12 @@ uint XeTextureLoadSourceAddress(const XeTextureLoadInfo load_info, load_info.guest_pitch_aligned >> XENOS_TEXTURE_MACRO_TILE_WIDTH_LOG2, load_info.guest_z_stride_block_rows_aligned >> XENOS_TEXTURE_MACRO_TILE_HEIGHT_3D_LOG2, - bytes_per_element_log2)); + bytes_per_block_log2)); } else { address = uint(XenosTextureTiledAddress2D( int2_xe(guest_position.xy), load_info.guest_pitch_aligned >> XENOS_TEXTURE_MACRO_TILE_WIDTH_LOG2, - bytes_per_element_log2)); + bytes_per_block_log2)); } } #ifdef XE_TEXTURE_LOAD_RESOLUTION_SCALED @@ -143,24 +143,24 @@ uint XeTextureLoadSourceAddress(const XeTextureLoadInfo load_info, // XOR to apply to the byte address to flip the bits corresponding to the given // X coordinate bits within: -// - Resolution-scaled tiled: XeniaTextureResolutionScaledGroupElements.x; +// - Resolution-scaled tiled: XeniaTextureResolutionScaledGroupBlocks.x; // - Unscaled tiled: macro tile width; // - Linear: 256 bytes. // Addition is recommended instead of XOR if the bits are known to be 0 in the // original address, so the host GPU driver can optimize it into a constant load // offset if available in the host hardware shader instruction set architecture. uint XeTextureLoadLocalXAddressXor(const uint x, - const uint bytes_per_element_log2, + const uint bytes_per_block_log2, const bool is_tiled) { uint x_address_xor; #ifndef XE_TEXTURE_LOAD_RESOLUTION_SCALED dont_flatten_xe if (is_tiled) { x_address_xor = uint( - XenosTextureTiledAddressXInMacroXor(int(x), bytes_per_element_log2)); + XenosTextureTiledAddressXInMacroXor(int(x), bytes_per_block_log2)); } else #endif { - x_address_xor = x << bytes_per_element_log2; + x_address_xor = x << bytes_per_block_log2; } return x_address_xor; } diff --git a/src/xenia/gpu/texture_address.h b/src/xenia/gpu/texture_address.h index 5f1c49d37..8b36854be 100644 --- a/src/xenia/gpu/texture_address.h +++ b/src/xenia/gpu/texture_address.h @@ -37,19 +37,12 @@ namespace texture_address { // must not access the data in the padding after aligning to 32x32 // (resulting in 1280x736) via the guest CPU memory mappings. -// "Element" refers to a storage unit used in guest addressing calculations: -// block for compressed or otherwise block-based formats, pixel for other -// formats. -// TODO(Triang3l): Research 32_32_32_FLOAT format ("Expand3x" in AddrLib terms) -// texture storage. Should storage dimensions be rounded assuming that one -// element is one component rather than the whole pixel? - // Level pitch (or width for non-base mip levels), height, and depth (for 3D // textures - stacked 2D textures use the exact array layer count for the stride // at every level, and cubemaps are normally stored with a stride of 6 faces) // are rounded up by the hardware for the purposes of calculating strides of // subresources and of macro tiles within a subresource to: -// - 32x32 (2D) or 32x32x4 (3D) elements. This is applicable to both tiled and +// - 32x32 (2D) or 32x32x4 (3D) blocks. This is applicable to both tiled and // linear textures. Note that for 3D, this is larger than a macro tile // (32x16x4). // - Power of two, for non-base mip levels. @@ -69,12 +62,12 @@ namespace texture_address { // Another scenario where the product of the aligned dimensions may not be an // accurate estimate (but in this case too small rather than too large) is when // the width exceeds the pitch. -constexpr unsigned int kStoragePitchHeightAlignmentElementsLog2 = 5; -constexpr uint32_t kStoragePitchHeightAlignmentElements = - uint32_t(1) << kStoragePitchHeightAlignmentElementsLog2; -constexpr unsigned int kStorageDepthAlignmentElementsLog2 = 2; -constexpr uint32_t kStorageDepthAlignmentElements = - uint32_t(1) << kStorageDepthAlignmentElementsLog2; +constexpr unsigned int kStoragePitchHeightAlignmentBlocksLog2 = 5; +constexpr uint32_t kStoragePitchHeightAlignmentBlocks = + uint32_t(1) << kStoragePitchHeightAlignmentBlocksLog2; +constexpr unsigned int kStorageDepthAlignmentBlocksLog2 = 2; +constexpr uint32_t kStorageDepthAlignmentBlocks = + uint32_t(1) << kStorageDepthAlignmentBlocksLog2; // 2D tiling from: // https://github.com/BinomialLLC/crunch/blob/36479bc697be19168daafbf15f47f3c60ccec004/inc/crn_decomp.h#L4107 @@ -105,31 +98,31 @@ constexpr uint32_t kStorageDepthAlignmentElements = // [4] = `y & 1` (Y least significant bit) // [3:0] = `outer_inner_bytes[3:0]` (pipe interleave lower bits) // -// The "outer_inner" part is scaled by the number of bytes per element: -// `outer_inner_bytes = outer_inner_elements << log2(bytes_per_element)` -// where `outer_inner_elements` is a sum (or bitwise OR) of two terms: -// - `outer_elements`: Origin of the 32x32 (2D) or 32x16x4 (3D) macro tile -// within the subresource. -// Macro tiles are treated as laid out block-linearly in the calculation of -// this part, with Z being the most significant term, Y in between, and X +// The "outer_inner" part is scaled by the number of bytes per block: +// `outer_inner_bytes = outer_inner_blocks << log2(bytes_per_block)` +// where `outer_inner_blocks` is a sum (or bitwise OR) of two terms: +// - `outer_blocks`: Origin of the 32x32 (2D) or 32x16x4 (3D) macro tile within +// the subresource. +// Macro tiles are treated as laid out macro-tile-linearly in the calculation +// of this part, with Z being the most significant term, Y in between, and X // being the least significant. // 2D: // (x[:5] + ceil(pitch / 32) * y[:5]) << 6 // 3D: // (x[:5] + ceil(pitch / 32) * (y[:4] + 2 * ceil(height / 32) * z[:2])) << 7 -// - `inner_elements`: Offset of 1x2x1 elements within a 8x16 (2D) or 8x8x4 -// micro tile. +// - `inner_blocks`: Offset of 1x2x1 blocks within a 8x16 (2D) or 8x8x4 micro +// tile. // Though the LSB of Y always goes to the bit 4 of the memory address, within // a micro tile, {X, Y[:1], Z} can be treated as linear in the calculation of // this part, with Z being the most significant, Y in between, and X being the // least significant. // 2D: -// - inner_elements[5:3] = y[3:1] -// - inner_elements[2:0] = x[2:0] +// - inner_blocks[5:3] = y[3:1] +// - inner_blocks[2:0] = x[2:0] // 3D: -// - inner_elements[6:5] = z[1:0] -// - inner_elements[4:3] = y[2:1] -// - inner_elements[2:0] = x[2:0] +// - inner_blocks[6:5] = z[1:0] +// - inner_blocks[4:3] = y[2:1] +// - inner_blocks[2:0] = x[2:0] // // However, the "outer/inner" part doesn't include the offset of the micro tile // within the macro tile: X[4:3], and Y[4] (2D) or Y[3] (3D). These are encoded @@ -191,54 +184,54 @@ Address TiledCombine(const Address outer_inner_bytes, const uint32_t bank, } // The absolute of the return value is below 2^31 (for 16384x8192 with 16 bytes -// per element, though it's not even clear if the hardware allows pitches -// greater than 8192, the maximum texture size, but the pitch field in a texture -// fetch constant is 14 bits wide). +// per block, though it's not even clear if the hardware allows pitches greater +// than 8192, the maximum texture size, but the pitch field in a texture fetch +// constant is 14 bits wide). inline int32_t Tiled2D(const int32_t x, const int32_t y, const uint32_t pitch_aligned, - const unsigned int bytes_per_element_log2) { + const unsigned int bytes_per_block_log2) { // Expecting that all the needed rounding (not only to 32x32, but also to a // power of two for mips) is done before the call so this function works with // the actual storage dimensions. - assert_zero(pitch_aligned & (kStoragePitchHeightAlignmentElements - 1)); - const int32_t outer_elements = + assert_zero(pitch_aligned & (kStoragePitchHeightAlignmentBlocks - 1)); + const int32_t outer_blocks = ((y >> kMacroTileHeight2DLog2) * int32_t(pitch_aligned >> kMacroTileWidthLog2) + (x >> kMacroTileWidthLog2)) << 6; - const int32_t inner_elements = (((y >> 1) & 0b111) << 3) | (x & 0b111); - const int32_t outer_inner_bytes = (outer_elements | inner_elements) - << bytes_per_element_log2; + const int32_t inner_blocks = (((y >> 1) & 0b111) << 3) | (x & 0b111); + const int32_t outer_inner_bytes = (outer_blocks | inner_blocks) + << bytes_per_block_log2; const uint32_t bank = (y >> 4) & 0b1; const uint32_t pipe = ((x >> 3) & 0b11) ^ (((y >> 3) & 0b1) << 1); return TiledCombine(outer_inner_bytes, bank, pipe, y & 1); } // The absolute of the return value is below 2^39 (for 16384x2048x1024 with 16 -// bytes per element). This also means that 32 (more precisely, 27) bits is -// always enough for the page index within a subresource. +// bytes per block). This also means that 32 (more precisely, 27) bits is always +// enough for the page index within a subresource. inline int64_t Tiled3D(const int32_t x, const int32_t y, const int32_t z, const uint32_t pitch_aligned, const uint32_t height_aligned, - const unsigned int bytes_per_element_log2) { + const unsigned int bytes_per_block_log2) { // Expecting that all the needed rounding (not only to 32x32x4, but also to a // power of two for mips) is done before the call so this function works with // the actual storage dimensions. - assert_zero(pitch_aligned & (kStoragePitchHeightAlignmentElements - 1)); - assert_zero(height_aligned & (kStoragePitchHeightAlignmentElements - 1)); - // The absolute of `outer_elements` is below (1024 / 4) * (2048 / 16) * + assert_zero(pitch_aligned & (kStoragePitchHeightAlignmentBlocks - 1)); + assert_zero(height_aligned & (kStoragePitchHeightAlignmentBlocks - 1)); + // The absolute of `outer_blocks` is below (1024 / 4) * (2048 / 16) * // (16384 / 32) * 128 = 2^31. - const int32_t outer_elements = + const int32_t outer_blocks = ((((z >> kMacroTileDepthLog2) * (height_aligned >> kMacroTileHeight3DLog2) + (y >> kMacroTileHeight3DLog2)) * int32_t(pitch_aligned >> kMacroTileWidthLog2)) + (x >> kMacroTileWidthLog2)) << 7; - const int32_t inner_elements = + const int32_t inner_blocks = ((z & 0b11) << 5) | (((y >> 1) & 0b11) << 3) | (x & 0b111); - const int64_t outer_inner_bytes = int64_t(outer_elements | inner_elements) - << bytes_per_element_log2; + const int64_t outer_inner_bytes = int64_t(outer_blocks | inner_blocks) + << bytes_per_block_log2; const uint32_t bank = ((y >> 3) ^ (z >> 2)) & 0b1; const uint32_t pipe = ((x >> 3) & 0b11) ^ (bank << 1); return TiledCombine(outer_inner_bytes, bank, pipe, y & 1); From f2fabfdf04fb9c2e7fe87edd76c7958b9393e5b4 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Thu, 15 Jan 2026 20:48:26 +0300 Subject: [PATCH 3/5] [GPU] Change "bpe" to "bpb" (bytes per block) in comments Forgotten in the other "element" to "block" change. --- src/xenia/gpu/shaders/texture_address.xesli | 32 ++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/xenia/gpu/shaders/texture_address.xesli b/src/xenia/gpu/shaders/texture_address.xesli index 3b5851540..4b76fb478 100644 --- a/src/xenia/gpu/shaders/texture_address.xesli +++ b/src/xenia/gpu/shaders/texture_address.xesli @@ -77,13 +77,13 @@ int XenosTextureTiledAddressXInMacroXor(const int x, // Because of this, a number of blocks, that depends on the count of bytes per // block, along the X axis (aligned to this amount) is stored consecutively in // guest memory: -// - 1bpe: 8 blocks (8 bytes - limited by address bit 3 being Y[1] for 1bpe). -// - 2bpe: 8 blocks (16 bytes - limited by address bit 4 always being Y[0]). -// - 4bpe: 4 blocks. -// - 8bpe: 2 blocks. -// - 16bpe: 1 block. +// - 1bpb: 8 blocks (8 bytes - limited by address bit 3 being Y[1] for 1bpb). +// - 2bpb: 8 blocks (16 bytes - limited by address bit 4 always being Y[0]). +// - 4bpb: 4 blocks. +// - 8bpb: 2 blocks. +// - 16bpb: 1 block. // This makes it possible to access multiple blocks in a single row using 8-byte -// or (for >= 2bpe) 16-byte loads and stores, and that's particularly useful +// or (for >= 2bpb) 16-byte loads and stores, and that's particularly useful // when transferring texture data between tiled and linear storage. // With resolution scaling, one scaled group of bytes in guest addresses @@ -120,31 +120,31 @@ int XenosTextureTiledAddressXInMacroXor(const int x, // resolution-scaled data in a memory range to be done with the number of bytes // per pixel being the only needed metadata. // -// A common pattern in Xenia is copying multiple 8-byte or (for >= 2bpe) 16-byte +// A common pattern in Xenia is copying multiple 8-byte or (for >= 2bpb) 16-byte // sequences of consecutive blocks along the X axis in a single shader // invocation, by computing the tiled address once and merely flipping X bits in // it. // // With the resolution scaling group size being no larger than 2^7 bytes, it may -// contain guest X bits [3:0] for <= 4bpe, [1:0] for 8bpe, and [0] for 16bpe -// (note that though X[3] always goes to address[6], for 8bpe, X[2] is +// contain guest X bits [3:0] for <= 4bpb, [1:0] for 8bpb, and [0] for 16bpb +// (note that though X[3] always goes to address[6], for 8bpb, X[2] is // address[8], so a group can't be wider than 4 blocks, and similarly for X[1] -// for 16bpe). +// for 16bpb). // // Given these requirements, the group sizes are chosen as follows: -// - 1bpe - lower 7 bits of an unscaled address are X0, X1, X2, Y1, Y0, Y2, X3: +// - 1bpb - lower 7 bits of an unscaled address are X0, X1, X2, Y1, Y0, Y2, X3: // - Group width: 2^4 blocks (maximum within 7 bits), or 2^4 bytes. // - Group height: 2^3 blocks (Y[2:0] between X[3:0]). -// - 2bpe - lower 7 bits of an unscaled address are 0, X0, X1, X2, Y0, Y1, X3: +// - 2bpb - lower 7 bits of an unscaled address are 0, X0, X1, X2, Y0, Y1, X3: // - Group width: 2^4 blocks (maximum within 7 bits), or 2^5 bytes. // - Group height: 2^2 blocks (Y[1:0] between X[3:0]). -// - 4bpe - lower 7 bits of an unscaled address are 0, 0, X0, X1, Y0, X2, X3: +// - 4bpb - lower 7 bits of an unscaled address are 0, 0, X0, X1, Y0, X2, X3: // - Group width: 2^4 blocks (maximum within 7 bits), or 2^6 bytes. // - Group height: 2^1 blocks (Y[0] between X[3:0]). -// - 8bpe - lower 7 bits of an unscaled address are 0, 0, 0, X0, Y0, X1, X3: +// - 8bpb - lower 7 bits of an unscaled address are 0, 0, 0, X0, Y0, X1, X3: // - Group width: 2^2 blocks (X[2] is beyond 7 bits), or 2^5 bytes. // - Group height: 2^1 blocks (Y[0] between X[1:0]). -// - 16bpe - lower 7 bits of an unscaled address are 0, 0, 0, 0, Y0, X0, X3: +// - 16bpb - lower 7 bits of an unscaled address are 0, 0, 0, 0, Y0, X0, X3: // - Group width: 2^1 blocks (X[2:1] is beyond 7 bits), or 2^5 bytes. // - Group height: 2^1 blocks (Y[0] below X[0]). // @@ -155,7 +155,7 @@ int XenosTextureTiledAddressXInMacroXor(const int x, // accesses instead anyway). // // Note that with the given group sizes, as well as with blocks in a host group -// stored as row-major, for 1bpe, 16x1 host blocks are stored consecutively with +// stored as row-major, for 1bpb, 16x1 host blocks are stored consecutively with // resolution scaling (even though in guest tiling, only 8x1 blocks are), so // they can be accessed via one 16-byte operation rather than two 8-byte ones. From cec9ca0ef2f1343070e6211478db37d4b4a8ad95 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Sat, 17 Jan 2026 18:09:42 +0300 Subject: [PATCH 4/5] [GPU] 8-bit PWL gamma RT as linear 16-bit UNorm on the host With render target HLE, directly store linear values as R16G16B16A16_UNORM without gamma conversion, as this format provides more than enough bits (need at least 11 per component due to the maximum scale being 2^3 in the piecewise linear gamma curve) to represent linear values without precision loss. This makes blending work correctly in linear space, improving quality of transparency, lighting passes, and fixing issues such as transparent parts of impact and footstep decals in 4D5307E6 being bright instead. The new behavior is enabled by default, as it hugely improves the accuracy of emulation of this format, that is pretty commonplace in Xbox 360 games, with likely just a small GPU memory and bandwidth usage increase, compared to the alternatives that were previously available on the HLE RB path. It's currently implemented only on Direct3D 12, as most of the current GPU emulation code is planned to be phased out and redone, and no methods other than 8-bit with pre-conversion were implemented on Vulkan previously. To implement on Vulkan later, same conversion as in the Direct3D 12 implementation will need to be done in ownership transfer and resolve shaders. Currently it's somewhat inconvenient to decouple the conversion functions in `SpirvShaderTranslator` from an instance of the translator due to vector constant usage. Later, simpler SPIR-V generation functions may be added (`spv::Builder` usage in general is overly verbose). The previously default method (8-bit storage with pre-conversion in shaders and incorrect blending) can be re-enabled by setting the "gamma_render_target_as_unorm16" configuration option to `false`. This may be useful if the game, for instance, switches between 8_8_8_8_GAMMA and 8_8_8_8 formats for the same data frequently, as switching will result in EDRAM range ownership transfer data copying now. Also, the old path is preserved for Vulkan devices not supporting R16G16B16A16_UNORM with blending. The other workaround that was available previously, replacing the PWL encoding with host hardware sRGB with linear-space blending in render target management and in texture fetching, was also inherently inaccurate in many ways (especially when games have their own PWL encoding math, like 4541080F that displayed incorrect colors on the loading screen), and required tracking of the encoding needed for ranges in the memory. The sRGB workaround therefore was deleted in this commit, greatly simplifying the code in the parts of render target, texture and memory management and shader generation that were involved in it. --- .../gpu/d3d12/d3d12_command_processor.cc | 20 +- .../gpu/d3d12/d3d12_render_target_cache.cc | 176 ++++-- .../gpu/d3d12/d3d12_render_target_cache.h | 26 +- src/xenia/gpu/d3d12/d3d12_shared_memory.cc | 2 +- src/xenia/gpu/d3d12/pipeline_cache.cc | 7 +- src/xenia/gpu/dxbc_shader_translator.cc | 100 +-- src/xenia/gpu/dxbc_shader_translator.h | 52 +- src/xenia/gpu/dxbc_shader_translator_fetch.cc | 86 +-- src/xenia/gpu/dxbc_shader_translator_om.cc | 11 +- src/xenia/gpu/render_target_cache.cc | 42 +- src/xenia/gpu/render_target_cache.h | 62 +- .../bytecode/d3d12_5_1/adaptive_quad_hs.h | 593 +++++++++--------- .../bytecode/d3d12_5_1/adaptive_triangle_hs.h | 518 +++++++-------- .../d3d12_5_1/continuous_quad_1cp_hs.h | 471 +++++++------- .../d3d12_5_1/continuous_quad_4cp_hs.h | 449 ++++++------- .../d3d12_5_1/continuous_triangle_1cp_hs.h | 431 ++++++------- .../d3d12_5_1/continuous_triangle_3cp_hs.h | 407 ++++++------ .../bytecode/d3d12_5_1/discrete_quad_1cp_hs.h | 469 +++++++------- .../bytecode/d3d12_5_1/discrete_quad_4cp_hs.h | 449 ++++++------- .../d3d12_5_1/discrete_triangle_1cp_hs.h | 433 ++++++------- .../d3d12_5_1/discrete_triangle_3cp_hs.h | 407 ++++++------ .../d3d12_5_1/tessellation_adaptive_vs.h | 420 +++++++------ .../d3d12_5_1/tessellation_indexed_vs.h | 439 ++++++------- src/xenia/gpu/shaders/xenos_draw.hlsli | 2 +- src/xenia/gpu/shared_memory.cc | 30 +- src/xenia/gpu/shared_memory.h | 11 +- .../gpu/spirv_shader_translator_fetch.cc | 1 - src/xenia/gpu/spirv_shader_translator_rb.cc | 2 +- src/xenia/gpu/texture_cache.cc | 20 +- src/xenia/gpu/texture_cache.h | 26 +- .../gpu/vulkan/vulkan_command_processor.cc | 14 +- .../gpu/vulkan/vulkan_render_target_cache.cc | 74 +-- .../gpu/vulkan/vulkan_render_target_cache.h | 8 +- src/xenia/gpu/vulkan/vulkan_shared_memory.cc | 2 +- 34 files changed, 3072 insertions(+), 3188 deletions(-) diff --git a/src/xenia/gpu/d3d12/d3d12_command_processor.cc b/src/xenia/gpu/d3d12/d3d12_command_processor.cc index b7800e1c8..b5e0edce8 100644 --- a/src/xenia/gpu/d3d12/d3d12_command_processor.cc +++ b/src/xenia/gpu/d3d12/d3d12_command_processor.cc @@ -2203,7 +2203,6 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type, if (host_render_targets_used) { bound_depth_and_color_render_target_bits = render_target_cache_->GetLastUpdateBoundRenderTargets( - render_target_cache_->gamma_render_target_as_srgb(), bound_depth_and_color_render_target_formats); } else { bound_depth_and_color_render_target_bits = 0; @@ -2496,8 +2495,7 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type, // Invalidate textures in memexported memory and watch for changes. for (const draw_util::MemExportRange& memexport_range : memexport_ranges_) { shared_memory_->RangeWrittenByGpu( - memexport_range.base_address_dwords << 2, memexport_range.size_bytes, - false); + memexport_range.base_address_dwords << 2, memexport_range.size_bytes); } if (cvars::d3d12_readback_memexport) { // Read the exported data on the CPU. @@ -3168,7 +3166,8 @@ void D3D12CommandProcessor::UpdateSystemConstantValues( flags |= uint32_t(alpha_test_function) << DxbcShaderTranslator::kSysFlag_AlphaPassIfLess_Shift; // Gamma writing. - if (!render_target_cache_->gamma_render_target_as_srgb()) { + if (!(edram_rov_used || + render_target_cache_->gamma_render_target_as_unorm16())) { for (uint32_t i = 0; i < 4; ++i) { if (color_infos[i].color_format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { @@ -3309,9 +3308,7 @@ void D3D12CommandProcessor::UpdateSystemConstantValues( } // Texture signedness / gamma. - bool gamma_render_target_as_srgb = - render_target_cache_->gamma_render_target_as_srgb(); - uint32_t textures_resolved = 0; + uint32_t textures_resolution_scaled = 0; uint32_t textures_remaining = used_texture_mask; uint32_t texture_index; while (xe::bit_scan_forward(textures_remaining, &texture_index)) { @@ -3327,12 +3324,13 @@ void D3D12CommandProcessor::UpdateSystemConstantValues( dirty |= (texture_signs_uint & texture_signs_mask) != texture_signs_shifted; texture_signs_uint = (texture_signs_uint & ~texture_signs_mask) | texture_signs_shifted; - textures_resolved |= - uint32_t(texture_cache_->IsActiveTextureResolved(texture_index)) + textures_resolution_scaled |= + uint32_t(texture_cache_->IsActiveTextureResolutionScaled(texture_index)) << texture_index; } - dirty |= system_constants_.textures_resolved != textures_resolved; - system_constants_.textures_resolved = textures_resolved; + dirty |= system_constants_.textures_resolution_scaled != + textures_resolution_scaled; + system_constants_.textures_resolution_scaled = textures_resolution_scaled; // Log2 of sample count, for alpha to mask and with ROV, for EDRAM address // calculation with MSAA. diff --git a/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc b/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc index 46f372503..aeee74b43 100644 --- a/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc +++ b/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc @@ -455,7 +455,7 @@ bool D3D12RenderTargetCache::Initialize() { if (path_ == Path::kHostRenderTargets) { // Host render targets. - gamma_render_target_as_srgb_ = cvars::gamma_render_target_as_srgb; + gamma_render_target_as_unorm16_ = cvars::gamma_render_target_as_unorm16; depth_float24_round_ = cvars::depth_float24_round; depth_float24_convert_in_pixel_shader_ = @@ -498,6 +498,17 @@ bool D3D12RenderTargetCache::Initialize() { break; } } + if (msaa_2x_supported_ && gamma_render_target_as_unorm16_) { + multisample_quality_levels.Format = DXGI_FORMAT_R16G16B16A16_UNORM; + multisample_quality_levels.NumQualityLevels = 0; + if (FAILED(device->CheckFeatureSupport( + D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, + &multisample_quality_levels, + sizeof(multisample_quality_levels))) || + !multisample_quality_levels.NumQualityLevels) { + msaa_2x_supported_ = false; + } + } } else { msaa_2x_supported_ = false; } @@ -1013,8 +1024,8 @@ bool D3D12RenderTargetCache::Initialize() { } else if (path_ == Path::kPixelShaderInterlock) { // Pixel shader interlock (rasterizer-ordered view). - // Blending is done in linear space directly in shaders. - gamma_render_target_as_srgb_ = false; + // Piecewise linear gamma is 8-bit with programmable blending. + gamma_render_target_as_unorm16_ = false; // Always true float24 depth rounded to the nearest even. depth_float24_round_ = true; @@ -1774,12 +1785,10 @@ DXGI_FORMAT D3D12RenderTargetCache::GetColorResourceDXGIFormat( // compression. switch (format) { case xenos::ColorRenderTargetFormat::k_8_8_8_8: - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: - if (gamma_render_target_as_srgb_) { - // Can toggle between UNORM and UNORM_SRGB for the same data. - return DXGI_FORMAT_R8G8B8A8_TYPELESS; - } return DXGI_FORMAT_R8G8B8A8_UNORM; + case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: + return gamma_render_target_as_unorm16_ ? DXGI_FORMAT_R16G16B16A16_UNORM + : DXGI_FORMAT_R8G8B8A8_UNORM; case xenos::ColorRenderTargetFormat::k_2_10_10_10: case xenos::ColorRenderTargetFormat::k_2_10_10_10_AS_10_10_10_10: return DXGI_FORMAT_R10G10B10A2_UNORM; @@ -1812,11 +1821,6 @@ DXGI_FORMAT D3D12RenderTargetCache::GetColorResourceDXGIFormat( DXGI_FORMAT D3D12RenderTargetCache::GetColorDrawDXGIFormat( xenos::ColorRenderTargetFormat format) const { switch (format) { - case xenos::ColorRenderTargetFormat::k_8_8_8_8: - return DXGI_FORMAT_R8G8B8A8_UNORM; - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: - return gamma_render_target_as_srgb_ ? DXGI_FORMAT_R8G8B8A8_UNORM_SRGB - : DXGI_FORMAT_R8G8B8A8_UNORM; case xenos::ColorRenderTargetFormat::k_16_16: return DXGI_FORMAT_R16G16_SNORM; case xenos::ColorRenderTargetFormat::k_16_16_16_16: @@ -1910,6 +1914,10 @@ DXGI_FORMAT D3D12RenderTargetCache::GetDepthSRVStencilDXGIFormat( } } +bool D3D12RenderTargetCache::IsGammaFormatHostStorageSeparate() const { + return gamma_render_target_as_unorm16_; +} + RenderTargetCache::RenderTarget* D3D12RenderTargetCache::CreateRenderTarget( RenderTargetKey key) { ID3D12Device* device = command_processor_.GetD3D12Provider().GetDevice(); @@ -1990,7 +1998,6 @@ RenderTargetCache::RenderTarget* D3D12RenderTargetCache::CreateRenderTarget( } D3D12_CPU_DESCRIPTOR_HANDLE descriptor_draw_handle = descriptor_draw.GetHandle(); - ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_draw_srgb; ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_load_separate; ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_srv_stencil; D3D12_SHADER_RESOURCE_VIEW_DESC srv_desc; @@ -2049,23 +2056,6 @@ RenderTargetCache::RenderTarget* D3D12RenderTargetCache::CreateRenderTarget( } device->CreateRenderTargetView(resource.Get(), &rtv_desc, descriptor_draw_handle); - // sRGB drawing RTV. - switch (key.GetColorFormat()) { - case xenos::ColorRenderTargetFormat::k_8_8_8_8: - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: - if (gamma_render_target_as_srgb_) { - descriptor_draw_srgb = descriptor_pool.AllocateDescriptor(); - if (!descriptor_draw_srgb.IsValid()) { - return nullptr; - } - rtv_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB; - device->CreateRenderTargetView(resource.Get(), &rtv_desc, - descriptor_draw_srgb.GetHandle()); - } - break; - default: - break; - } // Ownership transfer RTV. DXGI_FORMAT load_format = GetColorOwnershipTransferDXGIFormat(key.GetColorFormat()); @@ -2086,9 +2076,8 @@ RenderTargetCache::RenderTarget* D3D12RenderTargetCache::CreateRenderTarget( return new D3D12RenderTarget( key, resource.Get(), std::move(descriptor_draw), - std::move(descriptor_draw_srgb), std::move(descriptor_load_separate), - std::move(descriptor_srv), std::move(descriptor_srv_stencil), - resource_state); + std::move(descriptor_load_separate), std::move(descriptor_srv), + std::move(descriptor_srv_stencil), resource_state); } bool D3D12RenderTargetCache::IsHostDepthEncodingDifferent( @@ -3429,15 +3418,25 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { if (dest_is_64bpp) { // Handle construction of 64bpp color, either from two 32-bit samples in r0 - // and r1, or from one 64bpp sample in r1. Using r2.x as temporary when + // and r1, or from one 64bpp sample in r1. Using r2.xy as temporary when // needed. // If color_packed_in_r0x_and_r1x, use the generic path for combining two // 32-bit samples - as raw in r0.x and r1.x - into the destination. bool color_packed_in_r0x_and_r1x = false; if (source_is_color) { switch (source_color_format) { - case xenos::ColorRenderTargetFormat::k_8_8_8_8: case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + // 8_8_8_8_GAMMA is represented by linear stored in + // R16G16B16A16_UNORM. + for (uint32_t i = 0; i < 2; ++i) { + for (uint32_t j = 0; j < 3; ++j) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma(a, i, j, i, j, + 2, 0, 2, 1); + } + } + } + [[fallthrough]]; + case xenos::ColorRenderTargetFormat::k_8_8_8_8: { color_packed_in_r0x_and_r1x = true; for (uint32_t i = 0; i < 2; ++i) { a.OpMAd(dxbc::Dest::R(i), dxbc::Src::R(i), dxbc::Src::LF(255.0f), @@ -3588,7 +3587,14 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { switch (source_color_format) { case xenos::ColorRenderTargetFormat::k_8_8_8_8: case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + // 8_8_8_8_GAMMA is represented by linear stored in + // R16G16B16A16_UNORM. if (dest_is_stencil_bit) { + if (source_color_format == + xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma(a, 1, 0, 1, 0, + 2, 0, 2, 1); + } a.OpMAd(dxbc::Dest::R(1, 0b0001), dxbc::Src::R(1, dxbc::Src::kXXXX), dxbc::Src::LF(255.0f), dxbc::Src::LF(0.5f)); a.OpFToU(dxbc::Dest::R(1, 0b0001), @@ -3598,9 +3604,30 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { xenos::ColorRenderTargetFormat::k_8_8_8_8 || dest_color_format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA)) { - // Same format - passthrough. + // Same format - only perform color space conversion. + if (dest_color_format != source_color_format) { + if (dest_color_format == + xenos::ColorRenderTargetFormat::k_8_8_8_8) { + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma( + a, 1, i, 1, i, 2, 0, 2, 1); + } + } else { + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PWLGammaToLinear(a, 1, i, 1, i, true, 2, + 0, 2, 1); + } + } + } a.OpMov(dxbc::Dest::O(0), dxbc::Src::R(1)); } else if (mode.output == TransferOutput::kDepth) { + if (source_color_format == + xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { + for (uint32_t i = 1; i < 3; ++i) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma( + a, 1, i, 1, i, 2, 0, 2, 1); + } + } // When need only depth, not stencil, skip the red component. a.OpMAd(dxbc::Dest::R( 1, osgn_parameter_index_sv_stencil_ref != UINT32_MAX @@ -3625,6 +3652,10 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { dxbc::Src::R(1, dxbc::Src::kYYYY)); } else { color_packed_in_r1x = true; + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma(a, 1, i, 1, i, + 2, 0, 2, 1); + } a.OpMAd(dxbc::Dest::R(1), dxbc::Src::R(1), dxbc::Src::LF(255.0f), dxbc::Src::LF(0.5f)); a.OpFToU(dxbc::Dest::R(1), dxbc::Src::R(1)); @@ -3768,8 +3799,7 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { // this is the end of the shader. if (color_packed_in_r1x) { switch (dest_color_format) { - case xenos::ColorRenderTargetFormat::k_8_8_8_8: - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + case xenos::ColorRenderTargetFormat::k_8_8_8_8: { a.OpUBFE(dxbc::Dest::R(1), dxbc::Src::LU(8), dxbc::Src::LU(0, 8, 16, 24), dxbc::Src::R(1, dxbc::Src::kXXXX)); @@ -3777,6 +3807,26 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { a.OpMul(dxbc::Dest::O(0), dxbc::Src::R(1), dxbc::Src::LF(1.0f / 255.0f)); } break; + case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + // 8_8_8_8_GAMMA is represented by linear stored in + // R16G16B16A16_UNORM. + a.OpUBFE(dxbc::Dest::R(1), dxbc::Src::LU(8), + dxbc::Src::LU(0, 8, 16, 24), + dxbc::Src::R(1, dxbc::Src::kXXXX)); + a.OpUToF(dxbc::Dest::R(1), dxbc::Src::R(1)); + a.OpMul(dxbc::Dest::R(1, 0b0111), dxbc::Src::R(1), + dxbc::Src::LF(1.0f / 255.0f)); + a.OpMul(dxbc::Dest::O(0, 0b1000), dxbc::Src::R(1), + dxbc::Src::LF(1.0f / 255.0f)); + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PWLGammaToLinear(a, 1, i, 1, i, true, 0, + 0, 0, 1); + } + // TODO(Triang3l): The `mov` can be eliminated by passing the + // destination to `PWLGammaToLinear` as `dxbc::Dest` rather than + // just the register index. + a.OpMov(dxbc::Dest::O(0, 0b0111), dxbc::Src::R(1)); + } break; case xenos::ColorRenderTargetFormat::k_2_10_10_10: case xenos::ColorRenderTargetFormat::k_2_10_10_10_AS_10_10_10_10: { a.OpUBFE(dxbc::Dest::R(1), dxbc::Src::LU(10, 10, 10, 2), @@ -5357,13 +5407,24 @@ void D3D12RenderTargetCache::PerformTransfersAndResolveClears( float color_clear_value[4] = {}; bool clear_via_drawing = false; switch (dest_rt_key.GetColorFormat()) { - case xenos::ColorRenderTargetFormat::k_8_8_8_8: - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + case xenos::ColorRenderTargetFormat::k_8_8_8_8: { for (uint32_t j = 0; j < 4; ++j) { color_clear_value[j] = ((clear_value >> (j * 8)) & 0xFF) * (1.0f / 0xFF); } } break; + case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: { + // 8_8_8_8_GAMMA is represented by linear stored in + // R16G16B16A16_UNORM. + for (uint32_t j = 0; j < 4; ++j) { + color_clear_value[j] = + ((clear_value >> (j * 8)) & 0xFF) * (1.0f / 0xFF); + } + for (uint32_t j = 0; j < 3; ++j) { + color_clear_value[j] = + xenos::PWLGammaToLinear(color_clear_value[j]); + } + } break; case xenos::ColorRenderTargetFormat::k_2_10_10_10: case xenos::ColorRenderTargetFormat::k_2_10_10_10_AS_10_10_10_10: { for (uint32_t j = 0; j < 3; ++j) { @@ -5500,17 +5561,6 @@ void D3D12RenderTargetCache::SetCommandListRenderTargets( sizeof(current_command_list_render_targets_))) { are_current_command_list_render_targets_valid_ = false; } - uint32_t render_targets_are_srgb; - if (gamma_render_target_as_srgb_) { - render_targets_are_srgb = last_update_accumulated_color_targets_are_gamma(); - if (are_current_command_list_render_targets_srgb_ != - render_targets_are_srgb) { - are_current_command_list_render_targets_srgb_ = render_targets_are_srgb; - are_current_command_list_render_targets_valid_ = false; - } - } else { - render_targets_are_srgb = 0; - } if (!are_current_command_list_render_targets_valid_) { std::memcpy(current_command_list_render_targets_, depth_and_color_render_targets, @@ -5537,10 +5587,7 @@ void D3D12RenderTargetCache::SetCommandListRenderTargets( : null_rtv_descriptor_ss_.GetHandle(); } auto& d3d12_rt = *static_cast(render_target); - rtv_handles[rtv_count++] = - (render_targets_are_srgb & (uint32_t(1) << i)) - ? d3d12_rt.descriptor_draw_srgb().GetHandle() - : d3d12_rt.descriptor_draw().GetHandle(); + rtv_handles[rtv_count++] = d3d12_rt.descriptor_draw().GetHandle(); } command_processor_.GetDeferredCommandList().D3DOMSetRenderTargets( rtv_count, rtv_handles, FALSE, @@ -6227,7 +6274,6 @@ ID3D12PipelineState* D3D12RenderTargetCache::GetOrCreateDumpPipeline( } else { switch (key.GetColorFormat()) { case xenos::ColorRenderTargetFormat::k_8_8_8_8: - case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: if (!source_is_uint) { a.OpMAd(dxbc::Dest::R(1), dxbc::Src::R(1), dxbc::Src::LF(255.0f), dxbc::Src::LF(0.5f)); @@ -6239,6 +6285,22 @@ ID3D12PipelineState* D3D12RenderTargetCache::GetOrCreateDumpPipeline( dxbc::Src::R(1, dxbc::Src::kXXXX)); } break; + case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: + // 8_8_8_8_GAMMA is represented by linear stored in R16G16B16A16_UNORM. + assert_false(source_is_uint); + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma(a, 1, i, 1, i, 0, + 0, 0, 1); + } + a.OpMAd(dxbc::Dest::R(1), dxbc::Src::R(1), dxbc::Src::LF(255.0f), + dxbc::Src::LF(0.5f)); + a.OpFToU(dxbc::Dest::R(1), dxbc::Src::R(1)); + for (uint32_t i = 1; i < 4; ++i) { + a.OpBFI(dxbc::Dest::R(1, 0b0001), dxbc::Src::LU(8), + dxbc::Src::LU(i * 8), dxbc::Src::R(1).Select(i), + dxbc::Src::R(1, dxbc::Src::kXXXX)); + } + break; case xenos::ColorRenderTargetFormat::k_2_10_10_10: case xenos::ColorRenderTargetFormat::k_2_10_10_10_AS_10_10_10_10: if (!source_is_uint) { diff --git a/src/xenia/gpu/d3d12/d3d12_render_target_cache.h b/src/xenia/gpu/d3d12/d3d12_render_target_cache.h index d89e28e71..3a5dbaeb0 100644 --- a/src/xenia/gpu/d3d12/d3d12_render_target_cache.h +++ b/src/xenia/gpu/d3d12/d3d12_render_target_cache.h @@ -95,8 +95,8 @@ class D3D12RenderTargetCache final : public RenderTargetCache { // For host render targets. - bool gamma_render_target_as_srgb() const { - return gamma_render_target_as_srgb_; + bool gamma_render_target_as_unorm16() const { + return gamma_render_target_as_unorm16_; } // Using R16G16[B16A16]_SNORM, which are -1...1, not the needed -32...32. @@ -129,6 +129,8 @@ class D3D12RenderTargetCache final : public RenderTargetCache { xenos::DepthRenderTargetFormat format); protected: + bool IsGammaFormatHostStorageSeparate() const override; + uint32_t GetMaxRenderTargetWidth() const override { return D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION; } @@ -225,16 +227,13 @@ class D3D12RenderTargetCache final : public RenderTargetCache { class D3D12RenderTarget final : public RenderTarget { public: - // descriptor_draw_srgb is only used for k_8_8_8_8 render targets when host - // sRGB (gamma_render_target_as_srgb) is used. descriptor_load is present - // when the DXGI formats are different for drawing and bit-exact loading - // (for NaN pattern preservation across EDRAM tile ownership transfers in - // floating-point formats, and to distinguish between two -1 representations - // in snorm formats). + // descriptor_load is present when the DXGI formats are different for + // drawing and bit-exact loading (for NaN pattern preservation across EDRAM + // tile ownership transfers in floating-point formats, and to distinguish + // between two -1 representations in snorm formats). D3D12RenderTarget( RenderTargetKey key, ID3D12Resource* resource, ui::d3d12::D3D12CpuDescriptorPool::Descriptor&& descriptor_draw, - ui::d3d12::D3D12CpuDescriptorPool::Descriptor&& descriptor_draw_srgb, ui::d3d12::D3D12CpuDescriptorPool::Descriptor&& descriptor_load_separate, ui::d3d12::D3D12CpuDescriptorPool::Descriptor&& descriptor_srv, @@ -243,7 +242,6 @@ class D3D12RenderTargetCache final : public RenderTargetCache { : RenderTarget(key), resource_(resource), descriptor_draw_(std::move(descriptor_draw)), - descriptor_draw_srgb_(std::move(descriptor_draw_srgb)), descriptor_load_separate_(std::move(descriptor_load_separate)), descriptor_srv_(std::move(descriptor_srv)), descriptor_srv_stencil_(std::move(descriptor_srv_stencil)), @@ -254,10 +252,6 @@ class D3D12RenderTargetCache final : public RenderTargetCache { const { return descriptor_draw_; } - const ui::d3d12::D3D12CpuDescriptorPool::Descriptor& descriptor_draw_srgb() - const { - return descriptor_draw_srgb_; - } const ui::d3d12::D3D12CpuDescriptorPool::Descriptor& descriptor_srv() const { return descriptor_srv_; @@ -297,7 +291,6 @@ class D3D12RenderTargetCache final : public RenderTargetCache { private: Microsoft::WRL::ComPtr resource_; ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_draw_; - ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_draw_srgb_; ui::d3d12::D3D12CpuDescriptorPool::Descriptor descriptor_load_separate_; // Texture SRV non-shader-visible descriptors, to prepare shader-visible // descriptors faster, by copying rather than by creating every time. @@ -718,7 +711,7 @@ class D3D12RenderTargetCache final : public RenderTargetCache { bool use_stencil_reference_output_ = false; - bool gamma_render_target_as_srgb_ = false; + bool gamma_render_target_as_unorm16_ = false; bool depth_float24_round_ = false; bool depth_float24_convert_in_pixel_shader_ = false; @@ -753,7 +746,6 @@ class D3D12RenderTargetCache final : public RenderTargetCache { const RenderTarget* const* current_command_list_render_targets_[1 + xenos::kMaxColorRenderTargets]; - uint32_t are_current_command_list_render_targets_srgb_ = 0; bool are_current_command_list_render_targets_valid_ = false; // Temporary storage for descriptors used in PerformTransfersAndResolveClears diff --git a/src/xenia/gpu/d3d12/d3d12_shared_memory.cc b/src/xenia/gpu/d3d12/d3d12_shared_memory.cc index e946a3319..99cf51d1b 100644 --- a/src/xenia/gpu/d3d12/d3d12_shared_memory.cc +++ b/src/xenia/gpu/d3d12/d3d12_shared_memory.cc @@ -431,7 +431,7 @@ bool D3D12SharedMemory::UploadRanges( return false; } MakeRangeValid(upload_range_start << page_size_log2(), - uint32_t(upload_buffer_size), false, false); + uint32_t(upload_buffer_size), false); std::memcpy( upload_buffer_mapping, memory().TranslatePhysical(upload_range_start << page_size_log2()), diff --git a/src/xenia/gpu/d3d12/pipeline_cache.cc b/src/xenia/gpu/d3d12/pipeline_cache.cc index ec7c0b249..a81b19675 100644 --- a/src/xenia/gpu/d3d12/pipeline_cache.cc +++ b/src/xenia/gpu/d3d12/pipeline_cache.cc @@ -100,7 +100,8 @@ PipelineCache::PipelineCache(D3D12CommandProcessor& command_processor, shader_translator_ = std::make_unique( provider.GetAdapterVendorID(), bindless_resources_used_, edram_rov_used, - render_target_cache_.gamma_render_target_as_srgb(), + !(edram_rov_used || + render_target_cache_.gamma_render_target_as_unorm16()), render_target_cache_.msaa_2x_supported(), render_target_cache_.draw_resolution_scale_x(), render_target_cache_.draw_resolution_scale_y(), @@ -393,7 +394,9 @@ void PipelineCache::InitializeShaderStorage( StringBuffer ucode_disasm_buffer; DxbcShaderTranslator translator( provider.GetAdapterVendorID(), bindless_resources_used_, - edram_rov_used, render_target_cache_.gamma_render_target_as_srgb(), + edram_rov_used, + !(edram_rov_used || + render_target_cache_.gamma_render_target_as_unorm16()), render_target_cache_.msaa_2x_supported(), render_target_cache_.draw_resolution_scale_x(), render_target_cache_.draw_resolution_scale_y(), diff --git a/src/xenia/gpu/dxbc_shader_translator.cc b/src/xenia/gpu/dxbc_shader_translator.cc index 12a0d02b0..96b7759e6 100644 --- a/src/xenia/gpu/dxbc_shader_translator.cc +++ b/src/xenia/gpu/dxbc_shader_translator.cc @@ -68,7 +68,7 @@ using namespace ucode; DxbcShaderTranslator::DxbcShaderTranslator( ui::GraphicsProvider::GpuVendorID vendor_id, bool bindless_resources_used, - bool edram_rov_used, bool gamma_render_target_as_srgb, + bool edram_rov_used, bool gamma_render_target_as_unorm8, bool msaa_2x_supported, uint32_t draw_resolution_scale_x, uint32_t draw_resolution_scale_y, bool force_emit_source_map) : a_(shader_code_, statistics_), @@ -76,7 +76,7 @@ DxbcShaderTranslator::DxbcShaderTranslator( vendor_id_(vendor_id), bindless_resources_used_(bindless_resources_used), edram_rov_used_(edram_rov_used), - gamma_render_target_as_srgb_(gamma_render_target_as_srgb), + gamma_render_target_as_unorm8_(gamma_render_target_as_unorm8), msaa_2x_supported_(msaa_2x_supported), draw_resolution_scale_x_(draw_resolution_scale_x), draw_resolution_scale_y_(draw_resolution_scale_y), @@ -223,9 +223,10 @@ void DxbcShaderTranslator::PopSystemTemp(uint32_t count) { } void DxbcShaderTranslator::PWLGammaToLinear( - uint32_t target_temp, uint32_t target_temp_component, uint32_t source_temp, - uint32_t source_temp_component, bool source_pre_saturated, uint32_t temp1, - uint32_t temp1_component, uint32_t temp2, uint32_t temp2_component) { + dxbc::Assembler& a, uint32_t target_temp, uint32_t target_temp_component, + uint32_t source_temp, uint32_t source_temp_component, + bool source_pre_saturated, uint32_t temp1, uint32_t temp1_component, + uint32_t temp2, uint32_t temp2_component) { // The source is needed only once to begin building the result, so it can be // the same as the destination. assert_true(temp1 != target_temp || temp1_component != target_temp_component); @@ -246,25 +247,25 @@ void DxbcShaderTranslator::PWLGammaToLinear( // Using `source >= threshold` comparisons because the input might have not // been saturated yet, and thus it may be NaN - since it will be saturated to // 0 later, the 0...64/255 case should be selected for it. - a_.OpGE(temp2_dest, source_src, dxbc::Src::LF(96.0f / 255.0f)); - a_.OpIf(true, temp2_src); + a.OpGE(temp2_dest, source_src, dxbc::Src::LF(96.0f / 255.0f)); + a.OpIf(true, temp2_src); // [96/255 ... 1 - a_.OpGE(temp2_dest, source_src, dxbc::Src::LF(192.0f / 255.0f)); - a_.OpMovC(temp1_dest, temp2_src, dxbc::Src::LF(8.0f / 1024.0f), - dxbc::Src::LF(4.0f / 1024.0f)); - a_.OpMovC(temp2_dest, temp2_src, dxbc::Src::LF(-1024.0f), - dxbc::Src::LF(-256.0f)); - a_.OpElse(); + a.OpGE(temp2_dest, source_src, dxbc::Src::LF(192.0f / 255.0f)); + a.OpMovC(temp1_dest, temp2_src, dxbc::Src::LF(8.0f / 1024.0f), + dxbc::Src::LF(4.0f / 1024.0f)); + a.OpMovC(temp2_dest, temp2_src, dxbc::Src::LF(-1024.0f), + dxbc::Src::LF(-256.0f)); + a.OpElse(); // 0 ... 96/255) - a_.OpGE(temp2_dest, source_src, dxbc::Src::LF(64.0f / 255.0f)); - a_.OpMovC(temp1_dest, temp2_src, dxbc::Src::LF(2.0f / 1024.0f), - dxbc::Src::LF(1.0f / 1024.0f)); - a_.OpMovC(temp2_dest, temp2_src, dxbc::Src::LF(-64.0f), dxbc::Src::LF(0.0f)); - a_.OpEndIf(); + a.OpGE(temp2_dest, source_src, dxbc::Src::LF(64.0f / 255.0f)); + a.OpMovC(temp1_dest, temp2_src, dxbc::Src::LF(2.0f / 1024.0f), + dxbc::Src::LF(1.0f / 1024.0f)); + a.OpMovC(temp2_dest, temp2_src, dxbc::Src::LF(-64.0f), dxbc::Src::LF(0.0f)); + a.OpEndIf(); if (!source_pre_saturated) { // Saturate the input, and flush NaN to 0. - a_.OpMov(target_dest, source_src, true); + a.OpMov(target_dest, source_src, true); } // linear = gamma * (255 * 1024) * scale + offset // As both 1024 and the scale are powers of 2, and 1024 * scale is not smaller @@ -273,22 +274,22 @@ void DxbcShaderTranslator::PWLGammaToLinear( // gamma * (255 * 1024 * scale) - or the option chosen here, as long as // 1024 is applied before the scale since the scale is < 1 (specifically at // least 1/1024), and it may make very small values denormal. - a_.OpMul(target_dest, source_pre_saturated ? source_src : target_src, - dxbc::Src::LF(255.0f * 1024.0f)); - a_.OpMAd(target_dest, target_src, temp1_src, temp2_src); + a.OpMul(target_dest, source_pre_saturated ? source_src : target_src, + dxbc::Src::LF(255.0f * 1024.0f)); + a.OpMAd(target_dest, target_src, temp1_src, temp2_src); // linear += trunc(linear * scale) - a_.OpMul(temp1_dest, target_src, temp1_src); - a_.OpRoundZ(temp1_dest, temp1_src); - a_.OpAdd(target_dest, target_src, temp1_src); + a.OpMul(temp1_dest, target_src, temp1_src); + a.OpRoundZ(temp1_dest, temp1_src); + a.OpAdd(target_dest, target_src, temp1_src); // linear *= 1/1023 - a_.OpMul(target_dest, target_src, dxbc::Src::LF(1.0f / 1023.0f)); + a.OpMul(target_dest, target_src, dxbc::Src::LF(1.0f / 1023.0f)); } void DxbcShaderTranslator::PreSaturatedLinearToPWLGamma( - uint32_t target_temp, uint32_t target_temp_component, uint32_t source_temp, - uint32_t source_temp_component, uint32_t temp_or_target, - uint32_t temp_or_target_component, uint32_t temp_non_target, - uint32_t temp_non_target_component) { + dxbc::Assembler& a, uint32_t target_temp, uint32_t target_temp_component, + uint32_t source_temp, uint32_t source_temp_component, + uint32_t temp_or_target, uint32_t temp_or_target_component, + uint32_t temp_non_target, uint32_t temp_non_target_component) { // The source may be the same as the target, but in this case it can't also be // used as a temporary variable. assert_true(target_temp != source_temp || @@ -318,28 +319,28 @@ void DxbcShaderTranslator::PreSaturatedLinearToPWLGamma( // Get the scale (into temp_or_target) and the offset (into temp_non_target) // for the piece. - a_.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(128.0f / 1023.0f)); - a_.OpIf(true, temp_non_target_src); + a.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(128.0f / 1023.0f)); + a.OpIf(true, temp_non_target_src); // [128/1023 ... 1 - a_.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(512.0f / 1023.0f)); - a_.OpMovC(temp_or_target_dest, temp_non_target_src, - dxbc::Src::LF(1023.0f / 8.0f), dxbc::Src::LF(1023.0f / 4.0f)); - a_.OpMovC(temp_non_target_dest, temp_non_target_src, - dxbc::Src::LF(128.0f / 255.0f), dxbc::Src::LF(64.0f / 255.0f)); - a_.OpElse(); + a.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(512.0f / 1023.0f)); + a.OpMovC(temp_or_target_dest, temp_non_target_src, + dxbc::Src::LF(1023.0f / 8.0f), dxbc::Src::LF(1023.0f / 4.0f)); + a.OpMovC(temp_non_target_dest, temp_non_target_src, + dxbc::Src::LF(128.0f / 255.0f), dxbc::Src::LF(64.0f / 255.0f)); + a.OpElse(); // 0 ... 128/1023) - a_.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(64.0f / 1023.0f)); - a_.OpMovC(temp_or_target_dest, temp_non_target_src, - dxbc::Src::LF(1023.0f / 2.0f), dxbc::Src::LF(1023.0f)); - a_.OpMovC(temp_non_target_dest, temp_non_target_src, - dxbc::Src::LF(32.0f / 255.0f), dxbc::Src::LF(0.0f)); - a_.OpEndIf(); + a.OpGE(temp_non_target_dest, source_src, dxbc::Src::LF(64.0f / 1023.0f)); + a.OpMovC(temp_or_target_dest, temp_non_target_src, + dxbc::Src::LF(1023.0f / 2.0f), dxbc::Src::LF(1023.0f)); + a.OpMovC(temp_non_target_dest, temp_non_target_src, + dxbc::Src::LF(32.0f / 255.0f), dxbc::Src::LF(0.0f)); + a.OpEndIf(); // gamma = trunc(linear * scale) * (1.0 / 255.0) + offset - a_.OpMul(target_dest, source_src, temp_or_target_src); - a_.OpRoundZ(target_dest, target_src); - a_.OpMAd(target_dest, target_src, dxbc::Src::LF(1.0f / 255.0f), - temp_non_target_src); + a.OpMul(target_dest, source_src, temp_or_target_src); + a.OpRoundZ(target_dest, target_src); + a.OpMAd(target_dest, target_src, dxbc::Src::LF(1.0f / 255.0f), + temp_non_target_src); } void DxbcShaderTranslator::RemapAndConvertVertexIndices( @@ -2136,7 +2137,8 @@ const DxbcShaderTranslator::SystemConstantRdef {"xe_texture_swizzled_signs", ShaderRdefTypeIndex::kUint4Array2, sizeof(uint32_t) * 4 * 2}, - {"xe_textures_resolved", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)}, + {"xe_textures_resolution_scaled", ShaderRdefTypeIndex::kUint, + sizeof(uint32_t)}, {"xe_sample_count_log2", ShaderRdefTypeIndex::kUint2, sizeof(uint32_t) * 2}, {"xe_alpha_test_reference", ShaderRdefTypeIndex::kFloat, sizeof(float)}, diff --git a/src/xenia/gpu/dxbc_shader_translator.h b/src/xenia/gpu/dxbc_shader_translator.h index 20fbdd328..23db4ec09 100644 --- a/src/xenia/gpu/dxbc_shader_translator.h +++ b/src/xenia/gpu/dxbc_shader_translator.h @@ -49,7 +49,7 @@ class DxbcShaderTranslator : public ShaderTranslator { public: DxbcShaderTranslator(ui::GraphicsProvider::GpuVendorID vendor_id, bool bindless_resources_used, bool edram_rov_used, - bool gamma_render_target_as_srgb = false, + bool gamma_render_target_as_unorm8 = false, bool msaa_2x_supported = true, uint32_t draw_resolution_scale_x = 1, uint32_t draw_resolution_scale_y = 1, @@ -310,9 +310,8 @@ class DxbcShaderTranslator : public ShaderTranslator { // components of each of the 32 used texture fetch constants. uint32_t texture_swizzled_signs[8]; - // Whether the contents of each texture in fetch constants comes from a - // resolve operation. - uint32_t textures_resolved; + // Whether each texture in fetch constants contains resolution-scaled data. + uint32_t textures_resolution_scaled; // Log2 of X and Y sample size. Used for alpha to mask, and for MSAA with // ROV, this is used for EDRAM address calculation. uint32_t sample_count_log2[2]; @@ -419,7 +418,7 @@ class DxbcShaderTranslator : public ShaderTranslator { kTextureSwizzledSigns, - kTexturesResolved, + kTexturesResolutionScaled, kSampleCountLog2, kAlphaTestReference, @@ -572,6 +571,26 @@ class DxbcShaderTranslator : public ShaderTranslator { uint32_t temp2_temp_component, bool remap_to_0_to_0_5); + // Converts one scalar from piecewise linear gamma to linear. The target may + // be the same as the source, the temporary variables must be different. If + // the source is not pre-saturated, saturation will be done internally. + static void PWLGammaToLinear(dxbc::Assembler& a, uint32_t target_temp, + uint32_t target_temp_component, + uint32_t source_temp, + uint32_t source_temp_component, + bool source_pre_saturated, uint32_t temp1, + uint32_t temp1_component, uint32_t temp2, + uint32_t temp2_component); + // Converts one scalar, which must be saturated before calling this function, + // from linear to piecewise linear gamma. The target may be the same as either + // the source or as temp_or_target, but not as both (and temp_or_target may + // not be the same as the source). temp_non_target must be different. + static void PreSaturatedLinearToPWLGamma( + dxbc::Assembler& a, uint32_t target_temp, uint32_t target_temp_component, + uint32_t source_temp, uint32_t source_temp_component, + uint32_t temp_or_target, uint32_t temp_or_target_component, + uint32_t temp_non_target, uint32_t temp_non_target_component); + protected: void Reset() override; @@ -683,24 +702,6 @@ class DxbcShaderTranslator : public ShaderTranslator { // inactive. void ExportToMemory(uint8_t export_eM); - // Converts one scalar from piecewise linear gamma to linear. The target may - // be the same as the source, the temporary variables must be different. If - // the source is not pre-saturated, saturation will be done internally. - void PWLGammaToLinear(uint32_t target_temp, uint32_t target_temp_component, - uint32_t source_temp, uint32_t source_temp_component, - bool source_pre_saturated, uint32_t temp1, - uint32_t temp1_component, uint32_t temp2, - uint32_t temp2_component); - // Converts one scalar, which must be saturated before calling this function, - // from linear to piecewise linear gamma. The target may be the same as either - // the source or as temp_or_target, but not as both (and temp_or_target may - // not be the same as the source). temp_non_target must be different. - void PreSaturatedLinearToPWLGamma( - uint32_t target_temp, uint32_t target_temp_component, - uint32_t source_temp, uint32_t source_temp_component, - uint32_t temp_or_target, uint32_t temp_or_target_component, - uint32_t temp_non_target, uint32_t temp_non_target_component); - bool IsSampleRate() const { assert_true(is_pixel_shader()); return DSV_IsWritingFloat24Depth() && !current_shader().writes_depth(); @@ -971,8 +972,9 @@ class DxbcShaderTranslator : public ShaderTranslator { bool edram_rov_used_; // Whether with RTV-based output-merger, k_8_8_8_8_GAMMA render targets are - // represented as host sRGB. - bool gamma_render_target_as_srgb_; + // represented as host 8-bit unsigned normalized, and require conversion in + // translated shaders. + bool gamma_render_target_as_unorm8_; // Whether 2x MSAA is emulated using real 2x MSAA rather than two samples of // 4x MSAA. diff --git a/src/xenia/gpu/dxbc_shader_translator_fetch.cc b/src/xenia/gpu/dxbc_shader_translator_fetch.cc index 7716c4a26..64ee66b9b 100644 --- a/src/xenia/gpu/dxbc_shader_translator_fetch.cc +++ b/src/xenia/gpu/dxbc_shader_translator_fetch.cc @@ -977,16 +977,17 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction( coord_src = dxbc::Src::R(system_temp_result_); } // Using system_temp_result_.w as a temporary for the flag indicating - // whether the texture was resolved - not involved in coordinate + // whether the texture is resolution-scaled - not involved in coordinate // calculations. assert_zero(used_result_nonzero_components & 0b1000); a_.OpAnd(dxbc::Dest::R(system_temp_result_, 0b1000), - LoadSystemConstant(SystemConstants::Index::kTexturesResolved, - offsetof(SystemConstants, textures_resolved), - dxbc::Src::kXXXX), + LoadSystemConstant( + SystemConstants::Index::kTexturesResolutionScaled, + offsetof(SystemConstants, textures_resolution_scaled), + dxbc::Src::kXXXX), dxbc::Src::LU(uint32_t(1) << tfetch_index)); a_.OpIf(true, dxbc::Src::R(system_temp_result_, dxbc::Src::kWWWW)); - // The texture is resolved - scale the coordinates and the size. + // The texture is resolution-scaled - scale the coordinates and the size. dxbc::Src resolution_scale_src( dxbc::Src::LF(float(draw_resolution_scale_x_), float(draw_resolution_scale_y_), 1.0f, 1.0f)); @@ -1103,12 +1104,12 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction( if (normalized_components_with_scaled_offsets) { // Using coord_and_sampler_temp.w as a temporary for the needed // resolution scale inverse - sampler not loaded yet. - a_.OpAnd( - dxbc::Dest::R(coord_and_sampler_temp, 0b1000), - LoadSystemConstant(SystemConstants::Index::kTexturesResolved, - offsetof(SystemConstants, textures_resolved), - dxbc::Src::kXXXX), - dxbc::Src::LU(uint32_t(1) << tfetch_index)); + a_.OpAnd(dxbc::Dest::R(coord_and_sampler_temp, 0b1000), + LoadSystemConstant( + SystemConstants::Index::kTexturesResolutionScaled, + offsetof(SystemConstants, textures_resolution_scaled), + dxbc::Src::kXXXX), + dxbc::Src::LU(uint32_t(1) << tfetch_index)); a_.OpIf(true, dxbc::Src::R(coord_and_sampler_temp, dxbc::Src::kWWWW)); a_.OpAdd( dxbc::Dest::R(coord_and_sampler_temp, @@ -1172,12 +1173,12 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction( if (normalized_components_with_scaled_offsets) { // Using coord_and_sampler_temp.w as a temporary for the needed // resolution scale inverse - sampler not loaded yet. - a_.OpAnd( - dxbc::Dest::R(coord_and_sampler_temp, 0b1000), - LoadSystemConstant(SystemConstants::Index::kTexturesResolved, - offsetof(SystemConstants, textures_resolved), - dxbc::Src::kXXXX), - dxbc::Src::LU(uint32_t(1) << tfetch_index)); + a_.OpAnd(dxbc::Dest::R(coord_and_sampler_temp, 0b1000), + LoadSystemConstant( + SystemConstants::Index::kTexturesResolutionScaled, + offsetof(SystemConstants, textures_resolution_scaled), + dxbc::Src::kXXXX), + dxbc::Src::LU(uint32_t(1) << tfetch_index)); a_.OpIf(true, dxbc::Src::R(coord_and_sampler_temp, dxbc::Src::kWWWW)); a_.OpMAd(dxbc::Dest::R(coord_and_sampler_temp, normalized_components_with_scaled_offsets), @@ -2090,56 +2091,9 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction( a_.OpBreak(); a_.OpCase(dxbc::Src::LU(uint32_t(xenos::TextureSign::kGamma))); uint32_t gamma_temp = PushSystemTemp(); - if (gamma_render_target_as_srgb_) { - // Check if the texture has sRGB rather that piecewise linear gamma. - // More likely that it's just a texture with PWL, put this case in the - // `if`, with `else` for sRGB resolved render targets. - a_.OpAnd( - dxbc::Dest::R(gamma_temp, 0b0001), - LoadSystemConstant(SystemConstants::Index::kTexturesResolved, - offsetof(SystemConstants, textures_resolved), - dxbc::Src::kXXXX), - dxbc::Src::LU(uint32_t(1) << tfetch_index)); - a_.OpIf(false, dxbc::Src::R(gamma_temp, dxbc::Src::kXXXX)); - } // Convert from piecewise linear. - PWLGammaToLinear(system_temp_result_, i, system_temp_result_, i, false, - gamma_temp, 0, gamma_temp, 1); - if (gamma_render_target_as_srgb_) { - a_.OpElse(); - // Convert from sRGB. - a_.OpMov(component_dest, component_src, true); - a_.OpGE(dxbc::Dest::R(gamma_temp, 0b0001), - dxbc::Src::LF(RenderTargetCache::kSrgbToLinearThreshold), - component_src); - a_.OpIf(true, dxbc::Src::R(gamma_temp, dxbc::Src::kXXXX)); - // sRGB <= kSrgbToLinearThreshold case - linear scale. - a_.OpMul(component_dest, component_src, - dxbc::Src::LF(1.0f / - RenderTargetCache::kSrgbToLinearDenominator1)); - a_.OpElse(); - // sRGB > kSrgbToLinearThreshold case. - // 0 and 1 must be exactly achievable - only convert when the - // saturated value is < 1. - a_.OpLT(dxbc::Dest::R(gamma_temp, 0b0001), component_src, - dxbc::Src::LF(1.0f)); - a_.OpIf(true, dxbc::Src::R(gamma_temp, dxbc::Src::kXXXX)); - a_.OpMAd(component_dest, component_src, - dxbc::Src::LF(1.0f / - RenderTargetCache::kSrgbToLinearDenominator2), - dxbc::Src::LF(RenderTargetCache::kSrgbToLinearOffset / - RenderTargetCache::kSrgbToLinearDenominator2)); - a_.OpLog(component_dest, component_src); - a_.OpMul(component_dest, component_src, - dxbc::Src::LF(RenderTargetCache::kSrgbToLinearExponent)); - a_.OpExp(component_dest, component_src); - // Close the < 1 check. - a_.OpEndIf(); - // Close the sRGB <= kSrgbToLinearThreshold check. - a_.OpEndIf(); - // Close the PWL or sRGB check. - a_.OpEndIf(); - } + PWLGammaToLinear(a_, system_temp_result_, i, system_temp_result_, i, + false, gamma_temp, 0, gamma_temp, 1); // Release gamma_temp. PopSystemTemp(); a_.OpBreak(); diff --git a/src/xenia/gpu/dxbc_shader_translator_om.cc b/src/xenia/gpu/dxbc_shader_translator_om.cc index 412e003ec..b7206ee65 100644 --- a/src/xenia/gpu/dxbc_shader_translator_om.cc +++ b/src/xenia/gpu/dxbc_shader_translator_om.cc @@ -1191,7 +1191,7 @@ void DxbcShaderTranslator::ROV_UnpackColor( dxbc::Src::LF(1.0f / 255.0f)); if (i) { for (uint32_t j = 0; j < 3; ++j) { - PWLGammaToLinear(color_temp, j, color_temp, j, true, temp1, + PWLGammaToLinear(a_, color_temp, j, color_temp, j, true, temp1, temp1_component, temp2, temp2_component); } } @@ -1344,7 +1344,7 @@ void DxbcShaderTranslator::ROV_PackPreClampedColor( : xenos::ColorRenderTargetFormat::k_8_8_8_8))); for (uint32_t j = 0; j < 4; ++j) { if (i && j < 3) { - PreSaturatedLinearToPWLGamma(temp1, temp1_component, color_temp, j, + PreSaturatedLinearToPWLGamma(a_, temp1, temp1_component, color_temp, j, temp1, temp1_component, temp2, temp2_component); // Denormalize and add 0.5 for rounding. @@ -1679,7 +1679,7 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToRTVs() { SystemConstants::Index::kColorExpBias, offsetof(SystemConstants, color_exp_bias) + sizeof(float) * i, dxbc::Src::kXXXX)); - if (!gamma_render_target_as_srgb_) { + if (gamma_render_target_as_unorm8_) { // Convert to gamma space - this is incorrect, since it must be done after // blending on the Xbox 360, but this is just one of many blending issues // in the RTV path. @@ -1690,8 +1690,9 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToRTVs() { a_.OpMov(dxbc::Dest::R(system_temp_color, 0b0111), dxbc::Src::R(system_temp_color), true); for (uint32_t j = 0; j < 3; ++j) { - PreSaturatedLinearToPWLGamma(system_temp_color, j, system_temp_color, j, - gamma_temp, 0, gamma_temp, 1); + PreSaturatedLinearToPWLGamma(a_, system_temp_color, j, + system_temp_color, j, gamma_temp, 0, + gamma_temp, 1); } a_.OpEndIf(); } diff --git a/src/xenia/gpu/render_target_cache.cc b/src/xenia/gpu/render_target_cache.cc index 4bc882bbc..5c070f14e 100644 --- a/src/xenia/gpu/render_target_cache.cc +++ b/src/xenia/gpu/render_target_cache.cc @@ -149,16 +149,15 @@ DEFINE_bool( "into account for render-to-texture, for more correct shadow filtering, " "bloom, etc., in some cases.", "GPU"); -// Disabled by default because of full-screen effects that occur when game -// shaders assume piecewise linear (4541080F), much more severe than -// blending-related issues. DEFINE_bool( - gamma_render_target_as_srgb, false, - "When the host can't write piecewise linear gamma directly with correct " - "blending, use sRGB output on the host for conceptually correct blending " - "in linear color space while having slightly different precision " - "distribution in the render target and severely incorrect values if the " - "game accesses the resulting colors directly as raw data.", + gamma_render_target_as_unorm16, true, + "When the host can't write 8 bits per component pixels with piecewise " + "linear gamma encoding directly with correct blending, use the 16-bit " + "unsigned normalized format, if supported, for conceptually correct " + "8_8_8_8_GAMMA render target format blending in linear color space. " + "Greatly increases accuracy for this format, but may result in render " + "target copying costs if the game switches between 8_8_8_8_GAMMA and " + "8_8_8_8 views for the same EDRAM render target.", "GPU"); DEFINE_bool( mrt_edram_used_range_clamp_to_min, true, @@ -635,7 +634,6 @@ bool RenderTargetCache::Update(bool is_rasterization_done, uint32_t edram_bases[1 + xenos::kMaxColorRenderTargets]; uint32_t resource_formats[1 + xenos::kMaxColorRenderTargets]; uint32_t rts_are_64bpp = 0; - uint32_t color_rts_are_gamma = 0; if (is_rasterization_done) { if (normalized_depth_control.z_enable || normalized_depth_control.stencil_enable) { @@ -664,9 +662,6 @@ bool RenderTargetCache::Update(bool is_rasterization_done, if (is_64bpp) { rts_are_64bpp |= uint32_t(1) << rt_bit_index; } - if (color_format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { - color_rts_are_gamma |= uint32_t(1) << i; - } xenos::ColorRenderTargetFormat color_resource_format; if (interlock_barrier_only) { // Only changes in mapping between coordinates and addresses are @@ -752,7 +747,6 @@ bool RenderTargetCache::Update(bool is_rasterization_done, if (!are_accumulated_render_targets_valid_) { std::memset(last_update_accumulated_render_targets_, 0, sizeof(last_update_accumulated_render_targets_)); - last_update_accumulated_color_targets_are_gamma_ = 0; } return true; } @@ -961,26 +955,13 @@ bool RenderTargetCache::Update(bool is_rasterization_done, std::memcpy(last_update_accumulated_render_targets_, last_update_used_render_targets_, sizeof(last_update_accumulated_render_targets_)); - last_update_accumulated_color_targets_are_gamma_ = 0; are_accumulated_render_targets_valid_ = true; } - // Only update color space of render targets that actually matter here, don't - // disable gamma emulation (which may require ending the render pass) on the - // host, for example, if making a depth-only draw between color draws with a - // gamma target. - uint32_t color_rts_used_bits = depth_and_color_rts_used_bits >> 1; - // Ignore any render targets dropped before in this function for any reason. - color_rts_are_gamma &= color_rts_used_bits; - last_update_accumulated_color_targets_are_gamma_ = - (last_update_accumulated_color_targets_are_gamma_ & - ~color_rts_used_bits) | - color_rts_are_gamma; return true; } uint32_t RenderTargetCache::GetLastUpdateBoundRenderTargets( - bool distinguish_gamma_formats, uint32_t* depth_and_color_formats_out) const { if (GetPath() != Path::kHostRenderTargets) { if (depth_and_color_formats_out) { @@ -1001,12 +982,7 @@ uint32_t RenderTargetCache::GetLastUpdateBoundRenderTargets( } rts_used |= uint32_t(1) << i; if (depth_and_color_formats_out) { - depth_and_color_formats_out[i] = - (distinguish_gamma_formats && i && - (last_update_accumulated_color_targets_are_gamma_ & - (uint32_t(1) << (i - 1)))) - ? uint32_t(xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) - : render_target->key().resource_format; + depth_and_color_formats_out[i] = render_target->key().resource_format; } } return rts_used; diff --git a/src/xenia/gpu/render_target_cache.h b/src/xenia/gpu/render_target_cache.h index 5353176ed..6adf4f364 100644 --- a/src/xenia/gpu/render_target_cache.h +++ b/src/xenia/gpu/render_target_cache.h @@ -32,7 +32,7 @@ DECLARE_bool(depth_transfer_not_equal_test); DECLARE_bool(depth_float24_round); DECLARE_bool(depth_float24_convert_in_pixel_shader); DECLARE_bool(draw_resolution_scaled_texture_offsets); -DECLARE_bool(gamma_render_target_as_srgb); +DECLARE_bool(gamma_render_target_as_unorm16); DECLARE_bool(native_2x_msaa); DECLARE_bool(native_stencil_value_output); DECLARE_bool(snorm16_render_target_full_range); @@ -72,12 +72,16 @@ class RenderTargetCache { // - 16_16_FLOAT, k_16_16_16_16_FLOAT - the Xenos float16 doesn't have // special values. // Significant differences: - // - 8_8_8_8_GAMMA - the piecewise linear gamma curve is very different than - // sRGB, one possible path is conversion in shaders (resulting in - // incorrect blending, especially visible on decals in 4D5307E6), another - // is using sRGB render targets and either conversion on resolve or - // reading the resolved data as a true sRGB texture (incorrect when the - // game accesses the data directly, like 4541080F). + // - 8_8_8_8_GAMMA - the piecewise linear gamma precision distribution + // encoding is very different from sRGB. Linear space blending can be + // obtained by promoting to R16G16B16A16_UNORM, but for compact storage, + // conversion in pixel shader output may be done, though it results in + // incorrect blending, especially visible on decals in 4D5307E6. Emulating + // by replacing the encoding with sRGB for render target writes and + // resolved texture reads could work for some games, but certain games, + // such as 4541080F, perform piecewise gamma encoding calculations in + // their code, and that produces noticeably incorrect results if the + // encoding is changed in guest texture memory. // - 2_10_10_10_FLOAT - ranges significantly different than in float16, much // smaller RGB range, and alpha is fixed-point and has only 2 bits. // - 16_16, 16_16_16_16 - has -32 to 32 range, not -1 to 1 - need either to @@ -91,28 +95,6 @@ class RenderTargetCache { kPixelShaderInterlock, }; - // Useful host-specific values. - // sRGB conversion from the Direct3D 11.3 functional specification. - static constexpr float kSrgbToLinearDenominator1 = 12.92f; - static constexpr float kSrgbToLinearDenominator2 = 1.055f; - static constexpr float kSrgbToLinearExponent = 2.4f; - static constexpr float kSrgbToLinearOffset = 0.055f; - static constexpr float kSrgbToLinearThreshold = 0.04045f; - static constexpr float SrgbToLinear(float srgb) { - // 0 and 1 must be exactly achievable, also convert NaN to 0. - if (!(srgb > 0.0f)) { - return 0.0f; - } - if (!(srgb < 1.0f)) { - return 1.0f; - } - if (srgb <= kSrgbToLinearThreshold) { - return srgb / kSrgbToLinearDenominator1; - } - return std::pow((srgb + kSrgbToLinearOffset) / kSrgbToLinearDenominator2, - kSrgbToLinearExponent); - } - // Pixel shader interlock implementation helpers. // Appended to the format in the format constant via bitwise OR. @@ -221,7 +203,6 @@ class RenderTargetCache { // formats (resource formats, but if needed, with gamma taken into account) of // each. uint32_t GetLastUpdateBoundRenderTargets( - bool distinguish_gamma_formats, uint32_t* depth_and_color_formats_out = nullptr) const; protected: @@ -238,6 +219,8 @@ class RenderTargetCache { const RegisterFile& register_file() const { return register_file_; } + virtual bool IsGammaFormatHostStorageSeparate() const = 0; + // Call last in implementation-specific initialization (when things like path // are initialized by the implementation). void InitializeCommon(); @@ -274,7 +257,7 @@ class RenderTargetCache { uint32_t pitch_tiles_at_32bpp : 8; // 19 xenos::MsaaSamples msaa_samples : xenos::kMsaaSamplesBits; // 21 uint32_t is_depth : 1; // 22 - // Ignoring the blending precision and sRGB. + // Ignoring the blending precision. uint32_t resource_format : xenos::kRenderTargetFormatBits; // 26 }; @@ -548,10 +531,6 @@ class RenderTargetCache { assert_true(GetPath() == Path::kHostRenderTargets); return last_update_accumulated_render_targets_; } - uint32_t last_update_accumulated_color_targets_are_gamma() const { - assert_true(GetPath() == Path::kHostRenderTargets); - return last_update_accumulated_color_targets_are_gamma_; - } const std::vector* last_update_transfers() const { assert_true(GetPath() == Path::kHostRenderTargets); @@ -697,11 +676,10 @@ class RenderTargetCache { } }; - static constexpr xenos::ColorRenderTargetFormat GetColorResourceFormat( - xenos::ColorRenderTargetFormat format) { - // sRGB, if used on the host, is a view property or global state - linear - // and sRGB host render targets can share data directly without transfers. - if (format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { + xenos::ColorRenderTargetFormat GetColorResourceFormat( + xenos::ColorRenderTargetFormat format) const { + if (format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA && + !IsGammaFormatHostStorageSeparate()) { return xenos::ColorRenderTargetFormat::k_8_8_8_8; } return xenos::GetStorageColorFormat(format); @@ -755,10 +733,6 @@ class RenderTargetCache { RenderTarget* last_update_accumulated_render_targets_[1 + xenos::kMaxColorRenderTargets]; - // Whether the color render targets (in bits 0...3) from the last successful - // update have k_8_8_8_8_GAMMA format, for sRGB emulation on the host if - // needed. - uint32_t last_update_accumulated_color_targets_are_gamma_; // If false, the next update must copy last_update_used_render_targets_ to // last_update_accumulated_render_targets_ - it's not beneficial or even // incorrect to keep the previously bound render targets. diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_quad_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_quad_hs.h index 9de916831..d081a5657 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_quad_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_quad_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -137,21 +137,21 @@ ret const BYTE adaptive_quad_hs[] = { - 68, 88, 66, 67, 239, 150, - 141, 161, 148, 167, 208, 252, - 147, 2, 216, 119, 8, 207, - 171, 137, 1, 0, 0, 0, - 40, 15, 0, 0, 6, 0, + 68, 88, 66, 67, 219, 255, + 95, 234, 102, 219, 156, 208, + 233, 150, 227, 140, 59, 51, + 198, 162, 1, 0, 0, 0, + 48, 15, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 164, 10, - 0, 0, 216, 10, 0, 0, - 156, 11, 0, 0, 140, 14, + 116, 10, 0, 0, 172, 10, + 0, 0, 224, 10, 0, 0, + 164, 11, 0, 0, 148, 14, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -271,103 +271,103 @@ const BYTE adaptive_quad_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -480,51 +480,87 @@ const BYTE adaptive_quad_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -533,255 +569,220 @@ const BYTE adaptive_quad_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, - 71, 78, 48, 0, 0, 0, - 1, 0, 0, 0, 8, 0, - 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, - 0, 0, 88, 69, 84, 69, - 83, 83, 70, 65, 67, 84, - 79, 82, 0, 171, 171, 171, - 79, 83, 71, 78, 44, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 48, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 88, 69, - 86, 69, 82, 84, 69, 88, - 73, 68, 0, 171, 80, 67, - 83, 71, 188, 0, 0, 0, - 6, 0, 0, 0, 8, 0, - 0, 0, 152, 0, 0, 0, - 0, 0, 0, 0, 11, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 14, - 0, 0, 152, 0, 0, 0, - 1, 0, 0, 0, 11, 0, - 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 1, 14, - 0, 0, 152, 0, 0, 0, - 2, 0, 0, 0, 11, 0, - 0, 0, 3, 0, 0, 0, - 2, 0, 0, 0, 1, 14, - 0, 0, 152, 0, 0, 0, - 3, 0, 0, 0, 11, 0, - 0, 0, 3, 0, 0, 0, - 3, 0, 0, 0, 1, 14, - 0, 0, 166, 0, 0, 0, - 0, 0, 0, 0, 12, 0, - 0, 0, 3, 0, 0, 0, - 4, 0, 0, 0, 1, 14, - 0, 0, 166, 0, 0, 0, - 1, 0, 0, 0, 12, 0, - 0, 0, 3, 0, 0, 0, - 5, 0, 0, 0, 1, 14, - 0, 0, 83, 86, 95, 84, - 101, 115, 115, 70, 97, 99, - 116, 111, 114, 0, 83, 86, - 95, 73, 110, 115, 105, 100, - 101, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 171, 171, 83, 72, 69, 88, - 232, 2, 0, 0, 81, 0, - 3, 0, 186, 0, 0, 0, - 113, 0, 0, 1, 147, 32, - 0, 1, 148, 8, 0, 1, - 149, 24, 0, 1, 150, 32, - 0, 1, 151, 24, 0, 1, - 106, 8, 0, 1, 89, 0, - 0, 7, 70, 142, 48, 0, + 1, 1, 0, 0, 88, 69, + 84, 69, 83, 83, 70, 65, + 67, 84, 79, 82, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 0, 0, + 88, 69, 86, 69, 82, 84, + 69, 88, 73, 68, 0, 171, + 80, 67, 83, 71, 188, 0, + 0, 0, 6, 0, 0, 0, + 8, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 114, 0, 0, 1, - 95, 0, 0, 2, 0, 176, - 0, 0, 101, 0, 0, 3, - 18, 32, 16, 0, 0, 0, - 0, 0, 104, 0, 0, 2, - 1, 0, 0, 0, 30, 0, - 0, 8, 18, 0, 16, 0, - 0, 0, 0, 0, 1, 176, - 0, 0, 26, 128, 48, 0, + 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 152, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 7, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 255, 255, 255, 0, 83, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 11, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 1, 14, 0, 0, 152, 0, + 0, 0, 2, 0, 0, 0, + 11, 0, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, + 1, 14, 0, 0, 152, 0, + 0, 0, 3, 0, 0, 0, + 11, 0, 0, 0, 3, 0, + 0, 0, 3, 0, 0, 0, + 1, 14, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 84, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 58, 128, 48, 0, 0, 0, + 12, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, + 1, 14, 0, 0, 166, 0, + 0, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 3, 0, + 0, 0, 5, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 101, 115, 115, 70, + 97, 99, 116, 111, 114, 0, + 83, 86, 95, 73, 110, 115, + 105, 100, 101, 84, 101, 115, + 115, 70, 97, 99, 116, 111, + 114, 0, 171, 171, 83, 72, + 69, 88, 232, 2, 0, 0, + 81, 0, 3, 0, 186, 0, + 0, 0, 113, 0, 0, 1, + 147, 32, 0, 1, 148, 8, + 0, 1, 149, 24, 0, 1, + 150, 32, 0, 1, 151, 24, + 0, 1, 106, 8, 0, 1, + 89, 0, 0, 7, 70, 142, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 86, 0, - 0, 5, 18, 32, 16, 0, - 0, 0, 0, 0, 10, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 114, 0, + 0, 1, 95, 0, 0, 2, + 0, 176, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 0, 0, 0, 0, 104, 0, + 0, 2, 1, 0, 0, 0, + 30, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 4, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 95, 0, 0, 4, 18, 144, - 33, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 0, 0, 0, 0, 11, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 1, 0, - 0, 0, 12, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 2, 0, 0, 0, - 13, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 3, 0, 0, 0, 14, 0, - 0, 0, 104, 0, 0, 2, - 1, 0, 0, 0, 91, 0, - 0, 4, 18, 32, 16, 0, - 0, 0, 0, 0, 4, 0, - 0, 0, 30, 0, 0, 6, - 18, 0, 16, 0, 0, 0, - 0, 0, 10, 112, 1, 0, - 1, 64, 0, 0, 3, 0, + 1, 176, 0, 0, 26, 128, + 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 34, 0, + 0, 0, 255, 255, 255, 0, + 83, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 26, 0, 16, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 84, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 86, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 4, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 95, 0, 0, 4, + 18, 144, 33, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 1, 0, 0, 0, 12, 0, + 0, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 2, 0, + 0, 0, 13, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 3, 0, 0, 0, + 14, 0, 0, 0, 104, 0, + 0, 2, 1, 0, 0, 0, + 91, 0, 0, 4, 18, 32, + 16, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 30, 0, + 0, 6, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 112, + 1, 0, 1, 64, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 144, + 161, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 2, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 95, 0, 0, 4, + 18, 144, 33, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 4, 0, 0, 0, + 15, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 79, 0, 0, 6, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 1, 64, 0, 0, 1, 0, + 0, 0, 55, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 40, 0, 0, 4, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 51, 0, 0, 12, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 144, 225, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 144, 161, 0, 10, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 2, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 95, 0, 0, 4, 18, 144, - 33, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 4, 0, 0, 0, 15, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 4, 0, - 0, 0, 2, 0, 0, 0, - 79, 0, 0, 6, 18, 0, + 54, 0, 0, 4, 34, 0, 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 1, 64, - 0, 0, 1, 0, 0, 0, - 55, 0, 0, 9, 18, 0, + 10, 112, 1, 0, 54, 0, + 0, 7, 18, 32, 208, 0, + 4, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 40, 0, 0, 4, 34, 0, - 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 51, 0, - 0, 12, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 144, - 225, 0, 2, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 10, 144, 161, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, - 0, 4, 34, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 54, 0, 0, 7, - 18, 32, 208, 0, 4, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 83, 84, - 65, 84, 148, 0, 0, 0, - 18, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 1, 0, - 0, 0, 3, 0, 0, 0, - 5, 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, 4, 0, - 0, 0, 1, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 148, 0, + 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 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, + 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, + 0, 0, 5, 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, + 4, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 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, 1, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_triangle_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_triangle_hs.h index 2a7f73920..424e062f3 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_triangle_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/adaptive_triangle_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -126,21 +126,21 @@ ret const BYTE adaptive_triangle_hs[] = { - 68, 88, 66, 67, 213, 151, - 26, 214, 48, 115, 215, 10, - 67, 36, 129, 21, 5, 111, - 231, 249, 1, 0, 0, 0, - 88, 14, 0, 0, 6, 0, + 68, 88, 66, 67, 119, 178, + 165, 28, 236, 219, 246, 2, + 103, 49, 167, 10, 199, 138, + 243, 175, 1, 0, 0, 0, + 96, 14, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 164, 10, - 0, 0, 216, 10, 0, 0, - 108, 11, 0, 0, 188, 13, + 116, 10, 0, 0, 172, 10, + 0, 0, 224, 10, 0, 0, + 116, 11, 0, 0, 196, 13, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -260,103 +260,103 @@ const BYTE adaptive_triangle_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -469,51 +469,87 @@ const BYTE adaptive_triangle_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -522,220 +558,186 @@ const BYTE adaptive_triangle_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, - 71, 78, 48, 0, 0, 0, - 1, 0, 0, 0, 8, 0, - 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, - 0, 0, 88, 69, 84, 69, - 83, 83, 70, 65, 67, 84, - 79, 82, 0, 171, 171, 171, - 79, 83, 71, 78, 44, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 48, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 88, 69, - 86, 69, 82, 84, 69, 88, - 73, 68, 0, 171, 80, 67, - 83, 71, 140, 0, 0, 0, - 4, 0, 0, 0, 8, 0, - 0, 0, 104, 0, 0, 0, - 0, 0, 0, 0, 13, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 14, - 0, 0, 104, 0, 0, 0, - 1, 0, 0, 0, 13, 0, - 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 1, 14, - 0, 0, 104, 0, 0, 0, - 2, 0, 0, 0, 13, 0, - 0, 0, 3, 0, 0, 0, - 2, 0, 0, 0, 1, 14, - 0, 0, 118, 0, 0, 0, - 0, 0, 0, 0, 14, 0, - 0, 0, 3, 0, 0, 0, - 3, 0, 0, 0, 1, 14, - 0, 0, 83, 86, 95, 84, - 101, 115, 115, 70, 97, 99, - 116, 111, 114, 0, 83, 86, - 95, 73, 110, 115, 105, 100, - 101, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 171, 171, 83, 72, 69, 88, - 72, 2, 0, 0, 81, 0, - 3, 0, 146, 0, 0, 0, - 113, 0, 0, 1, 147, 24, - 0, 1, 148, 8, 0, 1, - 149, 16, 0, 1, 150, 32, - 0, 1, 151, 24, 0, 1, - 106, 8, 0, 1, 89, 0, - 0, 7, 70, 142, 48, 0, + 1, 1, 0, 0, 88, 69, + 84, 69, 83, 83, 70, 65, + 67, 84, 79, 82, 0, 171, + 171, 171, 79, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 0, 0, + 88, 69, 86, 69, 82, 84, + 69, 88, 73, 68, 0, 171, + 80, 67, 83, 71, 140, 0, + 0, 0, 4, 0, 0, 0, + 8, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 114, 0, 0, 1, - 95, 0, 0, 2, 0, 176, - 0, 0, 101, 0, 0, 3, - 18, 32, 16, 0, 0, 0, - 0, 0, 104, 0, 0, 2, - 1, 0, 0, 0, 30, 0, - 0, 8, 18, 0, 16, 0, - 0, 0, 0, 0, 1, 176, - 0, 0, 26, 128, 48, 0, + 13, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 104, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 7, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 255, 255, 255, 0, 83, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 13, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 1, 14, 0, 0, 104, 0, + 0, 0, 2, 0, 0, 0, + 13, 0, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, + 1, 14, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 84, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 58, 128, 48, 0, 0, 0, + 14, 0, 0, 0, 3, 0, + 0, 0, 3, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 101, 115, 115, 70, + 97, 99, 116, 111, 114, 0, + 83, 86, 95, 73, 110, 115, + 105, 100, 101, 84, 101, 115, + 115, 70, 97, 99, 116, 111, + 114, 0, 171, 171, 83, 72, + 69, 88, 72, 2, 0, 0, + 81, 0, 3, 0, 146, 0, + 0, 0, 113, 0, 0, 1, + 147, 24, 0, 1, 148, 8, + 0, 1, 149, 16, 0, 1, + 150, 32, 0, 1, 151, 24, + 0, 1, 106, 8, 0, 1, + 89, 0, 0, 7, 70, 142, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 86, 0, - 0, 5, 18, 32, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 3, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 95, 0, 0, 4, 18, 144, - 33, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 0, 0, 0, 0, 17, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 1, 0, - 0, 0, 18, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 2, 0, 0, 0, - 19, 0, 0, 0, 104, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 114, 0, + 0, 1, 95, 0, 0, 2, + 0, 176, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 0, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, - 91, 0, 0, 4, 18, 32, + 30, 0, 0, 8, 18, 0, 16, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 30, 0, - 0, 6, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 1, 64, 0, 0, - 1, 0, 0, 0, 78, 0, - 0, 8, 0, 208, 0, 0, + 1, 176, 0, 0, 26, 128, + 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 34, 0, + 0, 0, 255, 255, 255, 0, + 83, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 10, 144, 161, 0, 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 95, 0, 0, 4, + 0, 0, 1, 0, 0, 0, + 84, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 86, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 3, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 95, 0, 0, 4, 18, 144, 33, 0, 3, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 4, 18, 32, - 16, 0, 3, 0, 0, 0, - 20, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 51, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, - 10, 144, 33, 0, 2, 0, - 0, 0, 0, 0, 0, 0, - 10, 144, 33, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 51, 0, 0, 8, 18, 32, - 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 10, 144, 33, 0, + 17, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 1, 0, 0, 0, 18, 0, + 0, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 2, 0, + 0, 0, 19, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 91, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 30, 0, 0, 6, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 112, 1, 0, 1, 64, + 0, 0, 1, 0, 0, 0, + 78, 0, 0, 8, 0, 208, + 0, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 144, + 161, 0, 10, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 1, - 83, 84, 65, 84, 148, 0, - 0, 0, 14, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, - 2, 0, 0, 0, 2, 0, - 0, 0, 4, 0, 0, 0, + 115, 0, 0, 1, 95, 0, + 0, 4, 18, 144, 33, 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, 103, 0, 0, 4, + 18, 32, 16, 0, 3, 0, + 0, 0, 20, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 51, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 144, 33, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 10, 144, 33, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 51, 0, 0, 8, + 18, 32, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 10, 144, + 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 148, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 10, 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, 1, 0, 0, 0, - 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 4, 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, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 10, 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, 1, 0, + 0, 0, 3, 0, 0, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_1cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_1cp_hs.h index 24e011399..3440f61ef 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_1cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_1cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -124,21 +124,21 @@ ret const BYTE continuous_quad_1cp_hs[] = { - 68, 88, 66, 67, 255, 166, - 36, 40, 167, 89, 99, 45, - 74, 91, 165, 30, 112, 56, - 14, 246, 1, 0, 0, 0, - 220, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 75, 3, + 204, 69, 118, 69, 237, 244, + 19, 228, 4, 30, 244, 91, + 101, 237, 1, 0, 0, 0, + 228, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 152, 11, 0, 0, 64, 13, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 160, 11, 0, 0, 72, 13, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -258,103 +258,103 @@ const BYTE continuous_quad_1cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -467,51 +467,87 @@ const BYTE continuous_quad_1cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -520,200 +556,165 @@ const BYTE continuous_quad_1cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 188, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 188, 0, - 0, 0, 6, 0, 0, 0, - 8, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 1, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 2, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 3, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 1, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 5, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 152, 0, 0, 0, 1, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 2, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 3, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 5, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 160, 1, 0, 0, - 81, 0, 3, 0, 104, 0, - 0, 0, 113, 0, 0, 1, - 147, 8, 0, 1, 148, 8, - 0, 1, 149, 24, 0, 1, - 150, 32, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, - 48, 0, 0, 0, 0, 0, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 160, 1, + 0, 0, 81, 0, 3, 0, + 104, 0, 0, 0, 113, 0, + 0, 1, 147, 8, 0, 1, + 148, 8, 0, 1, 149, 24, + 0, 1, 150, 32, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 114, 0, - 0, 1, 95, 0, 0, 4, - 18, 16, 32, 0, 1, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 3, 18, 32, - 16, 0, 0, 0, 0, 0, - 54, 0, 0, 6, 18, 32, - 16, 0, 0, 0, 0, 0, - 10, 16, 32, 0, 0, 0, + 114, 0, 0, 1, 95, 0, + 0, 4, 18, 16, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 16, 32, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 4, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 4, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 103, 0, + 16, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 12, 0, + 2, 0, 0, 0, 13, 0, 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 13, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 3, 0, 0, 0, - 14, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 91, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 54, 0, - 0, 4, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 54, 0, 0, 8, - 18, 32, 144, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 115, 0, 0, 1, - 153, 0, 0, 2, 2, 0, - 0, 0, 95, 0, 0, 2, - 0, 112, 1, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 4, 0, 0, 0, 15, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 0, + 18, 32, 16, 0, 3, 0, + 0, 0, 14, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 4, 0, - 0, 0, 2, 0, 0, 0, + 18, 32, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 54, 0, 0, 4, 18, 0, 16, 0, 0, 0, 0, 0, 10, 112, 1, 0, 54, 0, - 0, 9, 18, 32, 208, 0, - 4, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 0, 8, 18, 32, 144, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 115, 0, + 0, 1, 153, 0, 0, 2, + 2, 0, 0, 0, 95, 0, + 0, 2, 0, 112, 1, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 4, 0, 0, 0, + 15, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 9, 18, 32, + 208, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 8, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 5, 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, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 8, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, + 0, 0, 8, 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, + 1, 0, 0, 0, 3, 0, + 0, 0, 4, 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, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 8, 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, 1, 0, - 0, 0, 3, 0, 0, 0, - 4, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_4cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_4cp_hs.h index d5b9c9482..a7aeda60d 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_4cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_quad_4cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -119,21 +119,21 @@ ret const BYTE continuous_quad_4cp_hs[] = { - 68, 88, 66, 67, 196, 234, - 51, 156, 242, 124, 98, 132, - 34, 110, 229, 40, 64, 181, - 146, 55, 1, 0, 0, 0, - 160, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 6, 62, + 31, 216, 142, 131, 210, 70, + 184, 74, 84, 23, 232, 171, + 185, 244, 1, 0, 0, 0, + 168, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 152, 11, 0, 0, 4, 13, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 160, 11, 0, 0, 12, 13, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -253,103 +253,103 @@ const BYTE continuous_quad_4cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -462,51 +462,87 @@ const BYTE continuous_quad_4cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -515,190 +551,155 @@ const BYTE continuous_quad_4cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 188, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 188, 0, - 0, 0, 6, 0, 0, 0, - 8, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 1, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 2, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 3, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 1, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 5, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 152, 0, 0, 0, 1, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 2, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 3, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 5, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 100, 1, 0, 0, - 81, 0, 3, 0, 89, 0, - 0, 0, 113, 0, 0, 1, - 147, 32, 0, 1, 148, 32, - 0, 1, 149, 24, 0, 1, - 150, 32, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, - 48, 0, 0, 0, 0, 0, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 100, 1, + 0, 0, 81, 0, 3, 0, + 89, 0, 0, 0, 113, 0, + 0, 1, 147, 32, 0, 1, + 148, 32, 0, 1, 149, 24, + 0, 1, 150, 32, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 115, 0, - 0, 1, 153, 0, 0, 2, - 4, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 12, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 13, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 3, 0, 0, 0, - 14, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 91, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 54, 0, - 0, 4, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 54, 0, 0, 8, - 18, 32, 144, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 115, 0, 0, 1, - 153, 0, 0, 2, 2, 0, - 0, 0, 95, 0, 0, 2, - 0, 112, 1, 0, 103, 0, + 115, 0, 0, 1, 153, 0, + 0, 2, 4, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 103, 0, 0, 4, 18, 32, 16, 0, - 4, 0, 0, 0, 15, 0, + 2, 0, 0, 0, 13, 0, 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 0, + 18, 32, 16, 0, 3, 0, + 0, 0, 14, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 4, 0, - 0, 0, 2, 0, 0, 0, + 18, 32, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 54, 0, 0, 4, 18, 0, 16, 0, 0, 0, 0, 0, 10, 112, 1, 0, 54, 0, - 0, 9, 18, 32, 208, 0, - 4, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 6, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 5, 0, + 0, 8, 18, 32, 144, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, + 62, 0, 0, 1, 115, 0, + 0, 1, 153, 0, 0, 2, + 2, 0, 0, 0, 95, 0, + 0, 2, 0, 112, 1, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 4, 0, 0, 0, + 15, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 9, 18, 32, + 208, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 6, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 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, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 3, 0, + 0, 0, 4, 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 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_1cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_1cp_hs.h index fe4cd78fa..7fd8c6382 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_1cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_1cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -115,21 +115,21 @@ ret const BYTE continuous_triangle_1cp_hs[] = { - 68, 88, 66, 67, 90, 24, - 246, 119, 168, 170, 239, 21, - 106, 76, 181, 188, 133, 81, - 250, 172, 1, 0, 0, 0, - 76, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 7, 179, + 83, 139, 111, 125, 9, 167, + 130, 181, 49, 127, 87, 182, + 14, 89, 1, 0, 0, 0, + 84, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 104, 11, 0, 0, 176, 12, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 112, 11, 0, 0, 184, 12, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -249,103 +249,103 @@ const BYTE continuous_triangle_1cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -458,51 +458,87 @@ const BYTE continuous_triangle_1cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -511,176 +547,141 @@ const BYTE continuous_triangle_1cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 140, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 140, 0, - 0, 0, 4, 0, 0, 0, - 8, 0, 0, 0, 104, 0, - 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 2, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 104, 0, 0, 0, 1, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 104, 0, 0, 0, 2, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 118, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 64, 1, 0, 0, - 81, 0, 3, 0, 80, 0, - 0, 0, 113, 0, 0, 1, - 147, 8, 0, 1, 148, 8, - 0, 1, 149, 16, 0, 1, - 150, 32, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 64, 1, + 0, 0, 81, 0, 3, 0, + 80, 0, 0, 0, 113, 0, + 0, 1, 147, 8, 0, 1, + 148, 8, 0, 1, 149, 16, + 0, 1, 150, 32, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 114, 0, 0, 1, 95, 0, + 0, 4, 18, 16, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 16, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 3, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 17, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 18, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 2, 0, 0, 0, 19, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 114, 0, - 0, 1, 95, 0, 0, 4, - 18, 16, 32, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 101, 0, 0, 3, 18, 32, - 16, 0, 0, 0, 0, 0, - 54, 0, 0, 6, 18, 32, - 16, 0, 0, 0, 0, 0, - 10, 16, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 3, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 103, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 18, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 19, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 10, 0, 16, 0, 0, 0, + 3, 0, 0, 0, 20, 0, + 0, 0, 54, 0, 0, 7, + 18, 32, 16, 0, 3, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 103, 0, 0, 4, - 18, 32, 16, 0, 3, 0, - 0, 0, 20, 0, 0, 0, - 54, 0, 0, 7, 18, 32, - 16, 0, 3, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 7, 0, 0, 0, 1, 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, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 7, 0, - 0, 0, 1, 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, 8, 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, + 1, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, - 0, 0, 3, 0, 0, 0, - 4, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_3cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_3cp_hs.h index 18e207dd2..c80b18a5d 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_3cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/continuous_triangle_3cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -110,21 +110,21 @@ ret const BYTE continuous_triangle_3cp_hs[] = { - 68, 88, 66, 67, 40, 16, - 64, 130, 119, 149, 137, 0, - 58, 149, 234, 138, 51, 145, - 29, 76, 1, 0, 0, 0, - 16, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 231, 10, + 78, 117, 211, 32, 114, 128, + 168, 236, 27, 22, 27, 130, + 116, 185, 1, 0, 0, 0, + 24, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 104, 11, 0, 0, 116, 12, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 112, 11, 0, 0, 124, 12, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -244,103 +244,103 @@ const BYTE continuous_triangle_3cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -453,51 +453,87 @@ const BYTE continuous_triangle_3cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -506,166 +542,131 @@ const BYTE continuous_triangle_3cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 140, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 140, 0, - 0, 0, 4, 0, 0, 0, - 8, 0, 0, 0, 104, 0, - 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 2, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 104, 0, 0, 0, 1, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 104, 0, 0, 0, 2, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 118, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 4, 1, 0, 0, - 81, 0, 3, 0, 65, 0, - 0, 0, 113, 0, 0, 1, - 147, 24, 0, 1, 148, 24, - 0, 1, 149, 16, 0, 1, - 150, 32, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 4, 1, + 0, 0, 81, 0, 3, 0, + 65, 0, 0, 0, 113, 0, + 0, 1, 147, 24, 0, 1, + 148, 24, 0, 1, 149, 16, + 0, 1, 150, 32, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 115, 0, 0, 1, 153, 0, + 0, 2, 3, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 17, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 18, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 2, 0, 0, 0, 19, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 115, 0, - 0, 1, 153, 0, 0, 2, - 3, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 103, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 18, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 19, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 10, 0, 16, 0, 0, 0, + 3, 0, 0, 0, 20, 0, + 0, 0, 54, 0, 0, 7, + 18, 32, 16, 0, 3, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 103, 0, 0, 4, - 18, 32, 16, 0, 3, 0, - 0, 0, 20, 0, 0, 0, - 54, 0, 0, 7, 18, 32, - 16, 0, 3, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 5, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 4, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 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, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 10, 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, 3, 0, - 0, 0, 3, 0, 0, 0, - 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 10, 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, + 3, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_1cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_1cp_hs.h index 1ee226351..47cf4ef58 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_1cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_1cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -124,21 +124,21 @@ ret const BYTE discrete_quad_1cp_hs[] = { - 68, 88, 66, 67, 166, 226, - 56, 134, 119, 149, 47, 144, - 135, 3, 42, 236, 243, 129, - 164, 56, 1, 0, 0, 0, - 220, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 42, 101, + 116, 28, 76, 214, 165, 58, + 178, 236, 109, 197, 185, 155, + 144, 115, 1, 0, 0, 0, + 228, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 152, 11, 0, 0, 64, 13, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 160, 11, 0, 0, 72, 13, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -258,103 +258,103 @@ const BYTE discrete_quad_1cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -467,51 +467,87 @@ const BYTE discrete_quad_1cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -520,200 +556,165 @@ const BYTE discrete_quad_1cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 188, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 188, 0, - 0, 0, 6, 0, 0, 0, - 8, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 1, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 2, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 3, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 1, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 5, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 152, 0, 0, 0, 1, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 2, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 3, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 5, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 160, 1, 0, 0, - 81, 0, 3, 0, 104, 0, - 0, 0, 113, 0, 0, 1, - 147, 8, 0, 1, 148, 8, - 0, 1, 149, 24, 0, 1, - 150, 8, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, - 48, 0, 0, 0, 0, 0, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 160, 1, + 0, 0, 81, 0, 3, 0, + 104, 0, 0, 0, 113, 0, + 0, 1, 147, 8, 0, 1, + 148, 8, 0, 1, 149, 24, + 0, 1, 150, 8, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 114, 0, - 0, 1, 95, 0, 0, 4, - 18, 16, 32, 0, 1, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 3, 18, 32, - 16, 0, 0, 0, 0, 0, - 54, 0, 0, 6, 18, 32, - 16, 0, 0, 0, 0, 0, - 10, 16, 32, 0, 0, 0, + 114, 0, 0, 1, 95, 0, + 0, 4, 18, 16, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 16, 32, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 4, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 4, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 103, 0, + 16, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 12, 0, + 2, 0, 0, 0, 13, 0, 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 13, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 3, 0, 0, 0, - 14, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 91, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 54, 0, - 0, 4, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 54, 0, 0, 8, - 18, 32, 144, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 115, 0, 0, 1, - 153, 0, 0, 2, 2, 0, - 0, 0, 95, 0, 0, 2, - 0, 112, 1, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 4, 0, 0, 0, 15, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 0, + 18, 32, 16, 0, 3, 0, + 0, 0, 14, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 4, 0, - 0, 0, 2, 0, 0, 0, + 18, 32, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 54, 0, 0, 4, 18, 0, 16, 0, 0, 0, 0, 0, 10, 112, 1, 0, 54, 0, - 0, 9, 18, 32, 208, 0, - 4, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 0, 8, 18, 32, 144, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 115, 0, + 0, 1, 153, 0, 0, 2, + 2, 0, 0, 0, 95, 0, + 0, 2, 0, 112, 1, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 4, 0, 0, 0, + 15, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 9, 18, 32, + 208, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 8, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 5, 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, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 8, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, + 0, 0, 8, 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, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 8, 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, 1, 0, - 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 3, 0, + 0, 0, 1, 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 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_4cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_4cp_hs.h index 5c1bff113..fa1f2e0d7 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_4cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_quad_4cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -119,21 +119,21 @@ ret const BYTE discrete_quad_4cp_hs[] = { - 68, 88, 66, 67, 192, 34, - 77, 20, 70, 107, 155, 33, - 163, 40, 168, 219, 244, 3, - 133, 198, 1, 0, 0, 0, - 160, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 158, 194, + 46, 27, 202, 133, 207, 72, + 70, 10, 181, 145, 243, 232, + 70, 63, 1, 0, 0, 0, + 168, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 152, 11, 0, 0, 4, 13, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 160, 11, 0, 0, 12, 13, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -253,103 +253,103 @@ const BYTE discrete_quad_4cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -462,51 +462,87 @@ const BYTE discrete_quad_4cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -515,190 +551,155 @@ const BYTE discrete_quad_4cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 188, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 188, 0, - 0, 0, 6, 0, 0, 0, - 8, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 1, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 2, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 152, 0, - 0, 0, 3, 0, 0, 0, - 11, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, - 1, 14, 0, 0, 166, 0, - 0, 0, 1, 0, 0, 0, - 12, 0, 0, 0, 3, 0, - 0, 0, 5, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 152, 0, 0, 0, 1, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 2, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 152, 0, 0, 0, 3, 0, + 0, 0, 11, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 4, 0, + 0, 0, 1, 14, 0, 0, + 166, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 3, 0, 0, 0, 5, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 100, 1, 0, 0, - 81, 0, 3, 0, 89, 0, - 0, 0, 113, 0, 0, 1, - 147, 32, 0, 1, 148, 32, - 0, 1, 149, 24, 0, 1, - 150, 8, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, - 48, 0, 0, 0, 0, 0, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 100, 1, + 0, 0, 81, 0, 3, 0, + 89, 0, 0, 0, 113, 0, + 0, 1, 147, 32, 0, 1, + 148, 32, 0, 1, 149, 24, + 0, 1, 150, 8, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 115, 0, - 0, 1, 153, 0, 0, 2, - 4, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 103, 0, - 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 12, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 13, 0, 0, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 3, 0, 0, 0, - 14, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 91, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 54, 0, - 0, 4, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 112, - 1, 0, 54, 0, 0, 8, - 18, 32, 144, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 115, 0, 0, 1, - 153, 0, 0, 2, 2, 0, - 0, 0, 95, 0, 0, 2, - 0, 112, 1, 0, 103, 0, + 115, 0, 0, 1, 153, 0, + 0, 2, 4, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 103, 0, 0, 4, 18, 32, 16, 0, - 4, 0, 0, 0, 15, 0, + 2, 0, 0, 0, 13, 0, 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 0, + 18, 32, 16, 0, 3, 0, + 0, 0, 14, 0, 0, 0, 104, 0, 0, 2, 1, 0, 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 4, 0, - 0, 0, 2, 0, 0, 0, + 18, 32, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 54, 0, 0, 4, 18, 0, 16, 0, 0, 0, 0, 0, 10, 112, 1, 0, 54, 0, - 0, 9, 18, 32, 208, 0, - 4, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 6, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 5, 0, + 0, 8, 18, 32, 144, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, + 62, 0, 0, 1, 115, 0, + 0, 1, 153, 0, 0, 2, + 2, 0, 0, 0, 95, 0, + 0, 2, 0, 112, 1, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 4, 0, 0, 0, + 15, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 9, 18, 32, + 208, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 48, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 6, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 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, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 3, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_1cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_1cp_hs.h index e33fd446e..d34d92806 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_1cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_1cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -115,21 +115,21 @@ ret const BYTE discrete_triangle_1cp_hs[] = { - 68, 88, 66, 67, 227, 140, - 35, 65, 156, 178, 224, 139, - 122, 75, 128, 231, 90, 78, - 65, 91, 1, 0, 0, 0, - 76, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 115, 241, + 168, 52, 141, 229, 16, 29, + 225, 108, 55, 105, 208, 26, + 191, 168, 1, 0, 0, 0, + 84, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 104, 11, 0, 0, 176, 12, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 112, 11, 0, 0, 184, 12, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -249,103 +249,103 @@ const BYTE discrete_triangle_1cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -458,51 +458,87 @@ const BYTE discrete_triangle_1cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -511,176 +547,141 @@ const BYTE discrete_triangle_1cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 140, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 140, 0, - 0, 0, 4, 0, 0, 0, - 8, 0, 0, 0, 104, 0, - 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 2, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 104, 0, 0, 0, 1, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 104, 0, 0, 0, 2, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 118, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 64, 1, 0, 0, - 81, 0, 3, 0, 80, 0, - 0, 0, 113, 0, 0, 1, - 147, 8, 0, 1, 148, 8, - 0, 1, 149, 16, 0, 1, - 150, 8, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 64, 1, + 0, 0, 81, 0, 3, 0, + 80, 0, 0, 0, 113, 0, + 0, 1, 147, 8, 0, 1, + 148, 8, 0, 1, 149, 16, + 0, 1, 150, 8, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 114, 0, 0, 1, 95, 0, + 0, 4, 18, 16, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 16, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 153, 0, + 0, 2, 3, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 17, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 18, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 2, 0, 0, 0, 19, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 114, 0, - 0, 1, 95, 0, 0, 4, - 18, 16, 32, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 101, 0, 0, 3, 18, 32, - 16, 0, 0, 0, 0, 0, - 54, 0, 0, 6, 18, 32, - 16, 0, 0, 0, 0, 0, - 10, 16, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 153, 0, 0, 2, - 3, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 103, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 18, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 19, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 10, 0, 16, 0, 0, 0, + 3, 0, 0, 0, 20, 0, + 0, 0, 54, 0, 0, 7, + 18, 32, 16, 0, 3, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 103, 0, 0, 4, - 18, 32, 16, 0, 3, 0, - 0, 0, 20, 0, 0, 0, - 54, 0, 0, 7, 18, 32, - 16, 0, 3, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 7, 0, 0, 0, 1, 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, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 7, 0, - 0, 0, 1, 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, 8, 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, + 1, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 2, 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, - 8, 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, 1, 0, - 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_3cp_hs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_3cp_hs.h index 7f853cbc1..e307b31ff 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_3cp_hs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/discrete_triangle_3cp_hs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -110,21 +110,21 @@ ret const BYTE discrete_triangle_3cp_hs[] = { - 68, 88, 66, 67, 159, 101, - 17, 163, 1, 25, 162, 203, - 87, 30, 32, 90, 1, 126, - 212, 108, 1, 0, 0, 0, - 16, 13, 0, 0, 6, 0, + 68, 88, 66, 67, 32, 22, + 215, 129, 127, 110, 70, 162, + 42, 32, 73, 43, 11, 32, + 196, 23, 1, 0, 0, 0, + 24, 13, 0, 0, 6, 0, 0, 0, 56, 0, 0, 0, - 108, 10, 0, 0, 160, 10, - 0, 0, 212, 10, 0, 0, - 104, 11, 0, 0, 116, 12, + 116, 10, 0, 0, 168, 10, + 0, 0, 220, 10, 0, 0, + 112, 11, 0, 0, 124, 12, 0, 0, 82, 68, 69, 70, - 44, 10, 0, 0, 1, 0, + 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 83, 72, - 0, 5, 0, 0, 2, 10, + 0, 5, 0, 0, 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, @@ -244,103 +244,103 @@ const BYTE discrete_triangle_3cp_hs[] = 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 209, 7, + 0, 0, 0, 0, 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 230, 7, 0, 0, + 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 254, 7, 0, 0, 224, 0, + 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 15, 8, + 0, 0, 0, 0, 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 55, 8, 0, 0, + 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 8, 0, 0, 240, 0, + 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 8, + 0, 0, 0, 0, 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 171, 8, 0, 0, + 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 197, 8, 0, 0, 16, 1, + 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 216, 8, + 0, 0, 0, 0, 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 252, 8, + 0, 0, 0, 0, 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 64, 9, 0, 0, + 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 89, 9, 0, 0, 80, 1, + 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 108, 9, + 0, 0, 0, 0, 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 144, 9, + 0, 0, 0, 0, 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 168, 9, 0, 0, + 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 204, 9, 0, 0, + 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 28, 9, 0, 0, 0, 0, + 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 234, 9, 0, 0, 192, 1, + 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 108, 8, + 0, 0, 0, 0, 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, @@ -453,51 +453,87 @@ const BYTE discrete_triangle_3cp_hs[] = 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, 114, 101, - 115, 111, 108, 118, 101, 100, - 0, 120, 101, 95, 115, 97, - 109, 112, 108, 101, 95, 99, - 111, 117, 110, 116, 95, 108, - 111, 103, 50, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 101, 115, 116, 95, - 114, 101, 102, 101, 114, 101, - 110, 99, 101, 0, 120, 101, - 95, 97, 108, 112, 104, 97, - 95, 116, 111, 95, 109, 97, - 115, 107, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 51, 50, 98, 112, 112, 95, - 116, 105, 108, 101, 95, 112, - 105, 116, 99, 104, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, + 115, 111, 108, 117, 116, 105, + 111, 110, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 115, 97, 109, 112, 108, + 101, 95, 99, 111, 117, 110, + 116, 95, 108, 111, 103, 50, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 101, + 115, 116, 95, 114, 101, 102, + 101, 114, 101, 110, 99, 101, + 0, 120, 101, 95, 97, 108, + 112, 104, 97, 95, 116, 111, + 95, 109, 97, 115, 107, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 51, 50, 98, + 112, 112, 95, 116, 105, 108, + 101, 95, 112, 105, 116, 99, + 104, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 100, 101, 112, 116, 104, + 95, 98, 97, 115, 101, 95, + 100, 119, 111, 114, 100, 115, + 95, 115, 99, 97, 108, 101, + 100, 0, 120, 101, 95, 99, + 111, 108, 111, 114, 95, 101, + 120, 112, 95, 98, 105, 97, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 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, 92, 6, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 112, + 111, 108, 121, 95, 111, 102, + 102, 115, 101, 116, 95, 102, + 114, 111, 110, 116, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 112, 111, 108, 121, + 95, 111, 102, 102, 115, 101, + 116, 95, 98, 97, 99, 107, 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 100, 101, - 112, 116, 104, 95, 98, 97, - 115, 101, 95, 100, 119, 111, - 114, 100, 115, 95, 115, 99, - 97, 108, 101, 100, 0, 120, - 101, 95, 99, 111, 108, 111, - 114, 95, 101, 120, 112, 95, - 98, 105, 97, 115, 0, 171, + 114, 97, 109, 95, 115, 116, + 101, 110, 99, 105, 108, 0, + 171, 171, 1, 0, 19, 0, + 1, 0, 4, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 7, + 0, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 114, + 116, 95, 98, 97, 115, 101, + 95, 100, 119, 111, 114, 100, + 115, 95, 115, 99, 97, 108, + 101, 100, 0, 171, 1, 0, + 19, 0, 1, 0, 4, 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, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 102, 111, + 114, 109, 97, 116, 95, 102, + 108, 97, 103, 115, 0, 120, + 101, 95, 101, 100, 114, 97, + 109, 95, 114, 116, 95, 99, + 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, 1, 0, - 4, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, 100, 114, - 97, 109, 95, 112, 111, 108, - 121, 95, 111, 102, 102, 115, - 101, 116, 95, 102, 114, 111, - 110, 116, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 112, 111, 108, 121, 95, 111, - 102, 102, 115, 101, 116, 95, - 98, 97, 99, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 115, 116, 101, 110, - 99, 105, 108, 0, 171, 171, + 97, 109, 95, 114, 116, 95, + 107, 101, 101, 112, 95, 109, + 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -506,166 +542,131 @@ const BYTE discrete_triangle_3cp_hs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, 116, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 171, 1, 0, 19, 0, - 1, 0, 4, 0, 0, 0, + 98, 108, 101, 110, 100, 95, + 102, 97, 99, 116, 111, 114, + 115, 95, 111, 112, 115, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 98, 108, 101, + 110, 100, 95, 99, 111, 110, + 115, 116, 97, 110, 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, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 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, 143, 7, - 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 114, - 116, 95, 102, 111, 114, 109, - 97, 116, 95, 102, 108, 97, - 103, 115, 0, 120, 101, 95, - 101, 100, 114, 97, 109, 95, - 114, 116, 95, 99, 108, 97, - 109, 112, 0, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 92, 6, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 107, 101, - 101, 112, 95, 109, 97, 115, - 107, 0, 171, 171, 1, 0, - 19, 0, 1, 0, 4, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 98, 108, - 101, 110, 100, 95, 102, 97, - 99, 116, 111, 114, 115, 95, - 111, 112, 115, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 98, 108, 101, 110, 100, - 95, 99, 111, 110, 115, 116, - 97, 110, 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, 73, 83, + 1, 1, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 14, 0, 0, 88, 69, 86, 69, 82, 84, 69, 88, 73, 68, - 0, 171, 79, 83, 71, 78, - 44, 0, 0, 0, 1, 0, + 0, 171, 80, 67, 83, 71, + 140, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, - 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, - 88, 69, 86, 69, 82, 84, - 69, 88, 73, 68, 0, 171, - 80, 67, 83, 71, 140, 0, - 0, 0, 4, 0, 0, 0, - 8, 0, 0, 0, 104, 0, - 0, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 0, - 1, 14, 0, 0, 104, 0, - 0, 0, 2, 0, 0, 0, - 13, 0, 0, 0, 3, 0, - 0, 0, 2, 0, 0, 0, - 1, 14, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 14, 0, 0, 83, 86, - 95, 84, 101, 115, 115, 70, - 97, 99, 116, 111, 114, 0, - 83, 86, 95, 73, 110, 115, - 105, 100, 101, 84, 101, 115, + 104, 0, 0, 0, 1, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 1, 14, 0, 0, + 104, 0, 0, 0, 2, 0, + 0, 0, 13, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 1, 14, 0, 0, + 118, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 14, 0, 0, + 83, 86, 95, 84, 101, 115, 115, 70, 97, 99, 116, 111, - 114, 0, 171, 171, 83, 72, - 69, 88, 4, 1, 0, 0, - 81, 0, 3, 0, 65, 0, - 0, 0, 113, 0, 0, 1, - 147, 24, 0, 1, 148, 24, - 0, 1, 149, 16, 0, 1, - 150, 8, 0, 1, 151, 24, - 0, 1, 106, 8, 0, 1, - 89, 0, 0, 7, 70, 142, + 114, 0, 83, 86, 95, 73, + 110, 115, 105, 100, 101, 84, + 101, 115, 115, 70, 97, 99, + 116, 111, 114, 0, 171, 171, + 83, 72, 69, 88, 4, 1, + 0, 0, 81, 0, 3, 0, + 65, 0, 0, 0, 113, 0, + 0, 1, 147, 24, 0, 1, + 148, 24, 0, 1, 149, 16, + 0, 1, 150, 8, 0, 1, + 151, 24, 0, 1, 106, 8, + 0, 1, 89, 0, 0, 7, + 70, 142, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 115, 0, 0, 1, 153, 0, + 0, 2, 3, 0, 0, 0, + 95, 0, 0, 2, 0, 112, + 1, 0, 103, 0, 0, 4, + 18, 32, 16, 0, 0, 0, + 0, 0, 17, 0, 0, 0, + 103, 0, 0, 4, 18, 32, + 16, 0, 1, 0, 0, 0, + 18, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 2, 0, 0, 0, 19, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 91, 0, + 0, 4, 18, 32, 16, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 54, 0, 0, 4, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 112, 1, 0, + 54, 0, 0, 8, 18, 32, + 144, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 115, 0, - 0, 1, 153, 0, 0, 2, - 3, 0, 0, 0, 95, 0, - 0, 2, 0, 112, 1, 0, - 103, 0, 0, 4, 18, 32, - 16, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 103, 0, + 0, 0, 62, 0, 0, 1, + 115, 0, 0, 1, 103, 0, 0, 4, 18, 32, 16, 0, - 1, 0, 0, 0, 18, 0, - 0, 0, 103, 0, 0, 4, - 18, 32, 16, 0, 2, 0, - 0, 0, 19, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 91, 0, 0, 4, - 18, 32, 16, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 54, 0, 0, 4, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 112, 1, 0, 54, 0, - 0, 8, 18, 32, 144, 0, - 10, 0, 16, 0, 0, 0, + 3, 0, 0, 0, 20, 0, + 0, 0, 54, 0, 0, 7, + 18, 32, 16, 0, 3, 0, 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 115, 0, - 0, 1, 103, 0, 0, 4, - 18, 32, 16, 0, 3, 0, - 0, 0, 20, 0, 0, 0, - 54, 0, 0, 7, 18, 32, - 16, 0, 3, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, - 0, 1, 83, 84, 65, 84, - 148, 0, 0, 0, 5, 0, - 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 4, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 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, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 10, 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, 3, 0, - 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 10, 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, + 3, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_adaptive_vs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_adaptive_vs.h index 39f388e92..a958cf825 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_adaptive_vs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_adaptive_vs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -92,21 +92,21 @@ ret const BYTE tessellation_adaptive_vs[] = { - 68, 88, 66, 67, 124, 10, - 20, 236, 52, 205, 17, 163, - 29, 96, 4, 68, 69, 43, - 2, 171, 1, 0, 0, 0, - 116, 13, 0, 0, 5, 0, + 68, 88, 66, 67, 176, 83, + 38, 124, 12, 115, 219, 54, + 63, 56, 200, 154, 202, 77, + 95, 132, 1, 0, 0, 0, + 124, 13, 0, 0, 5, 0, 0, 0, 52, 0, 0, 0, - 104, 10, 0, 0, 156, 10, - 0, 0, 212, 10, 0, 0, - 216, 12, 0, 0, 82, 68, - 69, 70, 44, 10, 0, 0, + 112, 10, 0, 0, 164, 10, + 0, 0, 220, 10, 0, 0, + 224, 12, 0, 0, 82, 68, + 69, 70, 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 254, 255, 0, 5, 0, 0, - 2, 10, 0, 0, 19, 19, + 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, @@ -226,103 +226,103 @@ const BYTE tessellation_adaptive_vs[] = 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 209, 7, 0, 0, 212, 0, + 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 230, 7, + 0, 0, 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 254, 7, 0, 0, + 0, 0, 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 15, 8, 0, 0, 228, 0, + 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 55, 8, + 0, 0, 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 89, 8, 0, 0, + 0, 0, 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 108, 8, 0, 0, 0, 0, + 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 144, 8, 0, 0, 0, 1, + 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 171, 8, + 0, 0, 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 197, 8, 0, 0, + 0, 0, 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 216, 8, 0, 0, 0, 0, + 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 252, 8, 0, 0, 48, 1, + 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 28, 9, + 0, 0, 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 64, 9, + 0, 0, 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 89, 9, 0, 0, + 0, 0, 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 108, 9, 0, 0, 0, 0, + 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 144, 9, 0, 0, 144, 1, + 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 168, 9, + 0, 0, 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 204, 9, + 0, 0, 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 234, 9, 0, 0, + 0, 0, 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 108, 8, 0, 0, 0, 0, + 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, @@ -434,51 +434,87 @@ const BYTE tessellation_adaptive_vs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, - 114, 101, 115, 111, 108, 118, - 101, 100, 0, 120, 101, 95, - 115, 97, 109, 112, 108, 101, - 95, 99, 111, 117, 110, 116, - 95, 108, 111, 103, 50, 0, - 120, 101, 95, 97, 108, 112, - 104, 97, 95, 116, 101, 115, - 116, 95, 114, 101, 102, 101, - 114, 101, 110, 99, 101, 0, - 120, 101, 95, 97, 108, 112, - 104, 97, 95, 116, 111, 95, - 109, 97, 115, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 51, 50, 98, 112, - 112, 95, 116, 105, 108, 101, - 95, 112, 105, 116, 99, 104, - 95, 100, 119, 111, 114, 100, - 115, 95, 115, 99, 97, 108, - 101, 100, 0, 120, 101, 95, + 114, 101, 115, 111, 108, 117, + 116, 105, 111, 110, 95, 115, + 99, 97, 108, 101, 100, 0, + 120, 101, 95, 115, 97, 109, + 112, 108, 101, 95, 99, 111, + 117, 110, 116, 95, 108, 111, + 103, 50, 0, 120, 101, 95, + 97, 108, 112, 104, 97, 95, + 116, 101, 115, 116, 95, 114, + 101, 102, 101, 114, 101, 110, + 99, 101, 0, 120, 101, 95, + 97, 108, 112, 104, 97, 95, + 116, 111, 95, 109, 97, 115, + 107, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 51, + 50, 98, 112, 112, 95, 116, + 105, 108, 101, 95, 112, 105, + 116, 99, 104, 95, 100, 119, + 111, 114, 100, 115, 95, 115, + 99, 97, 108, 101, 100, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 100, 101, 112, + 116, 104, 95, 98, 97, 115, + 101, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 99, 111, 108, 111, 114, + 95, 101, 120, 112, 95, 98, + 105, 97, 115, 0, 1, 0, + 3, 0, 1, 0, 4, 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, + 92, 6, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 112, 111, 108, 121, 95, + 111, 102, 102, 115, 101, 116, + 95, 102, 114, 111, 110, 116, + 0, 120, 101, 95, 101, 100, + 114, 97, 109, 95, 112, 111, + 108, 121, 95, 111, 102, 102, + 115, 101, 116, 95, 98, 97, + 99, 107, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, - 100, 101, 112, 116, 104, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 120, 101, 95, 99, 111, - 108, 111, 114, 95, 101, 120, - 112, 95, 98, 105, 97, 115, + 115, 116, 101, 110, 99, 105, + 108, 0, 171, 171, 1, 0, + 19, 0, 1, 0, 4, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 98, 97, + 115, 101, 95, 100, 119, 111, + 114, 100, 115, 95, 115, 99, + 97, 108, 101, 100, 0, 171, + 1, 0, 19, 0, 1, 0, + 4, 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, 143, 7, 0, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 114, 116, 95, + 102, 111, 114, 109, 97, 116, + 95, 102, 108, 97, 103, 115, + 0, 120, 101, 95, 101, 100, + 114, 97, 109, 95, 114, 116, + 95, 99, 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, - 1, 0, 4, 0, 0, 0, + 1, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 112, - 111, 108, 121, 95, 111, 102, - 102, 115, 101, 116, 95, 102, - 114, 111, 110, 116, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 112, 111, 108, 121, - 95, 111, 102, 102, 115, 101, - 116, 95, 98, 97, 99, 107, - 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 115, 116, - 101, 110, 99, 105, 108, 0, + 100, 114, 97, 109, 95, 114, + 116, 95, 107, 101, 101, 112, + 95, 109, 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, @@ -487,174 +523,139 @@ const BYTE tessellation_adaptive_vs[] = 0, 0, 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, - 116, 95, 98, 97, 115, 101, - 95, 100, 119, 111, 114, 100, - 115, 95, 115, 99, 97, 108, - 101, 100, 0, 171, 1, 0, - 19, 0, 1, 0, 4, 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, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 102, 111, - 114, 109, 97, 116, 95, 102, - 108, 97, 103, 115, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 114, 116, 95, 99, - 108, 97, 109, 112, 0, 171, - 1, 0, 3, 0, 1, 0, - 4, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 92, 6, 0, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 114, 116, 95, - 107, 101, 101, 112, 95, 109, - 97, 115, 107, 0, 171, 171, - 1, 0, 19, 0, 1, 0, - 4, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 143, 7, 0, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 114, 116, 95, - 98, 108, 101, 110, 100, 95, - 102, 97, 99, 116, 111, 114, - 115, 95, 111, 112, 115, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 98, 108, 101, - 110, 100, 95, 99, 111, 110, - 115, 116, 97, 110, 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, - 73, 83, 71, 78, 44, 0, + 116, 95, 98, 108, 101, 110, + 100, 95, 102, 97, 99, 116, + 111, 114, 115, 95, 111, 112, + 115, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 98, + 108, 101, 110, 100, 95, 99, + 111, 110, 115, 116, 97, 110, + 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, 73, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, + 83, 86, 95, 86, 101, 114, + 116, 101, 120, 73, 68, 0, + 79, 83, 71, 78, 48, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 83, 86, - 95, 86, 101, 114, 116, 101, - 120, 73, 68, 0, 79, 83, - 71, 78, 48, 0, 0, 0, - 1, 0, 0, 0, 8, 0, - 0, 0, 32, 0, 0, 0, + 1, 14, 0, 0, 88, 69, + 84, 69, 83, 83, 70, 65, + 67, 84, 79, 82, 0, 171, + 171, 171, 83, 72, 69, 88, + 252, 1, 0, 0, 81, 0, + 1, 0, 127, 0, 0, 0, + 106, 8, 0, 1, 89, 0, + 0, 7, 70, 142, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 14, - 0, 0, 88, 69, 84, 69, - 83, 83, 70, 65, 67, 84, - 79, 82, 0, 171, 171, 171, - 83, 72, 69, 88, 252, 1, - 0, 0, 81, 0, 1, 0, - 127, 0, 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, - 96, 0, 0, 4, 18, 16, + 2, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 4, + 18, 16, 16, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 101, 0, 0, 3, 18, 32, 16, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 101, 0, - 0, 3, 18, 32, 16, 0, - 0, 0, 0, 0, 104, 0, - 0, 2, 1, 0, 0, 0, - 32, 0, 0, 12, 114, 0, - 16, 0, 0, 0, 0, 0, - 6, 128, 48, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 32, 0, 0, 12, + 114, 0, 16, 0, 0, 0, + 0, 0, 6, 128, 48, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 2, 64, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, - 60, 0, 0, 7, 50, 0, + 2, 64, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 60, 0, 0, 7, + 50, 0, 16, 0, 0, 0, + 0, 0, 150, 5, 16, 0, + 0, 0, 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, - 150, 5, 16, 0, 0, 0, - 0, 0, 70, 0, 16, 0, - 0, 0, 0, 0, 31, 0, - 4, 3, 10, 0, 16, 0, - 0, 0, 0, 0, 41, 0, - 0, 7, 18, 0, 16, 0, + 31, 0, 4, 3, 10, 0, + 16, 0, 0, 0, 0, 0, + 41, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 16, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 8, 0, 0, 0, 85, 0, + 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 10, 16, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 8, 0, - 0, 0, 85, 0, 0, 7, - 66, 0, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 10, + 82, 0, 16, 0, 0, 0, + 0, 0, 6, 2, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 255, 0, 255, + 0, 0, 0, 0, 255, 0, + 255, 0, 0, 0, 0, 0, + 30, 0, 0, 7, 18, 0, + 16, 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, 54, 0, 0, 5, + 18, 0, 16, 0, 0, 0, 0, 0, 10, 16, 16, 0, + 0, 0, 0, 0, 21, 0, + 0, 1, 31, 0, 4, 3, + 26, 0, 16, 0, 0, 0, + 0, 0, 85, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 8, 0, 0, 0, - 1, 0, 0, 10, 82, 0, + 0, 0, 16, 0, 0, 0, + 140, 0, 0, 11, 18, 0, 16, 0, 0, 0, 0, 0, - 6, 2, 16, 0, 0, 0, - 0, 0, 2, 64, 0, 0, - 0, 255, 0, 255, 0, 0, - 0, 0, 255, 0, 255, 0, - 0, 0, 0, 0, 30, 0, - 0, 7, 18, 0, 16, 0, - 0, 0, 0, 0, 42, 0, + 1, 64, 0, 0, 16, 0, + 0, 0, 1, 64, 0, 0, + 16, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 18, 0, 0, 1, - 54, 0, 0, 5, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 16, 16, 0, 0, 0, + 26, 0, 16, 0, 0, 0, 0, 0, 21, 0, 0, 1, - 31, 0, 4, 3, 26, 0, - 16, 0, 0, 0, 0, 0, - 85, 0, 0, 7, 34, 0, + 0, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 16, 0, 0, 0, 140, 0, - 0, 11, 18, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 16, 0, 0, 0, - 1, 64, 0, 0, 16, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 21, 0, 0, 1, 0, 0, - 0, 7, 18, 0, 16, 0, + 0, 0, 128, 63, 52, 0, + 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 52, 0, 0, 9, - 18, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 26, 128, - 48, 0, 0, 0, 0, 0, + 26, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 0, 0, 9, - 18, 32, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 42, 128, - 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 0, + 0, 9, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 62, 0, 0, 1, - 83, 84, 65, 84, 148, 0, - 0, 0, 18, 0, 0, 0, - 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 148, 0, 0, 0, 18, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 3, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, - 2, 0, 0, 0, 2, 0, + 2, 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, - 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -665,5 +666,6 @@ const BYTE tessellation_adaptive_vs[] = 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 }; diff --git a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_indexed_vs.h b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_indexed_vs.h index bace06328..db3fd3cc9 100644 --- a/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_indexed_vs.h +++ b/src/xenia/gpu/shaders/bytecode/d3d12_5_1/tessellation_indexed_vs.h @@ -22,7 +22,7 @@ // float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused] // float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused] // uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused] -// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused] +// uint xe_textures_resolution_scaled;// Offset: 208 Size: 4 [unused] // uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused] // float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused] // uint xe_alpha_to_mask; // Offset: 224 Size: 4 [unused] @@ -94,21 +94,21 @@ ret const BYTE tessellation_indexed_vs[] = { - 68, 88, 66, 67, 72, 50, - 55, 79, 78, 232, 44, 71, - 22, 110, 232, 129, 83, 139, - 178, 150, 1, 0, 0, 0, - 168, 13, 0, 0, 5, 0, + 68, 88, 66, 67, 141, 104, + 237, 168, 205, 100, 22, 191, + 159, 23, 183, 42, 54, 72, + 27, 224, 1, 0, 0, 0, + 176, 13, 0, 0, 5, 0, 0, 0, 52, 0, 0, 0, - 104, 10, 0, 0, 156, 10, - 0, 0, 208, 10, 0, 0, - 12, 13, 0, 0, 82, 68, - 69, 70, 44, 10, 0, 0, + 112, 10, 0, 0, 164, 10, + 0, 0, 216, 10, 0, 0, + 20, 13, 0, 0, 82, 68, + 69, 70, 52, 10, 0, 0, 1, 0, 0, 0, 120, 0, 0, 0, 1, 0, 0, 0, 60, 0, 0, 0, 1, 5, 254, 255, 0, 5, 0, 0, - 2, 10, 0, 0, 19, 19, + 10, 10, 0, 0, 19, 19, 68, 37, 60, 0, 0, 0, 24, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, @@ -228,103 +228,103 @@ const BYTE tessellation_indexed_vs[] = 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 209, 7, 0, 0, 212, 0, + 218, 7, 0, 0, 212, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 230, 7, + 0, 0, 0, 0, 239, 7, 0, 0, 220, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 228, 6, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 254, 7, 0, 0, + 0, 0, 7, 8, 0, 0, 224, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 15, 8, 0, 0, 228, 0, + 24, 8, 0, 0, 228, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 55, 8, + 0, 0, 0, 0, 64, 8, 0, 0, 232, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 89, 8, 0, 0, + 0, 0, 98, 8, 0, 0, 240, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 108, 8, 0, 0, 0, 0, + 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 144, 8, 0, 0, 0, 1, + 152, 8, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 171, 8, + 0, 0, 0, 0, 179, 8, 0, 0, 8, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 152, 5, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 197, 8, 0, 0, + 0, 0, 205, 8, 0, 0, 16, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 216, 8, 0, 0, 0, 0, + 224, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 252, 8, 0, 0, 48, 1, + 4, 9, 0, 0, 48, 1, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 28, 9, + 0, 0, 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 64, 9, + 0, 0, 0, 0, 72, 9, 0, 0, 64, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 89, 9, 0, 0, + 0, 0, 97, 9, 0, 0, 80, 1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 108, 9, 0, 0, 0, 0, + 116, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, - 144, 9, 0, 0, 144, 1, + 152, 9, 0, 0, 144, 1, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 168, 9, + 0, 0, 0, 0, 176, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, - 0, 0, 0, 0, 204, 9, + 0, 0, 0, 0, 212, 9, 0, 0, 176, 1, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 28, 9, 0, 0, + 0, 0, 36, 9, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, - 0, 0, 234, 9, 0, 0, + 0, 0, 242, 9, 0, 0, 192, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 108, 8, 0, 0, 0, 0, + 116, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, @@ -436,51 +436,87 @@ const BYTE tessellation_indexed_vs[] = 0, 0, 143, 7, 0, 0, 120, 101, 95, 116, 101, 120, 116, 117, 114, 101, 115, 95, - 114, 101, 115, 111, 108, 118, - 101, 100, 0, 120, 101, 95, - 115, 97, 109, 112, 108, 101, - 95, 99, 111, 117, 110, 116, - 95, 108, 111, 103, 50, 0, - 120, 101, 95, 97, 108, 112, - 104, 97, 95, 116, 101, 115, - 116, 95, 114, 101, 102, 101, - 114, 101, 110, 99, 101, 0, - 120, 101, 95, 97, 108, 112, - 104, 97, 95, 116, 111, 95, - 109, 97, 115, 107, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 51, 50, 98, 112, - 112, 95, 116, 105, 108, 101, - 95, 112, 105, 116, 99, 104, - 95, 100, 119, 111, 114, 100, - 115, 95, 115, 99, 97, 108, - 101, 100, 0, 120, 101, 95, + 114, 101, 115, 111, 108, 117, + 116, 105, 111, 110, 95, 115, + 99, 97, 108, 101, 100, 0, + 120, 101, 95, 115, 97, 109, + 112, 108, 101, 95, 99, 111, + 117, 110, 116, 95, 108, 111, + 103, 50, 0, 120, 101, 95, + 97, 108, 112, 104, 97, 95, + 116, 101, 115, 116, 95, 114, + 101, 102, 101, 114, 101, 110, + 99, 101, 0, 120, 101, 95, + 97, 108, 112, 104, 97, 95, + 116, 111, 95, 109, 97, 115, + 107, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 51, + 50, 98, 112, 112, 95, 116, + 105, 108, 101, 95, 112, 105, + 116, 99, 104, 95, 100, 119, + 111, 114, 100, 115, 95, 115, + 99, 97, 108, 101, 100, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 100, 101, 112, + 116, 104, 95, 98, 97, 115, + 101, 95, 100, 119, 111, 114, + 100, 115, 95, 115, 99, 97, + 108, 101, 100, 0, 120, 101, + 95, 99, 111, 108, 111, 114, + 95, 101, 120, 112, 95, 98, + 105, 97, 115, 0, 1, 0, + 3, 0, 1, 0, 4, 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, + 92, 6, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 112, 111, 108, 121, 95, + 111, 102, 102, 115, 101, 116, + 95, 102, 114, 111, 110, 116, + 0, 120, 101, 95, 101, 100, + 114, 97, 109, 95, 112, 111, + 108, 121, 95, 111, 102, 102, + 115, 101, 116, 95, 98, 97, + 99, 107, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, - 100, 101, 112, 116, 104, 95, - 98, 97, 115, 101, 95, 100, - 119, 111, 114, 100, 115, 95, - 115, 99, 97, 108, 101, 100, - 0, 120, 101, 95, 99, 111, - 108, 111, 114, 95, 101, 120, - 112, 95, 98, 105, 97, 115, + 115, 116, 101, 110, 99, 105, + 108, 0, 171, 171, 1, 0, + 19, 0, 1, 0, 4, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 143, 7, 0, 0, 120, 101, + 95, 101, 100, 114, 97, 109, + 95, 114, 116, 95, 98, 97, + 115, 101, 95, 100, 119, 111, + 114, 100, 115, 95, 115, 99, + 97, 108, 101, 100, 0, 171, + 1, 0, 19, 0, 1, 0, + 4, 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, 143, 7, 0, 0, + 120, 101, 95, 101, 100, 114, + 97, 109, 95, 114, 116, 95, + 102, 111, 114, 109, 97, 116, + 95, 102, 108, 97, 103, 115, + 0, 120, 101, 95, 101, 100, + 114, 97, 109, 95, 114, 116, + 95, 99, 108, 97, 109, 112, 0, 171, 1, 0, 3, 0, - 1, 0, 4, 0, 0, 0, + 1, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 6, 0, 0, 120, 101, 95, 101, - 100, 114, 97, 109, 95, 112, - 111, 108, 121, 95, 111, 102, - 102, 115, 101, 116, 95, 102, - 114, 111, 110, 116, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 112, 111, 108, 121, - 95, 111, 102, 102, 115, 101, - 116, 95, 98, 97, 99, 107, - 0, 120, 101, 95, 101, 100, - 114, 97, 109, 95, 115, 116, - 101, 110, 99, 105, 108, 0, + 100, 114, 97, 109, 95, 114, + 116, 95, 107, 101, 101, 112, + 95, 109, 97, 115, 107, 0, 171, 171, 1, 0, 19, 0, 1, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, @@ -489,184 +525,149 @@ const BYTE tessellation_indexed_vs[] = 0, 0, 0, 0, 143, 7, 0, 0, 120, 101, 95, 101, 100, 114, 97, 109, 95, 114, - 116, 95, 98, 97, 115, 101, - 95, 100, 119, 111, 114, 100, - 115, 95, 115, 99, 97, 108, - 101, 100, 0, 171, 1, 0, - 19, 0, 1, 0, 4, 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, - 143, 7, 0, 0, 120, 101, - 95, 101, 100, 114, 97, 109, - 95, 114, 116, 95, 102, 111, - 114, 109, 97, 116, 95, 102, - 108, 97, 103, 115, 0, 120, - 101, 95, 101, 100, 114, 97, - 109, 95, 114, 116, 95, 99, - 108, 97, 109, 112, 0, 171, - 1, 0, 3, 0, 1, 0, - 4, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 92, 6, 0, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 114, 116, 95, - 107, 101, 101, 112, 95, 109, - 97, 115, 107, 0, 171, 171, - 1, 0, 19, 0, 1, 0, - 4, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 143, 7, 0, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 114, 116, 95, - 98, 108, 101, 110, 100, 95, - 102, 97, 99, 116, 111, 114, - 115, 95, 111, 112, 115, 0, - 120, 101, 95, 101, 100, 114, - 97, 109, 95, 98, 108, 101, - 110, 100, 95, 99, 111, 110, - 115, 116, 97, 110, 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, - 73, 83, 71, 78, 44, 0, + 116, 95, 98, 108, 101, 110, + 100, 95, 102, 97, 99, 116, + 111, 114, 115, 95, 111, 112, + 115, 0, 120, 101, 95, 101, + 100, 114, 97, 109, 95, 98, + 108, 101, 110, 100, 95, 99, + 111, 110, 115, 116, 97, 110, + 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, 73, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, + 83, 86, 95, 86, 101, 114, + 116, 101, 120, 73, 68, 0, + 79, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 83, 86, - 95, 86, 101, 114, 116, 101, - 120, 73, 68, 0, 79, 83, - 71, 78, 44, 0, 0, 0, - 1, 0, 0, 0, 8, 0, - 0, 0, 32, 0, 0, 0, + 1, 14, 0, 0, 88, 69, + 86, 69, 82, 84, 69, 88, + 73, 68, 0, 171, 83, 72, + 69, 88, 52, 2, 0, 0, + 81, 0, 1, 0, 141, 0, + 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, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 14, - 0, 0, 88, 69, 86, 69, - 82, 84, 69, 88, 73, 68, - 0, 171, 83, 72, 69, 88, - 52, 2, 0, 0, 81, 0, - 1, 0, 141, 0, 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, 96, 0, 0, 4, - 18, 16, 16, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 101, 0, 0, 3, 18, 32, - 16, 0, 0, 0, 0, 0, - 104, 0, 0, 2, 1, 0, - 0, 0, 32, 0, 0, 12, - 114, 0, 16, 0, 0, 0, - 0, 0, 6, 128, 48, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 2, 64, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, - 0, 0, 60, 0, 0, 7, - 50, 0, 16, 0, 0, 0, - 0, 0, 150, 5, 16, 0, - 0, 0, 0, 0, 70, 0, + 0, 0, 0, 0, 96, 0, + 0, 4, 18, 16, 16, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 32, 0, + 0, 12, 114, 0, 16, 0, + 0, 0, 0, 0, 6, 128, + 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 60, 0, + 0, 7, 50, 0, 16, 0, + 0, 0, 0, 0, 150, 5, 16, 0, 0, 0, 0, 0, - 31, 0, 4, 3, 10, 0, - 16, 0, 0, 0, 0, 0, - 41, 0, 0, 7, 18, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 31, 0, 4, 3, + 10, 0, 16, 0, 0, 0, + 0, 0, 41, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 16, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 8, 0, 0, 0, + 85, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 10, 16, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 8, 0, 0, 0, 85, 0, - 0, 7, 66, 0, 16, 0, + 8, 0, 0, 0, 1, 0, + 0, 10, 82, 0, 16, 0, + 0, 0, 0, 0, 6, 2, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 255, + 0, 255, 0, 0, 0, 0, + 255, 0, 255, 0, 0, 0, + 0, 0, 30, 0, 0, 7, + 18, 0, 16, 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, 54, 0, + 0, 5, 18, 0, 16, 0, 0, 0, 0, 0, 10, 16, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 8, 0, - 0, 0, 1, 0, 0, 10, - 82, 0, 16, 0, 0, 0, - 0, 0, 6, 2, 16, 0, - 0, 0, 0, 0, 2, 64, - 0, 0, 0, 255, 0, 255, - 0, 0, 0, 0, 255, 0, - 255, 0, 0, 0, 0, 0, - 30, 0, 0, 7, 18, 0, - 16, 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, 54, 0, 0, 5, - 18, 0, 16, 0, 0, 0, - 0, 0, 10, 16, 16, 0, - 0, 0, 0, 0, 21, 0, - 0, 1, 31, 0, 4, 3, - 26, 0, 16, 0, 0, 0, - 0, 0, 85, 0, 0, 7, - 34, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 16, 0, 0, 0, - 140, 0, 0, 11, 18, 0, + 21, 0, 0, 1, 31, 0, + 4, 3, 26, 0, 16, 0, + 0, 0, 0, 0, 85, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 16, 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, - 26, 0, 16, 0, 0, 0, - 0, 0, 21, 0, 0, 1, - 30, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 1, 64, + 0, 0, 16, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 21, 0, + 0, 1, 30, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 255, 255, 255, 0, + 83, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, - 0, 0, 26, 128, 48, 0, + 0, 0, 42, 128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 7, 18, 0, + 84, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 255, 255, 255, 0, 83, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 48, 0, 0, 0, + 0, 0, 58, 128, 48, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 84, 0, - 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, + 0, 0, 1, 0, 0, 0, + 86, 0, 0, 5, 18, 32, 16, 0, 0, 0, 0, 0, - 58, 128, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 86, 0, - 0, 5, 18, 32, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 62, 0, 0, 1, 83, 84, - 65, 84, 148, 0, 0, 0, - 20, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, - 7, 0, 0, 0, 2, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 148, 0, + 0, 0, 20, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 7, 0, 0, 0, + 2, 0, 0, 0, 2, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -676,5 +677,5 @@ const BYTE tessellation_indexed_vs[] = 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 }; diff --git a/src/xenia/gpu/shaders/xenos_draw.hlsli b/src/xenia/gpu/shaders/xenos_draw.hlsli index 840662e27..a866ad460 100644 --- a/src/xenia/gpu/shaders/xenos_draw.hlsli +++ b/src/xenia/gpu/shaders/xenos_draw.hlsli @@ -23,7 +23,7 @@ cbuffer xe_system_cbuffer : register(b0) { uint4 xe_texture_swizzled_signs[2]; - uint xe_textures_resolved; + uint xe_textures_resolution_scaled; uint2 xe_sample_count_log2; float xe_alpha_test_reference; diff --git a/src/xenia/gpu/shared_memory.cc b/src/xenia/gpu/shared_memory.cc index c7c5c9c19..50694fdfe 100644 --- a/src/xenia/gpu/shared_memory.cc +++ b/src/xenia/gpu/shared_memory.cc @@ -246,8 +246,7 @@ void SharedMemory::FireWatches(uint32_t page_first, uint32_t page_last, } } -void SharedMemory::RangeWrittenByGpu(uint32_t start, uint32_t length, - bool is_resolve) { +void SharedMemory::RangeWrittenByGpu(uint32_t start, uint32_t length) { if (length == 0 || start >= kBufferSize) { return; } @@ -262,7 +261,7 @@ void SharedMemory::RangeWrittenByGpu(uint32_t start, uint32_t length, // Mark the range as valid (so pages are not reuploaded until modified by the // CPU) and watch it so the CPU can reuse it and this will be caught. - MakeRangeValid(start, length, true, is_resolve); + MakeRangeValid(start, length, true); } bool SharedMemory::AllocateSparseHostGpuMemoryRange( @@ -274,9 +273,7 @@ bool SharedMemory::AllocateSparseHostGpuMemoryRange( } void SharedMemory::MakeRangeValid(uint32_t start, uint32_t length, - bool written_by_gpu, - bool written_by_gpu_resolve) { - assert_false(written_by_gpu_resolve && !written_by_gpu); + bool written_by_gpu) { if (length == 0 || start >= kBufferSize) { return; } @@ -305,11 +302,6 @@ void SharedMemory::MakeRangeValid(uint32_t start, uint32_t length, } else { block.valid_and_gpu_written &= ~valid_bits; } - if (written_by_gpu_resolve) { - block.valid_and_gpu_resolved |= valid_bits; - } else { - block.valid_and_gpu_resolved &= ~valid_bits; - } } } @@ -344,13 +336,9 @@ void SharedMemory::UnlinkWatchRange(WatchRange* range) { watch_range_first_free_ = range; } -bool SharedMemory::RequestRange(uint32_t start, uint32_t length, - bool* any_data_resolved_out) { +bool SharedMemory::RequestRange(uint32_t start, uint32_t length) { if (!length) { // Some texture or buffer is empty, for example - safe to draw in this case. - if (any_data_resolved_out) { - *any_data_resolved_out = false; - } return true; } if (start > kBufferSize || (kBufferSize - start) < length) { @@ -376,20 +364,14 @@ bool SharedMemory::RequestRange(uint32_t start, uint32_t length, for (uint32_t i = block_first; i <= block_last; ++i) { const SystemPageFlagsBlock& block = system_page_flags_[i]; uint64_t block_valid = block.valid; - uint64_t block_resolved = block.valid_and_gpu_resolved; // Consider pages in the block outside the requested range valid. if (i == block_first) { uint64_t block_before = (uint64_t(1) << (page_first & 63)) - 1; block_valid |= block_before; - block_resolved &= ~block_before; } if (i == block_last && (page_last & 63) != 63) { uint64_t block_inside = (uint64_t(1) << ((page_last & 63) + 1)) - 1; block_valid |= ~block_inside; - block_resolved &= block_inside; - } - if (block_resolved) { - any_data_resolved = true; } while (true) { @@ -425,9 +407,6 @@ bool SharedMemory::RequestRange(uint32_t start, uint32_t length, upload_ranges_.push_back( std::make_pair(range_start, page_last + 1 - range_start)); } - if (any_data_resolved_out) { - *any_data_resolved_out = any_data_resolved; - } if (upload_ranges_.empty()) { return true; } @@ -493,7 +472,6 @@ std::pair SharedMemory::MemoryInvalidationCallback( SystemPageFlagsBlock& block = system_page_flags_[i]; block.valid &= ~invalidate_bits; block.valid_and_gpu_written &= ~invalidate_bits; - block.valid_and_gpu_resolved &= ~invalidate_bits; } FireWatches(page_first, page_last, false); diff --git a/src/xenia/gpu/shared_memory.h b/src/xenia/gpu/shared_memory.h index 75d98f143..23249236c 100644 --- a/src/xenia/gpu/shared_memory.h +++ b/src/xenia/gpu/shared_memory.h @@ -76,8 +76,7 @@ class SharedMemory { // Checks if the range has been updated, uploads new data if needed and // ensures the host GPU memory backing the range are resident. Returns true if // the range has been fully updated and is usable. - bool RequestRange(uint32_t start, uint32_t length, - bool* any_data_resolved_out = nullptr); + bool RequestRange(uint32_t start, uint32_t length); // Marks the range and, if not exact_range, potentially its surroundings // (to up to the first GPU-written page, as an access violation exception @@ -93,7 +92,7 @@ class SharedMemory { // be called, to make sure, if the GPU writes don't overwrite *everything* in // the pages they touch, the CPU data is properly loaded to the unmodified // regions in those pages. - void RangeWrittenByGpu(uint32_t start, uint32_t length, bool is_resolve); + void RangeWrittenByGpu(uint32_t start, uint32_t length); protected: SharedMemory(Memory& memory); @@ -127,8 +126,7 @@ class SharedMemory { uint32_t length_allocations); // Mark the memory range as updated and protect it. - void MakeRangeValid(uint32_t start, uint32_t length, bool written_by_gpu, - bool written_by_gpu_resolve); + void MakeRangeValid(uint32_t start, uint32_t length, bool written_by_gpu); // Uploads a range of host pages - only called if host GPU sparse memory // allocation succeeded if needed. While uploading, MakeRangeValid must be @@ -197,9 +195,6 @@ class SharedMemory { // Subset of valid pages - whether each page in the GPU buffer contains data // that was written on the GPU, thus should not be invalidated spuriously. uint64_t valid_and_gpu_written; - // Subset of valid_and_gpu_written - whether each page in the GPU buffer - // contains data written specifically by resolving from EDRAM. - uint64_t valid_and_gpu_resolved; }; // Flags for each 64 system pages, interleaved as blocks, so bit scan can be // used to quickly extract ranges. diff --git a/src/xenia/gpu/spirv_shader_translator_fetch.cc b/src/xenia/gpu/spirv_shader_translator_fetch.cc index 8f5a74690..e0fd8440d 100644 --- a/src/xenia/gpu/spirv_shader_translator_fetch.cc +++ b/src/xenia/gpu/spirv_shader_translator_fetch.cc @@ -2168,7 +2168,6 @@ void SpirvShaderTranslator::ProcessTextureFetchInstruction( builder_->createBranch(&block_sign_merge); // Gamma. builder_->setBuildPoint(&block_sign_gamma_start); - // TODO(Triang3l): Gamma resolve target as sRGB sampling. spv::Id sample_result_component_gamma = PWLGammaToLinear(sample_result_component_unsigned, false); // Get the current build point for the phi operation not to assume diff --git a/src/xenia/gpu/spirv_shader_translator_rb.cc b/src/xenia/gpu/spirv_shader_translator_rb.cc index e19fdd540..6bc9fe11c 100644 --- a/src/xenia/gpu/spirv_shader_translator_rb.cc +++ b/src/xenia/gpu/spirv_shader_translator_rb.cc @@ -1253,7 +1253,7 @@ void SpirvShaderTranslator::CompleteFragmentShaderInMain() { // Convert to gamma space - this is incorrect, since it must be done // after blending on the Xbox 360, but this is just one of many blending // issues in the host render target path. - // TODO(Triang3l): Gamma as sRGB check. + // TODO(Triang3l): Gamma as unorm8 check. uint_vector_temp_.clear(); uint_vector_temp_.push_back(0); uint_vector_temp_.push_back(1); diff --git a/src/xenia/gpu/texture_cache.cc b/src/xenia/gpu/texture_cache.cc index 7ba729b89..8deb76a9d 100644 --- a/src/xenia/gpu/texture_cache.cc +++ b/src/xenia/gpu/texture_cache.cc @@ -293,7 +293,7 @@ void TextureCache::MarkRangeAsResolved(uint32_t start_unscaled, // Invalidate textures. Toggling individual textures between scaled and // unscaled also relies on invalidation through shared memory. - shared_memory().RangeWrittenByGpu(start_unscaled, length_unscaled, true); + shared_memory().RangeWrittenByGpu(start_unscaled, length_unscaled); } uint32_t TextureCache::GuestToHostSwizzle(uint32_t guest_swizzle, @@ -465,8 +465,6 @@ TextureCache::Texture::Texture(TextureCache& texture_cache, : texture_cache_(texture_cache), key_(key), guest_layout_(key.GetGuestLayout()), - base_resolved_(key.scaled_resolve), - mips_resolved_(key.scaled_resolve), last_usage_submission_index_(texture_cache.current_submission_index_), last_usage_time_(texture_cache.current_submission_time_), used_previous_(texture_cache.texture_used_last_), @@ -669,21 +667,17 @@ bool TextureCache::LoadTextureData(Texture& texture) { // its pages is invalidated, in this case we'll need the texture from the // shared memory to load the unscaled parts. // TODO(Triang3l): Load unscaled parts. - bool base_resolved = texture.GetBaseResolved(); if (base_outdated) { if (!shared_memory().RequestRange( texture_key.base_page << 12, - xe::align(texture.GetGuestBaseSize(), UINT32_C(16)), - texture_key.scaled_resolve ? nullptr : &base_resolved)) { + xe::align(texture.GetGuestBaseSize(), UINT32_C(16)))) { return false; } } - bool mips_resolved = texture.GetMipsResolved(); if (mips_outdated) { if (!shared_memory().RequestRange( texture_key.mip_page << 12, - xe::align(texture.GetGuestMipsSize(), UINT32_C(16)), - texture_key.scaled_resolve ? nullptr : &mips_resolved)) { + xe::align(texture.GetGuestMipsSize(), UINT32_C(16)))) { return false; } } @@ -708,14 +702,6 @@ bool TextureCache::LoadTextureData(Texture& texture) { return false; } - // Update the source of the texture (resolve vs. CPU or memexport) for - // purposes of handling piecewise gamma emulation via sRGB and for resolution - // scale in sampling offsets. - if (!texture_key.scaled_resolve) { - texture.SetBaseResolved(base_resolved); - texture.SetMipsResolved(mips_resolved); - } - // Mark the ranges as uploaded and watch them. This is needed for scaled // resolves as well to detect when the CPU wants to reuse the memory for a // regular texture or a vertex buffer, and thus the scaled resolve version is diff --git a/src/xenia/gpu/texture_cache.h b/src/xenia/gpu/texture_cache.h index a85a326b1..e7ec6faa5 100644 --- a/src/xenia/gpu/texture_cache.h +++ b/src/xenia/gpu/texture_cache.h @@ -110,14 +110,15 @@ class TextureCache { GetValidTextureBinding(fetch_constant_index); return binding ? binding->swizzled_signs : kSwizzledSignsUnsigned; } - bool IsActiveTextureResolved(uint32_t fetch_constant_index) const { + bool IsActiveTextureResolutionScaled(uint32_t fetch_constant_index) const { const TextureBinding* binding = GetValidTextureBinding(fetch_constant_index); if (!binding) { return false; } - return (binding->texture && binding->texture->IsResolved()) || - (binding->texture_signed && binding->texture_signed->IsResolved()); + return (binding->texture && binding->texture->key().scaled_resolve) || + (binding->texture_signed && + binding->texture_signed->key().scaled_resolve); } protected: @@ -218,18 +219,6 @@ class TextureCache { } uint64_t last_usage_time() const { return last_usage_time_; } - bool GetBaseResolved() const { return base_resolved_; } - void SetBaseResolved(bool base_resolved) { - assert_false(!base_resolved && key().scaled_resolve); - base_resolved_ = base_resolved; - } - bool GetMipsResolved() const { return mips_resolved_; } - void SetMipsResolved(bool mips_resolved) { - assert_false(!mips_resolved && key().scaled_resolve); - mips_resolved_ = mips_resolved; - } - bool IsResolved() const { return base_resolved_ || mips_resolved_; } - bool base_outdated( const std::unique_lock& global_lock) const { return base_outdated_; @@ -275,13 +264,6 @@ class TextureCache { Texture* used_previous_; Texture* used_next_; - // Whether the most up-to-date base / mips contain pages with data from a - // resolve operation (rather than from the CPU or memexport), primarily for - // choosing between piecewise linear gamma and sRGB when the former is - // emulated with the latter. - bool base_resolved_; - bool mips_resolved_; - // These are to be accessed within the global critical region to synchronize // with shared memory. // Whether the recent base level data needs reloading from the memory. diff --git a/src/xenia/gpu/vulkan/vulkan_command_processor.cc b/src/xenia/gpu/vulkan/vulkan_command_processor.cc index 53a1548ee..7df306c12 100644 --- a/src/xenia/gpu/vulkan/vulkan_command_processor.cc +++ b/src/xenia/gpu/vulkan/vulkan_command_processor.cc @@ -2597,7 +2597,7 @@ bool VulkanCommandProcessor::IssueDraw(xenos::PrimitiveType prim_type, // Invalidate textures in memexported memory and watch for changes. for (const draw_util::MemExportRange& memexport_range : memexport_ranges_) { shared_memory_->RangeWrittenByGpu(memexport_range.base_address_dwords << 2, - memexport_range.size_bytes, false); + memexport_range.size_bytes); } return true; @@ -3499,11 +3499,13 @@ void VulkanCommandProcessor::UpdateSystemConstantValues( flags |= uint32_t(alpha_test_function) << SpirvShaderTranslator::kSysFlag_AlphaPassIfLess_Shift; // Gamma writing. - // TODO(Triang3l): Gamma as sRGB check. - for (uint32_t i = 0; i < xenos::kMaxColorRenderTargets; ++i) { - if (color_infos[i].color_format == - xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { - flags |= SpirvShaderTranslator::kSysFlag_ConvertColor0ToGamma << i; + // TODO(Triang3l): Gamma as unorm8 check. + if (!edram_fragment_shader_interlock) { + for (uint32_t i = 0; i < xenos::kMaxColorRenderTargets; ++i) { + if (color_infos[i].color_format == + xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { + flags |= SpirvShaderTranslator::kSysFlag_ConvertColor0ToGamma << i; + } } } if (edram_fragment_shader_interlock && depth_stencil_enabled) { diff --git a/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc b/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc index 47422876a..4ae8ee266 100644 --- a/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc +++ b/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc @@ -523,6 +523,12 @@ bool VulkanRenderTargetCache::Initialize(uint32_t shared_memory_binding_count) { if (path_ == Path::kHostRenderTargets) { // Host render targets. + // TODO(Triang3l): When color space conversion is implemented in the + // ownership transfer and resolve dump shaders, allow + // `gamma_render_target_as_unorm16` if VK_FORMAT_R16G16B16A16_UNORM supports + // the SAMPLED_IMAGE | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND features. + gamma_render_target_as_unorm16_ = false; + depth_float24_round_ = cvars::depth_float24_round; // Host depth storing pipeline layout. @@ -724,8 +730,8 @@ bool VulkanRenderTargetCache::Initialize(uint32_t shared_memory_binding_count) { } else if (path_ == Path::kPixelShaderInterlock) { // Pixel (fragment) shader interlock. - // Blending is done in linear space directly in shaders. - gamma_render_target_as_srgb_ = false; + // Piecewise linear gamma is 8-bit with programmable blending. + gamma_render_target_as_unorm16_ = false; // Always true float24 depth rounded to the nearest even. depth_float24_round_ = true; @@ -1290,11 +1296,6 @@ bool VulkanRenderTargetCache::Update( depth_and_color_render_targets, last_update_transfers()); - uint32_t render_targets_are_srgb = - gamma_render_target_as_srgb_ - ? last_update_accumulated_color_targets_are_gamma() - : 0; - if (depth_and_color_render_targets[0]) { render_pass_key.depth_and_color_used |= 1 << 0; render_pass_key.depth_format = @@ -1303,30 +1304,22 @@ bool VulkanRenderTargetCache::Update( if (depth_and_color_render_targets[1]) { render_pass_key.depth_and_color_used |= 1 << 1; render_pass_key.color_0_view_format = - (render_targets_are_srgb & (1 << 0)) - ? xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA - : depth_and_color_render_targets[1]->key().GetColorFormat(); + depth_and_color_render_targets[1]->key().GetColorFormat(); } if (depth_and_color_render_targets[2]) { render_pass_key.depth_and_color_used |= 1 << 2; render_pass_key.color_1_view_format = - (render_targets_are_srgb & (1 << 1)) - ? xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA - : depth_and_color_render_targets[2]->key().GetColorFormat(); + depth_and_color_render_targets[2]->key().GetColorFormat(); } if (depth_and_color_render_targets[3]) { render_pass_key.depth_and_color_used |= 1 << 3; render_pass_key.color_2_view_format = - (render_targets_are_srgb & (1 << 2)) - ? xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA - : depth_and_color_render_targets[3]->key().GetColorFormat(); + depth_and_color_render_targets[3]->key().GetColorFormat(); } if (depth_and_color_render_targets[4]) { render_pass_key.depth_and_color_used |= 1 << 4; render_pass_key.color_3_view_format = - (render_targets_are_srgb & (1 << 3)) - ? xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA - : depth_and_color_render_targets[4]->key().GetColorFormat(); + depth_and_color_render_targets[4]->key().GetColorFormat(); } const Framebuffer* framebuffer = last_update_framebuffer_; @@ -1586,8 +1579,8 @@ VkFormat VulkanRenderTargetCache::GetColorVulkanFormat( case xenos::ColorRenderTargetFormat::k_8_8_8_8: return VK_FORMAT_R8G8B8A8_UNORM; case xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA: - return gamma_render_target_as_srgb_ ? VK_FORMAT_R8G8B8A8_SRGB - : VK_FORMAT_R8G8B8A8_UNORM; + return gamma_render_target_as_unorm16_ ? VK_FORMAT_R16G16B16A16_UNORM + : VK_FORMAT_R8G8B8A8_UNORM; case xenos::ColorRenderTargetFormat::k_2_10_10_10: case xenos::ColorRenderTargetFormat::k_2_10_10_10_AS_10_10_10_10: return VK_FORMAT_A8B8G8R8_UNORM_PACK32; @@ -1658,9 +1651,6 @@ VulkanRenderTargetCache::VulkanRenderTarget::~VulkanRenderTarget() { if (view_color_transfer_separate_ != VK_NULL_HANDLE) { dfn.vkDestroyImageView(device, view_color_transfer_separate_, nullptr); } - if (view_srgb_ != VK_NULL_HANDLE) { - dfn.vkDestroyImageView(device, view_srgb_, nullptr); - } if (view_stencil_ != VK_NULL_HANDLE) { dfn.vkDestroyImageView(device, view_stencil_, nullptr); } @@ -1672,6 +1662,10 @@ VulkanRenderTargetCache::VulkanRenderTarget::~VulkanRenderTarget() { dfn.vkFreeMemory(device, memory_, nullptr); } +bool VulkanRenderTargetCache::IsGammaFormatHostStorageSeparate() const { + return gamma_render_target_as_unorm16_; +} + uint32_t VulkanRenderTargetCache::GetMaxRenderTargetWidth() const { const ui::vulkan::VulkanDevice::Properties& device_properties = command_processor_.GetVulkanDevice()->properties(); @@ -1721,7 +1715,6 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( image_create_info.pQueueFamilyIndices = nullptr; image_create_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; VkFormat transfer_format; - bool is_srgb_view_needed = false; if (key.is_depth) { image_create_info.format = GetDepthVulkanFormat(key.GetDepthFormat()); transfer_format = image_create_info.format; @@ -1730,11 +1723,7 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( xenos::ColorRenderTargetFormat color_format = key.GetColorFormat(); image_create_info.format = GetColorVulkanFormat(color_format); transfer_format = GetColorOwnershipTransferVulkanFormat(color_format); - is_srgb_view_needed = - gamma_render_target_as_srgb_ && - (color_format == xenos::ColorRenderTargetFormat::k_8_8_8_8 || - color_format == xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA); - if (image_create_info.format != transfer_format || is_srgb_view_needed) { + if (image_create_info.format != transfer_format) { image_create_info.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; } image_create_info.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; @@ -1788,7 +1777,6 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( } VkImageView view_depth_stencil = VK_NULL_HANDLE; VkImageView view_stencil = VK_NULL_HANDLE; - VkImageView view_srgb = VK_NULL_HANDLE; VkImageView view_color_transfer_separate = VK_NULL_HANDLE; if (key.is_depth) { view_create_info.subresourceRange.aspectMask = @@ -1822,22 +1810,6 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( return nullptr; } } else { - if (is_srgb_view_needed) { - view_create_info.format = VK_FORMAT_R8G8B8A8_SRGB; - if (dfn.vkCreateImageView(device, &view_create_info, nullptr, - &view_srgb) != VK_SUCCESS) { - XELOGE( - "VulkanRenderTarget: Failed to create an sRGB view for a {}x{} " - "{}xMSAA render target", - image_create_info.extent.width, image_create_info.extent.height, - uint32_t(1) << uint32_t(key.msaa_samples), - xenos::GetColorRenderTargetFormatName(key.GetColorFormat())); - dfn.vkDestroyImageView(device, view_depth_color, nullptr); - dfn.vkDestroyImage(device, image, nullptr); - dfn.vkFreeMemory(device, memory, nullptr); - return nullptr; - } - } if (transfer_format != image_create_info.format) { view_create_info.format = transfer_format; if (dfn.vkCreateImageView(device, &view_create_info, nullptr, @@ -1847,9 +1819,6 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( "{}xMSAA {} render target", image_create_info.extent.width, image_create_info.extent.height, uint32_t(1) << uint32_t(key.msaa_samples), key.GetFormatName()); - if (view_srgb != VK_NULL_HANDLE) { - dfn.vkDestroyImageView(device, view_srgb, nullptr); - } dfn.vkDestroyImageView(device, view_depth_color, nullptr); dfn.vkDestroyImage(device, image, nullptr); dfn.vkFreeMemory(device, memory, nullptr); @@ -1870,9 +1839,6 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( if (view_color_transfer_separate != VK_NULL_HANDLE) { dfn.vkDestroyImageView(device, view_color_transfer_separate, nullptr); } - if (view_srgb != VK_NULL_HANDLE) { - dfn.vkDestroyImageView(device, view_srgb, nullptr); - } dfn.vkDestroyImageView(device, view_depth_color, nullptr); dfn.vkDestroyImage(device, image, nullptr); dfn.vkFreeMemory(device, memory, nullptr); @@ -1920,7 +1886,7 @@ RenderTargetCache::RenderTarget* VulkanRenderTargetCache::CreateRenderTarget( 0, nullptr); return new VulkanRenderTarget(key, *this, image, memory, view_depth_color, - view_depth_stencil, view_stencil, view_srgb, + view_depth_stencil, view_stencil, view_color_transfer_separate, descriptor_set_index_transfer_source); } diff --git a/src/xenia/gpu/vulkan/vulkan_render_target_cache.h b/src/xenia/gpu/vulkan/vulkan_render_target_cache.h index aa7ed5c7d..f23a3abc4 100644 --- a/src/xenia/gpu/vulkan/vulkan_render_target_cache.h +++ b/src/xenia/gpu/vulkan/vulkan_render_target_cache.h @@ -58,7 +58,6 @@ class VulkanRenderTargetCache final : public RenderTargetCache { // even for kD24S8. xenos::DepthRenderTargetFormat depth_format : xenos::kDepthRenderTargetFormatBits; // 8 - // Linear or sRGB included if host sRGB is used. xenos::ColorRenderTargetFormat color_0_view_format : xenos::kColorRenderTargetFormatBits; // 12 xenos::ColorRenderTargetFormat color_1_view_format @@ -183,6 +182,8 @@ class VulkanRenderTargetCache final : public RenderTargetCache { bool* is_integer_out = nullptr) const; protected: + bool IsGammaFormatHostStorageSeparate() const override; + uint32_t GetMaxRenderTargetWidth() const override; uint32_t GetMaxRenderTargetHeight() const override; @@ -333,7 +334,6 @@ class VulkanRenderTargetCache final : public RenderTargetCache { VkImage image, VkDeviceMemory memory, VkImageView view_depth_color, VkImageView view_depth_stencil, VkImageView view_stencil, - VkImageView view_srgb, VkImageView view_color_transfer_separate, size_t descriptor_set_index_transfer_source) : RenderTarget(key), @@ -343,7 +343,6 @@ class VulkanRenderTargetCache final : public RenderTargetCache { view_depth_color_(view_depth_color), view_depth_stencil_(view_depth_stencil), view_stencil_(view_stencil), - view_srgb_(view_srgb), view_color_transfer_separate_(view_color_transfer_separate), descriptor_set_index_transfer_source_( descriptor_set_index_transfer_source) {} @@ -418,7 +417,6 @@ class VulkanRenderTargetCache final : public RenderTargetCache { // Optional views. VkImageView view_depth_stencil_; VkImageView view_stencil_; - VkImageView view_srgb_; VkImageView view_color_transfer_separate_; // 2 sampled images for depth / stencil, 1 sampled image for color. @@ -863,7 +861,7 @@ class VulkanRenderTargetCache final : public RenderTargetCache { void DumpRenderTargets(uint32_t dump_base, uint32_t dump_row_length_used, uint32_t dump_rows, uint32_t dump_pitch); - bool gamma_render_target_as_srgb_ = false; + bool gamma_render_target_as_unorm16_ = false; bool depth_unorm24_vulkan_format_supported_ = false; bool depth_float24_round_ = false; diff --git a/src/xenia/gpu/vulkan/vulkan_shared_memory.cc b/src/xenia/gpu/vulkan/vulkan_shared_memory.cc index 3a195ff64..4e02d3285 100644 --- a/src/xenia/gpu/vulkan/vulkan_shared_memory.cc +++ b/src/xenia/gpu/vulkan/vulkan_shared_memory.cc @@ -410,7 +410,7 @@ bool VulkanSharedMemory::UploadRanges( break; } MakeRangeValid(upload_range_start << page_size_log2(), - uint32_t(upload_buffer_size), false, false); + uint32_t(upload_buffer_size), false); std::memcpy( upload_buffer_mapping, memory().TranslatePhysical(upload_range_start << page_size_log2()), From 0a19234b4e6905f2cd249b4af6172ca4656c92de Mon Sep 17 00:00:00 2001 From: Triang3l Date: Mon, 19 Jan 2026 21:08:15 +0300 Subject: [PATCH 5/5] [GPU/D3D12] Add forgotten gamma conversion format check --- src/xenia/gpu/d3d12/d3d12_render_target_cache.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc b/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc index aeee74b43..b7468e867 100644 --- a/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc +++ b/src/xenia/gpu/d3d12/d3d12_render_target_cache.cc @@ -3652,9 +3652,12 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) { dxbc::Src::R(1, dxbc::Src::kYYYY)); } else { color_packed_in_r1x = true; - for (uint32_t i = 0; i < 3; ++i) { - DxbcShaderTranslator::PreSaturatedLinearToPWLGamma(a, 1, i, 1, i, - 2, 0, 2, 1); + if (source_color_format == + xenos::ColorRenderTargetFormat::k_8_8_8_8_GAMMA) { + for (uint32_t i = 0; i < 3; ++i) { + DxbcShaderTranslator::PreSaturatedLinearToPWLGamma( + a, 1, i, 1, i, 2, 0, 2, 1); + } } a.OpMAd(dxbc::Dest::R(1), dxbc::Src::R(1), dxbc::Src::LF(255.0f), dxbc::Src::LF(0.5f));