cmm: ignore backend luminance with the default EOTF
This commit is contained in:
parent
091918d10a
commit
4746361cb7
5 changed files with 25 additions and 20 deletions
|
|
@ -304,6 +304,10 @@ impl Connector {
|
||||||
/// This should only be used with the PQ transfer function. If the default transfer
|
/// This should only be used with the PQ transfer function. If the default transfer
|
||||||
/// function is used, you should instead calibrate the hardware directly.
|
/// function is used, you should instead calibrate the hardware directly.
|
||||||
///
|
///
|
||||||
|
/// When used with the default transfer function, the default brightness is anchored
|
||||||
|
/// at 80 cd/m^2. That is, setting this to 40 cd/m^2 makes everything appear half as
|
||||||
|
/// bright as normal and creates 50% HDR headroom.
|
||||||
|
///
|
||||||
/// This has no effect unless the vulkan renderer is used.
|
/// This has no effect unless the vulkan renderer is used.
|
||||||
pub fn set_brightness(self, brightness: Option<f64>) {
|
pub fn set_brightness(self, brightness: Option<f64>) {
|
||||||
get!().connector_set_brightness(self, brightness);
|
get!().connector_set_brightness(self, brightness);
|
||||||
|
|
|
||||||
|
|
@ -386,6 +386,10 @@ pub struct BrightnessArgs {
|
||||||
/// When using the default EOTF, you likely want to set this to `default`
|
/// When using the default EOTF, you likely want to set this to `default`
|
||||||
/// and adjust the display hardware brightness setting instead.
|
/// and adjust the display hardware brightness setting instead.
|
||||||
///
|
///
|
||||||
|
/// When used with the default transfer function, the default brightness is anchored
|
||||||
|
/// at 80 cd/m^2. That is, setting this to 40 cd/m^2 makes everything appear half as
|
||||||
|
/// bright as normal and creates 50% HDR headroom.
|
||||||
|
///
|
||||||
/// This has no effect unless the vulkan renderer is used.
|
/// This has no effect unless the vulkan renderer is used.
|
||||||
#[clap(verbatim_doc_comment, value_parser = parse_brightness)]
|
#[clap(verbatim_doc_comment, value_parser = parse_brightness)]
|
||||||
brightness: Brightness,
|
brightness: Brightness,
|
||||||
|
|
|
||||||
|
|
@ -361,30 +361,19 @@ impl WlOutputGlobal {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_color_description(&self) -> bool {
|
pub fn update_color_description(&self) -> bool {
|
||||||
let mut luminance = Luminance::SRGB;
|
let (mut luminance, tf) = match self.btf.get() {
|
||||||
let tf = match self.btf.get() {
|
BackendEotfs::Default => (Luminance::SRGB, Eotf::Gamma22),
|
||||||
BackendEotfs::Default => {
|
BackendEotfs::Pq => (Luminance::ST2084_PQ, Eotf::St2084Pq),
|
||||||
if let Some(brightness) = self.persistent.brightness.get() {
|
|
||||||
let output_max = match self.luminance {
|
|
||||||
None => 80.0,
|
|
||||||
Some(v) => v.max,
|
|
||||||
};
|
|
||||||
luminance.white.0 = luminance.max.0 * brightness / output_max;
|
|
||||||
}
|
|
||||||
Eotf::Gamma22
|
|
||||||
}
|
|
||||||
BackendEotfs::Pq => {
|
|
||||||
luminance = Luminance::ST2084_PQ;
|
|
||||||
if let Some(brightness) = self.persistent.brightness.get() {
|
|
||||||
luminance.white.0 = brightness;
|
|
||||||
}
|
|
||||||
Eotf::St2084Pq
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
if let Some(brightness) = self.persistent.brightness.get() {
|
||||||
|
luminance.white.0 = brightness;
|
||||||
|
}
|
||||||
let mut target_luminance = luminance.to_target();
|
let mut target_luminance = luminance.to_target();
|
||||||
let mut max_cll = None;
|
let mut max_cll = None;
|
||||||
let mut max_fall = None;
|
let mut max_fall = None;
|
||||||
if let Some(l) = self.luminance {
|
if let Some(l) = self.luminance
|
||||||
|
&& self.btf.get() == BackendEotfs::Pq
|
||||||
|
{
|
||||||
target_luminance.min = F64(l.min);
|
target_luminance.min = F64(l.min);
|
||||||
target_luminance.max = F64(l.max);
|
target_luminance.max = F64(l.max);
|
||||||
max_cll = Some(F64(l.max));
|
max_cll = Some(F64(l.max));
|
||||||
|
|
|
||||||
|
|
@ -857,6 +857,10 @@ The string should have one of the following values:
|
||||||
|
|
||||||
- `default`: The maximum brightness of the output.
|
- `default`: The maximum brightness of the output.
|
||||||
- `PQ`: 203 cd/m^2
|
- `PQ`: 203 cd/m^2
|
||||||
|
|
||||||
|
When used with the default transfer function, the default brightness is anchored
|
||||||
|
at 80 cd/m^2. That is, setting this to 40 cd/m^2 makes everything appear half as
|
||||||
|
bright as normal and creates 50% HDR headroom.
|
||||||
|
|
||||||
|
|
||||||
#### A number
|
#### A number
|
||||||
|
|
|
||||||
|
|
@ -3425,6 +3425,10 @@ Brightness:
|
||||||
|
|
||||||
- `default`: The maximum brightness of the output.
|
- `default`: The maximum brightness of the output.
|
||||||
- `PQ`: 203 cd/m^2
|
- `PQ`: 203 cd/m^2
|
||||||
|
|
||||||
|
When used with the default transfer function, the default brightness is anchored
|
||||||
|
at 80 cd/m^2. That is, setting this to 40 cd/m^2 makes everything appear half as
|
||||||
|
bright as normal and creates 50% HDR headroom.
|
||||||
- kind: number
|
- kind: number
|
||||||
description: |
|
description: |
|
||||||
The brightness in cd/m^2.
|
The brightness in cd/m^2.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue