mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 01:35:35 +00:00
Bug 1631331 - Handle a case where WebRender can't initialize GPU cache r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D74462
This commit is contained in:
parent
a4b1bd30dc
commit
55d40f2461
@ -3430,7 +3430,10 @@ impl Renderer {
|
||||
}
|
||||
|
||||
frame.profile_counters.reset_targets();
|
||||
self.prepare_gpu_cache(frame);
|
||||
if let Err(e) = self.prepare_gpu_cache(frame) {
|
||||
self.renderer_errors.push(e);
|
||||
continue;
|
||||
}
|
||||
assert!(frame.gpu_cache_frame_id <= self.gpu_cache_frame_id,
|
||||
"Received frame depends on a later GPU cache epoch ({:?}) than one we received last via `UpdateGpuCache` ({:?})",
|
||||
frame.gpu_cache_frame_id, self.gpu_cache_frame_id);
|
||||
@ -3710,11 +3713,11 @@ impl Renderer {
|
||||
counters.updated_blocks.set(updated_blocks);
|
||||
}
|
||||
|
||||
fn prepare_gpu_cache(&mut self, frame: &Frame) {
|
||||
fn prepare_gpu_cache(&mut self, frame: &Frame) -> Result<(), RendererError> {
|
||||
if self.pending_gpu_cache_clear {
|
||||
let use_scatter =
|
||||
matches!(self.gpu_cache_texture.bus, GpuCacheBus::Scatter { .. });
|
||||
let new_cache = GpuCacheTexture::new(&mut self.device, use_scatter).unwrap();
|
||||
let new_cache = GpuCacheTexture::new(&mut self.device, use_scatter)?;
|
||||
let old_cache = mem::replace(&mut self.gpu_cache_texture, new_cache);
|
||||
old_cache.deinit(&mut self.device);
|
||||
self.pending_gpu_cache_clear = false;
|
||||
@ -3732,6 +3735,8 @@ impl Renderer {
|
||||
self.gpu_cache_texture.texture.as_ref().unwrap(),
|
||||
Swizzle::default(),
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn update_texture_cache(&mut self) {
|
||||
|
Loading…
Reference in New Issue
Block a user