[GPU] Simplify local X offsetting with resolution scaling
Switch between even and odd 16-byte element sequences along X by simply flipping a bit rather than going to a different resolution-scaled group of pixels, by increasing the size of the group within the constraints imposed by tiling.
This commit is contained in:
@@ -35,16 +35,15 @@ entry_inputs_end_code_begin_compute_xe
|
||||
load_info.size_blocks.y, 16u) +
|
||||
load_info.host_offset) >> 4u);
|
||||
uint block_offset_guest =
|
||||
XeTextureLoadGuestBlockOffset(load_info, block_index, 16u, 4u) >> 4u;
|
||||
XeTextureLoadSourceAddress(load_info, block_index, 4u) >> 4u;
|
||||
array_buffer_store_xe(
|
||||
xe_texture_load_dest, block_offset_host,
|
||||
XeEndianSwap32(array_buffer_load_xe(xe_texture_load_source,
|
||||
block_offset_guest),
|
||||
load_info.endian_32));
|
||||
++block_offset_host;
|
||||
block_offset_guest +=
|
||||
XeTextureLoadRightConsecutiveBlocksOffset(load_info, block_index.x, 4u) >>
|
||||
4u;
|
||||
block_offset_guest ^=
|
||||
XeTextureLoadLocalXAddressXor(1u, 4u, load_info.is_tiled) >> 4u;
|
||||
array_buffer_store_xe(
|
||||
xe_texture_load_dest, block_offset_host,
|
||||
XeEndianSwap32(array_buffer_load_xe(xe_texture_load_source,
|
||||
|
||||
Reference in New Issue
Block a user