From 28f7fe160fa055e5436fe6f13ccdcb7dff94aa3c Mon Sep 17 00:00:00 2001 From: Zakor Gyula Date: Tue, 22 Jan 2019 15:21:37 +0100 Subject: [PATCH] Request dual source blending feature during device creation --- webrender/src/device/gfx.rs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/webrender/src/device/gfx.rs b/webrender/src/device/gfx.rs index 2d80503a48..36dd81f03f 100644 --- a/webrender/src/device/gfx.rs +++ b/webrender/src/device/gfx.rs @@ -2092,9 +2092,32 @@ impl Device { let limits = adapter.physical_device.limits(); let max_texture_size = 4400u32; // TODO use limits after it points to the correct texture size - let (device, queue_group) = adapter - .open_with::<_, hal::Graphics>(1, |family| surface.supports_queue_family(family)) - .unwrap(); + let (device, queue_group) = { + use hal::Capability; + use hal::queue::QueueFamily; + + let family = adapter + .queue_families + .iter() + .find(|family| { + hal::Graphics::supported_by(family.queue_type()) + && surface.supports_queue_family(&family) + }) + .unwrap(); + + let priorities = vec![1.0]; + let (id, families) = (family.id(), [(family, priorities.as_slice())]); + let hal::Gpu { device, mut queues } = unsafe { + adapter + .physical_device + .open(&families, hal::Features::DUAL_SRC_BLENDING) + .unwrap_or_else( |_| { + adapter.physical_device.open(&families, hal::Features::empty()).unwrap() + } + ) + }; + (device, queues.take(id).unwrap()) + }; let ( swap_chain,