Support output to HDR monitors
Co-authored-by: Alvin Wong <alvinhochun@gmail.com> Co-authored-by: Allen Pestaluky <allenpestaluky@gmail.com>
This commit is contained in:
parent
40448082ab
commit
b8389cc76b
65 changed files with 1579 additions and 233 deletions
|
|
@ -75,6 +75,80 @@ DisplayServer::VSyncMode RenderingContextDriver::window_get_vsync_mode(DisplaySe
|
|||
}
|
||||
}
|
||||
|
||||
void RenderingContextDriver::window_set_hdr_output_enabled(DisplayServer::WindowID p_window, bool p_enabled) {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
surface_set_hdr_output_enabled(surface, p_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderingContextDriver::window_get_hdr_output_enabled(DisplayServer::WindowID p_window) const {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
return surface_get_hdr_output_enabled(surface);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void RenderingContextDriver::window_set_hdr_output_reference_luminance(DisplayServer::WindowID p_window, float p_reference_luminance) {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
surface_set_hdr_output_reference_luminance(surface, p_reference_luminance);
|
||||
}
|
||||
}
|
||||
|
||||
float RenderingContextDriver::window_get_hdr_output_reference_luminance(DisplayServer::WindowID p_window) const {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
return surface_get_hdr_output_reference_luminance(surface);
|
||||
} else {
|
||||
return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void RenderingContextDriver::window_set_hdr_output_max_luminance(DisplayServer::WindowID p_window, float p_max_luminance) {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
surface_set_hdr_output_max_luminance(surface, p_max_luminance);
|
||||
}
|
||||
}
|
||||
|
||||
float RenderingContextDriver::window_get_hdr_output_max_luminance(DisplayServer::WindowID p_window) const {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
return surface_get_hdr_output_max_luminance(surface);
|
||||
} else {
|
||||
return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void RenderingContextDriver::window_set_hdr_output_linear_luminance_scale(DisplayServer::WindowID p_window, float p_linear_luminance_scale) {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
surface_set_hdr_output_linear_luminance_scale(surface, p_linear_luminance_scale);
|
||||
}
|
||||
}
|
||||
|
||||
float RenderingContextDriver::window_get_hdr_output_linear_luminance_scale(DisplayServer::WindowID p_window) const {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
return surface_get_hdr_output_linear_luminance_scale(surface);
|
||||
} else {
|
||||
return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
float RenderingContextDriver::window_get_output_max_linear_value(DisplayServer::WindowID p_window) const {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
if (surface_get_hdr_output_enabled(surface)) {
|
||||
return surface_get_hdr_output_max_value(surface);
|
||||
}
|
||||
}
|
||||
return 1.0f; // SDR
|
||||
}
|
||||
|
||||
void RenderingContextDriver::window_destroy(DisplayServer::WindowID p_window) {
|
||||
SurfaceID surface = surface_get_from_window(p_window);
|
||||
if (surface) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue