radv: Allow interpolation on non-float types.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 22 Feb 2019 13:24:28 +0000 (14:24 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 22 Feb 2019 16:06:55 +0000 (17:06 +0100)
In particular structs containing floats and 16-bit floating point
types.

Fixes: 62024fa7750 "radv: enable VK_KHR_16bit_storage extension / 16bit storage features"
Fixes: da295946361 "spirv: Only split blocks"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109735
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_nir_to_llvm.c

index dae09f7ddce177f380b68c62db50c095bce7a216..36f499be2121df2acca68c9d3701ba1d660db2f3 100644 (file)
@@ -2297,17 +2297,16 @@ handle_fs_input_decl(struct radv_shader_context *ctx,
 
        mask = ((1ull << attrib_count) - 1) << variable->data.location;
 
-       if (glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_FLOAT) {
-               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;
+       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);
 
-               interp = lookup_interp_param(&ctx->abi, variable->data.interpolation, interp_type);
-       }
        if (interp == NULL)
                interp = LLVMGetUndef(ctx->ac.i32);