freedreno/ir3: Use output type size to set OUTPUT_REG_HALF_PRECISION
authorNeil Roberts <nroberts@igalia.com>
Tue, 4 Dec 2018 17:32:15 +0000 (18:32 +0100)
committerRob Clark <robdclark@chromium.org>
Mon, 3 Jun 2019 19:44:03 +0000 (12:44 -0700)
commit689c3c7d40ddee6a7c48a3885b241871d6302fe7
treea8c78d7d9fef8b13cb7b792bc39837ffd4d9c7b0
parent8cd1b76b7d9e5190b74653c4f40672c2024839a1
freedreno/ir3: Use output type size to set OUTPUT_REG_HALF_PRECISION

Previously the A5XX_SP_FS_OUTPUT_REG_HALF_PRECISION was set depending
on whether half_precision was set in the shader key. With support for
mediump precision, it is possible to have different outputs use
different precisions. That means we can’t have a global shader state
to specify it. Instead it now tries to copy the half-float-ness
from the nir_variable for the output into the ir3_shader_variant. This
is then used to decide whether to set half-precision for each output.

The a6xx version is copied from the a5xx code but it has not been
tested.

v2. [Hyunjun Ko (zzoon@igalia.com)] There's the half flag recently
added, which represents precision based on IR3_REG_HALF. Now use this
flag to avoid duplication.

Signed-off-by: Rob Clark <robdclark@chromium.org>
src/gallium/drivers/freedreno/a5xx/fd5_program.c
src/gallium/drivers/freedreno/a6xx/fd6_program.c