Commit 42e5303d by Alexis Hetu Committed by Alexis Hétu

Fix for 3D texture sampling

3D texture sampling did not support width*height > MAX_USHORT(65535). Changed for 32 bit integer computation for that multiplication to solve this issue. Verified with 3D texture related dEQP tests. Bug b/26105892 chromium:763382 Change-Id: Ifd07278f6263d000620a0b525c07ed4fcbdcf2e7 Reviewed-on: https://swiftshader-review.googlesource.com/12988Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarAlexis Hétu <sugoi@google.com>
parent 091f350c
...@@ -1695,19 +1695,20 @@ namespace sw ...@@ -1695,19 +1695,20 @@ namespace sw
wwww = applyOffset(wwww, offset.z, Int4(*Pointer<UShort4>(mipmap + OFFSET(Mipmap, depth))), texelFetch ? ADDRESSING_TEXELFETCH : state.addressingModeW); wwww = applyOffset(wwww, offset.z, Int4(*Pointer<UShort4>(mipmap + OFFSET(Mipmap, depth))), texelFetch ? ADDRESSING_TEXELFETCH : state.addressingModeW);
} }
} }
Short4 www2 = wwww; UInt4 uv(As<UInt2>(uuuu), As<UInt2>(uuu2));
wwww = As<Short4>(UnpackLow(wwww, Short4(0x0000))); uv += As<UInt4>(Int4(As<UShort4>(wwww))) * *Pointer<UInt4>(mipmap + OFFSET(Mipmap, sliceP));
www2 = As<Short4>(UnpackHigh(www2, Short4(0x0000))); index[0] = Extract(As<Int4>(uv), 0);
wwww = As<Short4>(MulAdd(wwww, *Pointer<Short4>(mipmap + OFFSET(Mipmap,sliceP)))); index[1] = Extract(As<Int4>(uv), 1);
www2 = As<Short4>(MulAdd(www2, *Pointer<Short4>(mipmap + OFFSET(Mipmap,sliceP)))); index[2] = Extract(As<Int4>(uv), 2);
uuuu = As<Short4>(As<Int2>(uuuu) + As<Int2>(wwww)); index[3] = Extract(As<Int4>(uv), 3);
uuu2 = As<Short4>(As<Int2>(uuu2) + As<Int2>(www2));
} }
else
{
index[0] = Extract(As<Int2>(uuuu), 0); index[0] = Extract(As<Int2>(uuuu), 0);
index[1] = Extract(As<Int2>(uuuu), 1); index[1] = Extract(As<Int2>(uuuu), 1);
index[2] = Extract(As<Int2>(uuu2), 0); index[2] = Extract(As<Int2>(uuu2), 0);
index[3] = Extract(As<Int2>(uuu2), 1); index[3] = Extract(As<Int2>(uuu2), 1);
}
if(texelFetch) if(texelFetch)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment