xf86-video-intel: 2 commits - src/sna/gen2_render.c src/sna/gen3_render.c src/sna/gen4_render.c src/sna/gen5_render.c src/sna/gen6_render.c src/sna/gen7_render.c src/sna/kgem.c src/sna/kgem.h src/sna/sna_accel.c src/sna/sna_render.c
Chris Wilson
ickle at kemper.freedesktop.org
Mon Feb 6 13:12:13 PST 2012
src/sna/gen2_render.c | 10 +---------
src/sna/gen3_render.c | 10 +---------
src/sna/gen4_render.c | 10 +---------
src/sna/gen5_render.c | 10 +---------
src/sna/gen6_render.c | 10 ++--------
src/sna/gen7_render.c | 10 +---------
src/sna/kgem.c | 7 ++++---
src/sna/kgem.h | 1 +
src/sna/sna_accel.c | 4 ++--
src/sna/sna_render.c | 4 ++--
10 files changed, 16 insertions(+), 60 deletions(-)
New commits:
commit 1467a4ba1a327877026cc76b3eabeb51d1415509
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Feb 6 20:41:53 2012 +0000
sna: Use the proper sna_picture_is_solid() test
Rather than the specialised routines that assumed pDrawable was
non-NULL, which was no longer true after f30be6f743.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index 606ecfe..1e0c680 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1486,14 +1486,6 @@ try_blt(struct sna *sna,
}
static bool
-is_solid(PicturePtr picture)
-{
- return picture->pDrawable->width == 1 &&
- picture->pDrawable->height == 1 &&
- picture->repeat;
-}
-
-static bool
is_unhandled_gradient(PicturePtr picture)
{
if (picture->pDrawable)
@@ -1523,7 +1515,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index de6a3ad..b9afdb9 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -2413,14 +2413,6 @@ static inline bool is_constant_ps(uint32_t type)
}
static bool
-is_solid(PicturePtr picture)
-{
- return picture->pDrawable->width == 1 &&
- picture->pDrawable->height == 1 &&
- picture->repeat;
-}
-
-static bool
has_alphamap(PicturePtr p)
{
return p->alphaMap != NULL;
@@ -2435,7 +2427,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 3cb0fbb..530251c 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -2001,14 +2001,6 @@ try_blt(struct sna *sna,
}
static bool
-is_solid(PicturePtr picture)
-{
- return picture->pDrawable->width == 1 &&
- picture->pDrawable->height == 1 &&
- picture->repeat;
-}
-
-static bool
is_gradient(PicturePtr picture)
{
if (picture->pDrawable)
@@ -2032,7 +2024,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index f15342d..487d903 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -2029,14 +2029,6 @@ try_blt(struct sna *sna,
}
static bool
-is_solid(PicturePtr picture)
-{
- return picture->pDrawable->width == 1 &&
- picture->pDrawable->height == 1 &&
- picture->repeat;
-}
-
-static bool
is_gradient(PicturePtr picture)
{
if (picture->pDrawable)
@@ -2060,7 +2052,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index 06c33c4..c4d2301 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -2270,12 +2270,6 @@ static bool can_switch_rings(struct sna *sna)
return sna->kgem.has_semaphores && !NO_RING_SWITCH;
}
-static bool
-is_solid(PicturePtr picture)
-{
- return sna_picture_is_solid(picture, NULL);
-}
-
static Bool
try_blt(struct sna *sna,
PicturePtr dst, PicturePtr src,
@@ -2308,7 +2302,7 @@ try_blt(struct sna *sna,
}
if (can_switch_rings(sna)) {
- if (is_solid(src))
+ if (sna_picture_is_solid(src, NULL))
return TRUE;
}
@@ -2339,7 +2333,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 5a867b1..2e9948d 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2314,14 +2314,6 @@ try_blt(struct sna *sna,
}
static bool
-is_solid(PicturePtr picture)
-{
- return picture->pDrawable->width == 1 &&
- picture->pDrawable->height == 1 &&
- picture->repeat;
-}
-
-static bool
is_gradient(PicturePtr picture)
{
if (picture->pDrawable)
@@ -2345,7 +2337,7 @@ need_upload(PicturePtr p)
static bool
source_fallback(PicturePtr p)
{
- if (is_solid(p))
+ if (sna_picture_is_solid(p, NULL))
return false;
return (has_alphamap(p) ||
commit ef335a65a9d9f7eb96873201b546c25fd03d090c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Feb 6 20:37:54 2012 +0000
sna: Search all active buckets for a temporary allocation
Reduce the need for creating a new object if we only need the allocation
for a single operation.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 259666e..e80eaae 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -2291,13 +2291,14 @@ struct kgem_bo *kgem_create_2d(struct kgem *kgem,
if (tiling < 0)
tiling = -tiling, flags |= CREATE_EXACT;
- DBG(("%s(%dx%d, bpp=%d, tiling=%d, exact=%d, inactive=%d, cpu-mapping=%d, gtt-mapping=%d, scanout?=%d)\n", __FUNCTION__,
+ DBG(("%s(%dx%d, bpp=%d, tiling=%d, exact=%d, inactive=%d, cpu-mapping=%d, gtt-mapping=%d, scanout?=%d, temp?=%d)\n", __FUNCTION__,
width, height, bpp, tiling,
!!(flags & CREATE_EXACT),
!!(flags & CREATE_INACTIVE),
!!(flags & CREATE_CPU_MAP),
!!(flags & CREATE_GTT_MAP),
- !!(flags & CREATE_SCANOUT)));
+ !!(flags & CREATE_SCANOUT),
+ !!(flags & CREATE_TEMPORARY)));
size = kgem_surface_size(kgem,
kgem->has_relaxed_fencing,
@@ -2404,7 +2405,7 @@ struct kgem_bo *kgem_create_2d(struct kgem *kgem,
/* Best active match */
retry = NUM_CACHE_BUCKETS - bucket;
- if (retry > 3)
+ if (retry > 3 && (flags & CREATE_TEMPORARY) == 0)
retry = 3;
search_again:
assert(bucket < NUM_CACHE_BUCKETS);
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index b6930e0..f3a7b94 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -221,6 +221,7 @@ enum {
CREATE_CPU_MAP = 0x4,
CREATE_GTT_MAP = 0x8,
CREATE_SCANOUT = 0x10,
+ CREATE_TEMPORARY = 0x20,
};
struct kgem_bo *kgem_create_2d(struct kgem *kgem,
int width,
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index a8bfe40..2a4aaec 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -700,7 +700,7 @@ sna_pixmap_create_scratch(ScreenPtr screen,
priv->gpu_bo = kgem_create_2d(&sna->kgem,
width, height, bpp, tiling,
- 0);
+ CREATE_TEMPORARY);
if (priv->gpu_bo == NULL) {
free(priv);
fbDestroyPixmap(pixmap);
@@ -5522,7 +5522,7 @@ sna_poly_zero_line_blt(DrawablePtr drawable,
adx, ady, sdx, sdy,
1, 1, octant);
- DBG(("%s: adx=(%d, %d), sdx=(%d, %d), oc1=%d, oc2\n",
+ DBG(("%s: adx=(%d, %d), sdx=(%d, %d), oc1=%d, oc2=%d\n",
__FUNCTION__, adx, ady, sdx, sdy, oc1, oc2));
if (adx == 0 || ady == 0) {
if (x1 <= x2) {
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index c2b9e79..3309157 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -1146,7 +1146,7 @@ sna_render_picture_extract(struct sna *sna,
kgem_choose_tiling(&sna->kgem,
I915_TILING_X, w, h,
pixmap->drawable.bitsPerPixel),
- 0);
+ CREATE_TEMPORARY);
if (bo) {
PixmapRec tmp;
@@ -1725,7 +1725,7 @@ sna_render_composite_redirect(struct sna *sna,
width, height, bpp,
kgem_choose_tiling(&sna->kgem, I915_TILING_X,
width, height, bpp),
- CREATE_SCANOUT);
+ CREATE_SCANOUT | CREATE_TEMPORARY);
if (!bo)
return FALSE;
More information about the xorg-commit
mailing list