summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/libplacebo
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-08-26 15:08:16 -0400
committerAndrew Opalach <andrew@akon.city> 2026-08-26 15:08:16 -0400
commit6094c907b26e21f13373bae6bf3306dbae40af3c (patch)
tree981864ddb1ab9749d3e10a81edc782311826e101 /subprojects/packagefiles/libplacebo
parentda9bddc70ff8544f3294b880d719c4605e87ad97 (diff)
downloadcamu-6094c907b26e21f13373bae6bf3306dbae40af3c.tar.gz
camu-6094c907b26e21f13373bae6bf3306dbae40af3c.tar.bz2
camu-6094c907b26e21f13373bae6bf3306dbae40af3c.zip
Update deps, small changes and cleanup
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'subprojects/packagefiles/libplacebo')
-rw-r--r--subprojects/packagefiles/libplacebo/android_opengl_custom_dispatch.diff54
-rw-r--r--subprojects/packagefiles/libplacebo/glslang_meson_wrap.diff40
-rw-r--r--subprojects/packagefiles/libplacebo/no_uniforms_in_vert.diff89
-rw-r--r--subprojects/packagefiles/libplacebo/shaderc_optimize_size.diff13
4 files changed, 196 insertions, 0 deletions
diff --git a/subprojects/packagefiles/libplacebo/android_opengl_custom_dispatch.diff b/subprojects/packagefiles/libplacebo/android_opengl_custom_dispatch.diff
new file mode 100644
index 0000000..e8b2ecf
--- /dev/null
+++ b/subprojects/packagefiles/libplacebo/android_opengl_custom_dispatch.diff
@@ -0,0 +1,54 @@
+diff --git a/src/dispatch.c b/src/dispatch.c
+index 218b556..70be9aa 100644
+--- a/src/dispatch.c
++++ b/src/dispatch.c
+@@ -1541,7 +1541,7 @@ bool pl_dispatch_vertex(pl_dispatch dp, const struct pl_dispatch_vertex_params *
+ case PL_COORDS_NORMALIZED:
+ if (params->vertex_flipped) {
+ proj.mat.m[1][1] = -proj.mat.m[1][1];
+- proj.c[1] += 2.0;
++ //proj.c[1] += 2.0;
+ }
+ break;
+ }
+@@ -1566,7 +1566,7 @@ bool pl_dispatch_vertex(pl_dispatch dp, const struct pl_dispatch_vertex_params *
+
+ // Update the scissors
+ rparams->scissors = params->scissors;
+- if (params->vertex_flipped) {
++ if (params->vertex_flipped && rparams->scissors.y0 != rparams->scissors.y1) {
+ rparams->scissors.y0 = tpars->h - rparams->scissors.y0;
+ rparams->scissors.y1 = tpars->h - rparams->scissors.y1;
+ }
+diff --git a/src/shaders/custom_mpv.c b/src/shaders/custom_mpv.c
+index 1c93da5..bd6450d 100644
+--- a/src/shaders/custom_mpv.c
++++ b/src/shaders/custom_mpv.c
+@@ -1191,10 +1191,10 @@ static bool bind_pass_tex(pl_shader sh, pl_str name,
+ GLSLH("#define HOOKED_pt %.*s_pt \n", PL_STR_FMT(name));
+ GLSLH("#define HOOKED_map %.*s_map \n", PL_STR_FMT(name));
+ GLSLH("#define HOOKED_mul %.*s_mul \n", PL_STR_FMT(name));
+- GLSLH("#define HOOKED_tex %.*s_tex \n", PL_STR_FMT(name));
+- GLSLH("#define HOOKED_texOff %.*s_texOff \n", PL_STR_FMT(name));
++ GLSLH("#define HOOKED_tex(pos) %.*s_tex(pos) \n", PL_STR_FMT(name));
++ GLSLH("#define HOOKED_texOff(off) %.*s_texOff(off) \n", PL_STR_FMT(name));
+ if (can_gather)
+- GLSLH("#define HOOKED_gather %.*s_gather \n", PL_STR_FMT(name));
++ GLSLH("#define HOOKED_gather(pos, c) %.*s_gather(pos, c) \n", PL_STR_FMT(name));
+ }
+
+ if (mainpresub) {
+@@ -1206,10 +1206,10 @@ static bool bind_pass_tex(pl_shader sh, pl_str name,
+ GLSLH("#define MAIN_pt MAINPRESUB_pt \n");
+ GLSLH("#define MAIN_map MAINPRESUB_map \n");
+ GLSLH("#define MAIN_mul MAINPRESUB_mul \n");
+- GLSLH("#define MAIN_tex MAINPRESUB_tex \n");
+- GLSLH("#define MAIN_texOff MAINPRESUB_texOff \n");
++ GLSLH("#define MAIN_tex(pos) MAINPRESUB_tex(pos) \n");
++ GLSLH("#define MAIN_texOff(off) MAINPRESUB_texOff(off) \n");
+ if (can_gather)
+- GLSLH("#define MAIN_gather MAINPRESUB_gather \n");
++ GLSLH("#define MAIN_gather(pos, c) MAINPRESUB_gather(pos, c) \n");
+ }
+
+ return true;
diff --git a/subprojects/packagefiles/libplacebo/glslang_meson_wrap.diff b/subprojects/packagefiles/libplacebo/glslang_meson_wrap.diff
new file mode 100644
index 0000000..d722bef
--- /dev/null
+++ b/subprojects/packagefiles/libplacebo/glslang_meson_wrap.diff
@@ -0,0 +1,40 @@
+diff --git a/src/glsl/meson.build b/src/glsl/meson.build
+index c9a8542..499042a 100644
+--- a/src/glsl/meson.build
++++ b/src/glsl/meson.build
+@@ -30,7 +30,7 @@ if glslang_req.auto() and shaderc.found()
+ elif not glslang_req.disabled()
+
+ glslang_deps = [
+- cxx.find_library('glslang-default-resource-limits', required: false)
++ dependency('glslang-default-resource-limits', required: false)
+ ]
+
+ # meson doesn't respect generator expressions in INTERFACE_LINK_LIBRARIES
+@@ -49,7 +49,7 @@ elif not glslang_req.disabled()
+ static = arg[0]
+ required = arg[1]
+
+- spirv = cxx.find_library('SPIRV', required: required, static: static, dirs: vulkan_lib_dirs)
++ spirv = dependency('SPIRV', required: required, static: static)
+
+ if not spirv.found()
+ continue
+@@ -59,7 +59,7 @@ elif not glslang_req.disabled()
+
+ # Glslang 15.0.0 moved some code around, add also linking to glslang, while
+ # this is not needed for older versions, it will still work.
+- glslang_deps += cxx.find_library('glslang', required: required, static: static)
++ glslang_deps += dependency('glslang', required: required, static: static)
+
+ if static
+ glslang_deps += [
+@@ -78,7 +78,7 @@ elif not glslang_req.disabled()
+ break
+ endforeach
+
+- if found_lib and cc.has_header('glslang/build_info.h')
++ if found_lib
+ glslang = declare_dependency(dependencies: glslang_deps)
+ endif
+
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: {
diff --git a/subprojects/packagefiles/libplacebo/shaderc_optimize_size.diff b/subprojects/packagefiles/libplacebo/shaderc_optimize_size.diff
new file mode 100644
index 0000000..90d75e1
--- /dev/null
+++ b/subprojects/packagefiles/libplacebo/shaderc_optimize_size.diff
@@ -0,0 +1,13 @@
+diff --git a/src/glsl/spirv_shaderc.c b/src/glsl/spirv_shaderc.c
+index 3afd750..8c3d5e0 100644
+--- a/src/glsl/spirv_shaderc.c
++++ b/src/glsl/spirv_shaderc.c
+@@ -112,7 +112,7 @@ static pl_str shaderc_compile(pl_spirv spirv, void *alloc,
+ return (pl_str) {0};
+
+ shaderc_compile_options_set_optimization_level(opts,
+- shaderc_optimization_level_performance);
++ shaderc_optimization_level_size);
+ shaderc_compile_options_set_target_spirv(opts, spirv->version.spv_version);
+ shaderc_compile_options_set_target_env(opts, shaderc_target_env_vulkan,
+ spirv->version.env_version);