Module: Mesa Branch: staging/19.0 Commit: 62d457eee1a01964efb2c3bf3ddc626385c71985 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=62d457eee1a01964efb2c3bf3ddc626385c71985
Author: Bas Nieuwenhuizen <[email protected]> Date: Sat Feb 23 14:33:31 2019 +0100 radv: Interpolate less aggressively. Seems like dxvk used integer builtins without setting the flat interpolation decoration. I believe in the current spec the app is required to set these, but in the meantime to avoid breaking things in stable releases (and so close to release for 19.0), only expand the interpolation to float16 and struct (which cannot be builtins as our spirv parser lowers the builtin block). Fixes: f3247841040 "radv: Allow interpolation on non-float types." Reviewed-by: Samuel Pitoiset <[email protected]> (cherry picked from commit c0110477b5503978adf37f64c65c30c9304e3fe4) --- src/amd/vulkan/radv_nir_to_llvm.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c index 3bea5d47888..bb8ebca0dab 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -2159,16 +2159,19 @@ handle_fs_input_decl(struct radv_shader_context *ctx, mask = ((1ull << attrib_count) - 1) << variable->data.location; - unsigned interp_type; - if (variable->data.sample) - interp_type = INTERP_SAMPLE; - else if (variable->data.centroid) - interp_type = INTERP_CENTROID; - else - interp_type = INTERP_CENTER; - - interp = lookup_interp_param(&ctx->abi, variable->data.interpolation, interp_type); + if (glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_FLOAT || + glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_FLOAT16 || + glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_STRUCT) { + unsigned interp_type; + if (variable->data.sample) + interp_type = INTERP_SAMPLE; + else if (variable->data.centroid) + interp_type = INTERP_CENTROID; + else + interp_type = INTERP_CENTER; + interp = lookup_interp_param(&ctx->abi, variable->data.interpolation, interp_type); + } if (interp == NULL) interp = LLVMGetUndef(ctx->ac.i32); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
