summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@mandolin.keithp.com>2007-01-06 18:19:34 -0800
committerKeith Packard <keithp@mandolin.keithp.com>2007-01-06 18:19:34 -0800
commit40af0ee6ba4ab7596fbc7fcc3ad04d109746ca6f (patch)
treec4868908a9db5b514ea1159024f2a38e381c7c5c
parent736d82a6b43f174cb95b425faacd4b0b889916fa (diff)
Numerous symbol scope issues.
I830EntityIndex is shared between 810 and newer driver. Move most EXA rendering state into I830 structure. Declare shared variables in shared header files rather than .c.
-rw-r--r--src/brw_structs.h2
-rw-r--r--src/common.h1
-rw-r--r--src/i810_driver.c2
-rw-r--r--src/i810_wmark.c3
-rw-r--r--src/i830.h13
-rw-r--r--src/i830_driver.c3
-rw-r--r--src/i830_edid_modes.c2
-rw-r--r--src/i830_exa.c59
-rw-r--r--src/i830_exa_render.c20
-rw-r--r--src/i830_xaa.c5
-rw-r--r--src/i915_exa_render.c80
-rw-r--r--src/i965_exa_render.c152
12 files changed, 166 insertions, 176 deletions
diff --git a/src/brw_structs.h b/src/brw_structs.h
index d2f9be0f..28d8e127 100644
--- a/src/brw_structs.h
+++ b/src/brw_structs.h
@@ -34,7 +34,7 @@ struct header
{
unsigned int length:16;
unsigned int opcode:16;
-} bits;
+};
union header_union
diff --git a/src/common.h b/src/common.h
index 540983b5..2035862f 100644
--- a/src/common.h
+++ b/src/common.h
@@ -77,6 +77,7 @@ extern const OptionInfoRec *I830AvailableOptions(int chipid, int busid);
extern void I830InitpScrn(ScrnInfoPtr pScrn);
/* Symbol lists shared by the i810 and i830 parts. */
+extern int I830EntityIndex;
extern const char *I810vgahwSymbols[];
extern const char *I810ramdacSymbols[];
extern const char *I810int10Symbols[];
diff --git a/src/i810_driver.c b/src/i810_driver.c
index 7574fb51..3d4c7d34 100644
--- a/src/i810_driver.c
+++ b/src/i810_driver.c
@@ -381,7 +381,7 @@ static int i810_pitches[] = {
#endif
#endif
-static int I830EntityIndex = -1;
+int I830EntityIndex = -1;
#ifdef XFree86LOADER
diff --git a/src/i810_wmark.c b/src/i810_wmark.c
index 85d55ef1..d21f6aa5 100644
--- a/src/i810_wmark.c
+++ b/src/i810_wmark.c
@@ -149,11 +149,14 @@ static struct wm_info i810_wm_24_100[] = {
{202.5, 0x44419000}
};
+#if 0
+/* not used */
static struct wm_info i810_wm_32_100[] = {
{0, 0x2210b000},
{60, 0x22415000}, /* 0x314000 works too */
{80, 0x22419000} /* 0x518000 works too */
};
+#endif
static struct wm_info i810_wm_8_133[] = {
{0, 0x22003000},
diff --git a/src/i830.h b/src/i830.h
index f89d0221..dc0d7688 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -379,6 +379,14 @@ typedef struct _I830Rec {
Bool *overlayOn;
#endif
+ /* EXA render state */
+ float scale_units[2][2];
+ Bool is_transform[2];
+ PictTransform *transform[2];
+ /* i915 EXA render state */
+ CARD32 mapstate[6];
+ CARD32 samplerstate[6];
+
Bool directRenderingDisabled; /* DRI disabled in PreInit. */
Bool directRenderingEnabled; /* DRI enabled this generation. */
@@ -495,6 +503,11 @@ typedef struct _I830Rec {
#define I830_SELECT_BACK 1
#define I830_SELECT_DEPTH 2
+#ifdef I830_USE_EXA
+extern const int I830PatternROP[16];
+extern const int I830CopyROP[16];
+#endif
+
/* I830 specific functions */
extern int I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis);
extern void I830SetPIOAccess(I830Ptr pI830);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index ffa391fc..29927985 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -322,9 +322,6 @@ static CARD32 I830CheckDevicesTimer(OsTimerPtr timer, CARD32 now, pointer arg);
static Bool SaveHWState(ScrnInfoPtr pScrn);
static Bool RestoreHWState(ScrnInfoPtr pScrn);
-
-extern int I830EntityIndex;
-
/* temporary */
extern void xf86SetCursor(ScreenPtr pScreen, CursorPtr pCurs, int x, int y);
diff --git a/src/i830_edid_modes.c b/src/i830_edid_modes.c
index 31ce1000..249f87a9 100644
--- a/src/i830_edid_modes.c
+++ b/src/i830_edid_modes.c
@@ -106,7 +106,7 @@ static const ddc_quirk_map_t ddc_quirks[] = {
#define MODEPREFIX(name) NULL, NULL, name, 0,M_T_DRIVER
#define MODESUFFIX 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0
-DisplayModeRec DDCEstablishedModes[17] = {
+static DisplayModeRec DDCEstablishedModes[17] = {
{ MODEPREFIX("800x600"), 40000, 800, 840, 968, 1056, 0, 600, 601, 605, 628, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@60Hz */
{ MODEPREFIX("800x600"), 36000, 800, 824, 896, 1024, 0, 600, 601, 603, 625, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@56Hz */
{ MODEPREFIX("640x480"), 31500, 640, 656, 720, 840, 0, 480, 481, 484, 500, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x480@75Hz */
diff --git a/src/i830_exa.c b/src/i830_exa.c
index f23816f9..02ac9036 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -57,9 +57,7 @@ do { \
} while(0)
#endif
-static float scale_units[2][2];
-
-const static int I830CopyROP[16] =
+const int I830CopyROP[16] =
{
ROP_0, /* GXclear */
ROP_DSa, /* GXand */
@@ -79,7 +77,7 @@ const static int I830CopyROP[16] =
ROP_1 /* GXset */
};
-const static int I830PatternROP[16] =
+const int I830PatternROP[16] =
{
ROP_0,
ROP_DPa,
@@ -111,9 +109,6 @@ union intfloat {
OUT_RING(tmp.ui); \
} while(0)
-static Bool is_transform[2];
-static PictTransform *transform[2];
-
extern Bool I830EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
extern Bool I830EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
PixmapPtr, PixmapPtr, PixmapPtr);
@@ -314,10 +309,10 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
"src_scale_x %f, src_scale_y %f, "
"mask_scale_x %f, mask_scale_y %f\n",
srcX, srcY, maskX, maskY, dstX, dstY, w, h,
- scale_units[0][0], scale_units[0][1],
- scale_units[1][0], scale_units[1][1]);
+ pI830->scale_units[0][0], pI830->scale_units[0][1],
+ pI830->scale_units[1][0], pI830->scale_units[1][1]);
- if (scale_units[1][0] == -1 || scale_units[1][1] == -1) {
+ if (pI830->scale_units[1][0] == -1 || pI830->scale_units[1][1] == -1) {
pMask = 0;
}
@@ -325,31 +320,31 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
srcYend = srcY + h;
maskXend = maskX + w;
maskYend = maskY + h;
- if (is_transform[0]) {
+ if (pI830->is_transform[0]) {
v.vector[0] = IntToxFixed(srcX);
v.vector[1] = IntToxFixed(srcY);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[0], &v);
+ PictureTransformPoint(pI830->transform[0], &v);
srcX = xFixedToInt(v.vector[0]);
srcY = xFixedToInt(v.vector[1]);
v.vector[0] = IntToxFixed(srcXend);
v.vector[1] = IntToxFixed(srcYend);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[0], &v);
+ PictureTransformPoint(pI830->transform[0], &v);
srcXend = xFixedToInt(v.vector[0]);
srcYend = xFixedToInt(v.vector[1]);
}
- if (is_transform[1]) {
+ if (pI830->is_transform[1]) {
v.vector[0] = IntToxFixed(maskX);
v.vector[1] = IntToxFixed(maskY);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[1], &v);
+ PictureTransformPoint(pI830->transform[1], &v);
maskX = xFixedToInt(v.vector[0]);
maskY = xFixedToInt(v.vector[1]);
v.vector[0] = IntToxFixed(maskXend);
v.vector[1] = IntToxFixed(maskYend);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[1], &v);
+ PictureTransformPoint(pI830->transform[1], &v);
maskXend = xFixedToInt(v.vector[0]);
maskYend = xFixedToInt(v.vector[1]);
}
@@ -378,38 +373,38 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
OUT_RING_F(dstX);
OUT_RING_F(dstY);
- OUT_RING_F(srcX / scale_units[0][0]);
- OUT_RING_F(srcY / scale_units[0][1]);
+ OUT_RING_F(srcX / pI830->scale_units[0][0]);
+ OUT_RING_F(srcY / pI830->scale_units[0][1]);
if (pMask) {
- OUT_RING_F(maskX / scale_units[1][0]);
- OUT_RING_F(maskY / scale_units[1][1]);
+ OUT_RING_F(maskX / pI830->scale_units[1][0]);
+ OUT_RING_F(maskY / pI830->scale_units[1][1]);
}
OUT_RING_F(dstX);
OUT_RING_F(dstY + h);
- OUT_RING_F(srcX / scale_units[0][0]);
- OUT_RING_F(srcYend / scale_units[0][1]);
+ OUT_RING_F(srcX / pI830->scale_units[0][0]);
+ OUT_RING_F(srcYend / pI830->scale_units[0][1]);
if (pMask) {
- OUT_RING_F(maskX / scale_units[1][0]);
- OUT_RING_F(maskYend / scale_units[1][1]);
+ OUT_RING_F(maskX / pI830->scale_units[1][0]);
+ OUT_RING_F(maskYend / pI830->scale_units[1][1]);
}
OUT_RING_F(dstX + w);
OUT_RING_F(dstY + h);
- OUT_RING_F(srcXend / scale_units[0][0]);
- OUT_RING_F(srcYend / scale_units[0][1]);
+ OUT_RING_F(srcXend / pI830->scale_units[0][0]);
+ OUT_RING_F(srcYend / pI830->scale_units[0][1]);
if (pMask) {
- OUT_RING_F(maskXend / scale_units[1][0]);
- OUT_RING_F(maskYend / scale_units[1][1]);
+ OUT_RING_F(maskXend / pI830->scale_units[1][0]);
+ OUT_RING_F(maskYend / pI830->scale_units[1][1]);
}
OUT_RING_F(dstX + w);
OUT_RING_F(dstY);
- OUT_RING_F(srcXend / scale_units[0][0]);
- OUT_RING_F(srcY / scale_units[0][1]);
+ OUT_RING_F(srcXend / pI830->scale_units[0][0]);
+ OUT_RING_F(srcY / pI830->scale_units[0][1]);
if (pMask) {
- OUT_RING_F(maskXend / scale_units[1][0]);
- OUT_RING_F(maskY / scale_units[1][1]);
+ OUT_RING_F(maskXend / pI830->scale_units[1][0]);
+ OUT_RING_F(maskY / pI830->scale_units[1][1]);
}
ADVANCE_LP_RING();
}
diff --git a/src/i830_exa_render.c b/src/i830_exa_render.c
index f63313f3..5e202c87 100644
--- a/src/i830_exa_render.c
+++ b/src/i830_exa_render.c
@@ -51,10 +51,6 @@ do { \
} while(0)
#endif
-extern float scale_units[2][2];
-extern Bool is_transform[2];
-extern PictTransform *transform[2];
-
struct blendinfo {
Bool dst_alpha;
Bool src_alpha;
@@ -274,8 +270,8 @@ I830TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
pitch = exaGetPixmapPitch(pPix);
w = pPict->pDrawable->width;
h = pPict->pDrawable->height;
- scale_units[unit][0] = pPix->drawable.width;
- scale_units[unit][1] = pPix->drawable.height;
+ pI830->scale_units[unit][0] = pPix->drawable.width;
+ pI830->scale_units[unit][1] = pPix->drawable.height;
for (i = 0; i < sizeof(I830TexFormats) / sizeof(I830TexFormats[0]); i++) {
if (I830TexFormats[i].fmt == pPict->format)
@@ -344,10 +340,10 @@ I830TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
/* XXX */
if (pPict->transform != 0) {
- is_transform[unit] = TRUE;
- transform[unit] = pPict->transform;
+ pI830->is_transform[unit] = TRUE;
+ pI830->transform[unit] = pPict->transform;
} else {
- is_transform[unit] = FALSE;
+ pI830->is_transform[unit] = FALSE;
}
#ifdef I830DEBUG
@@ -412,9 +408,9 @@ I830EXAPrepareComposite(int op, PicturePtr pSrcPicture,
if (!I830TextureSetup(pMaskPicture, pMask, 1))
I830FALLBACK("fail to setup mask texture\n");
} else {
- is_transform[1] = FALSE;
- scale_units[1][0] = -1;
- scale_units[1][1] = -1;
+ pI830->is_transform[1] = FALSE;
+ pI830->scale_units[1][0] = -1;
+ pI830->scale_units[1][1] = -1;
}
{
diff --git a/src/i830_xaa.c b/src/i830_xaa.c
index cad9c71b..13ba7432 100644
--- a/src/i830_xaa.c
+++ b/src/i830_xaa.c
@@ -91,11 +91,6 @@ static void I830SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno);
#endif
static void I830RestoreAccelState(ScrnInfoPtr pScrn);
-#ifdef I830_USE_EXA
-extern const int I830PatternROP[16];
-extern const int I830CopyROP[16];
-#endif
-
Bool
I830XAAInit(ScreenPtr pScreen)
{
diff --git a/src/i915_exa_render.c b/src/i915_exa_render.c
index cefa15cd..640ebd9e 100644
--- a/src/i915_exa_render.c
+++ b/src/i915_exa_render.c
@@ -52,12 +52,6 @@ do { \
} while(0)
#endif
-extern float scale_units[2][2];
-extern Bool is_transform[2];
-extern PictTransform *transform[2];
-static CARD32 mapstate[6];
-static CARD32 samplerstate[6];
-
struct formatinfo {
int fmt;
CARD32 card_fmt;
@@ -267,8 +261,8 @@ I915TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
pitch = exaGetPixmapPitch(pPix);
w = pPict->pDrawable->width;
h = pPict->pDrawable->height;
- scale_units[unit][0] = pPix->drawable.width;
- scale_units[unit][1] = pPix->drawable.height;
+ pI830->scale_units[unit][0] = pPix->drawable.width;
+ pI830->scale_units[unit][1] = pPix->drawable.height;
for (i = 0; i < sizeof(I915TexFormats) / sizeof(I915TexFormats[0]); i++) {
if (I915TexFormats[i].fmt == pPict->format)
@@ -295,27 +289,27 @@ I915TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
I830FALLBACK("Bad filter 0x%x\n", pPict->filter);
}
- mapstate[unit * 3 + 0] = offset;
- mapstate[unit * 3 + 1] = format |
+ pI830->mapstate[unit * 3 + 0] = offset;
+ pI830->mapstate[unit * 3 + 1] = format |
((pPix->drawable.height - 1) << MS3_HEIGHT_SHIFT) |
((pPix->drawable.width - 1) << MS3_WIDTH_SHIFT);
if (!pI830->disableTiling)
- samplerstate[unit * 3 + 1] |= MS3_USE_FENCE_REGS;
- mapstate[unit * 3 + 2] = ((pitch / 4) - 1) << MS4_PITCH_SHIFT;
+ pI830->samplerstate[unit * 3 + 1] |= MS3_USE_FENCE_REGS;
+ pI830->mapstate[unit * 3 + 2] = ((pitch / 4) - 1) << MS4_PITCH_SHIFT;
- samplerstate[unit * 3 + 0] = (MIPFILTER_NONE << SS2_MIP_FILTER_SHIFT);
- samplerstate[unit * 3 + 0] |= filter;
- samplerstate[unit * 3 + 1] = SS3_NORMALIZED_COORDS;
- samplerstate[unit * 3 + 1] |= wrap_mode << SS3_TCX_ADDR_MODE_SHIFT;
- samplerstate[unit * 3 + 1] |= wrap_mode << SS3_TCY_ADDR_MODE_SHIFT;
- samplerstate[unit * 3 + 1] |= unit << SS3_TEXTUREMAP_INDEX_SHIFT;
- samplerstate[unit * 3 + 2] = 0x00000000; /* border color */
+ pI830->samplerstate[unit * 3 + 0] = (MIPFILTER_NONE << SS2_MIP_FILTER_SHIFT);
+ pI830->samplerstate[unit * 3 + 0] |= filter;
+ pI830->samplerstate[unit * 3 + 1] = SS3_NORMALIZED_COORDS;
+ pI830->samplerstate[unit * 3 + 1] |= wrap_mode << SS3_TCX_ADDR_MODE_SHIFT;
+ pI830->samplerstate[unit * 3 + 1] |= wrap_mode << SS3_TCY_ADDR_MODE_SHIFT;
+ pI830->samplerstate[unit * 3 + 1] |= unit << SS3_TEXTUREMAP_INDEX_SHIFT;
+ pI830->samplerstate[unit * 3 + 2] = 0x00000000; /* border color */
if (pPict->transform != 0) {
- is_transform[unit] = TRUE;
- transform[unit] = pPict->transform;
+ pI830->is_transform[unit] = TRUE;
+ pI830->transform[unit] = pPict->transform;
} else {
- is_transform[unit] = FALSE;
+ pI830->is_transform[unit] = FALSE;
}
return TRUE;
@@ -348,44 +342,44 @@ I915EXAPrepareComposite(int op, PicturePtr pSrcPicture,
if (!I915TextureSetup(pMaskPicture, pMask, 1))
I830FALLBACK("fail to setup mask texture\n");
} else {
- is_transform[1] = FALSE;
- scale_units[1][0] = -1;
- scale_units[1][1] = -1;
+ pI830->is_transform[1] = FALSE;
+ pI830->scale_units[1][0] = -1;
+ pI830->scale_units[1][1] = -1;
}
if (pMask == NULL) {
BEGIN_LP_RING(10);
OUT_RING(_3DSTATE_MAP_STATE | 3);
OUT_RING(0x00000001); /* map 0 */
- OUT_RING(mapstate[0]);
- OUT_RING(mapstate[1]);
- OUT_RING(mapstate[2]);
+ OUT_RING(pI830->mapstate[0]);
+ OUT_RING(pI830->mapstate[1]);
+ OUT_RING(pI830->mapstate[2]);
OUT_RING(_3DSTATE_SAMPLER_STATE | 3);
OUT_RING(0x00000001); /* sampler 0 */
- OUT_RING(samplerstate[0]);
- OUT_RING(samplerstate[1]);
- OUT_RING(samplerstate[2]);
+ OUT_RING(pI830->samplerstate[0]);
+ OUT_RING(pI830->samplerstate[1]);
+ OUT_RING(pI830->samplerstate[2]);
ADVANCE_LP_RING();
} else {
BEGIN_LP_RING(16);
OUT_RING(_3DSTATE_MAP_STATE | 6);
OUT_RING(0x00000003); /* map 0,1 */
- OUT_RING(mapstate[0]);
- OUT_RING(mapstate[1]);
- OUT_RING(mapstate[2]);
- OUT_RING(mapstate[3]);
- OUT_RING(mapstate[4]);
- OUT_RING(mapstate[5]);
+ OUT_RING(pI830->mapstate[0]);
+ OUT_RING(pI830->mapstate[1]);
+ OUT_RING(pI830->mapstate[2]);
+ OUT_RING(pI830->mapstate[3]);
+ OUT_RING(pI830->mapstate[4]);
+ OUT_RING(pI830->mapstate[5]);
OUT_RING(_3DSTATE_SAMPLER_STATE | 6);
OUT_RING(0x00000003); /* sampler 0,1 */
- OUT_RING(samplerstate[0]);
- OUT_RING(samplerstate[1]);
- OUT_RING(samplerstate[2]);
- OUT_RING(samplerstate[3]);
- OUT_RING(samplerstate[4]);
- OUT_RING(samplerstate[5]);
+ OUT_RING(pI830->samplerstate[0]);
+ OUT_RING(pI830->samplerstate[1]);
+ OUT_RING(pI830->samplerstate[2]);
+ OUT_RING(pI830->samplerstate[3]);
+ OUT_RING(pI830->samplerstate[4]);
+ OUT_RING(pI830->samplerstate[5]);
ADVANCE_LP_RING();
}
{
diff --git a/src/i965_exa_render.c b/src/i965_exa_render.c
index 583bc261..89581e91 100644
--- a/src/i965_exa_render.c
+++ b/src/i965_exa_render.c
@@ -71,10 +71,6 @@ I965EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
static void I965GetBlendCntl(int op, PicturePtr pMask, CARD32 dst_format,
CARD32 *sblend, CARD32 *dblend);
-extern float scale_units[2][2];
-extern Bool is_transform[2];
-extern PictTransform *transform[2];
-
struct blendinfo {
Bool dst_alpha;
Bool src_alpha;
@@ -267,46 +263,46 @@ I965EXACheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define BRW_GRF_BLOCKS(nreg) ((nreg + 15) / 16 - 1)
-int urb_vs_start, urb_vs_size;
-int urb_gs_start, urb_gs_size;
-int urb_clip_start, urb_clip_size;
-int urb_sf_start, urb_sf_size;
-int urb_cs_start, urb_cs_size;
-
-struct brw_surface_state *dest_surf_state;
-struct brw_surface_state *src_surf_state;
-struct brw_surface_state *mask_surf_state;
-struct brw_sampler_state *src_sampler_state;
-struct brw_sampler_state *mask_sampler_state;
-struct brw_sampler_default_color *default_color_state;
-
-struct brw_vs_unit_state *vs_state;
-struct brw_sf_unit_state *sf_state;
-struct brw_wm_unit_state *wm_state;
-struct brw_cc_unit_state *cc_state;
-struct brw_cc_viewport *cc_viewport;
-
-struct brw_instruction *sf_kernel;
-struct brw_instruction *ps_kernel;
-struct brw_instruction *sip_kernel;
-
-CARD32 *binding_table;
-int binding_table_entries;
-
-int dest_surf_offset, src_surf_offset, mask_surf_offset;
-int src_sampler_offset, mask_sampler_offset,vs_offset;
-int sf_offset, wm_offset, cc_offset, vb_offset, cc_viewport_offset;
-int sf_kernel_offset, ps_kernel_offset, sip_kernel_offset;
-int wm_scratch_offset;
-int binding_table_offset;
-int default_color_offset;
-int next_offset, total_state_size;
-char *state_base;
-int state_base_offset;
-float *vb;
-int vb_size = (4 * 4) * 4 ; /* 4 DWORDS per vertex*/
-
-CARD32 src_blend, dst_blend;
+static int urb_vs_start, urb_vs_size;
+static int urb_gs_start, urb_gs_size;
+static int urb_clip_start, urb_clip_size;
+static int urb_sf_start, urb_sf_size;
+static int urb_cs_start, urb_cs_size;
+
+static struct brw_surface_state *dest_surf_state;
+static struct brw_surface_state *src_surf_state;
+static struct brw_surface_state *mask_surf_state;
+static struct brw_sampler_state *src_sampler_state;
+static struct brw_sampler_state *mask_sampler_state;
+static struct brw_sampler_default_color *default_color_state;
+
+static struct brw_vs_unit_state *vs_state;
+static struct brw_sf_unit_state *sf_state;
+static struct brw_wm_unit_state *wm_state;
+static struct brw_cc_unit_state *cc_state;
+static struct brw_cc_viewport *cc_viewport;
+
+static struct brw_instruction *sf_kernel;
+static struct brw_instruction *ps_kernel;
+static struct brw_instruction *sip_kernel;
+
+static CARD32 *binding_table;
+static int binding_table_entries;
+
+static int dest_surf_offset, src_surf_offset, mask_surf_offset;
+static int src_sampler_offset, mask_sampler_offset,vs_offset;
+static int sf_offset, wm_offset, cc_offset, vb_offset, cc_viewport_offset;
+static int sf_kernel_offset, ps_kernel_offset, sip_kernel_offset;
+static int wm_scratch_offset;
+static int binding_table_offset;
+static int default_color_offset;
+static int next_offset, total_state_size;
+static char *state_base;
+static int state_base_offset;
+static float *vb;
+static int vb_size = (4 * 4) * 4 ; /* 4 DWORDS per vertex*/
+
+static CARD32 src_blend, dst_blend;
static const CARD32 sip_kernel_static[][4] = {
/* wait (1) a0<1>UW a145<0,1,0>UW { align1 + } */
@@ -394,27 +390,27 @@ I965EXAPrepareComposite(int op, PicturePtr pSrcPicture,
mask_offset = exaGetPixmapOffset(pMask);
mask_pitch = exaGetPixmapPitch(pMask);
}
- scale_units[0][0] = pSrc->drawable.width;
- scale_units[0][1] = pSrc->drawable.height;
+ pI830->scale_units[0][0] = pSrc->drawable.width;
+ pI830->scale_units[0][1] = pSrc->drawable.height;
if (pSrcPicture->transform) {
- is_transform[0] = TRUE;
- transform[0] = pSrcPicture->transform;
+ pI830->is_transform[0] = TRUE;
+ pI830->transform[0] = pSrcPicture->transform;
} else
- is_transform[0] = FALSE;
+ pI830->is_transform[0] = FALSE;
if (!pMask) {
- is_transform[1] = FALSE;
- scale_units[1][0] = -1;
- scale_units[1][1] = -1;
+ pI830->is_transform[1] = FALSE;
+ pI830->scale_units[1][0] = -1;
+ pI830->scale_units[1][1] = -1;
} else {
if (pMaskPicture->transform) {
- is_transform[1] = TRUE;
- transform[1] = pMaskPicture->transform;
+ pI830->is_transform[1] = TRUE;
+ pI830->transform[1] = pMaskPicture->transform;
} else
- is_transform[1] = FALSE;
- scale_units[1][0] = pMask->drawable.width;
- scale_units[1][1] = pMask->drawable.height;
+ pI830->is_transform[1] = FALSE;
+ pI830->scale_units[1][0] = pMask->drawable.width;
+ pI830->scale_units[1][1] = pMask->drawable.height;
}
/* setup 3d pipeline state */
@@ -996,10 +992,10 @@ I965EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
"src_scale_x %f, src_scale_y %f, "
"mask_scale_x %f, mask_scale_y %f\n",
srcX, srcY, maskX, maskY, dstX, dstY, w, h,
- scale_units[0][0], scale_units[0][1],
- scale_units[1][0], scale_units[1][1]);
+ pI830->scale_units[0][0], pI830->scale_units[0][1],
+ pI830->scale_units[1][0], pI830->scale_units[1][1]);
- if (scale_units[1][0] == -1 || scale_units[1][1] == -1) {
+ if (pI830->scale_units[1][0] == -1 || pI830->scale_units[1][1] == -1) {
pMask = 0;
}
@@ -1007,31 +1003,31 @@ I965EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
srcYend = srcY + h;
maskXend = maskX + w;
maskYend = maskY + h;
- if (is_transform[0]) {
+ if (pI830->is_transform[0]) {
v.vector[0] = IntToxFixed(srcX);
v.vector[1] = IntToxFixed(srcY);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[0], &v);
+ PictureTransformPoint(pI830->transform[0], &v);
srcX = xFixedToInt(v.vector[0]);
srcY = xFixedToInt(v.vector[1]);
v.vector[0] = IntToxFixed(srcXend);
v.vector[1] = IntToxFixed(srcYend);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[0], &v);
+ PictureTransformPoint(pI830->transform[0], &v);
srcXend = xFixedToInt(v.vector[0]);
srcYend = xFixedToInt(v.vector[1]);
}
- if (is_transform[1]) {
+ if (pI830->is_transform[1]) {
v.vector[0] = IntToxFixed(maskX);
v.vector[1] = IntToxFixed(maskY);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[1], &v);
+ PictureTransformPoint(pI830->transform[1], &v);
maskX = xFixedToInt(v.vector[0]);
maskY = xFixedToInt(v.vector[1]);
v.vector[0] = IntToxFixed(maskXend);
v.vector[1] = IntToxFixed(maskYend);
v.vector[2] = xFixed1;
- PictureTransformPoint(transform[1], &v);
+ PictureTransformPoint(pI830->transform[1], &v);
maskXend = xFixedToInt(v.vector[0]);
maskYend = xFixedToInt(v.vector[1]);
}
@@ -1043,31 +1039,31 @@ I965EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
i = 0;
/* rect (x2,y2) */
- vb[i++] = (float)(srcXend) / scale_units[0][0];
- vb[i++] = (float)(srcYend) / scale_units[0][1];
+ vb[i++] = (float)(srcXend) / pI830->scale_units[0][0];
+ vb[i++] = (float)(srcYend) / pI830->scale_units[0][1];
if (pMask) {
- vb[i++] = (float)maskXend / scale_units[1][0];
- vb[i++] = (float)maskYend / scale_units[1][1];
+ vb[i++] = (float)maskXend / pI830->scale_units[1][0];
+ vb[i++] = (float)maskYend / pI830->scale_units[1][1];
}
vb[i++] = (float)(dstX + w);
vb[i++] = (float)(dstY + h);
/* rect (x1,y2) */
- vb[i++] = (float)(srcX)/ scale_units[0][0];
- vb[i++] = (float)(srcYend)/ scale_units[0][1];
+ vb[i++] = (float)(srcX)/ pI830->scale_units[0][0];
+ vb[i++] = (float)(srcYend)/ pI830->scale_units[0][1];
if (pMask) {
- vb[i++] = (float)maskX / scale_units[1][0];
- vb[i++] = (float)maskYend / scale_units[1][1];
+ vb[i++] = (float)maskX / pI830->scale_units[1][0];
+ vb[i++] = (float)maskYend / pI830->scale_units[1][1];
}
vb[i++] = (float)dstX;
vb[i++] = (float)(dstY + h);
/* rect (x1,y1) */
- vb[i++] = (float)(srcX) / scale_units[0][0];
- vb[i++] = (float)(srcY) / scale_units[0][1];
+ vb[i++] = (float)(srcX) / pI830->scale_units[0][0];
+ vb[i++] = (float)(srcY) / pI830->scale_units[0][1];
if (pMask) {
- vb[i++] = (float)maskX / scale_units[1][0];
- vb[i++] = (float)maskY / scale_units[1][1];
+ vb[i++] = (float)maskX / pI830->scale_units[1][0];
+ vb[i++] = (float)maskY / pI830->scale_units[1][1];
}
vb[i++] = (float)dstX;
vb[i++] = (float)dstY;