Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (10)
......@@ -3143,6 +3143,7 @@ AS_IF([test "$enable_libplacebo" != "no"], [
AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
AC_CHECK_HEADER([libplacebo/vulkan.h], [VLC_ADD_PLUGIN([placebo_vk])])
AC_CHECK_HEADER([libplacebo/opengl.h], [
AC_DEFINE([HAVE_LIBPLACEBO_GL], [1], [Define to 1 if <libplacebo/opengl.h> is available.])
VLC_ADD_PLUGIN([placebo_gl])
VLC_ADD_PLUGIN([placebo_gles2])
dnl Minimum version that the OpenGL filter pl_scale is compatible with
......
......@@ -108,6 +108,9 @@ vlc_gl_api_Init(struct vlc_gl_api *api, vlc_gl_t *gl)
GET_PROC_ADDR(UniformMatrix3fv);
GET_PROC_ADDR(UniformMatrix2fv);
GET_PROC_ADDR(Uniform4fv);
GET_PROC_ADDR(Uniform3fv);
GET_PROC_ADDR(Uniform2fv);
GET_PROC_ADDR(Uniform1fv);
GET_PROC_ADDR(Uniform4f);
GET_PROC_ADDR(Uniform3f);
GET_PROC_ADDR(Uniform2f);
......
......@@ -90,6 +90,9 @@
#ifndef GL_TEXTURE_LUMINANCE_SIZE
# define GL_TEXTURE_LUMINANCE_SIZE 0x8060
#endif
#ifndef GL_TEXTURE_WRAP_R
# define GL_TEXTURE_WRAP_R 0x8072
#endif
#ifndef GL_CLAMP_TO_EDGE
# define GL_CLAMP_TO_EDGE 0x812F
......@@ -252,6 +255,9 @@ typedef void (APIENTRY *PFNGLREADPIXELSPROC) (GLint, GLint, GLsizei, GLsizei, GL
# define PFNGLUNIFORMMATRIX3FVPROC typeof(glUniformMatrix3fv)*
# define PFNGLUNIFORMMATRIX2FVPROC typeof(glUniformMatrix2fv)*
# define PFNGLUNIFORM4FVPROC typeof(glUniform4fv)*
# define PFNGLUNIFORM3FVPROC typeof(glUniform3fv)*
# define PFNGLUNIFORM2FVPROC typeof(glUniform2fv)*
# define PFNGLUNIFORM1FVPROC typeof(glUniform1fv)*
# define PFNGLUNIFORM4FPROC typeof(glUniform4f)*
# define PFNGLUNIFORM3FPROC typeof(glUniform3f)*
# define PFNGLUNIFORM2FPROC typeof(glUniform2f)*
......@@ -356,6 +362,9 @@ typedef struct {
PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
PFNGLUNIFORM4FVPROC Uniform4fv;
PFNGLUNIFORM3FVPROC Uniform3fv;
PFNGLUNIFORM2FVPROC Uniform2fv;
PFNGLUNIFORM1FVPROC Uniform1fv;
PFNGLUNIFORM4FPROC Uniform4f;
PFNGLUNIFORM3FPROC Uniform3f;
PFNGLUNIFORM2FPROC Uniform2f;
......
......@@ -28,7 +28,8 @@
#include <vlc_memstream.h>
#include <vlc_opengl.h>
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
#include <libplacebo/opengl.h>
#include <libplacebo/shaders.h>
#include <libplacebo/shaders/colorspace.h>
#include "../libplacebo/utils.h"
......@@ -51,16 +52,18 @@ struct vlc_gl_sampler_priv {
GLint Textures[PICTURE_PLANE_MAX];
GLint TexSizes[PICTURE_PLANE_MAX]; /* for GL_TEXTURE_RECTANGLE */
GLint ConvMatrix;
GLint *pl_vars; /* for pl_sh_res */
GLint *pl_vars, *pl_descs; /* for pl_sh_res */
} uloc;
bool yuv_color;
GLfloat conv_matrix[4*4];
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
/* libplacebo context */
pl_log pl_log;
pl_opengl pl_opengl;
pl_shader pl_sh;
pl_shader_obj dither_state, tone_map_state;
const struct pl_shader_res *pl_sh_res;
#endif
......@@ -276,12 +279,17 @@ sampler_base_fetch_locations(struct vlc_gl_sampler *sampler, GLuint program)
}
}
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
const struct pl_shader_res *res = priv->pl_sh_res;
for (int i = 0; res && i < res->num_variables; i++) {
struct pl_shader_var sv = res->variables[i];
priv->uloc.pl_vars[i] = vt->GetUniformLocation(program, sv.var.name);
}
for (int i = 0; res && i < res->num_descriptors; i++) {
struct pl_shader_desc sd = res->descriptors[i];
priv->uloc.pl_descs[i] = vt->GetUniformLocation(program, sd.desc.name);
}
#endif
}
......@@ -315,7 +323,7 @@ sampler_base_load(struct vlc_gl_sampler *sampler)
glfmt->tex_heights[i]);
}
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
const struct pl_shader_res *res = priv->pl_sh_res;
for (int i = 0; res && i < res->num_variables; i++) {
GLint loc = priv->uloc.pl_vars[i];
......@@ -325,27 +333,61 @@ sampler_base_load(struct vlc_gl_sampler *sampler)
struct pl_shader_var sv = res->variables[i];
struct pl_var var = sv.var;
// libplacebo doesn't need anything else anyway
if (var.type != PL_VAR_FLOAT)
continue;
if (var.dim_m > 1 && var.dim_m != var.dim_v)
continue;
assert(var.type == PL_VAR_FLOAT);
assert(var.dim_m == 1 || var.dim_m == var.dim_v);
const float *f = sv.data;
switch (var.dim_m) {
case 4: vt->UniformMatrix4fv(loc, 1, GL_FALSE, f); break;
case 3: vt->UniformMatrix3fv(loc, 1, GL_FALSE, f); break;
case 2: vt->UniformMatrix2fv(loc, 1, GL_FALSE, f); break;
case 4: vt->UniformMatrix4fv(loc, var.dim_a, GL_FALSE, f); break;
case 3: vt->UniformMatrix3fv(loc, var.dim_a, GL_FALSE, f); break;
case 2: vt->UniformMatrix2fv(loc, var.dim_a, GL_FALSE, f); break;
case 1:
switch (var.dim_v) {
case 1: vt->Uniform1f(loc, f[0]); break;
case 2: vt->Uniform2f(loc, f[0], f[1]); break;
case 3: vt->Uniform3f(loc, f[0], f[1], f[2]); break;
case 4: vt->Uniform4f(loc, f[0], f[1], f[2], f[3]); break;
case 1: vt->Uniform1fv(loc, var.dim_a, f); break;
case 2: vt->Uniform2fv(loc, var.dim_a, f); break;
case 3: vt->Uniform3fv(loc, var.dim_a, f); break;
case 4: vt->Uniform4fv(loc, var.dim_a, f); break;
}
break;
}
}
for (int i = 0; res && i < res->num_descriptors; i++) {
GLint loc = priv->uloc.pl_descs[i];
if (loc == -1)
continue;
struct pl_shader_desc sd = res->descriptors[i];
assert(sd.desc.type == PL_DESC_SAMPLED_TEX);
pl_tex tex = sd.binding.object;
int texid = glfmt->tex_count + i; // first free texture unit
unsigned gltex, target;
gltex = pl_opengl_unwrap(priv->pl_opengl->gpu, tex, &target, NULL, NULL);
vt->Uniform1i(loc, texid);
vt->ActiveTexture(GL_TEXTURE0 + texid);
vt->BindTexture(target, gltex);
static const GLint wraps[PL_TEX_ADDRESS_MODE_COUNT] = {
[PL_TEX_ADDRESS_CLAMP] = GL_CLAMP_TO_EDGE,
[PL_TEX_ADDRESS_REPEAT] = GL_REPEAT,
[PL_TEX_ADDRESS_MIRROR] = GL_MIRRORED_REPEAT,
};
static const GLint filters[PL_TEX_SAMPLE_MODE_COUNT] = {
[PL_TEX_SAMPLE_NEAREST] = GL_NEAREST,
[PL_TEX_SAMPLE_LINEAR] = GL_LINEAR,
};
GLint filter = filters[sd.binding.sample_mode];
GLint wrap = wraps[sd.binding.address_mode];
vt->TexParameteri(target, GL_TEXTURE_MIN_FILTER, filter);
vt->TexParameteri(target, GL_TEXTURE_MAG_FILTER, filter);
switch (pl_tex_params_dimension(tex->params)) {
case 3: vt->TexParameteri(target, GL_TEXTURE_WRAP_R, wrap); // fall through
case 2: vt->TexParameteri(target, GL_TEXTURE_WRAP_T, wrap); // fall through
case 1: vt->TexParameteri(target, GL_TEXTURE_WRAP_S, wrap); break;
}
}
#endif
}
......@@ -661,7 +703,7 @@ opengl_fragment_shader_init(struct vlc_gl_sampler *sampler, bool expose_planes)
ADDF("uniform %s Textures[%u];\n", glsl_sampler, tex_count);
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
if (priv->pl_sh) {
pl_shader sh = priv->pl_sh;
struct pl_color_map_params color_params;
......@@ -671,12 +713,10 @@ opengl_fragment_shader_init(struct vlc_gl_sampler *sampler, bool expose_planes)
dst_space.primaries = var_InheritInteger(priv->gl, "target-prim");
dst_space.transfer = var_InheritInteger(priv->gl, "target-trc");
pl_shader_obj tone_map_state = NULL;
pl_shader_color_map(sh, &color_params,
vlc_placebo_ColorSpace(fmt),
dst_space, &tone_map_state, false);
dst_space, &priv->tone_map_state, false);
pl_shader_obj dither_state = NULL;
int method = var_InheritInteger(priv->gl, "dither-algo");
if (method >= 0) {
......@@ -700,27 +740,39 @@ opengl_fragment_shader_init(struct vlc_gl_sampler *sampler, bool expose_planes)
out_bits = fb_depth;
}
pl_shader_dither(sh, out_bits, &dither_state, &(struct pl_dither_params) {
pl_shader_dither(sh, out_bits, &priv->dither_state, &(struct pl_dither_params) {
.method = method,
.lut_size = 4, // avoid too large values, since this gets embedded
});
}
const struct pl_shader_res *res = priv->pl_sh_res = pl_shader_finalize(sh);
pl_shader_obj_destroy(&tone_map_state);
pl_shader_obj_destroy(&dither_state);
FREENULL(priv->uloc.pl_vars);
priv->uloc.pl_vars = calloc(res->num_variables, sizeof(GLint));
for (int i = 0; i < res->num_variables; i++) {
struct pl_shader_var sv = res->variables[i];
const char *glsl_type_name = pl_var_glsl_type_name(sv.var);
ADDF("uniform %s %s;\n", glsl_type_name, sv.var.name);
ADDF("uniform %s %s", glsl_type_name, sv.var.name);
if (sv.var.dim_a > 1) {
ADDF("[%d];\n", sv.var.dim_a);
} else {
ADDF(";\n");
}
}
FREENULL(priv->uloc.pl_descs);
priv->uloc.pl_descs = calloc(res->num_descriptors, sizeof(GLint));
for (int i = 0; i < res->num_descriptors; i++) {
struct pl_shader_desc sd = res->descriptors[i];
assert(sd.desc.type == PL_DESC_SAMPLED_TEX);
pl_tex tex = sd.binding.object;
assert(tex->sampler_type == PL_SAMPLER_NORMAL);
int dims = pl_tex_params_dimension(tex->params);
ADDF("uniform sampler%dD %s;\n", dims, sd.desc.name);
}
// We can't handle these yet, but nothing we use requires them, either
assert(res->num_vertex_attribs == 0);
assert(res->num_descriptors == 0);
ADD(res->glsl);
}
......@@ -775,7 +827,7 @@ opengl_fragment_shader_init(struct vlc_gl_sampler *sampler, bool expose_planes)
}
assert(yuv_space == COLOR_SPACE_UNDEF || color_count == 3);
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
if (priv->pl_sh_res) {
const struct pl_shader_res *res = priv->pl_sh_res;
if (res->input != PL_SHADER_SIG_NONE) {
......@@ -842,11 +894,20 @@ vlc_gl_sampler_New(struct vlc_gl_t *gl, const struct vlc_gl_api *api,
sampler->shader.extensions = NULL;
sampler->shader.body = NULL;
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
priv->uloc.pl_vars = NULL;
priv->uloc.pl_descs = NULL;
priv->pl_sh_res = NULL;
priv->pl_log = vlc_placebo_CreateLog(VLC_OBJECT(gl));
priv->pl_opengl = pl_opengl_create(priv->pl_log, NULL);
if (!priv->pl_opengl)
{
vlc_gl_sampler_Delete(sampler);
return NULL;
}
priv->pl_sh = pl_shader_alloc(priv->pl_log, &(struct pl_shader_params) {
.gpu = priv->pl_opengl->gpu,
.glsl = {
# ifdef USE_OPENGL_ES2
.version = 100,
......@@ -861,7 +922,7 @@ vlc_gl_sampler_New(struct vlc_gl_t *gl, const struct vlc_gl_api *api,
int ret = opengl_fragment_shader_init(sampler, expose_planes);
if (ret != VLC_SUCCESS)
{
free(sampler);
vlc_gl_sampler_Delete(sampler);
return NULL;
}
......@@ -873,9 +934,13 @@ vlc_gl_sampler_Delete(struct vlc_gl_sampler *sampler)
{
struct vlc_gl_sampler_priv *priv = PRIV(sampler);
#ifdef HAVE_LIBPLACEBO
#ifdef HAVE_LIBPLACEBO_GL
FREENULL(priv->uloc.pl_vars);
FREENULL(priv->uloc.pl_descs);
pl_shader_free(&priv->pl_sh);
pl_shader_obj_destroy(&priv->tone_map_state);
pl_shader_obj_destroy(&priv->dither_state);
pl_opengl_destroy(&priv->pl_opengl);
pl_log_destroy(&priv->pl_log);
#endif
......