mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Implement MAD in two operations if flagged as precise.
With some changes by Giovanni Mascellani.
This commit is contained in:
committed by
Alexandre Julliard
parent
9112a5be58
commit
23db066922
Notes:
Alexandre Julliard
2024-04-15 22:23:02 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Conor McCarthy (@cmccarthy) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/779
@@ -1761,6 +1761,31 @@ static inline unsigned int vkd3d_compact_swizzle(uint32_t swizzle, uint32_t writ
|
||||
return compacted_swizzle;
|
||||
}
|
||||
|
||||
static inline uint32_t vsir_swizzle_from_writemask(unsigned int writemask)
|
||||
{
|
||||
static const unsigned int swizzles[16] =
|
||||
{
|
||||
0,
|
||||
VKD3D_SHADER_SWIZZLE(X, X, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(Y, Y, Y, Y),
|
||||
VKD3D_SHADER_SWIZZLE(X, Y, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(Z, Z, Z, Z),
|
||||
VKD3D_SHADER_SWIZZLE(X, Z, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(Y, Z, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(X, Y, Z, X),
|
||||
VKD3D_SHADER_SWIZZLE(W, W, W, W),
|
||||
VKD3D_SHADER_SWIZZLE(X, W, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(Y, W, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(X, Y, W, X),
|
||||
VKD3D_SHADER_SWIZZLE(Z, W, X, X),
|
||||
VKD3D_SHADER_SWIZZLE(X, Z, W, X),
|
||||
VKD3D_SHADER_SWIZZLE(Y, Z, W, X),
|
||||
VKD3D_SHADER_SWIZZLE(X, Y, Z, W),
|
||||
};
|
||||
|
||||
return swizzles[writemask & 0xf];
|
||||
}
|
||||
|
||||
struct vkd3d_struct
|
||||
{
|
||||
enum vkd3d_shader_structure_type type;
|
||||
|
||||
Reference in New Issue
Block a user