forked from enlightenment/efl
evas_gl_shader: refractor shader/program compile check code.
Summary: Call respective shader/program functions on shader/program target only. Reviewers: cedric, raster, wonsik, spacegrapher, jpeg Reviewed By: jpeg Subscribers: alok25, sachin.dev, cedric, seoz Differential Revision: https://phab.enlightenment.org/D3388
This commit is contained in:
parent
9ef7237aa3
commit
0dd1a9144c
|
@ -66,32 +66,25 @@ static const char *_shader_flags[SHADER_FLAG_COUNT] = {
|
||||||
static Eina_Bool compiler_released = EINA_FALSE;
|
static Eina_Bool compiler_released = EINA_FALSE;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gl_compile_link_error(GLuint target, const char *action)
|
gl_compile_link_error(GLuint target, const char *action, Eina_Bool is_shader)
|
||||||
{
|
{
|
||||||
int loglen = 0, chars = 0;
|
int loglen = 0, chars = 0;
|
||||||
char *logtxt;
|
char *logtxt;
|
||||||
|
|
||||||
/* Shader info log */
|
if (is_shader)
|
||||||
glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen);
|
/* Shader info log */
|
||||||
if (loglen > 0)
|
glGetShaderiv(target, GL_INFO_LOG_LENGTH, &loglen);
|
||||||
{
|
else
|
||||||
logtxt = calloc(loglen, sizeof(char));
|
/* Program info log */
|
||||||
if (logtxt)
|
glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen);
|
||||||
{
|
|
||||||
glGetShaderInfoLog(target, loglen, &chars, logtxt);
|
|
||||||
ERR("Failed to %s: %s", action, logtxt);
|
|
||||||
free(logtxt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Program info log */
|
|
||||||
glGetProgramiv(target, GL_INFO_LOG_LENGTH, &loglen);
|
|
||||||
if (loglen > 0)
|
if (loglen > 0)
|
||||||
{
|
{
|
||||||
logtxt = calloc(loglen, sizeof(char));
|
logtxt = calloc(loglen, sizeof(char));
|
||||||
if (logtxt)
|
if (logtxt)
|
||||||
{
|
{
|
||||||
glGetProgramInfoLog(target, loglen, &chars, logtxt);
|
if (is_shader) glGetShaderInfoLog(target, loglen, &chars, logtxt);
|
||||||
|
else glGetProgramInfoLog(target, loglen, &chars, logtxt);
|
||||||
ERR("Failed to %s: %s", action, logtxt);
|
ERR("Failed to %s: %s", action, logtxt);
|
||||||
free(logtxt);
|
free(logtxt);
|
||||||
}
|
}
|
||||||
|
@ -155,7 +148,7 @@ _evas_gl_common_shader_program_binary_load(Eet_File *ef, unsigned int flags)
|
||||||
glGetProgramiv(prg, GL_LINK_STATUS, &ok);
|
glGetProgramiv(prg, GL_LINK_STATUS, &ok);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
gl_compile_link_error(prg, "load a program object");
|
gl_compile_link_error(prg, "load a program object", EINA_FALSE);
|
||||||
ERR("Abort load of program (%s)", pname);
|
ERR("Abort load of program (%s)", pname);
|
||||||
glDeleteProgram(prg);
|
glDeleteProgram(prg);
|
||||||
glDeleteShader(vtx);
|
glDeleteShader(vtx);
|
||||||
|
@ -381,7 +374,7 @@ evas_gl_common_shader_compile(unsigned int flags, const char *vertex,
|
||||||
glGetShaderiv(vtx, GL_COMPILE_STATUS, &ok);
|
glGetShaderiv(vtx, GL_COMPILE_STATUS, &ok);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
gl_compile_link_error(vtx, "compile vertex shader");
|
gl_compile_link_error(vtx, "compile vertex shader", EINA_TRUE);
|
||||||
ERR("Abort compile of vertex shader:\n%s", vertex);
|
ERR("Abort compile of vertex shader:\n%s", vertex);
|
||||||
glDeleteShader(vtx);
|
glDeleteShader(vtx);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -393,7 +386,7 @@ evas_gl_common_shader_compile(unsigned int flags, const char *vertex,
|
||||||
glGetShaderiv(frg, GL_COMPILE_STATUS, &ok);
|
glGetShaderiv(frg, GL_COMPILE_STATUS, &ok);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
gl_compile_link_error(frg, "compile fragment shader");
|
gl_compile_link_error(frg, "compile fragment shader", EINA_TRUE);
|
||||||
ERR("Abort compile of fragment shader:\n%s", fragment);
|
ERR("Abort compile of fragment shader:\n%s", fragment);
|
||||||
glDeleteShader(vtx);
|
glDeleteShader(vtx);
|
||||||
glDeleteShader(frg);
|
glDeleteShader(frg);
|
||||||
|
@ -423,7 +416,7 @@ evas_gl_common_shader_compile(unsigned int flags, const char *vertex,
|
||||||
glGetProgramiv(prg, GL_LINK_STATUS, &ok);
|
glGetProgramiv(prg, GL_LINK_STATUS, &ok);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
gl_compile_link_error(prg, "link fragment and vertex shaders");
|
gl_compile_link_error(prg, "link fragment and vertex shaders", EINA_FALSE);
|
||||||
ERR("Abort compile of shader (flags: %08x)", flags);
|
ERR("Abort compile of shader (flags: %08x)", flags);
|
||||||
glDeleteShader(vtx);
|
glDeleteShader(vtx);
|
||||||
glDeleteShader(frg);
|
glDeleteShader(frg);
|
||||||
|
|
Loading…
Reference in New Issue