Bug 1709408 - Avoid using GL_EXT_color_buffer_float on some PowerVR devices. r=kvark

We are seeing lots of crashes on various x86 PowerVR Rogue G6430
devices during the draw calls for GPU cache updates. The crash appears
to only affect x86 devices with this specific GPU. It seems likely
that EXT_color_buffer_float is buggy, so disable usage of it on such
devices. The GPU cache will fall back to using texture uploads instead
of scatter shader updates.

Differential Revision: https://phabricator.services.mozilla.com/D114355
This commit is contained in:
Jamie Nicol 2021-05-06 14:20:11 +00:00
Родитель 574bea557a
Коммит 927eb7620e
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -1582,8 +1582,14 @@ impl Device {
supports_extension(&extensions, "GL_ARB_copy_image")
};
// We have seen crashes on x86 PowerVR Rogue G6430 devices during GPU cache
// updates using the scatter shader. It seems likely that GL_EXT_color_buffer_float
// is broken. See bug 1709408.
let is_x86_powervr_rogue_g6430 = renderer_name.starts_with("PowerVR Rogue G6430")
&& cfg!(target_arch = "x86");
let supports_color_buffer_float = match gl.get_type() {
gl::GlType::Gl => true,
gl::GlType::Gles if is_x86_powervr_rogue_g6430 => false,
gl::GlType::Gles => supports_extension(&extensions, "GL_EXT_color_buffer_float"),
};