summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/etnaviv/etnaviv_internal.h
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2017-01-31 09:23:51 +0100
committerChristian Gmeiner <[email protected]>2017-01-31 19:29:16 +0100
commitfe3bb8cdb519a01e6315ce6f142827aece3d4a41 (patch)
tree2666b4feb62ccf8096688add846b003fe753be9b /src/gallium/drivers/etnaviv/etnaviv_internal.h
parent33e0c5d003658320f5005e26caf55bbcfbe1fbb2 (diff)
etnaviv: Generate new sin/cos instructions on GC3000
Shaders using sin/cos instructions were not working on GC3000. The reason for this turns out to be that these chips implement sin/cos in a different way (but using the same opcodes): - Need their input scaled by 1/pi instead of 2/pi. - Output an x and y component, which need to be multiplied to get the result. - tex_amode needs to be set to 1. Add a new bit to the compiler specs and generate these instructions as necessary. CC: <[email protected]> Signed-off-by: Wladimir J. van der Laan <[email protected]> Acked-by: Christian Gmeiner <[email protected]>
Diffstat (limited to 'src/gallium/drivers/etnaviv/etnaviv_internal.h')
-rw-r--r--src/gallium/drivers/etnaviv/etnaviv_internal.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h
index fa75c3e936c..983321a9d93 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_internal.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h
@@ -59,6 +59,8 @@ struct etna_specs {
unsigned has_sign_floor_ceil : 1;
/* can use VS_RANGE, PS_RANGE registers*/
unsigned has_shader_range_registers : 1;
+ /* has the new sin/cos functions */
+ unsigned has_new_sin_cos : 1;
/* can use any kind of wrapping mode on npot textures */
unsigned npot_tex_any_wrap;
/* number of bits per TS tile */