summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-01-13 16:25:57 +1300
committerDave Airlie <airlied@redhat.com>2015-01-21 13:38:31 +1300
commit014c353d9f5ca1edaf2bb6f77d7308a0bbd31e35 (patch)
tree07c670271f7b42041b3694d51a492d13fa77ad6e
parent1f2867458b0f945523f826ae82c25ab0c0ba2ece (diff)
vrend: set egl context
-rw-r--r--src/gallium/renderer/virgl_egl.h3
-rw-r--r--src/gallium/renderer/virgl_egl_context.c13
-rw-r--r--src/gallium/renderer/virglrenderer.c2
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;