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;
|
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 h, int stride, void *bits,
|
||||||
int pbo);
|
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_pixmap_clipped_regions *
|
||||||
glamor_compute_clipped_regions(glamor_pixmap_private *priv,
|
glamor_compute_clipped_regions(glamor_pixmap_private *priv,
|
||||||
RegionPtr region, int *clipped_nbox,
|
RegionPtr region, int *clipped_nbox,
|
||||||
|
|
Loading…
Reference in New Issue