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
|
@ -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…
Reference in New Issue