xf86-video-intel: 2 commits - src/sna/gen7_render.c src/sna/sna_glyphs.c src/sna/sna_render.h
Chris Wilson
ickle at kemper.freedesktop.org
Sat Jul 14 08:59:15 PDT 2012
src/sna/gen7_render.c | 71 ++++++++++++++++++++------------------------------
src/sna/sna_glyphs.c | 4 +-
src/sna/sna_render.h | 1
3 files changed, 32 insertions(+), 44 deletions(-)
New commits:
commit 797ebf937fcfcc87502727c70e6b52f89fecc799
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sat Jul 14 16:58:18 2012 +0100
sna/glyphs: Fix typo and render glyphs to the small mask
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 8c4796a..fa5e45b 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -920,7 +920,7 @@ upload:
pixman_image_t *glyph_image;
glyph_image = sna_glyph_get_image(g, screen);
- if (glyph_image)
+ if (glyph_image == NULL)
goto next_image;
ptr = pixman_glyph_cache_insert(cache, g, NULL,
@@ -943,7 +943,7 @@ next_image:
list++;
} while (--nlist);
- pixman_composite_glyphs_no_mask(PictOpAdd,
+ pixman_composite_glyphs_no_mask(PIXMAN_OP_ADD,
sna->render.white_image,
mask_image,
0, 0,
commit 2b94f9a043372ffede01339eea99377a71169fbc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sat Jul 14 16:38:21 2012 +0100
sna/gen7: Preselect sampler
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 352bd45..589c594 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -229,6 +229,19 @@ static const struct blendinfo {
#define SAMPLER_OFFSET(sf, se, mf, me) \
(((((sf) * EXTEND_COUNT + (se)) * FILTER_COUNT + (mf)) * EXTEND_COUNT + (me)) * 2 * sizeof(struct gen7_sampler_state))
+#define FILL_SAMPLER \
+ SAMPLER_OFFSET(SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_REPEAT, \
+ SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_NONE)
+
+#define COPY_SAMPLER \
+ SAMPLER_OFFSET(SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_NONE, \
+ SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_NONE)
+
+#define VIDEO_SAMPLER \
+ SAMPLER_OFFSET(SAMPLER_FILTER_BILINEAR, SAMPLER_EXTEND_PAD, \
+ SAMPLER_FILTER_NEAREST, SAMPLER_EXTEND_NONE)
+
+
#define OUT_BATCH(v) batch_emit(sna, v)
#define OUT_VERTEX(x,y) vertex_emit_2s(sna, x,y)
#define OUT_VERTEX_F(v) vertex_emit(sna, v)
@@ -982,19 +995,7 @@ gen7_emit_state(struct sna *sna,
op->has_component_alpha,
op->dst.format));
- DBG(("%s: sampler src=(%d, %d), mask=(%d, %d), offset=%d\n",
- __FUNCTION__,
- op->src.filter, op->src.repeat,
- op->mask.filter, op->mask.repeat,
- (int)SAMPLER_OFFSET(op->src.filter,
- op->src.repeat,
- op->mask.filter,
- op->mask.repeat)));
- gen7_emit_sampler(sna,
- SAMPLER_OFFSET(op->src.filter,
- op->src.repeat,
- op->mask.filter,
- op->mask.repeat));
+ gen7_emit_sampler(sna, op->u.gen7.sampler);
gen7_emit_sf(sna, op->mask.bo != NULL);
gen7_emit_wm(sna,
op->u.gen7.wm_kernel,
@@ -2017,9 +2018,6 @@ gen7_render_video(struct sna *sna,
tmp.dst.bo = priv->gpu_bo;
tmp.src.bo = frame->bo;
- tmp.src.filter = SAMPLER_FILTER_BILINEAR;
- tmp.src.repeat = SAMPLER_EXTEND_PAD;
-
tmp.mask.bo = NULL;
tmp.is_affine = true;
@@ -2035,6 +2033,7 @@ gen7_render_video(struct sna *sna,
}
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ tmp.u.gen7.sampler = VIDEO_SAMPLER;
tmp.priv = frame;
kgem_set_mode(&sna->kgem, KGEM_RENDER);
@@ -2829,6 +2828,10 @@ gen7_render_composite(struct sna *sna,
tmp->u.gen7.nr_surfaces = 2 + (tmp->mask.bo != NULL);
tmp->u.gen7.nr_inputs = 1 + (tmp->mask.bo != NULL);
tmp->u.gen7.ve_id = gen7_choose_composite_vertex_buffer(tmp);
+ tmp->u.gen7.sampler = SAMPLER_OFFSET(tmp->src.filter,
+ tmp->src.repeat,
+ tmp->mask.filter,
+ tmp->mask.repeat);
tmp->blt = gen7_render_composite_blt;
tmp->box = gen7_render_composite_box;
@@ -3216,6 +3219,10 @@ gen7_render_composite_spans(struct sna *sna,
tmp->base.u.gen7.nr_surfaces = 3;
tmp->base.u.gen7.nr_inputs = 2;
tmp->base.u.gen7.ve_id = 1 << 1 | tmp->base.is_affine;
+ tmp->base.u.gen7.sampler = SAMPLER_OFFSET(tmp->base.src.filter,
+ tmp->base.src.repeat,
+ SAMPLER_FILTER_NEAREST,
+ SAMPLER_EXTEND_NONE);
tmp->box = gen7_render_composite_spans_box;
tmp->boxes = gen7_render_composite_spans_boxes;
@@ -3450,8 +3457,6 @@ fallback_blt:
goto fallback_tiled;
}
- tmp.src.filter = SAMPLER_FILTER_NEAREST;
- tmp.src.repeat = SAMPLER_EXTEND_NONE;
tmp.src.card_format = gen7_get_card_format(tmp.src.pict_format);
if (too_large(src->drawable.width, src->drawable.height)) {
BoxRec extents = box[0];
@@ -3485,8 +3490,6 @@ fallback_blt:
}
tmp.mask.bo = NULL;
- tmp.mask.filter = SAMPLER_FILTER_NEAREST;
- tmp.mask.repeat = SAMPLER_EXTEND_NONE;
tmp.is_affine = true;
tmp.floats_per_vertex = 3;
@@ -3498,6 +3501,7 @@ fallback_blt:
tmp.u.gen7.nr_surfaces = 2;
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ tmp.u.gen7.sampler = COPY_SAMPLER;
kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL)) {
@@ -3659,8 +3663,6 @@ fallback:
op->base.src.height = src->drawable.height;
op->base.src.scale[0] = 1.f/src->drawable.width;
op->base.src.scale[1] = 1.f/src->drawable.height;
- op->base.src.filter = SAMPLER_FILTER_NEAREST;
- op->base.src.repeat = SAMPLER_EXTEND_NONE;
op->base.mask.bo = NULL;
@@ -3672,6 +3674,7 @@ fallback:
op->base.u.gen7.nr_surfaces = 2;
op->base.u.gen7.nr_inputs = 1;
op->base.u.gen7.ve_id = 1;
+ op->base.u.gen7.sampler = COPY_SAMPLER;
kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL)) {
@@ -3813,12 +3816,7 @@ gen7_render_fill_boxes(struct sna *sna,
tmp.dst.x = tmp.dst.y = 0;
tmp.src.bo = sna_render_get_solid(sna, pixel);
- tmp.src.filter = SAMPLER_FILTER_NEAREST;
- tmp.src.repeat = SAMPLER_EXTEND_REPEAT;
-
tmp.mask.bo = NULL;
- tmp.mask.filter = SAMPLER_FILTER_NEAREST;
- tmp.mask.repeat = SAMPLER_EXTEND_NONE;
tmp.is_affine = true;
tmp.floats_per_vertex = 3;
@@ -3830,6 +3828,7 @@ gen7_render_fill_boxes(struct sna *sna,
tmp.u.gen7.nr_surfaces = 2;
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ tmp.u.gen7.sampler = FILL_SAMPLER;
if (!kgem_check_bo(&sna->kgem, dst_bo, NULL)) {
kgem_submit(&sna->kgem);
@@ -4001,12 +4000,7 @@ gen7_render_fill(struct sna *sna, uint8_t alu,
sna_render_get_solid(sna,
sna_rgba_for_color(color,
dst->drawable.depth));
- op->base.src.filter = SAMPLER_FILTER_NEAREST;
- op->base.src.repeat = SAMPLER_EXTEND_REPEAT;
-
op->base.mask.bo = NULL;
- op->base.mask.filter = SAMPLER_FILTER_NEAREST;
- op->base.mask.repeat = SAMPLER_EXTEND_NONE;
op->base.is_affine = true;
op->base.has_component_alpha = false;
@@ -4018,6 +4012,7 @@ gen7_render_fill(struct sna *sna, uint8_t alu,
op->base.u.gen7.nr_surfaces = 2;
op->base.u.gen7.nr_inputs = 1;
op->base.u.gen7.ve_id = 1;
+ op->base.u.gen7.sampler = FILL_SAMPLER;
if (!kgem_check_bo(&sna->kgem, dst_bo, NULL)) {
kgem_submit(&sna->kgem);
@@ -4094,12 +4089,7 @@ gen7_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
sna_render_get_solid(sna,
sna_rgba_for_color(color,
dst->drawable.depth));
- tmp.src.filter = SAMPLER_FILTER_NEAREST;
- tmp.src.repeat = SAMPLER_EXTEND_REPEAT;
-
tmp.mask.bo = NULL;
- tmp.mask.filter = SAMPLER_FILTER_NEAREST;
- tmp.mask.repeat = SAMPLER_EXTEND_NONE;
tmp.is_affine = true;
tmp.floats_per_vertex = 3;
@@ -4111,6 +4101,7 @@ gen7_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
tmp.u.gen7.nr_surfaces = 2;
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ tmp.u.gen7.sampler = FILL_SAMPLER;
if (!kgem_check_bo(&sna->kgem, bo, NULL)) {
_kgem_submit(&sna->kgem);
@@ -4189,12 +4180,7 @@ gen7_render_clear(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo)
tmp.dst.x = tmp.dst.y = 0;
tmp.src.bo = sna_render_get_solid(sna, 0);
- tmp.src.filter = SAMPLER_FILTER_NEAREST;
- tmp.src.repeat = SAMPLER_EXTEND_REPEAT;
-
tmp.mask.bo = NULL;
- tmp.mask.filter = SAMPLER_FILTER_NEAREST;
- tmp.mask.repeat = SAMPLER_EXTEND_NONE;
tmp.is_affine = true;
tmp.floats_per_vertex = 3;
@@ -4206,6 +4192,7 @@ gen7_render_clear(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo)
tmp.u.gen7.nr_surfaces = 2;
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ tmp.u.gen7.sampler = FILL_SAMPLER;
if (!kgem_check_bo(&sna->kgem, bo, NULL)) {
_kgem_submit(&sna->kgem);
diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h
index 364492f..7c43f61 100644
--- a/src/sna/sna_render.h
+++ b/src/sna/sna_render.h
@@ -137,6 +137,7 @@ struct sna_composite_op {
int nr_surfaces;
int nr_inputs;
int ve_id;
+ int sampler;
} gen7;
} u;
More information about the xorg-commit
mailing list