diff options
author | Keith Packard <keithp@neko.keithp.com> | 2007-01-08 10:14:24 -0800 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2007-01-08 10:14:24 -0800 |
commit | 66546d8a8006e1c828e18ccab850214fd8d56b63 (patch) | |
tree | 0075ed33fb9743ff094f8ae875876251c652c232 | |
parent | 0fd2752f199928f846fe03c9087f7b6d48cc28d9 (diff) | |
parent | 40af0ee6ba4ab7596fbc7fcc3ad04d109746ca6f (diff) |
Merge branch 'modesetting-origin' into modesetting
-rw-r--r-- | src/brw_structs.h | 2 | ||||
-rw-r--r-- | src/common.h | 1 | ||||
-rw-r--r-- | src/i810_driver.c | 2 | ||||
-rw-r--r-- | src/i810_wmark.c | 3 | ||||
-rw-r--r-- | src/i830.h | 13 | ||||
-rw-r--r-- | src/i830_driver.c | 3 | ||||
-rw-r--r-- | src/i830_edid_modes.c | 2 | ||||
-rw-r--r-- | src/i830_exa.c | 59 | ||||
-rw-r--r-- | src/i830_exa_render.c | 20 | ||||
-rw-r--r-- | src/i830_xaa.c | 5 | ||||
-rw-r--r-- | src/i915_exa_render.c | 80 | ||||
-rw-r--r-- | src/i965_exa_render.c | 152 |
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}, @@ -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; |