OpenGL: Unconditionally do `glDisable(GL_FRAMEBUFFER_SRGB)` because we do our own sRGB conversion
This commit is contained in:
parent
86c95d26fc
commit
dfcff4ef46
|
@ -62,6 +62,10 @@
|
||||||
#define _EXT_DEBUG_SEVERITY_LOW_ARB 0x9148
|
#define _EXT_DEBUG_SEVERITY_LOW_ARB 0x9148
|
||||||
#define _EXT_DEBUG_OUTPUT 0x92E0
|
#define _EXT_DEBUG_OUTPUT 0x92E0
|
||||||
|
|
||||||
|
#ifndef GL_FRAMEBUFFER_SRGB
|
||||||
|
#define GL_FRAMEBUFFER_SRGB 0x8DB9
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef GLAPIENTRY
|
#ifndef GLAPIENTRY
|
||||||
#if defined(WINDOWS_ENABLED)
|
#if defined(WINDOWS_ENABLED)
|
||||||
#define GLAPIENTRY APIENTRY
|
#define GLAPIENTRY APIENTRY
|
||||||
|
@ -345,6 +349,9 @@ RasterizerGLES3::RasterizerGLES3() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable OpenGL linear to sRGB conversion, because Godot will always do this conversion itself.
|
||||||
|
glDisable(GL_FRAMEBUFFER_SRGB);
|
||||||
|
|
||||||
// OpenGL needs to be initialized before initializing the Rasterizers
|
// OpenGL needs to be initialized before initializing the Rasterizers
|
||||||
config = memnew(GLES3::Config);
|
config = memnew(GLES3::Config);
|
||||||
utilities = memnew(GLES3::Utilities);
|
utilities = memnew(GLES3::Utilities);
|
||||||
|
|
|
@ -56,11 +56,6 @@
|
||||||
// feature off.
|
// feature off.
|
||||||
// See: https://registry.khronos.org/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt
|
// See: https://registry.khronos.org/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt
|
||||||
|
|
||||||
// On OpenGLES this is not defined in our standard headers..
|
|
||||||
#ifndef GL_FRAMEBUFFER_SRGB
|
|
||||||
#define GL_FRAMEBUFFER_SRGB 0x8DB9
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HashMap<String, bool *> OpenXROpenGLExtension::get_requested_extensions() {
|
HashMap<String, bool *> OpenXROpenGLExtension::get_requested_extensions() {
|
||||||
HashMap<String, bool *> request_extensions;
|
HashMap<String, bool *> request_extensions;
|
||||||
|
|
||||||
|
@ -196,23 +191,6 @@ void OpenXROpenGLExtension::get_usable_depth_formats(Vector<int64_t> &p_usable_d
|
||||||
p_usable_depth_formats.push_back(GL_DEPTH_COMPONENT24);
|
p_usable_depth_formats.push_back(GL_DEPTH_COMPONENT24);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenXROpenGLExtension::on_pre_draw_viewport(RID p_render_target) {
|
|
||||||
if (srgb_ext_is_available) {
|
|
||||||
hw_linear_to_srgb_is_enabled = glIsEnabled(GL_FRAMEBUFFER_SRGB);
|
|
||||||
if (hw_linear_to_srgb_is_enabled) {
|
|
||||||
// Disable this.
|
|
||||||
glDisable(GL_FRAMEBUFFER_SRGB);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenXROpenGLExtension::on_post_draw_viewport(RID p_render_target) {
|
|
||||||
if (srgb_ext_is_available && hw_linear_to_srgb_is_enabled) {
|
|
||||||
// Re-enable this.
|
|
||||||
glEnable(GL_FRAMEBUFFER_SRGB);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OpenXROpenGLExtension::get_swapchain_image_data(XrSwapchain p_swapchain, int64_t p_swapchain_format, uint32_t p_width, uint32_t p_height, uint32_t p_sample_count, uint32_t p_array_size, void **r_swapchain_graphics_data) {
|
bool OpenXROpenGLExtension::get_swapchain_image_data(XrSwapchain p_swapchain, int64_t p_swapchain_format, uint32_t p_width, uint32_t p_height, uint32_t p_sample_count, uint32_t p_array_size, void **r_swapchain_graphics_data) {
|
||||||
GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
|
GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
|
||||||
ERR_FAIL_NULL_V(texture_storage, false);
|
ERR_FAIL_NULL_V(texture_storage, false);
|
||||||
|
|
|
@ -49,9 +49,6 @@ public:
|
||||||
virtual void on_instance_created(const XrInstance p_instance) override;
|
virtual void on_instance_created(const XrInstance p_instance) override;
|
||||||
virtual void *set_session_create_and_get_next_pointer(void *p_next_pointer) override;
|
virtual void *set_session_create_and_get_next_pointer(void *p_next_pointer) override;
|
||||||
|
|
||||||
virtual void on_pre_draw_viewport(RID p_render_target) override;
|
|
||||||
virtual void on_post_draw_viewport(RID p_render_target) override;
|
|
||||||
|
|
||||||
virtual void get_usable_swapchain_formats(Vector<int64_t> &p_usable_swap_chains) override;
|
virtual void get_usable_swapchain_formats(Vector<int64_t> &p_usable_swap_chains) override;
|
||||||
virtual void get_usable_depth_formats(Vector<int64_t> &p_usable_swap_chains) override;
|
virtual void get_usable_depth_formats(Vector<int64_t> &p_usable_swap_chains) override;
|
||||||
virtual String get_swapchain_format_name(int64_t p_swapchain_format) const override;
|
virtual String get_swapchain_format_name(int64_t p_swapchain_format) const override;
|
||||||
|
@ -76,9 +73,6 @@ private:
|
||||||
Vector<RID> texture_rids;
|
Vector<RID> texture_rids;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool srgb_ext_is_available = true;
|
|
||||||
bool hw_linear_to_srgb_is_enabled = false;
|
|
||||||
|
|
||||||
bool check_graphics_api_support(XrVersion p_desired_version);
|
bool check_graphics_api_support(XrVersion p_desired_version);
|
||||||
|
|
||||||
#ifdef ANDROID_ENABLED
|
#ifdef ANDROID_ENABLED
|
||||||
|
|
Loading…
Reference in New Issue