summaryrefslogtreecommitdiff
path: root/run.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2020-04-20 12:50:19 -0700
committerEric Anholt <eric@anholt.net>2020-04-21 13:03:29 -0700
commit0c767078e749df995fc1358ba89b9a4d503cd2c1 (patch)
treea56db637b50635c3229be94fdad4d65845f01085 /run.c
parentd050b03bcec1445e0229339f7225769a4c1d0739 (diff)
run: Add support for running on GL 1.4 + ARB_shader_objects.
Fixes immediate crash in epoxy on freedreno a200. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'run.c')
-rw-r--r--run.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/run.c b/run.c
index eb85ba4..176a137 100644
--- a/run.c
+++ b/run.c
@@ -846,6 +846,7 @@ main(int argc, char **argv)
if (type == TYPE_CORE || type == TYPE_COMPAT || type == TYPE_ES) {
GLuint prog = glCreateProgram();
GLint param;
+ int gl_version = epoxy_gl_version();
glObjectLabel(GL_PROGRAM, prog, strlen(current_shader_name),
current_shader_name);
@@ -858,17 +859,26 @@ main(int argc, char **argv)
glShaderSource(s, 1, &shader[i].text, &shader[i].length);
glCompileShader(s);
- glGetShaderiv(s, GL_COMPILE_STATUS, &param);
+ if (gl_version < 20)
+ glGetObjectParameterivARB(s, GL_COMPILE_STATUS, &param);
+ else
+ glGetShaderiv(s, GL_COMPILE_STATUS, &param);
if (unlikely(!param)) {
GLchar log[4096];
GLsizei length;
- glGetShaderInfoLog(s, 4096, &length, log);
+ if (gl_version < 20)
+ glGetInfoLogARB(s, 4096, &length, log);
+ else
+ glGetShaderInfoLog(s, 4096, &length, log);
fprintf(stderr, "ERROR: %s failed to compile:\n%s\n",
current_shader_name, log);
}
glAttachShader(prog, s);
- glDeleteShader(s);
+ if (gl_version < 20)
+ glDeleteObjectARB(s);
+ else
+ glDeleteShader(s);
}
/* takes care of pre-bindings */
@@ -882,11 +892,17 @@ main(int argc, char **argv)
glLinkProgram(prog);
- glGetProgramiv(prog, GL_LINK_STATUS, &param);
+ if (gl_version < 20)
+ glGetObjectParameterivARB(prog, GL_LINK_STATUS, &param);
+ else
+ glGetProgramiv(prog, GL_LINK_STATUS, &param);
if (unlikely(!param)) {
GLchar log[4096];
GLsizei length;
- glGetProgramInfoLog(prog, sizeof(log), &length, log);
+ if (gl_version < 20)
+ glGetInfoLogARB(prog, 4096, &length, log);
+ else
+ glGetProgramInfoLog(prog, sizeof(log), &length, log);
fprintf(stderr, "ERROR: failed to link program:\n%s\n",
log);
@@ -942,7 +958,10 @@ main(int argc, char **argv)
free(prog_buf);
}
- glDeleteProgram(prog);
+ if (gl_version < 20)
+ glDeleteObjectARB(prog);
+ else
+ glDeleteProgram(prog);
} else {
for (unsigned i = 0; i < num_shaders; i++) {
GLuint prog;