summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-11 10:37:25 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-11 10:56:51 +0100
commita9b53c48774078d404149e86267c39eb82234c3a (patch)
tree3ff84daeb9662d89c0419322d6ff9913242dd104
parent208fa8e6b88daf8446239a1a001a68ceb7d02e76 (diff)
sna: Mark the spans render functions as fastcall
This reduces the amount of dancing required to call into the span functions as we can pass the arguments in both the integer and floating point registers. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/gen2_render.c12
-rw-r--r--src/sna/gen3_render.c22
-rw-r--r--src/sna/sna_render.h20
3 files changed, 29 insertions, 25 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index c0d357d9..a7ace88a 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1403,7 +1403,7 @@ cleanup_dst:
return FALSE;
}
-static void
+fastcall static void
gen2_emit_composite_spans_primitive_constant(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -1426,7 +1426,7 @@ gen2_emit_composite_spans_primitive_constant(struct sna *sna,
*((uint32_t *)v + 8) = alpha;
}
-static void
+fastcall static void
gen2_emit_composite_spans_primitive_identity_source(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -1455,7 +1455,7 @@ gen2_emit_composite_spans_primitive_identity_source(struct sna *sna,
v[14] = (op->base.src.offset[1] + box->y1) * op->base.src.scale[1];
}
-static void
+fastcall static void
gen2_emit_composite_spans_primitive_affine_source(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -1509,7 +1509,7 @@ gen2_emit_composite_spans_vertex(struct sna *sna,
gen2_emit_composite_texcoord(sna, &op->base.src, x, y);
}
-static void
+fastcall static void
gen2_emit_composite_spans_primitive(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -1588,7 +1588,7 @@ static void gen2_emit_composite_spans_state(struct sna *sna,
}
}
-static void
+fastcall static void
gen2_render_composite_spans_box(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box, float opacity)
@@ -1643,7 +1643,7 @@ gen2_render_composite_spans_boxes(struct sna *sna,
} while (nbox);
}
-static void
+fastcall static void
gen2_render_composite_spans_done(struct sna *sna,
const struct sna_composite_spans_op *op)
{
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index e25e71ba..e7d8bb2d 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -2434,7 +2434,7 @@ gen3_emit_composite_spans_vertex(struct sna *sna,
OUT_VERTEX(opacity);
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_zero(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2453,7 +2453,7 @@ gen3_emit_composite_spans_primitive_zero(struct sna *sna,
v[5] = op->base.dst.x + box->y1;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_zero_no_offset(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2468,7 +2468,7 @@ gen3_emit_composite_spans_primitive_zero_no_offset(struct sna *sna,
v[5] = box->y1;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_constant(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2484,7 +2484,7 @@ gen3_emit_composite_spans_primitive_constant(struct sna *sna,
v[8] = v[5] = v[2] = opacity;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_constant_no_offset(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2500,7 +2500,7 @@ gen3_emit_composite_spans_primitive_constant_no_offset(struct sna *sna,
v[8] = v[5] = v[2] = opacity;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_identity_source(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2528,7 +2528,7 @@ gen3_emit_composite_spans_primitive_identity_source(struct sna *sna,
v[14] = opacity;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_affine_source(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2570,7 +2570,7 @@ gen3_emit_composite_spans_primitive_affine_source(struct sna *sna,
v[13] = y * op->base.src.scale[1];
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_identity_gradient(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2598,7 +2598,7 @@ gen3_emit_composite_spans_primitive_identity_gradient(struct sna *sna,
v[14] = opacity;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive_affine_gradient(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2633,7 +2633,7 @@ gen3_emit_composite_spans_primitive_affine_gradient(struct sna *sna,
v[14] = opacity;
}
-static void
+fastcall static void
gen3_emit_composite_spans_primitive(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box,
@@ -2650,7 +2650,7 @@ gen3_emit_composite_spans_primitive(struct sna *sna,
opacity);
}
-static void
+fastcall static void
gen3_render_composite_spans_box(struct sna *sna,
const struct sna_composite_spans_op *op,
const BoxRec *box, float opacity)
@@ -2705,7 +2705,7 @@ gen3_render_composite_spans_boxes(struct sna *sna,
} while (nbox);
}
-static void
+fastcall static void
gen3_render_composite_spans_done(struct sna *sna,
const struct sna_composite_spans_op *op)
{
diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h
index 2cc39f0e..9e658a84 100644
--- a/src/sna/sna_render.h
+++ b/src/sna/sna_render.h
@@ -137,17 +137,21 @@ struct sna_composite_op {
struct sna_composite_spans_op {
struct sna_composite_op base;
- void (*box)(struct sna *sna, const struct sna_composite_spans_op *op,
- const BoxRec *box, float opacity);
- void (*boxes)(struct sna *sna, const struct sna_composite_spans_op *op,
+ fastcall void (*box)(struct sna *sna,
+ const struct sna_composite_spans_op *op,
+ const BoxRec *box,
+ float opacity);
+ void (*boxes)(struct sna *sna,
+ const struct sna_composite_spans_op *op,
const BoxRec *box, int nbox,
float opacity);
- void (*done)(struct sna *sna, const struct sna_composite_spans_op *op);
+ fastcall void (*done)(struct sna *sna,
+ const struct sna_composite_spans_op *op);
- void (*prim_emit)(struct sna *sna,
- const struct sna_composite_spans_op *op,
- const BoxRec *box,
- float opacity);
+ fastcall void (*prim_emit)(struct sna *sna,
+ const struct sna_composite_spans_op *op,
+ const BoxRec *box,
+ float opacity);
};
struct sna_fill_op {