linux: switch to srgb color space output (#7666)

This matches the behavior of the existing Metal backend.

Picks up https://github.com/kvark/blade/pull/76

Release Notes:
- N/A
This commit is contained in:
Dzmitry Malyshau 2024-02-10 20:19:00 -08:00 committed by GitHub
parent bd882c66d6
commit 664a195721
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 14 deletions

4
Cargo.lock generated
View file

@ -937,7 +937,7 @@ dependencies = [
[[package]] [[package]]
name = "blade-graphics" name = "blade-graphics"
version = "0.3.0" version = "0.3.0"
source = "git+https://github.com/kvark/blade?rev=26bc5e8b9ef67b4f2970eb95888db733eace98f3#26bc5e8b9ef67b4f2970eb95888db733eace98f3" source = "git+https://github.com/kvark/blade?rev=c4f951a88b345724cb952e920ad30e39851f7760#c4f951a88b345724cb952e920ad30e39851f7760"
dependencies = [ dependencies = [
"ash", "ash",
"ash-window", "ash-window",
@ -967,7 +967,7 @@ dependencies = [
[[package]] [[package]]
name = "blade-macros" name = "blade-macros"
version = "0.2.1" version = "0.2.1"
source = "git+https://github.com/kvark/blade?rev=26bc5e8b9ef67b4f2970eb95888db733eace98f3#26bc5e8b9ef67b4f2970eb95888db733eace98f3" source = "git+https://github.com/kvark/blade?rev=c4f951a88b345724cb952e920ad30e39851f7760#c4f951a88b345724cb952e920ad30e39851f7760"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View file

@ -99,7 +99,7 @@ flume = "0.11"
xcb = { version = "1.3", features = ["as-raw-xcb-connection"] } xcb = { version = "1.3", features = ["as-raw-xcb-connection"] }
as-raw-xcb-connection = "1" as-raw-xcb-connection = "1"
#TODO: use these on all platforms #TODO: use these on all platforms
blade-graphics = { git = "https://github.com/kvark/blade", rev = "26bc5e8b9ef67b4f2970eb95888db733eace98f3" } blade-graphics = { git = "https://github.com/kvark/blade", rev = "c4f951a88b345724cb952e920ad30e39851f7760" }
blade-macros = { git = "https://github.com/kvark/blade", rev = "26bc5e8b9ef67b4f2970eb95888db733eace98f3" } blade-macros = { git = "https://github.com/kvark/blade", rev = "c4f951a88b345724cb952e920ad30e39851f7760" }
bytemuck = "1" bytemuck = "1"
cosmic-text = "0.10.0" cosmic-text = "0.10.0"

View file

@ -237,12 +237,19 @@ pub struct BladeRenderer {
} }
impl BladeRenderer { impl BladeRenderer {
pub fn new(gpu: Arc<gpu::Context>, size: gpu::Extent) -> Self { fn make_surface_config(size: gpu::Extent) -> gpu::SurfaceConfig {
let surface_format = gpu.resize(gpu::SurfaceConfig { gpu::SurfaceConfig {
size, size,
usage: gpu::TextureUsage::TARGET, usage: gpu::TextureUsage::TARGET,
frame_count: SURFACE_FRAME_COUNT, frame_count: SURFACE_FRAME_COUNT,
}); //Note: this matches the original logic of the Metal backend,
// but ultimaterly we need to switch to `Linear`.
color_space: gpu::ColorSpace::Srgb,
}
}
pub fn new(gpu: Arc<gpu::Context>, size: gpu::Extent) -> Self {
let surface_format = gpu.resize(Self::make_surface_config(size));
let command_encoder = gpu.create_command_encoder(gpu::CommandEncoderDesc { let command_encoder = gpu.create_command_encoder(gpu::CommandEncoderDesc {
name: "main", name: "main",
buffer_count: 2, buffer_count: 2,
@ -291,11 +298,7 @@ impl BladeRenderer {
pub fn resize(&mut self, size: gpu::Extent) { pub fn resize(&mut self, size: gpu::Extent) {
self.wait_for_gpu(); self.wait_for_gpu();
self.gpu.resize(gpu::SurfaceConfig { self.gpu.resize(Self::make_surface_config(size));
size,
usage: gpu::TextureUsage::TARGET,
frame_count: SURFACE_FRAME_COUNT,
});
self.viewport_size = size; self.viewport_size = size;
} }
@ -455,7 +458,7 @@ impl BladeRenderer {
sprites, sprites,
} => { } => {
let tex_info = self.atlas.get_texture_info(texture_id); let tex_info = self.atlas.get_texture_info(texture_id);
let instance_buf = self.instance_belt.alloc_data(sprites, &self.gpu); let instance_buf = self.instance_belt.alloc_data(&sprites, &self.gpu);
let mut encoder = pass.with(&self.pipelines.mono_sprites); let mut encoder = pass.with(&self.pipelines.mono_sprites);
encoder.bind( encoder.bind(
0, 0,
@ -473,7 +476,7 @@ impl BladeRenderer {
sprites, sprites,
} => { } => {
let tex_info = self.atlas.get_texture_info(texture_id); let tex_info = self.atlas.get_texture_info(texture_id);
let instance_buf = self.instance_belt.alloc_data(sprites, &self.gpu); let instance_buf = self.instance_belt.alloc_data(&sprites, &self.gpu);
let mut encoder = pass.with(&self.pipelines.poly_sprites); let mut encoder = pass.with(&self.pipelines.poly_sprites);
encoder.bind( encoder.bind(
0, 0,