gl: Disable shader interpreter if hardware does not support bindless textures

This commit is contained in:
kd-11 2021-10-26 22:21:24 +03:00 committed by kd-11
parent 2587545eed
commit 99fc90648b
2 changed files with 34 additions and 12 deletions

View file

@ -15,6 +15,7 @@ namespace gl
bool EXT_dsa_supported = false; bool EXT_dsa_supported = false;
bool EXT_depth_bounds_test = false; bool EXT_depth_bounds_test = false;
bool ARB_dsa_supported = false; bool ARB_dsa_supported = false;
bool ARB_bindless_texture_supported = false;
bool ARB_buffer_storage_supported = false; bool ARB_buffer_storage_supported = false;
bool ARB_texture_buffer_supported = false; bool ARB_texture_buffer_supported = false;
bool ARB_shader_draw_parameters_supported = false; bool ARB_shader_draw_parameters_supported = false;
@ -44,7 +45,7 @@ namespace gl
void initialize() void initialize()
{ {
int find_count = 13; int find_count = 14;
int ext_count = 0; int ext_count = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &ext_count); glGetIntegerv(GL_NUM_EXTENSIONS, &ext_count);
std::string vendor_string = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); std::string vendor_string = reinterpret_cast<const char*>(glGetString(GL_VENDOR));
@ -78,6 +79,13 @@ namespace gl
continue; continue;
} }
if (check(ext_name, "GL_ARB_bindless_texture"))
{
ARB_bindless_texture_supported = true;
find_count--;
continue;
}
if (check(ext_name, "GL_ARB_buffer_storage")) if (check(ext_name, "GL_ARB_buffer_storage"))
{ {
ARB_buffer_storage_supported = true; ARB_buffer_storage_supported = true;

View file

@ -129,6 +129,20 @@ void GLGSRender::on_init_thread()
rsx_log.warning("Texture barriers are not supported by your GPU. Feedback loops will have undefined results."); rsx_log.warning("Texture barriers are not supported by your GPU. Feedback loops will have undefined results.");
} }
if (!gl_caps.ARB_bindless_texture_supported)
{
switch (shadermode)
{
case shader_mode::async_with_interpreter:
case shader_mode::interpreter_only:
rsx_log.error("Bindless texture extension required for shader interpreter is not supported on your GPU. Will use async recompiler as a fallback.");
g_cfg.video.shadermode.set(shader_mode::async_recompiler);
break;
default:
break;
}
}
// Use industry standard resource alignment values as defaults // Use industry standard resource alignment values as defaults
m_uniform_buffer_offset_align = 256; m_uniform_buffer_offset_align = 256;
m_min_texbuffer_alignment = 256; m_min_texbuffer_alignment = 256;