76,7 → 76,7 |
printf("Program source:\n%s", source); |
printf("GLSL compile failure\n"); |
free(info); |
glDeleteShader(shader); |
glDeleteProgram(shader); |
shader = 0; |
} |
err: |
325,7 → 325,6 |
printf("Failed to link: %s\n", info); |
printf("GLSL link failure\n"); |
free(info); |
goto err12; |
} |
|
render->sampler = glGetUniformLocation(render->blit_prog,"sampler_src"); |
366,8 → 365,6 |
|
return render; |
|
err12: |
glDeleteShader(fs_shader); |
err11: |
glDeleteShader(vs_shader); |
err10: |
395,10 → 392,11 |
}; |
|
|
|
|
void create_mask(struct render *render) |
{ |
struct drm_i915_gem_create create; |
struct drm_gem_close close; |
struct drm_gem_flink flink; |
|
struct drm_i915_gem_mmap mmap_arg; |
409,6 → 407,7 |
GLuint mask_handle, mask_name; |
EGLImageKHR mask_image; |
|
|
glGenTextures(1, &render->tx_mask); |
if(glGetError() != GL_NO_ERROR) |
return; |
417,6 → 416,7 |
if(glGetError() != GL_NO_ERROR) |
goto err1; |
|
|
pitch = (render->width+15) & ~15; |
|
create.size = pitch *render->height; |
425,12 → 425,12 |
if(ret != 0) |
goto err1; |
|
mask_handle = create.handle; |
flink.handle = create.handle; |
ret = drm_ioctl(render->fd, DRM_IOCTL_GEM_FLINK, &flink); |
if (ret != 0) |
goto err2; |
|
mask_handle = create.handle; |
mask_name = flink.name; |
|
printf("create mask bo handle %d name %d\n", create.handle, flink.name); |
451,10 → 451,10 |
|
mask_image = eglCreateImageKHR(render->dpy, render->context, EGL_DRM_BUFFER_MESA, |
(void *) (uintptr_t)mask_name, attribs); |
|
printf("create mask image %p\n", mask_image); |
if(mask_image == NULL) |
goto err2 |
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); |
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); |
|
461,7 → 461,7 |
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, mask_image); |
|
if(glGetError() != GL_NO_ERROR) |
goto err3; |
goto err2; |
|
glBindTexture(GL_TEXTURE_2D, 0); |
|
483,10 → 483,8 |
return; |
|
err3: |
eglDestroyImageKHR(render->dpy, mask_image); |
// eglDestroyImageKHR(render->dpy, render->mask); |
err2: |
close.handle = mask_handle; |
(void)drm_ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close); |
glBindTexture(GL_TEXTURE_2D, 0); |
err1: |
glDeleteTextures(1, &render->tx_mask); |