summaryrefslogtreecommitdiff
path: root/src/glx/dri2_glx.c
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2020-11-10 16:06:47 -0500
committerMarge Bot <eric+marge@anholt.net>2020-12-01 18:40:18 +0000
commit63822802ef3de4d7a10b96e86e3de4a4f07b77c7 (patch)
tree8351a8e429ee398ec3ceb8e5903705ac8df19135 /src/glx/dri2_glx.c
parentc4ed0e8f3fb63d753e50576d7402c52cb30b0283 (diff)
glx: Handle create_context in terms of create_context_attribs
For the DRI backends we factor this out to a dri_common_create_context method. Indirect gets the same transformation but doesn't use the common method since it can't rely on DRI being built. Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7660>
Diffstat (limited to 'src/glx/dri2_glx.c')
-rw-r--r--src/glx/dri2_glx.c53
1 files changed, 1 insertions, 52 deletions
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index efb6f1f1275..15252b5b269 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -177,57 +177,6 @@ dri2_unbind_context(struct glx_context *context, struct glx_context *new)
}
static struct glx_context *
-dri2_create_context(struct glx_screen *base,
- struct glx_config *config_base,
- struct glx_context *shareList, int renderType)
-{
- struct dri2_context *pcp, *pcp_shared;
- struct dri2_screen *psc = (struct dri2_screen *) base;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) config_base;
- __DRIcontext *shared = NULL;
-
- /* Check the renderType value */
- if (!validate_renderType_against_config(config_base, renderType))
- return NULL;
-
- if (shareList) {
- /* If the shareList context is not a DRI2 context, we cannot possibly
- * create a DRI2 context that shares it.
- */
- if (shareList->vtable->destroy != dri2_destroy_context) {
- return NULL;
- }
-
- pcp_shared = (struct dri2_context *) shareList;
- shared = pcp_shared->driContext;
- }
-
- pcp = calloc(1, sizeof *pcp);
- if (pcp == NULL)
- return NULL;
-
- if (!glx_context_init(&pcp->base, &psc->base, &config->base)) {
- free(pcp);
- return NULL;
- }
-
- pcp->base.renderType = renderType;
-
- pcp->driContext =
- (*psc->dri2->createNewContext) (psc->driScreen,
- config->driConfig, shared, pcp);
-
- if (pcp->driContext == NULL) {
- free(pcp);
- return NULL;
- }
-
- pcp->base.vtable = &dri2_context_vtable;
-
- return &pcp->base;
-}
-
-static struct glx_context *
dri2_create_context_attribs(struct glx_screen *base,
struct glx_config *config_base,
struct glx_context *shareList,
@@ -1219,7 +1168,7 @@ dri2_get_driver_name(struct glx_screen *glx_screen)
}
static const struct glx_screen_vtable dri2_screen_vtable = {
- .create_context = dri2_create_context,
+ .create_context = dri_common_create_context,
.create_context_attribs = dri2_create_context_attribs,
.query_renderer_integer = dri2_query_renderer_integer,
.query_renderer_string = dri2_query_renderer_string,