From: Alyssa Rosenzweig Date: Sun, 28 Apr 2019 15:21:34 +0000 (+0000) Subject: panfrost: Use fp32 (not fp16) varyings X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0ebf1047a4fcb8c6703c5d3f8bd1d7e47a478e46;p=mesa.git panfrost: Use fp32 (not fp16) varyings In a perfect world, we'd use fp16 varyings for mediump and fp32 for highp, allowing us to get a performance win without sacrificing conformance. Unfortunately, we're not there (yet), so it's better we assume always fp32 than always fp16 to avoid artefacts / breaking a lot of deqp. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c index 52226311832..a6ba5fa6790 100644 --- a/src/gallium/drivers/panfrost/pan_assemble.c +++ b/src/gallium/drivers/panfrost/pan_assemble.c @@ -112,7 +112,7 @@ panfrost_shader_compile(struct panfrost_context *ctx, struct mali_shader_meta *m /* Default to a vec4 varying */ struct mali_attr_meta v = { - .format = MALI_RGBA16F, + .format = MALI_RGBA32F, .swizzle = default_vec4_swizzle, .unknown1 = 0x2, }; @@ -136,12 +136,12 @@ panfrost_shader_compile(struct panfrost_context *ctx, struct mali_shader_meta *m state->reads_point_coord = true; } else { v.index = 0; - v.src_offset = 8 * (general_purpose_count++); + v.src_offset = 16 * (general_purpose_count++); } state->varyings[i] = v; } - /* Set the stride for the general purpose fp16 vec4 varyings */ - state->general_varying_stride = (2 * 4) * general_purpose_count; + /* Set the stride for the general purpose fp32 vec4 varyings */ + state->general_varying_stride = (4 * 4) * general_purpose_count; }