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_depth_bounds_test = false;
bool ARB_dsa_supported = false;
bool ARB_bindless_texture_supported = false;
bool ARB_buffer_storage_supported = false;
bool ARB_texture_buffer_supported = false;
bool ARB_shader_draw_parameters_supported = false;
@ -44,7 +45,7 @@ namespace gl
void initialize()
{
int find_count = 13;
int find_count = 14;
int ext_count = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &ext_count);
std::string vendor_string = reinterpret_cast<const char*>(glGetString(GL_VENDOR));
@ -78,6 +79,13 @@ namespace gl
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"))
{
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.");
}
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
m_uniform_buffer_offset_align = 256;
m_min_texbuffer_alignment = 256;