mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-16 08:40:29 +01:00
st/xorg: Set shared usage of pixmaps for use via DRI2.
Also allow pixmaps to have both the shared and displayed usage flags, as is the case for the screen pixmap now.
This commit is contained in:
parent
bfbfcdd703
commit
416ee3c53e
3 changed files with 10 additions and 13 deletions
|
|
@ -92,7 +92,6 @@ driCreateBuffers(DrawablePtr pDraw, unsigned int *attachments, int count)
|
|||
else
|
||||
pPixmap = (*pScreen->GetWindowPixmap)((WindowPtr) pDraw);
|
||||
pPixmap->refcnt++;
|
||||
tex = xorg_exa_get_texture(pPixmap);
|
||||
} else if (attachments[i] == DRI2BufferStencil) {
|
||||
pipe_texture_reference(&tex, depth);
|
||||
} else if (attachments[i] == DRI2BufferDepth) {
|
||||
|
|
@ -110,19 +109,24 @@ driCreateBuffers(DrawablePtr pDraw, unsigned int *attachments, int count)
|
|||
template.height[0] = pDraw->height;
|
||||
template.depth[0] = 1;
|
||||
template.last_level = 0;
|
||||
template.tex_usage = PIPE_TEXTURE_USAGE_DEPTH_STENCIL;
|
||||
template.tex_usage = PIPE_TEXTURE_USAGE_DEPTH_STENCIL |
|
||||
PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
|
||||
tex = ms->screen->texture_create(ms->screen, &template);
|
||||
depth = tex;
|
||||
} else if (attachments[i] == DRI2BufferFakeFrontLeft &&
|
||||
pDraw->type == DRAWABLE_PIXMAP) {
|
||||
pPixmap = (PixmapPtr) pDraw;
|
||||
pPixmap->refcnt++;
|
||||
tex = xorg_exa_get_texture(pPixmap);
|
||||
} else {
|
||||
pPixmap = (*pScreen->CreatePixmap)(pScreen, pDraw->width,
|
||||
pDraw->height,
|
||||
pDraw->depth,
|
||||
0);
|
||||
}
|
||||
|
||||
if (pPixmap) {
|
||||
xorg_exa_set_shared_usage(pPixmap);
|
||||
pScreen->ModifyPixmapHeader(pPixmap, 0, 0, 0, 0, 0, NULL);
|
||||
tex = xorg_exa_get_texture(pPixmap);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -481,6 +481,7 @@ CreateScreenResources(ScreenPtr pScreen)
|
|||
rootPixmap = pScreen->GetScreenPixmap(pScreen);
|
||||
|
||||
xorg_exa_set_displayed_usage(rootPixmap);
|
||||
xorg_exa_set_shared_usage(rootPixmap);
|
||||
if (!pScreen->ModifyPixmapHeader(rootPixmap, -1, -1, -1, -1, -1, NULL))
|
||||
FatalError("Couldn't adjust screen pixmap\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -373,11 +373,7 @@ xorg_exa_set_displayed_usage(PixmapPtr pPixmap)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (priv->flags & ~PIPE_TEXTURE_USAGE_PRIMARY) {
|
||||
FatalError("BAD FLAGS\n");
|
||||
return 0;
|
||||
}
|
||||
priv->flags = PIPE_TEXTURE_USAGE_PRIMARY;
|
||||
priv->flags |= PIPE_TEXTURE_USAGE_PRIMARY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -393,11 +389,7 @@ xorg_exa_set_shared_usage(PixmapPtr pPixmap)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (priv->flags & ~PIPE_TEXTURE_USAGE_DISPLAY_TARGET) {
|
||||
FatalError("BAD FLAGS\n");
|
||||
return 0;
|
||||
}
|
||||
priv->flags = PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
|
||||
priv->flags |= PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue