WIP: glsl+nir+freedreno: make int16 work
This is fairly rough, the result of plowing through deqp fixes to fix the regressions when turning on int16. Some parts are uglier than others.
The remaining fails at this point are:
- lowp/mediump shared tests.. we end up doing 32b stores of mediump/lowp values to shared storage, but 16b loads. Does GL spec specify what the bitsize of a mediump/lowp value in shared storage should be? I guess we should either make glsl/lower_shared_reference.cpp convert everything to >=32b, or do a better job with
__intrinsic_store_shared
. I'm not sure which direction we should go here. - idiv lowering pass also needs to handle
imod
/umod
/irem
.. which is just a matter of some more typing
Some of it, like robclark/mesa@d6a37476, is pretty straightforward and obviously correct. Other stuff, like all the unwrap_deref()
nonsense, maybe there is a better way to handle that. (Suggestions welcome)
Also, not sure if it is worth introducing 16b versions of bitfield extract/insert. For now I just forced those to 32b.
Edited by Jordan Justen