diff options
author | Dave Airlie <airlied@redhat.com> | 2015-01-13 16:25:57 +1300 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-01-21 13:38:31 +1300 |
commit | 014c353d9f5ca1edaf2bb6f77d7308a0bbd31e35 (patch) | |
tree | 07c670271f7b42041b3694d51a492d13fa77ad6e | |
parent | 1f2867458b0f945523f826ae82c25ab0c0ba2ece (diff) |
vrend: set egl context
-rw-r--r-- | src/gallium/renderer/virgl_egl.h | 3 | ||||
-rw-r--r-- | src/gallium/renderer/virgl_egl_context.c | 13 | ||||
-rw-r--r-- | src/gallium/renderer/virglrenderer.c | 2 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/gallium/renderer/virgl_egl.h b/src/gallium/renderer/virgl_egl.h index 19110f289df..3faa6645d85 100644 --- a/src/gallium/renderer/virgl_egl.h +++ b/src/gallium/renderer/virgl_egl.h @@ -24,12 +24,13 @@ #ifndef VIRGL_EGL_H #define VIRGL_EGL_H +#include "vrend_renderer.h" struct virgl_egl; struct virgl_egl *virgl_egl_init(void); void virgl_egl_destroy(struct virgl_egl *ve); -virgl_renderer_gl_context virgl_egl_create_context(struct virgl_egl *ve); +virgl_renderer_gl_context virgl_egl_create_context(struct virgl_egl *ve, struct virgl_gl_ctx_param *vparams); void virgl_egl_destroy_context(struct virgl_egl *ve, virgl_renderer_gl_context virglctx); int virgl_egl_make_context_current(struct virgl_egl *ve, virgl_renderer_gl_context virglctx); virgl_renderer_gl_context virgl_egl_get_current_context(struct virgl_egl *ve); diff --git a/src/gallium/renderer/virgl_egl_context.c b/src/gallium/renderer/virgl_egl_context.c index 0f4093708fe..57ab26286d1 100644 --- a/src/gallium/renderer/virgl_egl_context.c +++ b/src/gallium/renderer/virgl_egl_context.c @@ -168,8 +168,8 @@ struct virgl_egl *virgl_egl_init(void) if (!virgl_egl_has_extension_in_string(extension_list, "EGL_KHR_surfaceless_context")) goto fail; -d->have_mesa_drm_image = false; -d->have_mesa_dma_buf_img_export = false; + d->have_mesa_drm_image = false; + d->have_mesa_dma_buf_img_export = false; if (virgl_egl_has_extension_in_string(extension_list, "EGL_MESA_drm_image")) d->have_mesa_drm_image = true; @@ -219,16 +219,17 @@ void virgl_egl_destroy(struct virgl_egl *d) free(d); } -virgl_renderer_gl_context virgl_egl_create_context(struct virgl_egl *ve) +virgl_renderer_gl_context virgl_egl_create_context(struct virgl_egl *ve, struct virgl_gl_ctx_param *vparams) { EGLContext eglctx; - static const EGLint ctx_att[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, + EGLint ctx_att[] = { + EGL_CONTEXT_CLIENT_VERSION, vparams->major_ver, + EGL_CONTEXT_MINOR_VERSION_KHR, vparams->minor_ver, EGL_NONE }; eglctx = eglCreateContext(ve->egl_display, ve->egl_conf, - ve->egl_ctx, + vparams->shared ? ve->egl_ctx : EGL_NO_CONTEXT, ctx_att); return (virgl_renderer_gl_context)eglctx; } diff --git a/src/gallium/renderer/virglrenderer.c b/src/gallium/renderer/virglrenderer.c index da8329d48aa..18796351706 100644 --- a/src/gallium/renderer/virglrenderer.c +++ b/src/gallium/renderer/virglrenderer.c @@ -213,7 +213,7 @@ static virgl_renderer_gl_context create_gl_context(int scanout_idx, struct virgl { struct virgl_renderer_gl_ctx_param vparam; if (use_egl_context) - return virgl_egl_create_context(egl_info); + return virgl_egl_create_context(egl_info, param); vparam.version = 1; vparam.shared = param->shared; vparam.major_ver = param->major_ver; |