I test it on a very simple fragment shader:
#version 310 es precision highp float; precision highp int; #define HLSLCC_ENABLE_UNIFORM_BUFFERS 1 #if HLSLCC_ENABLE_UNIFORM_BUFFERS #define UNITY_UNIFORM #else #define UNITY_UNIFORM uniform #endif #define UNITY_SUPPORTS_UNIFORM_LOCATION 1 #if UNITY_SUPPORTS_UNIFORM_LOCATION #define UNITY_LOCATION(x) layout(location = x) #define UNITY_BINDING(x) layout(binding = x, std140) #else #define UNITY_LOCATION(x) #define UNITY_BINDING(x) layout(std140) #endif uniform mediump float _Cutoff; UNITY_LOCATION(0) uniform mediump sampler2D _MainTex; in highp vec2 vs_TEXCOORD0; layout(location = 0) out mediump vec4 SV_Target0; mediump vec4 u_xlat16_0; bool u_xlatb0; mediump float u_xlat16_1; void main() { u_xlat16_0 = texture(_MainTex, vs_TEXCOORD0.xy); u_xlat16_1 = u_xlat16_0.w + (-_Cutoff); SV_Target0 = u_xlat16_0; #ifdef UNITY_ADRENO_ES3 u_xlatb0 = !!(u_xlat16_1<0.0); #else u_xlatb0 = u_xlat16_1<0.0; #endif if(u_xlatb0){discard;} return; }
I don't understand why does Mali Offline Complier give me 0% in section "16bit arithmetric"?
All variables are mediump except UV. It should have a relatively high percent of 16bit arithmetric.
Duplicate of Cannot understand 16-bit arithmetic result of Mali Offline Complier - Graphics, Gaming, and VR forum - Support forums - Arm Community