mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
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:f324784104"radv: Allow interpolation on non-float types." Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (cherry picked from commitc0110477b5)
This commit is contained in:
parent
3e72463ce0
commit
62d457eee1
1 changed files with 12 additions and 9 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue