summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff
blob: 8797d345f02af43e984e09aaaca47f594eee67d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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: {