xf86-video-intel: 10 commits - src/i915_render.c src/i965_render.c src/intel_video.c src/legacy/i810 src/sna/blt.c src/sna/kgem.c src/sna/kgem_debug.c src/sna/kgem_debug_gen2.c src/sna/kgem_debug_gen3.c src/sna/kgem_debug_gen4.c src/sna/kgem_debug_gen5.c src/sna/kgem_debug_gen6.c src/sna/kgem_debug_gen7.c src/sna/sna_accel.c src/sna/sna_blt.c src/sna/sna_composite.c src/sna/sna_display.c src/sna/sna_driver.c src/sna/sna_render.c src/sna/sna_video_overlay.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Jun 13 06:49:07 PDT 2012
src/i915_render.c | 15 +------
src/i965_render.c | 3 +
src/intel_video.c | 1
src/legacy/i810/i810_driver.c | 2 -
src/sna/blt.c | 16 ++++----
src/sna/kgem.c | 1
src/sna/kgem_debug.c | 2 -
src/sna/kgem_debug_gen2.c | 4 +-
src/sna/kgem_debug_gen3.c | 83 ++++++++++++++++++++---------------------
src/sna/kgem_debug_gen4.c | 6 +--
src/sna/kgem_debug_gen5.c | 6 +--
src/sna/kgem_debug_gen6.c | 22 ++++++++---
src/sna/kgem_debug_gen7.c | 7 +--
src/sna/sna_accel.c | 84 ++++++++++++++++++++++++++----------------
src/sna/sna_blt.c | 42 ++++++++++-----------
src/sna/sna_composite.c | 1
src/sna/sna_display.c | 43 +++++++++++++--------
src/sna/sna_driver.c | 2 +
src/sna/sna_render.c | 65 ++++++++++++++++----------------
src/sna/sna_video_overlay.c | 16 +++-----
20 files changed, 226 insertions(+), 195 deletions(-)
New commits:
commit 0db789e180b6b01fb8aff547879387058f52a0b9
Author: Zdenek Kabelac <zkabelac at redhat.com>
Date: Wed Jun 13 14:26:37 2012 +0200
sna: Constification
Adding preserving const modifiers to decrease amount of const warnings
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/blt.c b/src/sna/blt.c
index e9d06eb..494b413 100644
--- a/src/sna/blt.c
+++ b/src/sna/blt.c
@@ -164,7 +164,7 @@ memcpy_blt(const void *src, void *dst, int bpp,
bpp /= 8;
- src_bytes = (uint8_t *)src + src_stride * src_y + src_x * bpp;
+ src_bytes = (const uint8_t *)src + src_stride * src_y + src_x * bpp;
dst_bytes = (uint8_t *)dst + dst_stride * dst_y + dst_x * bpp;
byte_width = width * bpp;
@@ -184,7 +184,7 @@ memcpy_blt(const void *src, void *dst, int bpp,
case 2:
do {
- *(uint16_t *)dst_bytes = *(uint16_t *)src_bytes;
+ *(uint16_t *)dst_bytes = *(const uint16_t *)src_bytes;
src_bytes += src_stride;
dst_bytes += dst_stride;
} while (--height);
@@ -192,7 +192,7 @@ memcpy_blt(const void *src, void *dst, int bpp,
case 4:
do {
- *(uint32_t *)dst_bytes = *(uint32_t *)src_bytes;
+ *(uint32_t *)dst_bytes = *(const uint32_t *)src_bytes;
src_bytes += src_stride;
dst_bytes += dst_stride;
} while (--height);
@@ -200,7 +200,7 @@ memcpy_blt(const void *src, void *dst, int bpp,
case 8:
do {
- *(uint64_t *)dst_bytes = *(uint64_t *)src_bytes;
+ *(uint64_t *)dst_bytes = *(const uint64_t *)src_bytes;
src_bytes += src_stride;
dst_bytes += dst_stride;
} while (--height);
@@ -224,7 +224,7 @@ memcpy_xor(const void *src, void *dst, int bpp,
uint16_t width, uint16_t height,
uint32_t and, uint32_t or)
{
- uint8_t *src_bytes;
+ const uint8_t *src_bytes;
uint8_t *dst_bytes;
int i;
@@ -239,7 +239,7 @@ memcpy_xor(const void *src, void *dst, int bpp,
bpp, and, or));
bpp /= 8;
- src_bytes = (uint8_t *)src + src_stride * src_y + src_x * bpp;
+ src_bytes = (const uint8_t *)src + src_stride * src_y + src_x * bpp;
dst_bytes = (uint8_t *)dst + dst_stride * dst_y + dst_x * bpp;
if (and == 0xffffffff) {
@@ -262,7 +262,7 @@ memcpy_xor(const void *src, void *dst, int bpp,
if (width & 1) {
do {
uint16_t *d = (uint16_t *)dst_bytes;
- uint16_t *s = (uint16_t *)src_bytes;
+ const uint16_t *s = (const uint16_t *)src_bytes;
for (i = 0; i < width; i++)
d[i] = s[i] | or;
@@ -285,7 +285,7 @@ memcpy_xor(const void *src, void *dst, int bpp,
if (have_sse2()) {
do {
uint32_t *d = (uint32_t *)dst_bytes;
- uint32_t *s = (uint32_t *)src_bytes;
+ const uint32_t *s = (const uint32_t *)src_bytes;
__m128i mask = xmm_create_mask_32(or);
i = width;
diff --git a/src/sna/kgem_debug.c b/src/sna/kgem_debug.c
index e46ffca..2dc1b45 100644
--- a/src/sna/kgem_debug.c
+++ b/src/sna/kgem_debug.c
@@ -225,7 +225,7 @@ decode_2d(struct kgem *kgem, uint32_t offset)
};
unsigned int op, len;
- char *format = NULL;
+ const char *format = NULL;
uint32_t *data = kgem->batch + offset;
struct drm_i915_gem_relocation_entry *reloc;
diff --git a/src/sna/kgem_debug_gen2.c b/src/sna/kgem_debug_gen2.c
index e00cd81..09f3873 100644
--- a/src/sna/kgem_debug_gen2.c
+++ b/src/sna/kgem_debug_gen2.c
@@ -245,14 +245,14 @@ decode_3d_1d(struct kgem *kgem, uint32_t offset)
{
uint32_t *data = kgem->batch + offset;
unsigned int len, i, idx, word, map;
- char *format, *zformat, *type;
+ const char *format, *zformat, *type;
uint32_t opcode;
static const struct {
uint32_t opcode;
int min_len;
int max_len;
- char *name;
+ const char *name;
} opcodes_3d_1d[] = {
{ 0x86, 4, 4, "3DSTATE_CHROMA_KEY" },
{ 0x88, 2, 2, "3DSTATE_CONSTANT_BLEND_COLOR" },
diff --git a/src/sna/kgem_debug_gen3.c b/src/sna/kgem_debug_gen3.c
index de9d217..5d6d175 100644
--- a/src/sna/kgem_debug_gen3.c
+++ b/src/sna/kgem_debug_gen3.c
@@ -344,7 +344,7 @@ gen3_get_instruction_dst(uint32_t *data, int i, char *dstname, int do_mask)
uint32_t a0 = data[i];
int dst_nr = (a0 >> 14) & 0xf;
char dstmask[8];
- char *sat;
+ const char *sat;
if (do_mask) {
if (((a0 >> 10) & 0xf) == 0xf) {
@@ -396,7 +396,7 @@ gen3_get_instruction_dst(uint32_t *data, int i, char *dstname, int do_mask)
}
}
-static char *
+static const char *
gen3_get_channel_swizzle(uint32_t select)
{
switch (select & 0x7) {
@@ -468,10 +468,10 @@ gen3_get_instruction_src0(uint32_t *data, int i, char *srcname)
uint32_t a0 = data[i];
uint32_t a1 = data[i + 1];
int src_nr = (a0 >> 2) & 0x1f;
- char *swizzle_x = gen3_get_channel_swizzle((a1 >> 28) & 0xf);
- char *swizzle_y = gen3_get_channel_swizzle((a1 >> 24) & 0xf);
- char *swizzle_z = gen3_get_channel_swizzle((a1 >> 20) & 0xf);
- char *swizzle_w = gen3_get_channel_swizzle((a1 >> 16) & 0xf);
+ const char *swizzle_x = gen3_get_channel_swizzle((a1 >> 28) & 0xf);
+ const char *swizzle_y = gen3_get_channel_swizzle((a1 >> 24) & 0xf);
+ const char *swizzle_z = gen3_get_channel_swizzle((a1 >> 20) & 0xf);
+ const char *swizzle_w = gen3_get_channel_swizzle((a1 >> 16) & 0xf);
char swizzle[100];
gen3_get_instruction_src_name((a0 >> 7) & 0x7, src_nr, srcname);
@@ -486,10 +486,10 @@ gen3_get_instruction_src1(uint32_t *data, int i, char *srcname)
uint32_t a1 = data[i + 1];
uint32_t a2 = data[i + 2];
int src_nr = (a1 >> 8) & 0x1f;
- char *swizzle_x = gen3_get_channel_swizzle((a1 >> 4) & 0xf);
- char *swizzle_y = gen3_get_channel_swizzle((a1 >> 0) & 0xf);
- char *swizzle_z = gen3_get_channel_swizzle((a2 >> 28) & 0xf);
- char *swizzle_w = gen3_get_channel_swizzle((a2 >> 24) & 0xf);
+ const char *swizzle_x = gen3_get_channel_swizzle((a1 >> 4) & 0xf);
+ const char *swizzle_y = gen3_get_channel_swizzle((a1 >> 0) & 0xf);
+ const char *swizzle_z = gen3_get_channel_swizzle((a2 >> 28) & 0xf);
+ const char *swizzle_w = gen3_get_channel_swizzle((a2 >> 24) & 0xf);
char swizzle[100];
gen3_get_instruction_src_name((a1 >> 13) & 0x7, src_nr, srcname);
@@ -503,10 +503,10 @@ gen3_get_instruction_src2(uint32_t *data, int i, char *srcname)
{
uint32_t a2 = data[i + 2];
int src_nr = (a2 >> 16) & 0x1f;
- char *swizzle_x = gen3_get_channel_swizzle((a2 >> 12) & 0xf);
- char *swizzle_y = gen3_get_channel_swizzle((a2 >> 8) & 0xf);
- char *swizzle_z = gen3_get_channel_swizzle((a2 >> 4) & 0xf);
- char *swizzle_w = gen3_get_channel_swizzle((a2 >> 0) & 0xf);
+ const char *swizzle_x = gen3_get_channel_swizzle((a2 >> 12) & 0xf);
+ const char *swizzle_y = gen3_get_channel_swizzle((a2 >> 8) & 0xf);
+ const char *swizzle_z = gen3_get_channel_swizzle((a2 >> 4) & 0xf);
+ const char *swizzle_w = gen3_get_channel_swizzle((a2 >> 0) & 0xf);
char swizzle[100];
gen3_get_instruction_src_name((a2 >> 21) & 0x7, src_nr, srcname);
@@ -554,7 +554,7 @@ gen3_get_instruction_addr(uint32_t src_type, uint32_t src_nr, char *name)
static void
gen3_decode_alu1(uint32_t *data, uint32_t offset,
- int i, char *instr_prefix, char *op_name)
+ int i, char *instr_prefix, const char *op_name)
{
char dst[100], src0[100];
@@ -569,7 +569,7 @@ gen3_decode_alu1(uint32_t *data, uint32_t offset,
static void
gen3_decode_alu2(uint32_t *data, uint32_t offset,
- int i, char *instr_prefix, char *op_name)
+ int i, char *instr_prefix, const char *op_name)
{
char dst[100], src0[100], src1[100];
@@ -585,7 +585,7 @@ gen3_decode_alu2(uint32_t *data, uint32_t offset,
static void
gen3_decode_alu3(uint32_t *data, uint32_t offset,
- int i, char *instr_prefix, char *op_name)
+ int i, char *instr_prefix, const char *op_name)
{
char dst[100], src0[100], src1[100], src2[100];
@@ -602,7 +602,7 @@ gen3_decode_alu3(uint32_t *data, uint32_t offset,
static void
gen3_decode_tex(uint32_t *data, uint32_t offset, int i, char *instr_prefix,
- char *tex_name)
+ const char *tex_name)
{
uint32_t t0 = data[i];
uint32_t t1 = data[i + 1];
@@ -626,12 +626,12 @@ static void
gen3_decode_dcl(uint32_t *data, uint32_t offset, int i, char *instr_prefix)
{
uint32_t d0 = data[i];
- char *sampletype;
+ const char *sampletype;
int dcl_nr = (d0 >> 14) & 0xf;
- char *dcl_x = d0 & (1 << 10) ? "x" : "";
- char *dcl_y = d0 & (1 << 11) ? "y" : "";
- char *dcl_z = d0 & (1 << 12) ? "z" : "";
- char *dcl_w = d0 & (1 << 13) ? "w" : "";
+ const char *dcl_x = d0 & (1 << 10) ? "x" : "";
+ const char *dcl_y = d0 & (1 << 11) ? "y" : "";
+ const char *dcl_z = d0 & (1 << 12) ? "z" : "";
+ const char *dcl_w = d0 & (1 << 13) ? "w" : "";
char dcl_mask[10];
switch ((d0 >> 19) & 0x3) {
@@ -790,7 +790,7 @@ gen3_decode_instruction(uint32_t *data, uint32_t offset,
}
}
-static char *
+static const char *
gen3_decode_compare_func(uint32_t op)
{
switch (op&0x7) {
@@ -806,7 +806,7 @@ gen3_decode_compare_func(uint32_t op)
return "";
}
-static char *
+static const char *
gen3_decode_stencil_op(uint32_t op)
{
switch (op&0x7) {
@@ -824,7 +824,7 @@ gen3_decode_stencil_op(uint32_t op)
#if 0
/* part of MODES_4 */
-static char *
+static const char *
gen3_decode_logic_op(uint32_t op)
{
switch (op&0xf) {
@@ -849,7 +849,7 @@ gen3_decode_logic_op(uint32_t op)
}
#endif
-static char *
+static const char *
gen3_decode_blend_fact(uint32_t op)
{
switch (op&0xf) {
@@ -872,7 +872,7 @@ gen3_decode_blend_fact(uint32_t op)
return "";
}
-static char *
+static const char *
decode_tex_coord_mode(uint32_t mode)
{
switch (mode&0x7) {
@@ -886,7 +886,7 @@ decode_tex_coord_mode(uint32_t mode)
return "";
}
-static char *
+static const char *
gen3_decode_sample_filter(uint32_t mode)
{
switch (mode&0x7) {
@@ -949,8 +949,8 @@ gen3_decode_load_state_immediate_1(struct kgem *kgem, uint32_t offset)
break;
case 4:
{
- char *cullmode = "";
- char *vfmt_xyzw = "";
+ const char *cullmode = "";
+ const char *vfmt_xyzw = "";
switch((data[i]>>13)&0x3) {
case 0: cullmode = "both"; break;
case 1: cullmode = "none"; break;
@@ -1050,13 +1050,13 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
{
uint32_t *data = kgem->batch + offset;
unsigned int len, i, c, idx, word, map, sampler, instr;
- char *format, *zformat, *type;
+ const char *format, *zformat, *type;
uint32_t opcode;
- const struct {
+ static const struct {
uint32_t opcode;
int min_len;
int max_len;
- char *name;
+ const char *name;
} opcodes_3d_1d[] = {
{ 0x86, 4, 4, "3DSTATE_CHROMA_KEY" },
{ 0x88, 2, 2, "3DSTATE_CONSTANT_BLEND_COLOR" },
@@ -1310,7 +1310,7 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
for (sampler = 0; sampler <= 15; sampler++) {
if (data[1] & (1 << sampler)) {
uint32_t dword;
- char *mip_filter = "";
+ const char *mip_filter = "";
dword = data[i];
switch ((dword>>20)&0x3) {
case 0: mip_filter = "none"; break;
@@ -1483,7 +1483,7 @@ gen3_decode_3d_primitive(struct kgem *kgem, uint32_t offset)
uint32_t *data = kgem->batch + offset;
char immediate = (data[0] & (1 << 23)) == 0;
unsigned int len, i, ret;
- char *primtype;
+ const char *primtype;
unsigned int vertex = 0;
switch ((data[0] >> 18) & 0xf) {
@@ -1553,11 +1553,11 @@ out:
int kgem_gen3_decode_3d(struct kgem *kgem, uint32_t offset)
{
- struct {
+ static const struct {
uint32_t opcode;
int min_len;
int max_len;
- char *name;
+ const char *name;
} opcodes[] = {
{ 0x06, 1, 1, "3DSTATE_ANTI_ALIASING" },
{ 0x08, 1, 1, "3DSTATE_BACKFACE_STENCIL_OPS" },
diff --git a/src/sna/kgem_debug_gen4.c b/src/sna/kgem_debug_gen4.c
index 53c350b..9b80dc8 100644
--- a/src/sna/kgem_debug_gen4.c
+++ b/src/sna/kgem_debug_gen4.c
@@ -256,7 +256,7 @@ static void primitive_out(struct kgem *kgem, uint32_t *data)
static void
state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] & 1)
kgem_debug_print(data, offset, index,
@@ -270,7 +270,7 @@ state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
static void
state_max_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] == 1)
kgem_debug_print(data, offset, index,
@@ -460,7 +460,7 @@ int kgem_gen4_decode_3d(struct kgem *kgem, uint32_t offset)
uint32_t op;
unsigned int len;
int i;
- char *desc1 = NULL;
+ const char *desc1 = NULL;
len = (data[0] & 0xff) + 2;
op = (data[0] & 0xffff0000) >> 16;
diff --git a/src/sna/kgem_debug_gen5.c b/src/sna/kgem_debug_gen5.c
index 9e7360a..e23ceb1 100644
--- a/src/sna/kgem_debug_gen5.c
+++ b/src/sna/kgem_debug_gen5.c
@@ -230,7 +230,7 @@ static void primitive_out(struct kgem *kgem, uint32_t *data)
static void
state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] & 1)
kgem_debug_print(data, offset, index,
@@ -244,7 +244,7 @@ state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
static void
state_max_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] == 1)
kgem_debug_print(data, offset, index,
@@ -434,7 +434,7 @@ int kgem_gen5_decode_3d(struct kgem *kgem, uint32_t offset)
uint32_t op;
unsigned int len;
int i;
- char *desc1 = NULL;
+ const char *desc1 = NULL;
len = (data[0] & 0xff) + 2;
op = (data[0] & 0xffff0000) >> 16;
diff --git a/src/sna/kgem_debug_gen6.c b/src/sna/kgem_debug_gen6.c
index 961aa00..e0b09d5 100644
--- a/src/sna/kgem_debug_gen6.c
+++ b/src/sna/kgem_debug_gen6.c
@@ -298,7 +298,7 @@ static void finish_state(struct kgem *kgem)
static void
state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] & 1)
kgem_debug_print(data, offset, index,
@@ -312,7 +312,7 @@ state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
static void
state_max_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] == 1)
kgem_debug_print(data, offset, index,
@@ -635,7 +635,7 @@ int kgem_gen6_decode_3d(struct kgem *kgem, uint32_t offset)
uint32_t op;
unsigned int len;
int i, j;
- char *desc1 = NULL;
+ const char *desc1 = NULL;
len = (data[0] & 0xff) + 2;
op = (data[0] & 0xffff0000) >> 16;
diff --git a/src/sna/kgem_debug_gen7.c b/src/sna/kgem_debug_gen7.c
index 78eae01..1bc014b 100644
--- a/src/sna/kgem_debug_gen7.c
+++ b/src/sna/kgem_debug_gen7.c
@@ -302,7 +302,7 @@ static void finish_state(struct kgem *kgem)
static void
state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] & 1)
kgem_debug_print(data, offset, index,
@@ -316,7 +316,7 @@ state_base_out(uint32_t *data, uint32_t offset, unsigned int index,
static void
state_max_out(uint32_t *data, uint32_t offset, unsigned int index,
- char *name)
+ const char *name)
{
if (data[index] == 1)
kgem_debug_print(data, offset, index,
@@ -595,8 +595,7 @@ int kgem_gen7_decode_3d(struct kgem *kgem, uint32_t offset)
uint32_t *data = kgem->batch + offset;
uint32_t op;
unsigned int len;
- int i, j;
- char *desc1 = NULL;
+ int i;
const char *name;
len = (data[0] & 0xff) + 2;
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 07806b2..6c48db8 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -4221,7 +4221,7 @@ sna_fill_spans__cpu(DrawablePtr drawable,
GCPtr gc, int n,
DDXPointPtr pt, int *width, int sorted)
{
- const RegionRec *clip = sna_gc(gc)->priv;
+ RegionRec *clip = sna_gc(gc)->priv;
DBG(("%s x %d\n", __FUNCTION__, n));
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index 0cfa8b1..83bcd69 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -790,7 +790,7 @@ inline static void _sna_blt_fill_box(struct sna *sna,
kgem->nbatch += 3;
b[0] = blt->cmd;
- *(uint64_t *)(b+1) = *(uint64_t *)box;
+ *(uint64_t *)(b+1) = *(const uint64_t *)box;
}
inline static void _sna_blt_fill_boxes(struct sna *sna,
@@ -818,31 +818,31 @@ inline static void _sna_blt_fill_boxes(struct sna *sna,
kgem->nbatch += 3 * nbox_this_time;
while (nbox_this_time >= 8) {
- b[0] = cmd; *(uint64_t *)(b+1) = *(uint64_t *)box++;
- b[3] = cmd; *(uint64_t *)(b+4) = *(uint64_t *)box++;
- b[6] = cmd; *(uint64_t *)(b+7) = *(uint64_t *)box++;
- b[9] = cmd; *(uint64_t *)(b+10) = *(uint64_t *)box++;
- b[12] = cmd; *(uint64_t *)(b+13) = *(uint64_t *)box++;
- b[15] = cmd; *(uint64_t *)(b+16) = *(uint64_t *)box++;
- b[18] = cmd; *(uint64_t *)(b+19) = *(uint64_t *)box++;
- b[21] = cmd; *(uint64_t *)(b+22) = *(uint64_t *)box++;
+ b[0] = cmd; *(uint64_t *)(b+1) = *(const uint64_t *)box++;
+ b[3] = cmd; *(uint64_t *)(b+4) = *(const uint64_t *)box++;
+ b[6] = cmd; *(uint64_t *)(b+7) = *(const uint64_t *)box++;
+ b[9] = cmd; *(uint64_t *)(b+10) = *(const uint64_t *)box++;
+ b[12] = cmd; *(uint64_t *)(b+13) = *(const uint64_t *)box++;
+ b[15] = cmd; *(uint64_t *)(b+16) = *(const uint64_t *)box++;
+ b[18] = cmd; *(uint64_t *)(b+19) = *(const uint64_t *)box++;
+ b[21] = cmd; *(uint64_t *)(b+22) = *(const uint64_t *)box++;
b += 24;
nbox_this_time -= 8;
}
if (nbox_this_time & 4) {
- b[0] = cmd; *(uint64_t *)(b+1) = *(uint64_t *)box++;
- b[3] = cmd; *(uint64_t *)(b+4) = *(uint64_t *)box++;
- b[6] = cmd; *(uint64_t *)(b+7) = *(uint64_t *)box++;
- b[9] = cmd; *(uint64_t *)(b+10) = *(uint64_t *)box++;
+ b[0] = cmd; *(uint64_t *)(b+1) = *(const uint64_t *)box++;
+ b[3] = cmd; *(uint64_t *)(b+4) = *(const uint64_t *)box++;
+ b[6] = cmd; *(uint64_t *)(b+7) = *(const uint64_t *)box++;
+ b[9] = cmd; *(uint64_t *)(b+10) = *(const uint64_t *)box++;
b += 12;
}
if (nbox_this_time & 2) {
- b[0] = cmd; *(uint64_t *)(b+1) = *(uint64_t *)box++;
- b[3] = cmd; *(uint64_t *)(b+4) = *(uint64_t *)box++;
+ b[0] = cmd; *(uint64_t *)(b+1) = *(const uint64_t *)box++;
+ b[3] = cmd; *(uint64_t *)(b+4) = *(const uint64_t *)box++;
b += 6;
}
if (nbox_this_time & 1) {
- b[0] = cmd; *(uint64_t *)(b+1) = *(uint64_t *)box++;
+ b[0] = cmd; *(uint64_t *)(b+1) = *(const uint64_t *)box++;
}
if (!nbox)
@@ -1848,7 +1848,7 @@ static bool sna_blt_fill_box(struct sna *sna, uint8_t alu,
overwrites = alu == GXcopy || alu == GXclear || alu == GXset;
if (overwrites && kgem->nbatch >= 6 &&
kgem->batch[kgem->nbatch-6] == cmd &&
- *(uint64_t *)&kgem->batch[kgem->nbatch-4] == *(uint64_t *)box &&
+ *(uint64_t *)&kgem->batch[kgem->nbatch-4] == *(const uint64_t *)box &&
kgem->reloc[kgem->nreloc-1].target_handle == bo->handle) {
DBG(("%s: replacing last fill\n", __FUNCTION__));
kgem->batch[kgem->nbatch-5] = br13;
@@ -1857,7 +1857,7 @@ static bool sna_blt_fill_box(struct sna *sna, uint8_t alu,
}
if (overwrites && kgem->nbatch >= 8 &&
(kgem->batch[kgem->nbatch-8] & 0xffc0000f) == XY_SRC_COPY_BLT_CMD &&
- *(uint64_t *)&kgem->batch[kgem->nbatch-6] == *(uint64_t *)box &&
+ *(uint64_t *)&kgem->batch[kgem->nbatch-6] == *(const uint64_t *)box &&
kgem->reloc[kgem->nreloc-2].target_handle == bo->handle) {
DBG(("%s: replacing last copy\n", __FUNCTION__));
kgem->batch[kgem->nbatch-8] = cmd;
@@ -1893,7 +1893,7 @@ static bool sna_blt_fill_box(struct sna *sna, uint8_t alu,
b = kgem->batch + kgem->nbatch;
b[0] = cmd;
b[1] = br13;
- *(uint64_t *)(b+2) = *(uint64_t *)box;
+ *(uint64_t *)(b+2) = *(const uint64_t *)box;
b[4] = kgem_add_reloc(kgem, kgem->nbatch + 4, bo,
I915_GEM_DOMAIN_RENDER << 16 |
I915_GEM_DOMAIN_RENDER |
commit 33998a7080aa7f50ba922c764c6a93fe951c5b64
Author: Zdenek Kabelac <zkabelac at redhat.com>
Date: Wed Jun 13 14:26:36 2012 +0200
sna: Fix typo and compare y1 to y2
It seems 'y1' was meant to be compared here
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 9da0198..07806b2 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -7630,7 +7630,7 @@ sna_poly_segment(DrawablePtr drawable, GCPtr gc, int n, xSegment *seg)
if (seg[i].y1 < seg[i].y2) {
rect[i].y = seg[i].y1;
rect[i].height = seg[i].y2 - seg[i].y1 + 1;
- } else if (seg[i].x1 > seg[i].y2) {
+ } else if (seg[i].y1 > seg[i].y2) {
rect[i].y = seg[i].y2;
rect[i].height = seg[i].y1 - seg[i].y2 + 1;
} else {
commit 0ade32fbad4014efcc8aa8ed4cd0f8a39f9ab107
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 14:28:43 2012 +0100
sna: Fix operator preference around a | b & c | d
Tell the compiler what we really mean is a | (b & (c | d))
Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index 9ac6720..0cfa8b1 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -431,7 +431,7 @@ static void sna_blt_copy_one(struct sna *sna,
/* Compare against a previous fill */
if (kgem->nbatch >= 6 &&
blt->overwrites &&
- kgem->batch[kgem->nbatch-6] == (XY_COLOR_BLT | (blt->cmd & BLT_WRITE_ALPHA | BLT_WRITE_RGB)) &&
+ kgem->batch[kgem->nbatch-6] == (XY_COLOR_BLT | (blt->cmd & (BLT_WRITE_ALPHA | BLT_WRITE_RGB))) &&
kgem->batch[kgem->nbatch-4] == ((uint32_t)dst_y << 16 | (uint16_t)dst_x) &&
kgem->batch[kgem->nbatch-3] == ((uint32_t)(dst_y+height) << 16 | (uint16_t)(dst_x+width)) &&
kgem->reloc[kgem->nreloc-1].target_handle == blt->bo[1]->handle) {
commit 20f3114ccd63052b4fd06ef1d87efaaabbbac7ac
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 14:27:10 2012 +0100
sna: Use long for simplicity when printing size_t values for debugging
Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 153f261..9da0198 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -12372,14 +12372,14 @@ static bool sna_accel_do_debug_memory(struct sna *sna)
static void sna_accel_debug_memory(struct sna *sna)
{
- ErrorF("Allocated shadow pixels: %d, %d bytes, as CPU bo: %d, %d bytes\n",
+ ErrorF("Allocated shadow pixels: %d, %ld bytes, as CPU bo: %d, %ld bytes\n",
sna->debug_memory.shadow_pixels_allocs,
- sna->debug_memory.shadow_pixels_bytes,
+ (long)sna->debug_memory.shadow_pixels_bytes,
sna->debug_memory.cpu_bo_allocs,
- sna->debug_memory.cpu_bo_bytes);
- ErrorF("Allocated bo: %d, %d bytes\n",
+ (long)sna->debug_memory.cpu_bo_bytes);
+ ErrorF("Allocated bo: %d, %ld bytes\n",
sna->kgem.debug_memory.bo_allocs,
- sna->kgem.debug_memory.bo_bytes);
+ (long)sna->kgem.debug_memory.bo_bytes);
}
#else
commit 6f75b8da6a468188dd0c00015395424598b3f502
Author: Zdenek Kabelac <zkabelac at redhat.com>
Date: Wed Jun 13 14:26:33 2012 +0200
sna: Valgrind updates
Add some mising initialization for unknown ioctl
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 398ffbb..153f261 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -10804,6 +10804,7 @@ static bool sna_set_glyph(CharInfoPtr in, CharInfoPtr out)
if (out->bits == NULL)
return false;
+ VG(memset(out->bits, 0, (w*h + 7) & ~7));
src = (uint8_t *)in->bits;
dst = (uint8_t *)out->bits;
stride -= w;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 05d97b6..a51abb5 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -1144,6 +1144,7 @@ sna_output_attach_edid(xf86OutputPtr output)
if (tmp == NULL)
continue;
+ VG(memset(tmp, 0, blob.length));
blob.data = (uintptr_t)tmp;
if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPROPBLOB, &blob)) {
free(tmp);
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index e585205..2fa6adc 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -335,6 +335,8 @@ static int sna_open_drm_master(ScrnInfoPtr scrn)
}
val = FALSE;
+
+ VG_CLEAR(gp);
gp.param = I915_PARAM_HAS_BLT;
gp.value = &val;
if (drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp)) {
diff --git a/src/sna/sna_video_overlay.c b/src/sna/sna_video_overlay.c
index 61b02b2..612711f 100644
--- a/src/sna/sna_video_overlay.c
+++ b/src/sna/sna_video_overlay.c
@@ -111,6 +111,7 @@ static Bool sna_has_overlay(struct sna *sna)
int has_overlay = 0;
int ret;
+ VG_CLEAR(gp);
gp.param = I915_PARAM_HAS_OVERLAY;
gp.value = &has_overlay;
ret = drmIoctl(sna->kgem.fd, DRM_IOCTL_I915_GETPARAM, &gp);
commit 70cf637ca47c9e67758e09c7e1d10eef51db1f98
Author: Zdenek Kabelac <zkabelac at redhat.com>
Date: Wed Jun 13 14:26:32 2012 +0200
legacy/i810: Fix declaration to match definition
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/legacy/i810/i810_driver.c b/src/legacy/i810/i810_driver.c
index 519a4f0..141c19c 100644
--- a/src/legacy/i810/i810_driver.c
+++ b/src/legacy/i810/i810_driver.c
@@ -78,7 +78,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "../legacy.h"
static Bool I810PreInit(ScrnInfoPtr pScrn, int flags);
-static Bool I810ScreenInit(SCREEN_INIT_ARGS);
+static Bool I810ScreenInit(SCREEN_INIT_ARGS_DECL);
static Bool I810EnterVT(VT_FUNC_ARGS_DECL);
static void I810LeaveVT(VT_FUNC_ARGS_DECL);
static Bool I810CloseScreen(CLOSE_SCREEN_ARGS_DECL);
commit 5fea2478cd5ab4156c182210d28c5e27e5f67403
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 14:10:01 2012 +0100
Lots of trivial semantic fixes
Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/i915_render.c b/src/i915_render.c
index 0ad991a..acbd82c 100644
--- a/src/i915_render.c
+++ b/src/i915_render.c
@@ -344,7 +344,6 @@ static Bool i915_texture_setup(PicturePtr picture, PixmapPtr pixmap, int unit)
(FILTER_LINEAR << SS2_MIN_FILTER_SHIFT);
break;
default:
- filter = 0;
intel_debug_fallback(scrn, "Bad filter 0x%x\n",
picture->filter);
return FALSE;
@@ -486,13 +485,10 @@ i915_emit_composite_primitive(intel_screen_private *intel,
int w, int h)
{
Bool is_affine_src = TRUE, is_affine_mask = TRUE;
- int per_vertex;
int tex_unit = 0;
int src_unit = -1, mask_unit = -1;
float src_x[3], src_y[3], src_w[3], mask_x[3], mask_y[3], mask_w[3];
- per_vertex = 2; /* dest x/y */
-
src_unit = tex_unit++;
is_affine_src = intel_transform_is_affine(intel->transform[src_unit]);
@@ -517,8 +513,6 @@ i915_emit_composite_primitive(intel_screen_private *intel,
&src_x[2],
&src_y[2]))
return;
-
- per_vertex += 2; /* src x/y */
} else {
if (!intel_get_transformed_coordinates_3d(srcX, srcY,
intel->
@@ -543,8 +537,6 @@ i915_emit_composite_primitive(intel_screen_private *intel,
&src_y[2],
&src_w[2]))
return;
-
- per_vertex += 4; /* src x/y/z/w */
}
if (intel->render_mask) {
@@ -572,8 +564,6 @@ i915_emit_composite_primitive(intel_screen_private *intel,
&mask_x[2],
&mask_y[2]))
return;
-
- per_vertex += 2; /* mask x/y */
} else {
if (!intel_get_transformed_coordinates_3d(maskX, maskY,
intel->
@@ -598,8 +588,6 @@ i915_emit_composite_primitive(intel_screen_private *intel,
&mask_y[2],
&mask_w[2]))
return;
-
- per_vertex += 4; /* mask x/y/z/w */
}
}
@@ -723,7 +711,8 @@ i915_prepare_composite(int op, PicturePtr source_picture,
else
floats_per_vertex += 4; /* src x/y/z/w */
- if (mask != NULL) {
+ if (mask_picture != NULL) {
+ assert(mask != NULL);
if (!i915_texture_setup(mask_picture, mask, tex_unit++)) {
intel_debug_fallback(scrn,
"fail to setup mask texture\n");
diff --git a/src/i965_render.c b/src/i965_render.c
index 75c99e2..9d45944 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -2087,11 +2087,12 @@ i965_prepare_composite(int op, PicturePtr source_picture,
intel->transform[0] = source_picture->transform;
composite_op->is_affine = intel_transform_is_affine(intel->transform[0]);
- if (!mask) {
+ if (mask_picture == NULL) {
intel->transform[1] = NULL;
intel->scale_units[1][0] = -1;
intel->scale_units[1][1] = -1;
} else {
+ assert(mask != NULL);
intel->transform[1] = mask_picture->transform;
intel->scale_units[1][0] = 1. / mask->drawable.width;
intel->scale_units[1][1] = 1. / mask->drawable.height;
diff --git a/src/intel_video.c b/src/intel_video.c
index 09674e5..235845f 100644
--- a/src/intel_video.c
+++ b/src/intel_video.c
@@ -451,7 +451,6 @@ static XF86VideoAdaptorPtr I830SetupImageVideoOverlay(ScreenPtr screen)
if (INTEL_INFO(intel)->gen >= 30) {
memcpy((char *)att, (char *)GammaAttributes,
sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES);
- att += GAMMA_ATTRIBUTES;
}
adapt->nImages = NUM_IMAGES - XVMC_IMAGE;
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 8d7b1d6..89921d4 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1914,6 +1914,7 @@ void _kgem_submit(struct kgem *kgem)
if (i != -1) {
ret = write(i, kgem->batch, batch_end*sizeof(uint32_t));
close(i);
+ (void)ret;
}
for (i = 0; i < kgem->nexec; i++) {
diff --git a/src/sna/kgem_debug_gen3.c b/src/sna/kgem_debug_gen3.c
index 969b1d1..de9d217 100644
--- a/src/sna/kgem_debug_gen3.c
+++ b/src/sna/kgem_debug_gen3.c
@@ -945,7 +945,7 @@ gen3_decode_load_state_immediate_1(struct kgem *kgem, uint32_t offset)
break;
case 3:
- kgem_debug_print(data, offset, i, "S3: not documented\n", word);
+ kgem_debug_print(data, offset, i, "S3: not documented\n");
break;
case 4:
{
@@ -968,7 +968,7 @@ gen3_decode_load_state_immediate_1(struct kgem *kgem, uint32_t offset)
case 4<<6 | 1<<2: vfmt_xyzw = "XYWF,"; break;
}
kgem_debug_print(data, offset, i, "S4: point_width=%i, line_width=%.1f,"
- "%s%s%s%s%s cullmode=%s, vfmt=%s%s%s%s%s%s "
+ "%s%s%s%s%s cullmode=%s, vfmt=%s%s%s%s%s%s%s%s "
"%s%s\n",
(data[i]>>23)&0x1ff,
((data[i]>>19)&0xf) / 2.0,
@@ -1344,8 +1344,7 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
dword&(1<<0)?" deinterlacer,":"");
dword = data[i];
kgem_debug_print(data, offset, i++, "sampler %d SS4: border color\n",
- sampler, ((dword>>24)&0xff)/(0x10*1.0),
- dword);
+ sampler);
}
}
assert(len == i);
diff --git a/src/sna/kgem_debug_gen6.c b/src/sna/kgem_debug_gen6.c
index 72ed299..961aa00 100644
--- a/src/sna/kgem_debug_gen6.c
+++ b/src/sna/kgem_debug_gen6.c
@@ -555,6 +555,16 @@ gen6_blend_function_to_string(uint32_t v)
}
}
+static float unpack_float(uint32_t dw)
+{
+ union {
+ float f;
+ uint32_t dw;
+ } u;
+ u.dw = dw;
+ return u.f;
+}
+
static void
gen6_decode_blend(struct kgem *kgem, const uint32_t *reloc)
{
@@ -883,9 +893,9 @@ int kgem_gen6_decode_3d(struct kgem *kgem, uint32_t offset)
(data[4] & (1 << 31)) != 0 ? "en" : "dis",
(data[4] & (1 << 12)) != 0 ? 4 : 8,
(data[4] & (1 << 11)) != 0);
- kgem_debug_print(data, offset, 5, "Global Depth Offset Constant %f\n", data[5]);
- kgem_debug_print(data, offset, 6, "Global Depth Offset Scale %f\n", data[6]);
- kgem_debug_print(data, offset, 7, "Global Depth Offset Clamp %f\n", data[7]);
+ kgem_debug_print(data, offset, 5, "Global Depth Offset Constant %f\n", unpack_float(data[5]));
+ kgem_debug_print(data, offset, 6, "Global Depth Offset Scale %f\n", unpack_float(data[6]));
+ kgem_debug_print(data, offset, 7, "Global Depth Offset Clamp %f\n", unpack_float(data[7]));
for (i = 0, j = 0; i < 8; i++, j+=2)
kgem_debug_print(data, offset, i+8, "Attrib %d (Override %s%s%s%s, Const Source %d, Swizzle Select %d, "
"Source %d); Attrib %d (Override %s%s%s%s, Const Source %d, Swizzle Select %d, Source %d)\n",
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index c26dc45..398ffbb 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -214,7 +214,7 @@ typedef struct box32 {
(((_pm) & FbFullMask((_draw)->depth)) == FbFullMask((_draw)->depth))
#if DEBUG_ACCEL
-static void _assert_pixmap_contains_box(PixmapPtr pixmap, BoxPtr box, const char *function)
+static void _assert_pixmap_contains_box(PixmapPtr pixmap, const BoxRec *box, const char *function)
{
if (box->x1 < 0 || box->y1 < 0 ||
box->x2 > pixmap->drawable.width ||
@@ -229,7 +229,7 @@ static void _assert_pixmap_contains_box(PixmapPtr pixmap, BoxPtr box, const char
}
}
-static void _assert_pixmap_contains_boxes(PixmapPtr pixmap, BoxPtr box, int n, int dx, int dy, const char *function)
+static void _assert_pixmap_contains_boxes(PixmapPtr pixmap, const BoxRec *box, int n, int dx, int dy, const char *function)
{
BoxRec extents;
@@ -255,7 +255,7 @@ static void _assert_pixmap_contains_boxes(PixmapPtr pixmap, BoxPtr box, int n, i
}
-static void _assert_pixmap_contains_points(PixmapPtr pixmap, DDXPointRec *pt, int n, int dx, int dy, const char *function)
+static void _assert_pixmap_contains_points(PixmapPtr pixmap, const DDXPointRec *pt, int n, int dx, int dy, const char *function)
{
BoxRec extents;
@@ -416,16 +416,16 @@ static void sna_pixmap_free_cpu(struct sna *sna, struct sna_pixmap *priv)
if (priv->cpu_bo) {
DBG(("%s: discarding CPU buffer, handle=%d, size=%d\n",
__FUNCTION__, priv->cpu_bo->handle, kgem_bo_size(priv->cpu_bo)));
+#ifdef DEBUG_MEMORY
+ sna->debug_memory.cpu_bo_allocs--;
+ sna->debug_memory.cpu_bo_bytes -= kgem_bo_size(priv->cpu_bo);
+#endif
if (priv->cpu_bo->sync) {
kgem_bo_sync__cpu(&sna->kgem, priv->cpu_bo);
sna_accel_watch_flush(sna, -1);
}
kgem_bo_destroy(&sna->kgem, priv->cpu_bo);
priv->cpu_bo = NULL;
-#ifdef DEBUG_MEMORY
- sna->debug_memory.cpu_bo_allocs--;
- sna->debug_memory.cpu_bo_bytes -= kgem_bo_size(priv->cpu_bo);
-#endif
} else
free(priv->ptr);
@@ -928,7 +928,7 @@ static inline bool pixmap_inplace(struct sna *sna,
}
static bool
-sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, BoxPtr box, unsigned flags);
+sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned flags);
static bool
sna_pixmap_create_mappable_gpu(PixmapPtr pixmap)
@@ -1834,7 +1834,7 @@ inline static unsigned drawable_gc_flags(DrawablePtr draw,
}
static bool
-sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, BoxPtr box, unsigned int flags)
+sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int flags)
{
struct sna *sna = to_sna_from_pixmap(pixmap);
struct sna_pixmap *priv = sna_pixmap(pixmap);
@@ -2151,6 +2151,7 @@ move_to_gpu:
}
done:
+ assert(priv->gpu_bo != NULL);
if (sna_damage_is_all(&priv->gpu_damage,
pixmap->drawable.width,
pixmap->drawable.height))
@@ -2164,6 +2165,7 @@ done:
return priv->gpu_bo;
use_gpu_bo:
+ assert(priv->gpu_bo != NULL);
priv->clear = false;
if (!priv->pinned && (priv->create & KGEM_CAN_CREATE_LARGE) == 0)
list_move(&priv->inactive,
@@ -3916,6 +3918,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
goto out;
} else if (dst_priv->cpu_bo &&
src_priv && DAMAGE_IS_ALL(src_priv->gpu_damage) && !src_priv->clear) {
+ assert(src_priv->gpu_bo != NULL); /* guaranteed by gpu_damage */
if (!sna->render.copy_boxes(sna, alu,
src_pixmap, src_priv->gpu_bo, src_dx, src_dy,
dst_pixmap, dst_priv->cpu_bo, dst_dx, dst_dy,
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index e84c87f..9ac6720 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -2008,7 +2008,7 @@ Bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu,
nbox -= nbox_this_time;
do {
- uint32_t *b = kgem->batch + kgem->nbatch;
+ uint32_t *b;
DBG(("%s: (%d, %d), (%d, %d): %08x\n",
__FUNCTION__,
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 8528217..97fe70e 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -330,6 +330,7 @@ sna_compute_composite_extents(BoxPtr extents,
v = dst_y + height;
if (v > dst->pDrawable->height)
v = dst->pDrawable->height;
+ extents->y2 = v;
DBG(("%s: initial clip against dst->pDrawable: (%d, %d), (%d, %d)\n",
__FUNCTION__,
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index 8d61f40..4dc7062 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -387,9 +387,13 @@ move_to_gpu(PixmapPtr pixmap, const BoxRec *box)
return NULL;
}
- if (DBG_FORCE_UPLOAD < 0)
- return sna_pixmap_force_to_gpu(pixmap,
- MOVE_SOURCE_HINT | MOVE_READ);
+ if (DBG_FORCE_UPLOAD < 0) {
+ if (!sna_pixmap_force_to_gpu(pixmap,
+ MOVE_SOURCE_HINT | MOVE_READ))
+ return NULL;
+
+ return priv->gpu_bo;
+ }
w = box->x2 - box->x1;
h = box->y2 - box->y1;
@@ -584,9 +588,9 @@ sna_render_pixmap_bo(struct sna *sna,
static int sna_render_picture_downsample(struct sna *sna,
PicturePtr picture,
struct sna_composite_channel *channel,
- int16_t x, int16_t y,
- int16_t w, int16_t h,
- int16_t dst_x, int16_t dst_y)
+ const int16_t x, const int16_t y,
+ const int16_t w, const int16_t h,
+ const int16_t dst_x, const int16_t dst_y)
{
PixmapPtr pixmap = get_drawable_pixmap(picture->pDrawable);
ScreenPtr screen = pixmap->drawable.pScreen;
@@ -596,15 +600,12 @@ static int sna_render_picture_downsample(struct sna *sna,
pixman_transform_t t;
PixmapPtr tmp;
int width, height, size;
- int sx, sy, ox, oy, ow, oh;
+ int sx, sy, sw, sh;
int error, ret = 0;
BoxRec box, b;
- ow = w;
- oh = h;
-
- ox = box.x1 = x;
- oy = box.y1 = y;
+ box.x1 = x;
+ box.y1 = y;
box.x2 = x + w;
box.y2 = y + h;
if (channel->transform) {
@@ -612,12 +613,10 @@ static int sna_render_picture_downsample(struct sna *sna,
pixman_transform_bounds(channel->transform, &box);
- v.vector[0] = ox << 16;
- v.vector[1] = oy << 16;
- v.vector[2] = 1 << 16;
+ v.vector[0] = x << 16;
+ v.vector[1] = y << 16;
+ v.vector[2] = 1 << 16;
pixman_transform_point(channel->transform, &v);
- ox = v.vector[0] / v.vector[2];
- oy = v.vector[1] / v.vector[2];
}
if (channel->repeat == RepeatNone || channel->repeat == RepeatPad) {
@@ -645,33 +644,33 @@ static int sna_render_picture_downsample(struct sna *sna,
return sna_render_picture_fixup(sna,
picture,
channel,
- x, y, ow, oh,
+ x, y, w, h,
dst_x, dst_y);
}
}
}
- w = box.x2 - box.x1;
- h = box.y2 - box.y1;
+ sw = box.x2 - box.x1;
+ sh = box.y2 - box.y1;
DBG(("%s: sample (%d, %d), (%d, %d)\n",
__FUNCTION__, box.x1, box.y1, box.x2, box.y2));
- sx = (w + sna->render.max_3d_size - 1) / sna->render.max_3d_size;
- sy = (h + sna->render.max_3d_size - 1) / sna->render.max_3d_size;
+ sx = (sw + sna->render.max_3d_size - 1) / sna->render.max_3d_size;
+ sy = (sh + sna->render.max_3d_size - 1) / sna->render.max_3d_size;
DBG(("%s: scaling (%d, %d) down by %dx%d\n",
- __FUNCTION__, w, h, sx, sy));
+ __FUNCTION__, sw, sh, sx, sy));
- width = w / sx;
- height = h / sy;
+ width = sw / sx;
+ height = sh / sy;
DBG(("%s: creating temporary GPU bo %dx%d\n",
__FUNCTION__, width, height));
if (!sna_pixmap_force_to_gpu(pixmap, MOVE_SOURCE_HINT | MOVE_READ))
return sna_render_picture_fixup(sna, picture, channel,
- x, y, ow, oh,
+ x, y, w, h,
dst_x, dst_y);
tmp = screen->CreatePixmap(screen,
@@ -706,9 +705,9 @@ static int sna_render_picture_downsample(struct sna *sna,
*/
tmp_src->filter = PictFilterNearest;
memset(&t, 0, sizeof(t));
- t.matrix[0][0] = (w << 16) / width;
+ t.matrix[0][0] = (sw << 16) / width;
t.matrix[0][2] = box.x1 << 16;
- t.matrix[1][1] = (h << 16) / height;
+ t.matrix[1][1] = (sh << 16) / height;
t.matrix[1][2] = box.y1 << 16;
t.matrix[2][2] = 1 << 16;
tmp_src->transform = &t;
@@ -721,20 +720,20 @@ static int sna_render_picture_downsample(struct sna *sna,
while (size * size * 4 > sna->kgem.max_copy_tile_size)
size /= 2;
- w = size / sx - 2 * sx;
- h = size / sy - 2 * sy;
+ sw = size / sx - 2 * sx;
+ sh = size / sy - 2 * sy;
DBG(("%s %d:%d downsampling using %dx%d GPU tiles\n",
- __FUNCTION__, (width + w-1)/w, (height + h-1)/h, w, h));
+ __FUNCTION__, (width + sw-1)/sw, (height + sh-1)/sh, sw, sh));
for (b.y1 = 0; b.y1 < height; b.y1 = b.y2) {
- b.y2 = b.y1 + h;
+ b.y2 = b.y1 + sh;
if (b.y2 > height)
b.y2 = height;
for (b.x1 = 0; b.x1 < width; b.x1 = b.x2) {
struct sna_composite_op op;
- b.x2 = b.x1 + w;
+ b.x2 = b.x1 + sw;
if (b.x2 > width)
b.x2 = width;
diff --git a/src/sna/sna_video_overlay.c b/src/sna/sna_video_overlay.c
index 945818a..61b02b2 100644
--- a/src/sna/sna_video_overlay.c
+++ b/src/sna/sna_video_overlay.c
@@ -627,7 +627,6 @@ XF86VideoAdaptorPtr sna_video_overlay_setup(struct sna *sna,
{
XF86VideoAdaptorPtr adaptor;
struct sna_video *video;
- XF86AttributePtr att;
if (!sna_has_overlay(sna)) {
xf86DrvMsg(sna->scrn->scrnIndex, X_INFO,
@@ -664,17 +663,15 @@ XF86VideoAdaptorPtr sna_video_overlay_setup(struct sna *sna,
adaptor->nAttributes = NUM_ATTRIBUTES;
if (HAS_GAMMA(sna))
adaptor->nAttributes += GAMMA_ATTRIBUTES;
- adaptor->pAttributes =
+
+ adaptor->pAttributes =
xnfalloc(sizeof(XF86AttributeRec) * adaptor->nAttributes);
/* Now copy the attributes */
- att = adaptor->pAttributes;
- memcpy(att, Attributes, sizeof(XF86AttributeRec) * NUM_ATTRIBUTES);
- att += NUM_ATTRIBUTES;
- if (HAS_GAMMA(sna)) {
- memcpy(att, GammaAttributes,
+ memcpy(adaptor->pAttributes, Attributes, sizeof(XF86AttributeRec) * NUM_ATTRIBUTES);
+ if (HAS_GAMMA(sna))
+ memcpy(adaptor->pAttributes + NUM_ATTRIBUTES, GammaAttributes,
sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES);
- att += GAMMA_ATTRIBUTES;
- }
+
adaptor->nImages = NUM_IMAGES;
adaptor->pImages = (XF86ImagePtr)Images;
adaptor->PutVideo = NULL;
commit e499f207c161d1b3cd75f065dc89021ff5f40b63
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 13:11:17 2012 +0100
sna: Fix memleak from sna_crtc_find_plane()
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 37709ee..05d97b6 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -957,31 +957,41 @@ static const xf86CrtcFuncsRec sna_crtc_funcs = {
static uint32_t
sna_crtc_find_plane(struct sna *sna, int pipe)
{
- drmModePlaneRes *resources;
- uint32_t id = 0;
+ struct drm_mode_get_plane_res r;
+ uint32_t *planes, id = 0;
int i;
- resources = drmModeGetPlaneResources(sna->kgem.fd);
- if (!resources) {
- xf86DrvMsg(sna->scrn->scrnIndex, X_ERROR,
- "failed to get plane resources: %s\n",
- strerror(errno));
+ VG_CLEAR(r);
+ r.count_planes = 0;
+ if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPLANERESOURCES, &r))
+ return 0;
+
+ if (!r.count_planes)
return 0;
- }
- for (i = 0; id == 0 && i < resources->count_planes; i++) {
- drmModePlane *p;
+ planes = malloc(sizeof(uint32_t)*r.count_planes);
+ if (planes == NULL)
+ return 0;
+
+ r.plane_id_ptr = (uintptr_t)planes;
+ if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPLANERESOURCES, &r))
+ r.count_planes = 0;
- p = drmModeGetPlane(sna->kgem.fd, resources->planes[i]);
- if (p) {
- if (p->possible_crtcs & (1 << pipe))
- id = p->plane_id;
+ for (i = 0; i < r.count_planes; i++) {
+ struct drm_mode_get_plane p;
- drmModeFreePlane(p);
+ VG_CLEAR(p);
+ p.plane_id = planes[i];
+ p.count_format_types = 0;
+ if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPLANE, &p) == 0) {
+ if (p.possible_crtcs & (1 << pipe)) {
+ id = p.plane_id;
+ break;
+ }
}
}
+ free(planes);
- free(resources);
return id;
}
commit 49da55da518348fc6b88e09d5132dd1b1d751304
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 11:20:41 2012 +0100
sna: Free the reversed glyph bits along with the font
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 34f25ef..c26dc45 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -10503,6 +10503,9 @@ struct sna_font {
CharInfoRec glyphs8[256];
CharInfoRec *glyphs16[256];
};
+#define GLYPH_INVALID (void *)1
+#define GLYPH_EMPTY (void *)2
+#define GLYPH_CLEAR (void *)3
static Bool
sna_realize_font(ScreenPtr screen, FontPtr font)
@@ -10525,15 +10528,28 @@ static Bool
sna_unrealize_font(ScreenPtr screen, FontPtr font)
{
struct sna_font *priv = FontGetPrivate(font, sna_font_key);
- int n;
+ int i, j;
- if (priv) {
- for (n = 0; n < 256; n++)
- free(priv->glyphs16[n]);
- free(priv);
- FontSetPrivate(font, sna_font_key, NULL);
+ if (priv == NULL)
+ return TRUE;
+
+ for (i = 0; i < 256; i++) {
+ if ((uintptr_t)priv->glyphs8[i].bits & ~3)
+ free(priv->glyphs8[i].bits);
}
+ for (j = 0; j < 256; j++) {
+ if (priv->glyphs16[j] == NULL)
+ continue;
+
+ for (i = 0; i < 256; i++) {
+ if ((uintptr_t)priv->glyphs16[j][i].bits & ~3)
+ free(priv->glyphs16[j][i].bits);
+ }
+ free(priv->glyphs16[j]);
+ }
+ free(priv);
+ FontSetPrivate(font, sna_font_key, NULL);
return TRUE;
}
@@ -10634,10 +10650,10 @@ sna_glyph_blt(DrawablePtr drawable, GCPtr gc,
int w8 = (w + 7) >> 3;
int x1, y1, len;
- if (c->bits == (void *)1)
+ if (c->bits == GLYPH_EMPTY)
goto skip;
- if (!transparent && c->bits == (void *)2)
+ if (!transparent && c->bits == GLYPH_CLEAR)
goto skip;
len = (w8 * h + 7) >> 3 << 1;
@@ -10684,7 +10700,7 @@ sna_glyph_blt(DrawablePtr drawable, GCPtr gc,
b[0] = br00 | (1 + len);
b[1] = (uint16_t)y1 << 16 | (uint16_t)x1;
b[2] = (uint16_t)(y1+h) << 16 | (uint16_t)(x1+w);
- if (c->bits == (void *)2) {
+ if (c->bits == GLYPH_CLEAR) {
memset(b+3, 0, len*4);
} else {
uint64_t *src = (uint64_t *)c->bits;
@@ -10775,7 +10791,7 @@ static bool sna_set_glyph(CharInfoPtr in, CharInfoPtr out)
/* Skip empty glyphs */
if (w == 0 || h == 0 || ((w|h) == 1 && (in->bits[0] & 1) == 0)) {
- out->bits = (void *)1;
+ out->bits = GLYPH_EMPTY;
return true;
}
@@ -10799,7 +10815,7 @@ static bool sna_set_glyph(CharInfoPtr in, CharInfoPtr out)
if (clear) {
free(out->bits);
- out->bits = (void *)2;
+ out->bits = GLYPH_CLEAR;
}
return true;
@@ -10814,12 +10830,12 @@ inline static bool sna_get_glyph8(FontPtr font, struct sna_font *priv,
p = &priv->glyphs8[g];
if (p->bits) {
*out = p;
- return p->bits != (void*)-1;
+ return p->bits != GLYPH_INVALID;
}
font->get_glyphs(font, 1, &g, Linear8Bit, &n, &ret);
if (n == 0) {
- p->bits = (void*)-1;
+ p->bits = GLYPH_INVALID;
return false;
}
@@ -10839,14 +10855,14 @@ inline static bool sna_get_glyph16(FontPtr font, struct sna_font *priv,
p = &page[g&0xff];
if (p->bits) {
*out = p;
- return p->bits != (void*)-1;
+ return p->bits != GLYPH_INVALID;
}
font->get_glyphs(font, 1, (unsigned char *)&g,
FONTLASTROW(font) ? TwoD16Bit : Linear16Bit,
&n, &ret);
if (n == 0) {
- p->bits = (void*)-1;
+ p->bits = GLYPH_INVALID;
return false;
}
commit 9f68c7fe6aa34ab17d82489fca5f63a3ce335444
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 11:15:42 2012 +0100
sna: Free clip rectangles after intersection with PolyRectangle extents
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index e39f4a4..34f25ef 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -8031,6 +8031,7 @@ zero_clipped:
}
} while (--n);
}
+ RegionUninit(&clip);
}
goto done;
@@ -8208,6 +8209,7 @@ wide_clipped:
}
} while (--n);
}
+ RegionUninit(&clip);
}
goto done;
More information about the xorg-commit
mailing list