message: dont use ES 3.1+ APIs
  FSR assumes modern OpenGL. The functions that pose problem are in fact
  never used in filament, so it doesn't matter how they're implemented.
  We use the HLSL version instead.
diff: AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));}
  AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));}
  //------------------------------------------------------------------------------------------------------------------------------
  - AU1 ABfe(AU1 src,AU1 off,AU1 bits){return bitfieldExtract(src,ASU1(off),ASU1(bits));}
  - AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));}
  - // Proxy for V_BFI_B32 where the 'mask' is set as 'bits', 'mask=(1<<bits)-1', and 'bits' needs to be an immediate.
  - AU1 ABfiM(AU1 src,AU1 ins,AU1 bits){return bitfieldInsert(src,ins,0,ASU1(bits));}
  + AU1 ABfe(highp AU1 src,AU1 off,AU1 bits){AU1 mask=(1u<<bits)-1u;return (src>>off)&mask;}
  + AU1 ABfi(highp AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));}
  + AU1 ABfiM(highp AU1 src,AU1 ins,AU1 bits){AU1 mask=(1u<<bits)-1u;return (ins&mask)|(src&(~mask));}
  //------------------------------------------------------------------------------------------------------------------------------
  // V_MED3_F32.
  AF1 AClampF1(AF1 x,AF1 n,AF1 m){return clamp(x,n,m);}
  