GLSL: added an option to disable row-major-load workaround.

This commit is contained in:
Yuwen Wu 2022-08-24 11:07:12 +08:00
parent 10f2aa77da
commit f40dba4919
2 changed files with 7 additions and 1 deletions

View File

@ -649,7 +649,7 @@ string CompilerGLSL::compile()
{
// only NV_gpu_shader5 supports divergent indexing on OpenGL, and it does so without extra qualifiers
backend.nonuniform_qualifier = "";
backend.needs_row_major_load_workaround = !options.es;
backend.needs_row_major_load_workaround = options.enable_row_major_load_workaround;
}
backend.allow_precision_qualifiers = options.vulkan_semantics || options.es;
backend.force_gl_in_out_block = true;

View File

@ -145,6 +145,12 @@ public:
// compares.
bool relax_nan_checks = false;
// Loading row-major matrices from UBOs on older AMD Windows OpenGL drivers is problematic.
// To load these types correctly, we must generate a wrapper. them in a dummy function which only purpose is to
// ensure row_major decoration is actually respected.
// This workaround may cause significant performance degeneration on some Android devices.
bool enable_row_major_load_workaround = true;
// If non-zero, controls layout(num_views = N) in; in GL_OVR_multiview2.
uint32_t ovr_multiview_view_count = 0;