Subversion Repositories Kolibri OS

Rev

Rev 4526 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4526 Rev 4768
Line 74... Line 74...
74
		printf("Failed to compile %s: %s\n",
74
		printf("Failed to compile %s: %s\n",
75
                type == GL_FRAGMENT_SHADER ? "FS" : "VS",info);
75
                type == GL_FRAGMENT_SHADER ? "FS" : "VS",info);
76
		printf("Program source:\n%s", source);
76
		printf("Program source:\n%s", source);
77
		printf("GLSL compile failure\n");
77
		printf("GLSL compile failure\n");
78
        free(info);
78
        free(info);
79
        glDeleteProgram(shader);
79
        glDeleteShader(shader);
80
        shader = 0;
80
        shader = 0;
81
	}
81
	}
82
err:
82
err:
83
    return shader;
83
    return shader;
84
}
84
}
Line 323... Line 323...
323
 
323
 
324
        glGetProgramInfoLog(render->blit_prog, size, NULL, info);
324
        glGetProgramInfoLog(render->blit_prog, size, NULL, info);
325
        printf("Failed to link: %s\n", info);
325
        printf("Failed to link: %s\n", info);
326
        printf("GLSL link failure\n");
326
        printf("GLSL link failure\n");
-
 
327
        free(info);
327
        free(info);
328
        goto err12;
Line 328... Line 329...
328
    }
329
    }
329
 
330
 
Line 363... Line 364...
363
 
364
 
Line 364... Line 365...
364
    eglMakeCurrent(dpy, surface, surface, context);
365
    eglMakeCurrent(dpy, surface, surface, context);
Line -... Line 366...
-
 
366
 
-
 
367
    return render;
365
 
368
 
366
    return render;
369
err12:
367
 
370
    glDeleteShader(fs_shader);
368
err11:
371
err11:
369
    glDeleteShader(vs_shader);
372
    glDeleteShader(vs_shader);
Line 390... Line 393...
390
err:
393
err:
391
    return NULL;
394
    return NULL;
392
};
395
};
Line 393... Line -...
393
 
-
 
394
 
-
 
395
 
396
 
396
 
397
 
397
void create_mask(struct render *render)
398
void create_mask(struct render *render)
-
 
399
{
398
{
400
    struct drm_i915_gem_create create;
Line 399... Line 401...
399
    struct drm_i915_gem_create create;
401
    struct drm_gem_close close;
400
    struct drm_gem_flink flink;
402
    struct drm_gem_flink flink;
401
 
403
 
402
    struct drm_i915_gem_mmap mmap_arg;
404
    struct drm_i915_gem_mmap mmap_arg;
403
    EGLint handle, stride;
405
    EGLint handle, stride;
404
    int winw, winh, pitch;
406
    int winw, winh, pitch;
405
    void *data;
407
    void *data;
Line 406... Line -...
406
    int ret;
-
 
407
    GLuint mask_handle, mask_name;
408
    int ret;
408
    EGLImageKHR mask_image;
409
    GLuint mask_handle, mask_name;
409
 
410
    EGLImageKHR mask_image;
Line 410... Line 411...
410
 
411
 
411
    glGenTextures(1, &render->tx_mask);
412
    glGenTextures(1, &render->tx_mask);
412
    if(glGetError() != GL_NO_ERROR)
413
    if(glGetError() != GL_NO_ERROR)
Line 413... Line -...
413
       return;
-
 
414
 
414
       return;
Line 415... Line 415...
415
    glBindTexture(GL_TEXTURE_2D, render->tx_mask);
415
 
416
    if(glGetError() != GL_NO_ERROR)
416
    glBindTexture(GL_TEXTURE_2D, render->tx_mask);
417
       goto err1;
417
    if(glGetError() != GL_NO_ERROR)
418
 
418
       goto err1;
419
 
419
 
Line -... Line 420...
-
 
420
    pitch = (render->width+15) & ~15;
420
    pitch = (render->width+15) & ~15;
421
 
421
 
422
    create.size = pitch *render->height;
422
    create.size = pitch *render->height;
423
    create.handle = 0;
423
    create.handle = 0;
424
    ret = drm_ioctl(render->fd, DRM_IOCTL_I915_GEM_CREATE, &create);
Line 424... Line -...
424
    ret = drm_ioctl(render->fd, DRM_IOCTL_I915_GEM_CREATE, &create);
-
 
425
    if(ret != 0)
425
    if(ret != 0)
Line 426... Line 426...
426
        goto err1;
426
        goto err1;
Line 427... Line 427...
427
 
427
 
Line 449... Line 449...
449
    attribs[3] = render->height;
449
    attribs[3] = render->height;
450
    attribs[5] = pitch;
450
    attribs[5] = pitch;
Line 451... Line 451...
451
 
451
 
452
    mask_image = eglCreateImageKHR(render->dpy, render->context, EGL_DRM_BUFFER_MESA,
452
    mask_image = eglCreateImageKHR(render->dpy, render->context, EGL_DRM_BUFFER_MESA,
453
                         (void *) (uintptr_t)mask_name, attribs);
-
 
454
 
453
                         (void *) (uintptr_t)mask_name, attribs);
455
    printf("create mask image %p\n", mask_image);
-
 
-
 
454
    printf("create mask image %p\n", mask_image);
-
 
455
    if(mask_image == NULL)
Line 456... Line 456...
456
 
456
        goto err2
457
 
457
 
Line 458... Line 458...
458
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
458
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
Line 459... Line 459...
459
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
459
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
460
 
460
 
Line 461... Line 461...
461
    glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, mask_image);
461
    glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, mask_image);
Line 462... Line 462...
462
 
462
 
463
    if(glGetError() != GL_NO_ERROR)
463
    if(glGetError() != GL_NO_ERROR)
Line 481... Line 481...
481
    render->mask_image = mask_image;
481
    render->mask_image = mask_image;
Line 482... Line 482...
482
 
482
 
Line 483... Line 483...
483
    return;
483
    return;
484
 
484
 
485
err3:
485
err3:
-
 
486
    eglDestroyImageKHR(render->dpy, mask_image);
-
 
487
err2:
486
//    eglDestroyImageKHR(render->dpy, render->mask);
488
    close.handle = mask_handle;
487
err2:
489
    (void)drm_ioctl(fd, DRM_IOCTL_GEM_CLOSE, &close);
488
    glBindTexture(GL_TEXTURE_2D, 0);
490
    glBindTexture(GL_TEXTURE_2D, 0);
489
err1:
491
err1: