Mesa (staging/18.2): gallium: Correctly handle no config context creation
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Oct 26 10:14:15 UTC 2018
Module: Mesa
Branch: staging/18.2
Commit: 63f01f2ef748ab17c720e54da202c04a4a22ff51
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=63f01f2ef748ab17c720e54da202c04a4a22ff51
Author: Elie Tournier <tournier.elie at gmail.com>
Date: Thu Sep 6 10:46:32 2018 +0100
gallium: Correctly handle no config context creation
This patch fixes the following Piglit test:
spec at egl_mesa_configless_context@basic
It also fixes few test in a virgl guest.
v2: Evaluate the value of no_config (Ilia)
Suggested-by: Emil Velikov <emil.velikov at collabora.com>
Signed-off-by: Elie Tournier <elie.tournier at collabora.com>
Signed-off-by: Marek Olšák <marek.olsak at amd.com>
(cherry picked from commit 9179c745f646a85274b7a295ee3577e48f8d0d3f)
---
src/gallium/include/state_tracker/st_api.h | 2 ++
src/gallium/state_trackers/dri/dri_screen.c | 4 +++-
src/mesa/state_tracker/st_manager.c | 9 ++++++++-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 5b72c0afc9..03377a3025 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -190,6 +190,8 @@ struct st_egl_image
*/
struct st_visual
{
+ bool no_config;
+
/**
* Available buffers. Bitfield of ST_ATTACHMENT_*_MASK bits.
*/
diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
index fe4e39b3f9..a0dcdb53dd 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -308,8 +308,10 @@ dri_fill_st_visual(struct st_visual *stvis,
{
memset(stvis, 0, sizeof(*stvis));
- if (!mode)
+ if (!mode) {
+ stvis->no_config = true;
return;
+ }
/* Deduce the color format. */
switch (mode->redMask) {
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 69286b5791..9ed316b0f7 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -834,6 +834,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
struct st_context *shared_ctx = (struct st_context *) shared_stctxi;
struct st_context *st;
struct pipe_context *pipe;
+ struct gl_config* mode_ptr;
struct gl_config mode;
gl_api api;
bool no_error = false;
@@ -893,7 +894,13 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
}
st_visual_to_context_mode(&attribs->visual, &mode);
- st = st_create_context(api, pipe, &mode, shared_ctx,
+
+ if (attribs->visual.no_config)
+ mode_ptr = NULL;
+ else
+ mode_ptr = &mode;
+
+ st = st_create_context(api, pipe, mode_ptr, shared_ctx,
&attribs->options, no_error);
if (!st) {
*error = ST_CONTEXT_ERROR_NO_MEMORY;
More information about the mesa-commit
mailing list