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
|
||||
/// 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.
|
||||
pub fn set_brightness(self, brightness: Option<f64>) {
|
||||
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`
|
||||
/// 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.
|
||||
#[clap(verbatim_doc_comment, value_parser = parse_brightness)]
|
||||
brightness: Brightness,
|
||||
|
|
|
|||
|
|
@ -361,30 +361,19 @@ impl WlOutputGlobal {
|
|||
}
|
||||
|
||||
pub fn update_color_description(&self) -> bool {
|
||||
let mut luminance = Luminance::SRGB;
|
||||
let tf = match self.btf.get() {
|
||||
BackendEotfs::Default => {
|
||||
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
|
||||
}
|
||||
let (mut luminance, tf) = match self.btf.get() {
|
||||
BackendEotfs::Default => (Luminance::SRGB, Eotf::Gamma22),
|
||||
BackendEotfs::Pq => (Luminance::ST2084_PQ, Eotf::St2084Pq),
|
||||
};
|
||||
if let Some(brightness) = self.persistent.brightness.get() {
|
||||
luminance.white.0 = brightness;
|
||||
}
|
||||
let mut target_luminance = luminance.to_target();
|
||||
let mut max_cll = 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.max = 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.
|
||||
- `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
|
||||
|
|
|
|||
|
|
@ -3425,6 +3425,10 @@ Brightness:
|
|||
|
||||
- `default`: The maximum brightness of the output.
|
||||
- `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
|
||||
description: |
|
||||
The brightness in cd/m^2.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue