Driver issues
#1157 - Varying structs
- Description: Using varying structs can cause shader errors.
- Workaround: Not use structs for varyings.
- OS: Windows (GL and ANGLE)
- Vendors: Intel, Nvidia
- Driver versions: NVIDIA 381.65, ???
- See also: Issue#1136
Servo#13953 - Mac glsl compiler bug.
- Description: GLSL complier fails to parse the function get_fetch_uv in prim_shared.glsl.
- Workaround: This particular function was turned into a
#definemacro. - OS: Mac
- Vendors:Intel
- Driver versions: Intel Iris 6100, Intel HD 5300, Intel HD 6000
??? - Mac glsl compiler bug realted to logical operators in #if blocks.
- Description: Found the diff but not the detailed issue. Most likely a shader compiler error with logical opertors in
#ifconditions like#if FOO == 1 && BAR == 1. - Workaround: Nest #if blocks instead.
- OS: Mac
- Vendors: ???
- Driver versions: ???
#105 - Inset shadow with border radius crash
- Workaround: issue, accidentally fixed, we don't know how.
- OS: Mac
#650 - Terrible performance of sub-texture uploads on some mobile devices.
- Description: glTexSubImage is extremely slow on some devices (usually old ones).
- Workaround: None (maybe driver blocklist?).
- OS: Android
- Devices: SGX540, SGX530, Adreno200, Adreno205, (...)
#1242 - Shader compilation performance
- Description: Some shader compilers appear to aggressively inline some function calls, likely generating verbose internal representation of the code which causes compile times to go up.
- OS: ??
- Workaround: The following pattern:
switch foo
case bar:
do_the_thing(1);
break;
case baz:
do_the_thing(2);
break;
case fun:
do_the_thing(3);
break;
}Can be re-written into:
int param = 0;
switch foo
case bar:
param = 1;
break;
case baz:
param = 2;
break;
case fun:
param = 3;
break;
}
do_the_thing(param);