diff options
author | Elie Tournier <[email protected]> | 2018-09-06 10:46:32 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2018-09-10 15:30:17 -0400 |
commit | 9179c745f646a85274b7a295ee3577e48f8d0d3f (patch) | |
tree | 3715cbca0d75df6a1c45bd7bb6fbf9c7a3aca633 /src | |
parent | f6e09db2e613c215257b80f40957d580165b5ddf (diff) |
gallium: Correctly handle no config context creation
This patch fixes the following Piglit test:
spec@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 <[email protected]>
Signed-off-by: Elie Tournier <[email protected]>
Signed-off-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/include/state_tracker/st_api.h | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri_screen.c | 4 | ||||
-rw-r--r-- | 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 61152e35468..2b63b8a3d2a 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 027e85024f0..308e23685e8 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 a3f00228942..400af939b29 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -835,6 +835,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; @@ -894,7 +895,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; |