Skip to content

WIP: glsl+nir+freedreno: make int16 work

Rob Clark requested to merge robclark/mesa:wip/more-16b into main

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.

/cc @mareko @nroberts @alyssa

Edited by Jordan Justen

Merge request reports