summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2019-02-22 14:24:28 +0100
committerDylan Baker <dylan@pnwbakers.com>2019-02-25 13:26:36 -0800
commita03101c717846f2f0d548dc5c713528329234e6d (patch)
treea1f058317a18a59f0c613f8aaa31cfead35f80d4
parente7351739ff21a2af10773deed1d61a21edfd6a82 (diff)
radv: Allow interpolation on non-float types.
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> (cherry picked from commit f3247841040a202faffe4709c07da9bd41693580)
-rw-r--r--src/amd/vulkan/radv_nir_to_llvm.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
index 415eb38dacc..de2b789b0c2 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -2142,17 +2142,16 @@ handle_fs_input_decl(struct radv_shader_context *ctx,
variable->data.driver_location = idx * 4;
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);