Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuwen Wu <atyuwen@gmail.com>2022-08-24 06:07:12 +0300
committerYuwen Wu <atyuwen@gmail.com>2022-08-24 06:07:12 +0300
commitf40dba4919ea7c6b72091120863c8aaf232aeed6 (patch)
treebf82009112e0a6d03643eb0d23e49bb4bc1b2d7f
parent10f2aa77da85ff2c7064702beffff9c1a2dccd0f (diff)
GLSL: added an option to disable row-major-load workaround.
-rw-r--r--spirv_glsl.cpp2
-rw-r--r--spirv_glsl.hpp6
2 files changed, 7 insertions, 1 deletions
diff --git a/spirv_glsl.cpp b/spirv_glsl.cpp
index 1b679fc9..0a723708 100644
--- a/spirv_glsl.cpp
+++ b/spirv_glsl.cpp
@@ -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;
diff --git a/spirv_glsl.hpp b/spirv_glsl.hpp
index a798737c..d967b456 100644
--- a/spirv_glsl.hpp
+++ b/spirv_glsl.hpp
@@ -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;