glamor: Drop dead get/pub sub pixmap functions.
These were replaced by the new glamor_prepare.c code. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
e310387f44
commit
b6181007de
|
@ -1512,132 +1512,3 @@ glamor_fixup_pixmap_priv(ScreenPtr screen, glamor_pixmap_private *pixmap_priv)
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* We may use this function to reduce a large pixmap to a small sub
|
||||
* pixmap. Two scenarios currently:
|
||||
* 1. When fallback a large textured pixmap to CPU but we do need to
|
||||
* do rendering within a small sub region, then we can just get a
|
||||
* sub region.
|
||||
*
|
||||
* 2. When uploading a large pixmap to texture but we only need to
|
||||
* use part of the source/mask picture. As glTexImage2D will be more
|
||||
* efficient to upload a contingent region rather than a sub block
|
||||
* in a large buffer. We use this function to gather the sub region
|
||||
* to a contingent sub pixmap.
|
||||
*
|
||||
* The sub-pixmap must have the same format as the source pixmap.
|
||||
*
|
||||
* */
|
||||
PixmapPtr
|
||||
glamor_get_sub_pixmap(PixmapPtr pixmap, int x, int y, int w, int h,
|
||||
glamor_access_t access)
|
||||
{
|
||||
glamor_screen_private *glamor_priv;
|
||||
PixmapPtr sub_pixmap;
|
||||
glamor_pixmap_private *sub_pixmap_priv, *pixmap_priv;
|
||||
void *data;
|
||||
int pbo;
|
||||
int flag;
|
||||
|
||||
if (x < 0 || y < 0)
|
||||
return NULL;
|
||||
w = (x + w) > pixmap->drawable.width ? (pixmap->drawable.width - x) : w;
|
||||
h = (y + h) > pixmap->drawable.height ? (pixmap->drawable.height - y) : h;
|
||||
|
||||
glamor_priv = glamor_get_screen_private(pixmap->drawable.pScreen);
|
||||
pixmap_priv = glamor_get_pixmap_private(pixmap);
|
||||
|
||||
if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv))
|
||||
return NULL;
|
||||
if (glamor_priv->gl_flavor == GLAMOR_GL_ES2 ||
|
||||
pixmap_priv->type == GLAMOR_TEXTURE_LARGE)
|
||||
flag = GLAMOR_CREATE_PIXMAP_CPU;
|
||||
else
|
||||
flag = GLAMOR_CREATE_PIXMAP_MAP;
|
||||
|
||||
sub_pixmap = glamor_create_pixmap(pixmap->drawable.pScreen, w, h,
|
||||
pixmap->drawable.depth, flag);
|
||||
|
||||
if (sub_pixmap == NULL)
|
||||
return NULL;
|
||||
|
||||
sub_pixmap_priv = glamor_get_pixmap_private(sub_pixmap);
|
||||
pbo =
|
||||
sub_pixmap_priv ? (sub_pixmap_priv->base.fbo ? sub_pixmap_priv->base.
|
||||
fbo->pbo : 0) : 0;
|
||||
|
||||
if (pixmap_priv->base.is_picture) {
|
||||
sub_pixmap_priv->base.picture = pixmap_priv->base.picture;
|
||||
sub_pixmap_priv->base.is_picture = pixmap_priv->base.is_picture;
|
||||
}
|
||||
|
||||
if (pbo)
|
||||
data = NULL;
|
||||
else
|
||||
data = sub_pixmap->devPrivate.ptr;
|
||||
|
||||
data =
|
||||
glamor_download_sub_pixmap_to_cpu(pixmap, x, y, w, h,
|
||||
sub_pixmap->devKind, data, pbo,
|
||||
access);
|
||||
if (data == NULL) {
|
||||
fbDestroyPixmap(sub_pixmap);
|
||||
return NULL;
|
||||
}
|
||||
if (pbo) {
|
||||
assert(sub_pixmap->devPrivate.ptr == NULL);
|
||||
sub_pixmap->devPrivate.ptr = data;
|
||||
sub_pixmap_priv->base.fbo->pbo_valid = 1;
|
||||
}
|
||||
#if 0
|
||||
struct pixman_box16 box;
|
||||
PixmapPtr new_sub_pixmap;
|
||||
int dx, dy;
|
||||
|
||||
box.x1 = 0;
|
||||
box.y1 = 0;
|
||||
box.x2 = w;
|
||||
box.y2 = h;
|
||||
|
||||
dx = x;
|
||||
dy = y;
|
||||
|
||||
new_sub_pixmap = glamor_create_pixmap(pixmap->drawable.pScreen, w, h,
|
||||
pixmap->drawable.depth,
|
||||
GLAMOR_CREATE_PIXMAP_CPU);
|
||||
glamor_copy_n_to_n(&pixmap->drawable, &new_sub_pixmap->drawable, NULL, &box,
|
||||
1, dx, dy, 0, 0, 0, NULL);
|
||||
glamor_compare_pixmaps(new_sub_pixmap, sub_pixmap, 0, 0, w, h, 1, 1);
|
||||
#endif
|
||||
|
||||
return sub_pixmap;
|
||||
}
|
||||
|
||||
void
|
||||
glamor_put_sub_pixmap(PixmapPtr sub_pixmap, PixmapPtr pixmap, int x, int y,
|
||||
int w, int h, glamor_access_t access)
|
||||
{
|
||||
void *bits;
|
||||
int pbo;
|
||||
glamor_pixmap_private *sub_pixmap_priv;
|
||||
|
||||
if (access != GLAMOR_ACCESS_RO) {
|
||||
sub_pixmap_priv = glamor_get_pixmap_private(sub_pixmap);
|
||||
if (sub_pixmap_priv->base.fbo && sub_pixmap_priv->base.fbo->pbo_valid) {
|
||||
bits = NULL;
|
||||
pbo = sub_pixmap_priv->base.fbo->pbo;
|
||||
}
|
||||
else {
|
||||
bits = sub_pixmap->devPrivate.ptr;
|
||||
pbo = 0;
|
||||
}
|
||||
|
||||
assert(x >= 0 && y >= 0);
|
||||
w = (w > sub_pixmap->drawable.width) ? sub_pixmap->drawable.width : w;
|
||||
h = (h > sub_pixmap->drawable.height) ? sub_pixmap->drawable.height : h;
|
||||
glamor_upload_sub_pixmap_to_texture(pixmap, x, y, w, h,
|
||||
sub_pixmap->devKind, bits, pbo);
|
||||
}
|
||||
glamor_destroy_pixmap(sub_pixmap);
|
||||
}
|
||||
|
|
|
@ -833,11 +833,6 @@ Bool glamor_upload_sub_pixmap_to_texture(PixmapPtr pixmap, int x, int y, int w,
|
|||
int h, int stride, void *bits,
|
||||
int pbo);
|
||||
|
||||
PixmapPtr glamor_get_sub_pixmap(PixmapPtr pixmap, int x, int y,
|
||||
int w, int h, glamor_access_t access);
|
||||
void glamor_put_sub_pixmap(PixmapPtr sub_pixmap, PixmapPtr pixmap, int x, int y,
|
||||
int w, int h, glamor_access_t access);
|
||||
|
||||
glamor_pixmap_clipped_regions *
|
||||
glamor_compute_clipped_regions(glamor_pixmap_private *priv,
|
||||
RegionPtr region, int *clipped_nbox,
|
||||
|
|
Loading…
Reference in New Issue
Block a user