Module: wine Branch: master Commit: f30418e86119a8996d0e2dd038800a39399bd1da URL: https://gitlab.winehq.org/wine/wine/-/commit/f30418e86119a8996d0e2dd038800a3...
Author: Zebediah Figura zfigura@codeweavers.com Date: Tue Oct 24 14:43:13 2023 -0500
wined3d/glsl: Clamp ftoi upper bound to INT_MAX.
Ported from a5b6162d258faa42a03e53af9fb513473b4255a3 in vkd3d.
---
dlls/wined3d/glsl_shader.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 1137aa24c5e..12fa4eaf029 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -4333,9 +4333,11 @@ static void shader_glsl_to_int(const struct wined3d_shader_instruction *ins) shader_glsl_add_src_param(ins, &ins->src[0], write_mask, &src_param);
if (mask_size > 1) - shader_addline(buffer, "ivec%u(max(%s, vec%u(-2147483648.0))));\n", mask_size, src_param.param_str, mask_size); + shader_addline(buffer, "mix(ivec%u(max(%s, vec%u(-2147483648.0))), ivec%u(0x7fffffff), greaterThanEqual(%s, vec%u(2147483648.0))));\n", + mask_size, src_param.param_str, mask_size, mask_size, src_param.param_str, mask_size); else - shader_addline(buffer, "int(max(%s, -2147483648.0)));\n", src_param.param_str); + shader_addline(buffer, "mix(int(max(%s, -2147483648.0)), 0x7fffffff, %s >= 2147483648.0));\n", + src_param.param_str, src_param.param_str); }
static void shader_glsl_to_uint(const struct wined3d_shader_instruction *ins)