summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff')
-rw-r--r--subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff89
1 files changed, 89 insertions, 0 deletions
diff --git a/subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff b/subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff
new file mode 100644
index 0000000..8797d34
--- /dev/null
+++ b/subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff
@@ -0,0 +1,89 @@
+diff --git a/src/dispatch.c b/src/dispatch.c
+index 218b556..067efc7 100644
+--- a/src/dispatch.c
++++ b/src/dispatch.c
+@@ -29,6 +29,7 @@
+
+ enum {
+ TMP_PRELUDE, // GLSL version, global definitions, etc.
++ TMP_UNIFORMS,
+ TMP_MAIN, // main GLSL shader body
+ TMP_VERT_HEAD, // vertex shader inputs/outputs
+ TMP_VERT_BODY, // vertex shader body
+@@ -304,15 +305,16 @@ static void generate_shaders(pl_dispatch dp,
+ pl_str_builder shader_body = sh_finalize_internal(sh);
+
+ pl_str_builder pre = dp->tmp[TMP_PRELUDE];
++ pl_str_builder uni = dp->tmp[TMP_UNIFORMS];
+ ADD(pre, "#version %d%s\n", gpu->glsl.version,
+ (gpu->glsl.gles && gpu->glsl.version > 100) ? " es" : "");
+ if (pass_params->type == PL_PASS_COMPUTE)
+- ADD(pre, "#extension GL_ARB_compute_shader : enable\n");
++ ADD(uni, "#extension GL_ARB_compute_shader : enable\n");
+
+ // Enable this unconditionally if the GPU supports it, since we have no way
+ // of knowing whether subgroups are being used or not
+ if (gpu->glsl.subgroup_size) {
+- ADD(pre, "#extension GL_KHR_shader_subgroup_basic : enable \n"
++ ADD(uni, "#extension GL_KHR_shader_subgroup_basic : enable \n"
+ "#extension GL_KHR_shader_subgroup_vote : enable \n"
+ "#extension GL_KHR_shader_subgroup_arithmetic : enable \n"
+ "#extension GL_KHR_shader_subgroup_ballot : enable \n"
+@@ -360,24 +362,24 @@ static void generate_shaders(pl_dispatch dp,
+ }
+
+ if (has_img && !gpu->glsl.gles)
+- ADD(pre, "#extension GL_ARB_shader_image_load_store : enable\n");
++ ADD(uni, "#extension GL_ARB_shader_image_load_store : enable\n");
+ if (has_ubo)
+- ADD(pre, "#extension GL_ARB_uniform_buffer_object : enable\n");
++ ADD(uni, "#extension GL_ARB_uniform_buffer_object : enable\n");
+ if (has_ssbo)
+- ADD(pre, "#extension GL_ARB_shader_storage_buffer_object : enable\n");
++ ADD(uni, "#extension GL_ARB_shader_storage_buffer_object : enable\n");
+ if (has_texel)
+- ADD(pre, "#extension GL_ARB_texture_buffer_object : enable\n");
++ ADD(uni, "#extension GL_ARB_texture_buffer_object : enable\n");
+ if (has_ext) {
+ if (gpu->glsl.version >= 300) {
+- ADD(pre, "#extension GL_OES_EGL_image_external_essl3 : enable\n");
++ ADD(uni, "#extension GL_OES_EGL_image_external_essl3 : enable\n");
+ } else {
+- ADD(pre, "#extension GL_OES_EGL_image_external : enable\n");
++ ADD(uni, "#extension GL_OES_EGL_image_external : enable\n");
+ }
+ }
+ if (has_nofmt)
+- ADD(pre, "#extension GL_EXT_shader_image_load_formatted : enable\n");
++ ADD(uni, "#extension GL_EXT_shader_image_load_formatted : enable\n");
+ if (has_gather && !gpu->glsl.gles)
+- ADD(pre, "#extension GL_ARB_texture_gather : enable\n");
++ ADD(uni, "#extension GL_ARB_texture_gather : enable\n");
+
+ if (gpu->glsl.gles) {
+ // Use 32-bit precision for floats if possible
+@@ -527,12 +529,12 @@ static void generate_shaders(pl_dispatch dp,
+
+ case PL_DESC_BUF_UNIFORM:
+ if (gpu->glsl.vulkan) {
+- ADD(pre, "layout(std140, binding=%d) ", desc->binding);
++ ADD(uni, "layout(std140, binding=%d) ", desc->binding);
+ } else {
+- ADD(pre, "layout(std140) ");
++ ADD(uni, "layout(std140) ");
+ }
+- ADD(pre, "uniform "$" ", sh_ident_unpack(desc->name));
+- add_buffer_vars(dp, tmp, pre, sd->buffer_vars, sd->num_buffer_vars);
++ ADD(uni, "uniform "$" ", sh_ident_unpack(desc->name));
++ add_buffer_vars(dp, tmp, uni, sd->buffer_vars, sd->num_buffer_vars);
+ break;
+
+ case PL_DESC_BUF_STORAGE:
+@@ -599,6 +601,7 @@ static void generate_shaders(pl_dispatch dp,
+
+ pl_str_builder glsl = dp->tmp[TMP_MAIN];
+ ADD_CAT(glsl, pre);
++ ADD_CAT(glsl, uni);
+
+ switch(pass_params->type) {
+ case PL_PASS_RASTER: {