Browse Source

radv: Allow interpolation on non-float types.

In particular structs containing floats and 16-bit floating point
types.

Fixes: 62024fa775 "radv: enable VK_KHR_16bit_storage extension / 16bit storage features"
Fixes: da29594636 "spirv: Only split blocks"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109735
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
tags/19.1-branchpoint
Bas Nieuwenhuizen 6 years ago
parent
commit
f324784104
1 changed files with 9 additions and 10 deletions
  1. 9
    10
      src/amd/vulkan/radv_nir_to_llvm.c

+ 9
- 10
src/amd/vulkan/radv_nir_to_llvm.c View 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);


Loading…
Cancel
Save