render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd
This commit is contained in:
parent
014c59aa40
commit
10c5199d85
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
struct wlr_egl;
|
struct wlr_egl;
|
||||||
|
|
||||||
|
struct wlr_renderer *wlr_gles2_renderer_create_with_drm_fd(int drm_fd);
|
||||||
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl);
|
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl);
|
||||||
|
|
||||||
struct wlr_egl *wlr_gles2_renderer_get_egl(struct wlr_renderer *renderer);
|
struct wlr_egl *wlr_gles2_renderer_get_egl(struct wlr_renderer *renderer);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <drm_fourcc.h>
|
#include <drm_fourcc.h>
|
||||||
|
#include <gbm.h>
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -717,6 +718,32 @@ extern const GLchar tex_fragment_src_rgba[];
|
||||||
extern const GLchar tex_fragment_src_rgbx[];
|
extern const GLchar tex_fragment_src_rgbx[];
|
||||||
extern const GLchar tex_fragment_src_external[];
|
extern const GLchar tex_fragment_src_external[];
|
||||||
|
|
||||||
|
struct wlr_renderer *wlr_gles2_renderer_create_with_drm_fd(int drm_fd) {
|
||||||
|
struct gbm_device *gbm_device = gbm_create_device(drm_fd);
|
||||||
|
if (!gbm_device) {
|
||||||
|
wlr_log(WLR_ERROR, "Failed to create GBM device");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct wlr_egl *egl = wlr_egl_create(EGL_PLATFORM_GBM_KHR, gbm_device);
|
||||||
|
if (egl == NULL) {
|
||||||
|
wlr_log(WLR_ERROR, "Could not initialize EGL");
|
||||||
|
gbm_device_destroy(gbm_device);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
egl->gbm_device = gbm_device;
|
||||||
|
|
||||||
|
struct wlr_renderer *renderer = wlr_gles2_renderer_create(egl);
|
||||||
|
if (!renderer) {
|
||||||
|
wlr_log(WLR_ERROR, "Failed to create GLES2 renderer");
|
||||||
|
wlr_egl_destroy(egl);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderer;
|
||||||
|
}
|
||||||
|
|
||||||
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
||||||
if (!wlr_egl_make_current(egl)) {
|
if (!wlr_egl_make_current(egl)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue