Browse Source

opengl: gl_util: refactor LogShader

pull/162/head
Alexandre Janniaux 3 years ago
committed by Steve Lhomme
parent
commit
355d0020f4
  1. 49
      modules/video_output/opengl/gl_util.c

49
modules/video_output/opengl/gl_util.c

@ -32,25 +32,13 @@
#include <vlc_memstream.h>
static void
LogShaderErrors(vlc_object_t *obj, const opengl_vtable_t *vt, GLuint id)
LogShader(vlc_object_t *obj, const char *prefix, const opengl_vtable_t *vt, GLuint id)
{
GLint info_len;
vt->GetShaderiv(id, GL_INFO_LOG_LENGTH, &info_len);
if (info_len <= 0)
return;
char *info_log = malloc(info_len);
if (info_log == NULL)
return;
GLsizei written;
vt->GetShaderInfoLog(id, info_len, &written, info_log);
GLint size;
vt->GetShaderiv(id, GL_SHADER_SOURCE_LENGTH, &size);
char *sources = malloc(size + 1);
if (sources == NULL)
goto end;
return;
vt->GetShaderSource(id, size + 1, NULL, sources);
@ -60,7 +48,10 @@ LogShaderErrors(vlc_object_t *obj, const opengl_vtable_t *vt, GLuint id)
/* This is debugging code, we don't want an hard failure if
* the allocation failed. */
if (ret != 0)
goto end;
{
free(sources);
return;
}
const char *cursor = sources;
size_t line = 1;
@ -82,15 +73,35 @@ LogShaderErrors(vlc_object_t *obj, const opengl_vtable_t *vt, GLuint id)
ret = vlc_memstream_close(&stream);
if (ret != 0)
goto end;
{
free(sources);
return;
}
msg_Err(obj, "Shader:\n%s", stream.ptr);
msg_Err(obj, "%s%s", prefix, stream.ptr);
free(stream.ptr);
free(sources);
}
static void
LogShaderErrors(vlc_object_t *obj, const opengl_vtable_t *vt, GLuint id)
{
GLint info_len;
vt->GetShaderiv(id, GL_INFO_LOG_LENGTH, &info_len);
if (info_len <= 0)
return;
char *info_log = malloc(info_len);
if (info_log == NULL)
return;
GLsizei written;
vt->GetShaderInfoLog(id, info_len, &written, info_log);
LogShader(obj, "Shader source:\n", vt, id);
end:
msg_Err(obj, "shader: %s", info_log);
free(info_log);
free(sources);
}
static void

Loading…
Cancel
Save