From e38bf8d51f9648e51ae5be394221f5438e550f57 Mon Sep 17 00:00:00 2001 From: vlj Date: Sat, 6 Jun 2015 23:52:28 +0200 Subject: [PATCH] d3d12: Fix rgba16float endianness for textures --- rpcs3/Emu/RSX/D3D12/D3D12Texture.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Texture.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Texture.cpp index f5b75a22c6..86d8ae81cd 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Texture.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Texture.cpp @@ -369,6 +369,17 @@ ID3D12Resource *uploadSingleTexture( } break; } + case CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT: + { + unsigned short *dst = (unsigned short *)textureData, *src = (unsigned short *)pixels; + + for (int j = 0; j < w * 4; j++) + { + uint64_t tmp = src[row * w * 4 + j]; + dst[row * w * 4 + j] = (tmp >> 8) | (tmp << 8); + } + break; + } default: { streamBuffer((char*)textureData + row * rowPitch, (char*)pixels + row * srcPitch, srcPitch);