summaryrefslogtreecommitdiff
path: root/kmscube.c
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2017-02-21 12:14:42 -0500
committerRob Clark <robdclark@gmail.com>2017-02-21 13:59:58 -0500
commit2ec69c153a5456758c924e14e70d6544e4d2a866 (patch)
tree79a6f556126ff6d896951a3122858a66f072757d /kmscube.c
parentc6a1571a9b6a55b6d00040bac6172ffb4fd2d3b8 (diff)
downloadkmscube-2ec69c153a5456758c924e14e70d6544e4d2a866.tar.gz
split out get_program() helper
Diffstat (limited to 'kmscube.c')
-rw-r--r--kmscube.c77
1 files changed, 8 insertions, 69 deletions
diff --git a/kmscube.c b/kmscube.c
index bb557b5..dc3adeb 100644
--- a/kmscube.c
+++ b/kmscube.c
@@ -36,12 +36,6 @@
#include <xf86drm.h>
#include <xf86drmMode.h>
-#define GL_GLEXT_PROTOTYPES 1
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-
#include <assert.h>
#include "common.h"
@@ -207,8 +201,7 @@ static int init_drm(const char *dev)
static int init_gl(void)
{
EGLint major, minor, n;
- GLuint vertex_shader, fragment_shader;
- GLint ret;
+ int ret;
static const GLfloat vVertices[] = {
// front
@@ -412,73 +405,19 @@ static int init_gl(void)
printf("GL Extensions: \"%s\"\n", glGetString(GL_EXTENSIONS));
- vertex_shader = glCreateShader(GL_VERTEX_SHADER);
-
- glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);
- glCompileShader(vertex_shader);
-
- glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &ret);
- if (!ret) {
- char *log;
-
- printf("vertex shader compilation failed!:\n");
- glGetShaderiv(vertex_shader, GL_INFO_LOG_LENGTH, &ret);
- if (ret > 1) {
- log = malloc(ret);
- glGetShaderInfoLog(vertex_shader, ret, NULL, log);
- printf("%s", log);
- }
-
- return -1;
- }
-
- fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
-
- glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);
- glCompileShader(fragment_shader);
-
- glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &ret);
- if (!ret) {
- char *log;
-
- printf("fragment shader compilation failed!:\n");
- glGetShaderiv(fragment_shader, GL_INFO_LOG_LENGTH, &ret);
-
- if (ret > 1) {
- log = malloc(ret);
- glGetShaderInfoLog(fragment_shader, ret, NULL, log);
- printf("%s", log);
- }
-
- return -1;
- }
-
- gl.program = glCreateProgram();
+ ret = create_program(vertex_shader_source, fragment_shader_source);
+ if (ret < 0)
+ return ret;
- glAttachShader(gl.program, vertex_shader);
- glAttachShader(gl.program, fragment_shader);
+ gl.program = ret;
glBindAttribLocation(gl.program, 0, "in_position");
glBindAttribLocation(gl.program, 1, "in_normal");
glBindAttribLocation(gl.program, 2, "in_color");
- glLinkProgram(gl.program);
-
- glGetProgramiv(gl.program, GL_LINK_STATUS, &ret);
- if (!ret) {
- char *log;
-
- printf("program linking failed!:\n");
- glGetProgramiv(gl.program, GL_INFO_LOG_LENGTH, &ret);
-
- if (ret > 1) {
- log = malloc(ret);
- glGetProgramInfoLog(gl.program, ret, NULL, log);
- printf("%s", log);
- }
-
- return -1;
- }
+ ret = link_program(gl.program);
+ if (ret < 0)
+ return ret;
glUseProgram(gl.program);