summaryrefslogtreecommitdiff
path: root/src/gx_video.c
diff options
context:
space:
mode:
authorMartin-Éric Racine <martin-eric.racine@iki.fi>2012-07-11 15:50:28 +0300
committerMartin-Éric Racine <martin-eric.racine@iki.fi>2012-07-11 15:50:28 +0300
commit1ed67d70ac9d3afd9b372c311aaf7b77e38b3e21 (patch)
tree134ec66d59b987c039a0690707d51fb15c99dd60 /src/gx_video.c
parentb9afafec0a26eaec49e7f0ff08297c2bb795a9c2 (diff)
Whitespace cleanup using ../modular/x-indent.sh
Diffstat (limited to 'src/gx_video.c')
-rw-r--r--src/gx_video.c1016
1 files changed, 514 insertions, 502 deletions
diff --git a/src/gx_video.c b/src/gx_video.c
index f475bb6..fef7764 100644
--- a/src/gx_video.c
+++ b/src/gx_video.c
@@ -60,7 +60,7 @@
#include "fourcc.h"
#include "geode_fourcc.h"
-#define OFF_DELAY 200 /* milliseconds */
+#define OFF_DELAY 200 /* milliseconds */
#define FREE_DELAY 60000
#define OFF_TIMER 0x01
@@ -97,15 +97,16 @@ static void GXStopVideo(ScrnInfoPtr, pointer, Bool);
static int GXSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
static int GXGetPortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
static void GXQueryBestSize(ScrnInfoPtr, Bool,
- short, short, short, short, unsigned int *, unsigned int *, pointer);
+ short, short, short, short, unsigned int *,
+ unsigned int *, pointer);
static int GXPutImage(ScrnInfoPtr, short, short, short, short, short, short,
- short, short, int, unsigned char *, short, short, Bool,
- RegionPtr, pointer, DrawablePtr pDraw);
+ short, short, int, unsigned char *, short, short, Bool,
+ RegionPtr, pointer, DrawablePtr pDraw);
static void GXBlockHandler(int, pointer, pointer, pointer);
void GXSetVideoPosition(int x, int y, int width, int height,
- short src_w, short src_h, short drw_w,
- short drw_h, int id, int offset, ScrnInfoPtr pScrni);
+ short src_w, short src_h, short drw_w,
+ short drw_h, int id, int offset, ScrnInfoPtr pScrni);
extern void GXAccelSync(ScrnInfoPtr pScrni);
@@ -118,9 +119,9 @@ static int lutflag = 0;
static Atom xvColorKey, xvColorKeyMode, xvFilter
#if DBUF
- , xvDoubleBuffer
+, xvDoubleBuffer
#endif
- ;
+;
#define PALETTE_ADDRESS 0x038
#define PALETTE_DATA 0x040
@@ -136,7 +137,7 @@ get_gamma_ram(unsigned long *lut)
gfx_write_vid32(PALETTE_ADDRESS, 0);
for (i = 0; i < 256; i++)
- lut[i] = gfx_read_vid32(PALETTE_DATA);
+ lut[i] = gfx_read_vid32(PALETTE_DATA);
}
/*----------------------------------------------------------------------------
@@ -166,50 +167,50 @@ GXInitVideo(ScreenPtr pScrn)
pGeode = GEODEPTR(pScrni);
if (!pGeode->NoAccel) {
- XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
- XF86VideoAdaptorPtr newAdaptor = NULL;
-
- int num_adaptors;
-
- newAdaptor = GXSetupImageVideo(pScrn);
- GXInitOffscreenImages(pScrn);
-
- num_adaptors = xf86XVListGenericAdaptors(pScrni, &adaptors);
-
- if (newAdaptor) {
- if (!num_adaptors) {
- num_adaptors = 1;
- adaptors = &newAdaptor;
- } else {
- newAdaptors = /* need to free this someplace */
- malloc((num_adaptors +
- 1) * sizeof(XF86VideoAdaptorPtr *));
- if (newAdaptors) {
- memcpy(newAdaptors, adaptors, num_adaptors *
- sizeof(XF86VideoAdaptorPtr));
- newAdaptors[num_adaptors] = newAdaptor;
- adaptors = newAdaptors;
- num_adaptors++;
- }
- }
- }
-
- if (num_adaptors)
- xf86XVScreenInit(pScrn, adaptors, num_adaptors);
-
- if (newAdaptors)
- free(newAdaptors);
+ XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
+ XF86VideoAdaptorPtr newAdaptor = NULL;
+
+ int num_adaptors;
+
+ newAdaptor = GXSetupImageVideo(pScrn);
+ GXInitOffscreenImages(pScrn);
+
+ num_adaptors = xf86XVListGenericAdaptors(pScrni, &adaptors);
+
+ if (newAdaptor) {
+ if (!num_adaptors) {
+ num_adaptors = 1;
+ adaptors = &newAdaptor;
+ }
+ else {
+ newAdaptors = /* need to free this someplace */
+ malloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *));
+ if (newAdaptors) {
+ memcpy(newAdaptors, adaptors, num_adaptors *
+ sizeof(XF86VideoAdaptorPtr));
+ newAdaptors[num_adaptors] = newAdaptor;
+ adaptors = newAdaptors;
+ num_adaptors++;
+ }
+ }
+ }
+
+ if (num_adaptors)
+ xf86XVScreenInit(pScrn, adaptors, num_adaptors);
+
+ if (newAdaptors)
+ free(newAdaptors);
}
}
/* client libraries expect an encoding */
static XF86VideoEncodingRec DummyEncoding[1] = {
{
- 0,
- "XV_IMAGE",
- 1024, 1024,
- {1, 1}
- }
+ 0,
+ "XV_IMAGE",
+ 1024, 1024,
+ {1, 1}
+ }
};
#define NUM_FORMATS 4
@@ -246,8 +247,7 @@ static XF86ImageRec Images[NUM_IMAGES] = {
XVIMAGE_RGB565
};
-typedef struct
-{
+typedef struct {
void *area;
int offset;
RegionRec clip;
@@ -291,35 +291,35 @@ GXSetColorkey(ScrnInfoPtr pScrni, GeodePortPrivRec * pPriv)
switch (pScrni->depth) {
case 8:
- GFX(get_display_palette_entry(pPriv->colorKey & 0xFF, &key));
- red = ((key >> 16) & 0xFF);
- green = ((key >> 8) & 0xFF);
- blue = (key & 0xFF);
- break;
+ GFX(get_display_palette_entry(pPriv->colorKey & 0xFF, &key));
+ red = ((key >> 16) & 0xFF);
+ green = ((key >> 8) & 0xFF);
+ blue = (key & 0xFF);
+ break;
case 16:
- red = (pPriv->colorKey & pScrni->mask.red) >>
- pScrni->offset.red << (8 - pScrni->weight.red);
- green = (pPriv->colorKey & pScrni->mask.green) >>
- pScrni->offset.green << (8 - pScrni->weight.green);
- blue = (pPriv->colorKey & pScrni->mask.blue) >>
- pScrni->offset.blue << (8 - pScrni->weight.blue);
- break;
+ red = (pPriv->colorKey & pScrni->mask.red) >>
+ pScrni->offset.red << (8 - pScrni->weight.red);
+ green = (pPriv->colorKey & pScrni->mask.green) >>
+ pScrni->offset.green << (8 - pScrni->weight.green);
+ blue = (pPriv->colorKey & pScrni->mask.blue) >>
+ pScrni->offset.blue << (8 - pScrni->weight.blue);
+ break;
default:
- /* for > 16 bpp we send in the mask in xf86SetWeight. This
- * function is providing the offset by 1 more. So we take
- * this as a special case and subtract 1 for > 16
- */
- red = (pPriv->colorKey & pScrni->mask.red) >>
- (pScrni->offset.red - 1) << (8 - pScrni->weight.red);
- green = (pPriv->colorKey & pScrni->mask.green) >>
- (pScrni->offset.green - 1) << (8 - pScrni->weight.green);
- blue = (pPriv->colorKey & pScrni->mask.blue) >>
- (pScrni->offset.blue - 1) << (8 - pScrni->weight.blue);
- break;
+ /* for > 16 bpp we send in the mask in xf86SetWeight. This
+ * function is providing the offset by 1 more. So we take
+ * this as a special case and subtract 1 for > 16
+ */
+ red = (pPriv->colorKey & pScrni->mask.red) >>
+ (pScrni->offset.red - 1) << (8 - pScrni->weight.red);
+ green = (pPriv->colorKey & pScrni->mask.green) >>
+ (pScrni->offset.green - 1) << (8 - pScrni->weight.green);
+ blue = (pPriv->colorKey & pScrni->mask.blue) >>
+ (pScrni->offset.blue - 1) << (8 - pScrni->weight.blue);
+ break;
}
GFX(set_video_color_key((blue | (green << 8) | (red << 16)), 0xFFFFFF,
- (pPriv->colorKeyMode == 0)));
+ (pPriv->colorKeyMode == 0)));
REGION_EMPTY(pScrni->pScreen, &pPriv->clip);
return 0;
}
@@ -344,11 +344,11 @@ GXResetVideo(ScrnInfoPtr pScrni)
GeodeRec *pGeode = GEODEPTR(pScrni);
if (!pGeode->NoAccel) {
- GeodePortPrivRec *pPriv = pGeode->adaptor->pPortPrivates[0].ptr;
+ GeodePortPrivRec *pPriv = pGeode->adaptor->pPortPrivates[0].ptr;
- GXAccelSync(pScrni);
- GXSetColorkey(pScrni, pPriv);
- GFX(set_video_filter(pPriv->filter, pPriv->filter));
+ GXAccelSync(pScrni);
+ GXSetColorkey(pScrni, pPriv);
+ GFX(set_video_filter(pPriv->filter, pPriv->filter));
}
}
@@ -375,8 +375,8 @@ GXSetupImageVideo(ScreenPtr pScrn)
GeodePortPrivRec *pPriv;
if (!(adapt = calloc(1, sizeof(XF86VideoAdaptorRec) +
- sizeof(GeodePortPrivRec) + sizeof(DevUnion))))
- return NULL;
+ sizeof(GeodePortPrivRec) + sizeof(DevUnion))))
+ return NULL;
adapt->type = XvWindowMask | XvInputMask | XvImageMask;
adapt->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
@@ -410,7 +410,7 @@ GXSetupImageVideo(ScreenPtr pScrn)
pPriv->videoStatus = 0;
#if DBUF
pPriv->doubleBuffer = TRUE;
- pPriv->currentBuffer = 0; /* init to first buffer */
+ pPriv->currentBuffer = 0; /* init to first buffer */
#endif
/* gotta uninit this someplace */
@@ -463,39 +463,40 @@ GXStopVideo(ScrnInfoPtr pScrni, pointer data, Bool exit)
GXAccelSync(pScrni);
if (exit) {
- if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
- GFX(set_video_enable(0));
+ if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
+ GFX(set_video_enable(0));
- /* If we have saved graphics LUT data - restore it */
- /* Otherwise, turn bypass on */
+ /* If we have saved graphics LUT data - restore it */
+ /* Otherwise, turn bypass on */
- if (lutflag)
- GFX(set_graphics_palette(graphics_lut));
- else
- GFX(set_video_palette_bypass(1));
+ if (lutflag)
+ GFX(set_graphics_palette(graphics_lut));
+ else
+ GFX(set_video_palette_bypass(1));
- lutflag = 0;
- }
+ lutflag = 0;
+ }
- if (pPriv->area) {
+ if (pPriv->area) {
#ifdef XF86EXA
- if (pGeode->useEXA)
- exaOffscreenFree(pScrni->pScreen, pPriv->area);
+ if (pGeode->useEXA)
+ exaOffscreenFree(pScrni->pScreen, pPriv->area);
#endif
- if (!pGeode->useEXA)
- xf86FreeOffscreenArea(pPriv->area);
+ if (!pGeode->useEXA)
+ xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
- }
+ pPriv->area = NULL;
+ }
- pPriv->videoStatus = 0;
- pGeode->OverlayON = FALSE;
- } else {
- if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
- pPriv->videoStatus |= OFF_TIMER;
- pPriv->offTime = currentTime.milliseconds + OFF_DELAY;
- }
+ pPriv->videoStatus = 0;
+ pGeode->OverlayON = FALSE;
+ }
+ else {
+ if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
+ pPriv->videoStatus |= OFF_TIMER;
+ pPriv->offTime = currentTime.milliseconds + OFF_DELAY;
+ }
}
}
@@ -518,31 +519,33 @@ GXStopVideo(ScrnInfoPtr pScrni, pointer data, Bool exit)
*/
static int
GXSetPortAttribute(ScrnInfoPtr pScrni,
- Atom attribute, INT32 value, pointer data)
+ Atom attribute, INT32 value, pointer data)
{
GeodePortPrivRec *pPriv = (GeodePortPrivRec *) data;
GXAccelSync(pScrni);
if (attribute == xvColorKey) {
- pPriv->colorKey = value;
- GXSetColorkey(pScrni, pPriv);
+ pPriv->colorKey = value;
+ GXSetColorkey(pScrni, pPriv);
}
#if DBUF
else if (attribute == xvDoubleBuffer) {
- if ((value < 0) || (value > 1))
- return BadValue;
- pPriv->doubleBuffer = value;
+ if ((value < 0) || (value > 1))
+ return BadValue;
+ pPriv->doubleBuffer = value;
}
#endif
else if (attribute == xvColorKeyMode) {
- pPriv->colorKeyMode = value;
- GXSetColorkey(pScrni, pPriv);
- } else if (attribute == xvFilter) {
- if ((value < 0) || (value > 1))
- return BadValue;
- pPriv->filter = value;
- } else
- return BadMatch;
+ pPriv->colorKeyMode = value;
+ GXSetColorkey(pScrni, pPriv);
+ }
+ else if (attribute == xvFilter) {
+ if ((value < 0) || (value > 1))
+ return BadValue;
+ pPriv->filter = value;
+ }
+ else
+ return BadMatch;
return Success;
}
@@ -566,24 +569,26 @@ GXSetPortAttribute(ScrnInfoPtr pScrni,
*/
static int
GXGetPortAttribute(ScrnInfoPtr pScrni,
- Atom attribute, INT32 * value, pointer data)
+ Atom attribute, INT32 *value, pointer data)
{
GeodePortPrivRec *pPriv = (GeodePortPrivRec *) data;
if (attribute == xvColorKey) {
- *value = pPriv->colorKey;
+ *value = pPriv->colorKey;
}
#if DBUF
else if (attribute == xvDoubleBuffer) {
- *value = (pPriv->doubleBuffer) ? 1 : 0;
+ *value = (pPriv->doubleBuffer) ? 1 : 0;
}
#endif
else if (attribute == xvColorKeyMode) {
- *value = pPriv->colorKeyMode;
- } else if (attribute == xvFilter) {
- *value = pPriv->filter;
- } else
- return BadMatch;
+ *value = pPriv->colorKeyMode;
+ }
+ else if (attribute == xvFilter) {
+ *value = pPriv->filter;
+ }
+ else
+ return BadMatch;
return Success;
}
@@ -610,16 +615,16 @@ GXGetPortAttribute(ScrnInfoPtr pScrni,
*/
static void
GXQueryBestSize(ScrnInfoPtr pScrni,
- Bool motion,
- short vid_w, short vid_h,
- short drw_w, short drw_h,
- unsigned int *p_w, unsigned int *p_h, pointer data)
+ Bool motion,
+ short vid_w, short vid_h,
+ short drw_w, short drw_h,
+ unsigned int *p_w, unsigned int *p_h, pointer data)
{
*p_w = drw_w;
*p_h = drw_h;
if (*p_w > 16384)
- *p_w = 16384;
+ *p_w = 16384;
}
/*----------------------------------------------------------------------------
@@ -641,12 +646,12 @@ GXQueryBestSize(ScrnInfoPtr pScrni,
*/
static void
GXCopyData420(unsigned char *src, unsigned char *dst,
- int srcPitch, int dstPitch, int h, int w)
+ int srcPitch, int dstPitch, int h, int w)
{
while (h--) {
- memcpy(dst, src, w);
- src += srcPitch;
- dst += dstPitch;
+ memcpy(dst, src, w);
+ src += srcPitch;
+ dst += dstPitch;
}
}
@@ -669,13 +674,13 @@ GXCopyData420(unsigned char *src, unsigned char *dst,
*/
static void
GXCopyData422(unsigned char *src, unsigned char *dst,
- int srcPitch, int dstPitch, int h, int w)
+ int srcPitch, int dstPitch, int h, int w)
{
w <<= 1;
while (h--) {
- memcpy(dst, src, w);
- src += srcPitch;
- dst += dstPitch;
+ memcpy(dst, src, w);
+ src += srcPitch;
+ dst += dstPitch;
}
}
@@ -687,7 +692,7 @@ GXVideoSave(ScreenPtr pScreen, ExaOffscreenArea * area)
GeodePortPrivRec *pPriv = GET_PORT_PRIVATE(pScrni);
if (area == pPriv->area)
- pPriv->area = NULL;
+ pPriv->area = NULL;
}
#endif
@@ -702,59 +707,60 @@ GXAllocateMemory(ScrnInfoPtr pScrni, void **memp, int numlines)
#if XF86EXA
if (pGeode->useEXA) {
- ExaOffscreenArea *area = *memp;
+ ExaOffscreenArea *area = *memp;
- if (area != NULL) {
- if (area->size >= size)
- return area->offset;
+ if (area != NULL) {
+ if (area->size >= size)
+ return area->offset;
- exaOffscreenFree(pScrni->pScreen, area);
- }
+ exaOffscreenFree(pScrni->pScreen, area);
+ }
- area = exaOffscreenAlloc(pScrni->pScreen, size, 16,
- TRUE, GXVideoSave, NULL);
- *memp = area;
+ area = exaOffscreenAlloc(pScrni->pScreen, size, 16,
+ TRUE, GXVideoSave, NULL);
+ *memp = area;
- return area == NULL ? 0 : area->offset;
+ return area == NULL ? 0 : area->offset;
}
#endif
if (!pGeode->useEXA) {
- FBAreaPtr area = *memp;
- FBAreaPtr new_area;
+ FBAreaPtr area = *memp;
+ FBAreaPtr new_area;
- if (area) {
- if ((area->box.y2 - area->box.y1) >= numlines)
- return (area->box.y1 * pGeode->Pitch);
+ if (area) {
+ if ((area->box.y2 - area->box.y1) >= numlines)
+ return (area->box.y1 * pGeode->Pitch);
- if (xf86ResizeOffscreenArea(area, pGeode->displayWidth, numlines))
- return (area->box.y1 * pGeode->Pitch);
+ if (xf86ResizeOffscreenArea(area, pGeode->displayWidth, numlines))
+ return (area->box.y1 * pGeode->Pitch);
- xf86FreeOffscreenArea(area);
- }
+ xf86FreeOffscreenArea(area);
+ }
- new_area = xf86AllocateOffscreenArea(pScrn, pGeode->displayWidth,
- numlines, 0, NULL, NULL, NULL);
+ new_area = xf86AllocateOffscreenArea(pScrn, pGeode->displayWidth,
+ numlines, 0, NULL, NULL, NULL);
- if (!new_area) {
- int max_w, max_h;
+ if (!new_area) {
+ int max_w, max_h;
- xf86QueryLargestOffscreenArea(pScrn, &max_w, &max_h, 0,
- FAVOR_WIDTH_THEN_AREA, PRIORITY_EXTREME);
+ xf86QueryLargestOffscreenArea(pScrn, &max_w, &max_h, 0,
+ FAVOR_WIDTH_THEN_AREA,
+ PRIORITY_EXTREME);
- if ((max_w < pGeode->displayWidth) || (max_h < numlines)) {
- xf86DrvMsg(pScrni->scrnIndex, X_ERROR,
- "No room - how sad %x, %x, %x, %x\n", max_w,
- pGeode->displayWidth, max_h, numlines);
- return 0;
- }
+ if ((max_w < pGeode->displayWidth) || (max_h < numlines)) {
+ xf86DrvMsg(pScrni->scrnIndex, X_ERROR,
+ "No room - how sad %x, %x, %x, %x\n", max_w,
+ pGeode->displayWidth, max_h, numlines);
+ return 0;
+ }
- xf86PurgeUnlockedOffscreenAreas(pScrn);
- new_area = xf86AllocateOffscreenArea(pScrn, pGeode->displayWidth,
- numlines, 0, NULL, NULL, NULL);
- }
+ xf86PurgeUnlockedOffscreenAreas(pScrn);
+ new_area = xf86AllocateOffscreenArea(pScrn, pGeode->displayWidth,
+ numlines, 0, NULL, NULL, NULL);
+ }
- return (new_area->box.y1 * pGeode->Pitch);
+ return (new_area->box.y1 * pGeode->Pitch);
}
return 0;
@@ -776,12 +782,12 @@ RegionsIntersect(BoxPtr pRcl1, BoxPtr pRcl2, BoxPtr pRclResult)
pRclResult->x2 = min(pRcl1->x2, pRcl2->x2);
if (pRclResult->x1 <= pRclResult->x2) {
- pRclResult->y1 = max(pRcl1->y1, pRcl2->y1);
- pRclResult->y2 = min(pRcl1->y2, pRcl2->y2);
+ pRclResult->y1 = max(pRcl1->y1, pRcl2->y1);
+ pRclResult->y2 = min(pRcl1->y2, pRcl2->y2);
- if (pRclResult->y1 <= pRclResult->y2) {
- return (TRUE);
- }
+ if (pRclResult->y1 <= pRclResult->y2) {
+ return (TRUE);
+ }
}
return (FALSE);
@@ -790,8 +796,8 @@ RegionsIntersect(BoxPtr pRcl1, BoxPtr pRcl2, BoxPtr pRclResult)
void
GXSetVideoPosition(int x, int y, int width, int height,
- short src_w, short src_h, short drw_w, short drw_h,
- int id, int offset, ScrnInfoPtr pScrni)
+ short src_w, short src_h, short drw_w, short drw_h,
+ int id, int offset, ScrnInfoPtr pScrni)
{
GeodeRec *pGeode = GEODEPTR(pScrni);
long ystart, xend, yend;
@@ -817,49 +823,52 @@ GXSetVideoPosition(int x, int y, int width, int height,
/* Thhis code is pretty dang broken - comment it out for now */
if (pGeode->Panel) {
- ovly.x1 = x;
- ovly.x2 = x + pGeode->video_dstw;
- ovly.y1 = y;
- ovly.y2 = y + pGeode->video_dsth;
-
- display.x1 = DeltaX;
- display.x2 = DeltaX + pGeode->FPBX;
- display.y1 = DeltaY;
- display.y2 = DeltaY + pGeode->FPBY;
- x = xend = 0;
- if (RegionsIntersect(&display, &ovly, &result)) {
- x = ovly.x1 - DeltaX;
- xend = ovly.x2 - DeltaX;
- y = ovly.y1 - DeltaY;
- yend = ovly.y2 - DeltaY;
- }
+ ovly.x1 = x;
+ ovly.x2 = x + pGeode->video_dstw;
+ ovly.y1 = y;
+ ovly.y2 = y + pGeode->video_dsth;
+
+ display.x1 = DeltaX;
+ display.x2 = DeltaX + pGeode->FPBX;
+ display.y1 = DeltaY;
+ display.y2 = DeltaY + pGeode->FPBY;
+ x = xend = 0;
+ if (RegionsIntersect(&display, &ovly, &result)) {
+ x = ovly.x1 - DeltaX;
+ xend = ovly.x2 - DeltaX;
+ y = ovly.y1 - DeltaY;
+ yend = ovly.y2 - DeltaY;
+ }
}
#endif
/* TOP CLIPPING */
if (y < 0) {
- if (src_h < drw_h)
- lines = (-y) * src_h / drw_h;
- else
- lines = (-y);
- ystart = 0;
- drw_h += y;
- y_extra = lines * dstPitch;
- uv_extra = (lines >> 1) * (dstPitch2);
- } else {
- ystart = y;
- lines = 0;
- y_extra = 0;
+ if (src_h < drw_h)
+ lines = (-y) * src_h / drw_h;
+ else
+ lines = (-y);
+ ystart = 0;
+ drw_h += y;
+ y_extra = lines * dstPitch;
+ uv_extra = (lines >> 1) * (dstPitch2);
+ }
+ else {
+ ystart = y;
+ lines = 0;
+ y_extra = 0;
}
GFX(set_video_window(x, ystart, xend - x, yend - ystart));
if ((id == FOURCC_Y800) || (id == FOURCC_I420) || (id == FOURCC_YV12)) {
- GFX(set_video_yuv_offsets(offset + y_extra,
- offset + d3offset + uv_extra, offset + d2offset + uv_extra));
- } else {
- GFX(set_video_offset(offset + y_extra));
+ GFX(set_video_yuv_offsets(offset + y_extra,
+ offset + d3offset + uv_extra,
+ offset + d2offset + uv_extra));
+ }
+ else {
+ GFX(set_video_offset(offset + y_extra));
}
}
@@ -880,12 +889,13 @@ GXSetVideoPosition(int x, int y, int width, int height,
static void
GXDisplayVideo(ScrnInfoPtr pScrni,
- int id,
- int offset,
- short width, short height,
- int pitch,
- int x1, int y1, int x2, int y2,
- BoxPtr dstBox, short src_w, short src_h, short drw_w, short drw_h)
+ int id,
+ int offset,
+ short width, short height,
+ int pitch,
+ int x1, int y1, int x2, int y2,
+ BoxPtr dstBox, short src_w, short src_h, short drw_w,
+ short drw_h)
{
GeodeRec *pGeode = GEODEPTR(pScrni);
unsigned long dcfg, misc;
@@ -897,74 +907,74 @@ GXDisplayVideo(ScrnInfoPtr pScrni,
*/
if (id != FOURCC_RGB565) {
- dcfg = gfx_read_vid32(DISPLAY_CONFIG);
- misc = gfx_read_vid32(MISC);
+ dcfg = gfx_read_vid32(DISPLAY_CONFIG);
+ misc = gfx_read_vid32(MISC);
- lutflag = (!(misc & 1) && (dcfg & (1 << 21)));
+ lutflag = (!(misc & 1) && (dcfg & (1 << 21)));
- if (lutflag)
- get_gamma_ram(graphics_lut);
+ if (lutflag)
+ get_gamma_ram(graphics_lut);
- /* Set the video gamma ram */
- GFX(set_video_palette(NULL));
+ /* Set the video gamma ram */
+ GFX(set_video_palette(NULL));
}
GFX(set_video_enable(1));
switch (id) {
- case FOURCC_UYVY: /* UYVY */
- GFX(set_video_format(VIDEO_FORMAT_UYVY));
- GFX(set_video_size(width, height));
- break;
- case FOURCC_Y800: /* Y800 - greyscale - we munge it! */
- case FOURCC_YV12: /* YV12 */
- case FOURCC_I420: /* I420 */
- GFX(set_video_format(VIDEO_FORMAT_Y0Y1Y2Y3));
- GFX(set_video_size(width, height));
- GFX(set_video_yuv_pitch(dstPitch, dstPitch2));
- break;
- case FOURCC_YUY2: /* YUY2 */
- GFX(set_video_format(VIDEO_FORMAT_YUYV));
- GFX(set_video_size(width, height));
- break;
- case FOURCC_Y2YU: /* Y2YU */
- GFX(set_video_format(VIDEO_FORMAT_Y2YU));
- GFX(set_video_size(width, height));
- break;
- case FOURCC_YVYU: /* YVYU */
- GFX(set_video_format(VIDEO_FORMAT_YVYU));
- GFX(set_video_size(width, height));
- break;
+ case FOURCC_UYVY: /* UYVY */
+ GFX(set_video_format(VIDEO_FORMAT_UYVY));
+ GFX(set_video_size(width, height));
+ break;
+ case FOURCC_Y800: /* Y800 - greyscale - we munge it! */
+ case FOURCC_YV12: /* YV12 */
+ case FOURCC_I420: /* I420 */
+ GFX(set_video_format(VIDEO_FORMAT_Y0Y1Y2Y3));
+ GFX(set_video_size(width, height));
+ GFX(set_video_yuv_pitch(dstPitch, dstPitch2));
+ break;
+ case FOURCC_YUY2: /* YUY2 */
+ GFX(set_video_format(VIDEO_FORMAT_YUYV));
+ GFX(set_video_size(width, height));
+ break;
+ case FOURCC_Y2YU: /* Y2YU */
+ GFX(set_video_format(VIDEO_FORMAT_Y2YU));
+ GFX(set_video_size(width, height));
+ break;
+ case FOURCC_YVYU: /* YVYU */
+ GFX(set_video_format(VIDEO_FORMAT_YVYU));
+ GFX(set_video_size(width, height));
+ break;
case FOURCC_RGB565:
- GFX(set_video_format(VIDEO_FORMAT_RGB));
- GFX(set_video_size(width, height));
- break;
+ GFX(set_video_format(VIDEO_FORMAT_RGB));
+ GFX(set_video_size(width, height));
+ break;
}
if (pGeode->Panel) {
- pGeode->video_x = dstBox->x1;
- pGeode->video_y = dstBox->y1;
- pGeode->video_w = width;
- pGeode->video_h = height;
- pGeode->video_srcw = src_w;
- pGeode->video_srch = src_h;
- pGeode->video_dstw = drw_w;
- pGeode->video_dsth = drw_h;
- pGeode->video_offset = offset;
- pGeode->video_id = id;
- pGeode->video_scrnptr = pScrni;
+ pGeode->video_x = dstBox->x1;
+ pGeode->video_y = dstBox->y1;
+ pGeode->video_w = width;
+ pGeode->video_h = height;
+ pGeode->video_srcw = src_w;
+ pGeode->video_srch = src_h;
+ pGeode->video_dstw = drw_w;
+ pGeode->video_dsth = drw_h;
+ pGeode->video_offset = offset;
+ pGeode->video_id = id;
+ pGeode->video_scrnptr = pScrni;
}
if ((drw_w >= src_w) && (drw_h >= src_h))
- GFX(set_video_scale(width, height, drw_w, drw_h));
+ GFX(set_video_scale(width, height, drw_w, drw_h));
else if (drw_w < src_w)
- GFX(set_video_scale(drw_w, height, drw_w, drw_h));
+ GFX(set_video_scale(drw_w, height, drw_w, drw_h));
else if (drw_h < src_h)
- GFX(set_video_scale(width, drw_h, drw_w, drw_h));
+ GFX(set_video_scale(width, drw_h, drw_w, drw_h));
GXSetVideoPosition(dstBox->x1, dstBox->y1, width, height, src_w,
- src_h, drw_w, drw_h, id, offset, pScrni);
+ src_h, drw_w, drw_h, id, offset, pScrni);
}
/* Used by LX as well */
@@ -977,23 +987,23 @@ RegionsEqual(RegionPtr A, RegionPtr B)
num = REGION_NUM_RECTS(A);
if (num != REGION_NUM_RECTS(B)) {
- return FALSE;
+ return FALSE;
}
if ((A->extents.x1 != B->extents.x1) ||
- (A->extents.x2 != B->extents.x2) ||
- (A->extents.y1 != B->extents.y1) || (A->extents.y2 != B->extents.y2))
- return FALSE;
+ (A->extents.x2 != B->extents.x2) ||
+ (A->extents.y1 != B->extents.y1) || (A->extents.y2 != B->extents.y2))
+ return FALSE;
- dataA = (int *)REGION_RECTS(A);
- dataB = (int *)REGION_RECTS(B);
+ dataA = (int *) REGION_RECTS(A);
+ dataB = (int *) REGION_RECTS(B);
while (num--) {
- if ((dataA[0] != dataB[0]) || (dataA[1] != dataB[1]))
- return FALSE;
+ if ((dataA[0] != dataB[0]) || (dataA[1] != dataB[1]))
+ return FALSE;
- dataA += 2;
- dataB += 2;
+ dataA += 2;
+ dataB += 2;
}
return TRUE;
@@ -1022,13 +1032,13 @@ RegionsEqual(RegionPtr A, RegionPtr B)
static int
GXPutImage(ScrnInfoPtr pScrni,
- short src_x, short src_y,
- short drw_x, short drw_y,
- short src_w, short src_h,
- short drw_w, short drw_h,
- int id, unsigned char *buf,
- short width, short height, Bool sync, RegionPtr clipBoxes, pointer data,
- DrawablePtr pDraw)
+ short src_x, short src_y,
+ short drw_x, short drw_y,
+ short src_w, short src_h,
+ short drw_w, short drw_h,
+ int id, unsigned char *buf,
+ short width, short height, Bool sync, RegionPtr clipBoxes,
+ pointer data, DrawablePtr pDraw)
{
GeodePortPrivRec *pPriv = (GeodePortPrivRec *) data;
GeodeRec *pGeode = GEODEPTR(pScrni);
@@ -1049,173 +1059,172 @@ GXPutImage(ScrnInfoPtr pScrni,
#if REINIT
/* update cliplist */
if (!RegionsEqual(&pPriv->clip, clipBoxes)) {
- ReInitVideo = TRUE;
+ ReInitVideo = TRUE;
}
if (DoReinitAgain)
- ReInitVideo = TRUE;
+ ReInitVideo = TRUE;
if (ReInitVideo) {
- DEBUGMSG(1, (0, X_NONE, "Regional Not Equal - Init\n"));
+ DEBUGMSG(1, (0, X_NONE, "Regional Not Equal - Init\n"));
#endif
- DoReinitAgain = ~DoReinitAgain;
- if (drw_w > 16384)
- drw_w = 16384;
-
- /* Clip */
- Bx1 = src_x;
- Bx2 = src_x + src_w;
- By1 = src_y;
- By2 = src_y + src_h;
-
- if ((Bx1 >= Bx2) || (By1 >= By2))
- return Success;
-
- dstBox.x1 = drw_x;
- dstBox.x2 = drw_x + drw_w;
- dstBox.y1 = drw_y;
- dstBox.y2 = drw_y + drw_h;
-
- dstBox.x1 -= pScrni->frameX0;
- dstBox.x2 -= pScrni->frameX0;
- dstBox.y1 -= pScrni->frameY0;
- dstBox.y2 -= pScrni->frameY0;
-
- switch (id) {
- case FOURCC_YV12:
- case FOURCC_I420:
- srcPitch = (width + 3) & ~3; /* of luma */
- dstPitch = (width + 31) & ~31;
-
- s2offset = srcPitch * height;
- d2offset = dstPitch * height;
-
- srcPitch2 = ((width >> 1) + 3) & ~3;
- dstPitch2 = ((width >> 1) + 15) & ~15;
-
- s3offset = (srcPitch2 * (height >> 1)) + s2offset;
- d3offset = (dstPitch2 * (height >> 1)) + d2offset;
-
- new_h = dstPitch * height; /* Y */
- new_h += (dstPitch2 * height); /* U+V */
- new_h += pGeode->Pitch - 1;
- new_h /= pGeode->Pitch;
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- case FOURCC_Y800:
- case FOURCC_RGB565:
- default:
- dstPitch = ((width << 1) + 3) & ~3;
- srcPitch = (width << 1);
- new_h = ((dstPitch * height) + pGeode->Pitch - 1) / pGeode->Pitch;
- break;
- }
+ DoReinitAgain = ~DoReinitAgain;
+ if (drw_w > 16384)
+ drw_w = 16384;
+
+ /* Clip */
+ Bx1 = src_x;
+ Bx2 = src_x + src_w;
+ By1 = src_y;
+ By2 = src_y + src_h;
+
+ if ((Bx1 >= Bx2) || (By1 >= By2))
+ return Success;
+
+ dstBox.x1 = drw_x;
+ dstBox.x2 = drw_x + drw_w;
+ dstBox.y1 = drw_y;
+ dstBox.y2 = drw_y + drw_h;
+
+ dstBox.x1 -= pScrni->frameX0;
+ dstBox.x2 -= pScrni->frameX0;
+ dstBox.y1 -= pScrni->frameY0;
+ dstBox.y2 -= pScrni->frameY0;
+
+ switch (id) {
+ case FOURCC_YV12:
+ case FOURCC_I420:
+ srcPitch = (width + 3) & ~3; /* of luma */
+ dstPitch = (width + 31) & ~31;
+
+ s2offset = srcPitch * height;
+ d2offset = dstPitch * height;
+
+ srcPitch2 = ((width >> 1) + 3) & ~3;
+ dstPitch2 = ((width >> 1) + 15) & ~15;
+
+ s3offset = (srcPitch2 * (height >> 1)) + s2offset;
+ d3offset = (dstPitch2 * (height >> 1)) + d2offset;
+
+ new_h = dstPitch * height; /* Y */
+ new_h += (dstPitch2 * height); /* U+V */
+ new_h += pGeode->Pitch - 1;
+ new_h /= pGeode->Pitch;
+ break;
+ case FOURCC_UYVY:
+ case FOURCC_YUY2:
+ case FOURCC_Y800:
+ case FOURCC_RGB565:
+ default:
+ dstPitch = ((width << 1) + 3) & ~3;
+ srcPitch = (width << 1);
+ new_h = ((dstPitch * height) + pGeode->Pitch - 1) / pGeode->Pitch;
+ break;
+ }
#if DBUF
- if (pPriv->doubleBuffer)
- new_h <<= 1;
+ if (pPriv->doubleBuffer)
+ new_h <<= 1;
#endif
- if (!(pPriv->offset = GXAllocateMemory(pScrni, &pPriv->area, new_h))) {
- xf86DrvMsg(pScrni->scrnIndex, X_ERROR,
- "Could not allocate area of size %d\n", new_h);
- return BadAlloc;
- }
+ if (!(pPriv->offset = GXAllocateMemory(pScrni, &pPriv->area, new_h))) {
+ xf86DrvMsg(pScrni->scrnIndex, X_ERROR,
+ "Could not allocate area of size %d\n", new_h);
+ return BadAlloc;
+ }
- /* copy data */
- top = By1;
- left = Bx1 & ~1;
- npixels = ((Bx2 + 1) & ~1) - left;
+ /* copy data */
+ top = By1;
+ left = Bx1 & ~1;
+ npixels = ((Bx2 + 1) & ~1) - left;
- switch (id) {
- case FOURCC_YV12:
- case FOURCC_I420:
- {
- int tmp;
+ switch (id) {
+ case FOURCC_YV12:
+ case FOURCC_I420:
+ {
+ int tmp;
- top &= ~1;
+ top &= ~1;
- offset = pPriv->offset + (top * dstPitch);
+ offset = pPriv->offset + (top * dstPitch);
#if DBUF
- if (pPriv->doubleBuffer && pPriv->currentBuffer)
- offset += (new_h >> 1) * pGeode->Pitch;
+ if (pPriv->doubleBuffer && pPriv->currentBuffer)
+ offset += (new_h >> 1) * pGeode->Pitch;
#endif
- dst_start = pGeode->FBBase + offset + left;
- tmp = ((top >> 1) * srcPitch2) + (left >> 1);
- s2offset += tmp;
- s3offset += tmp;
- if (id == FOURCC_I420) {
- tmp = s2offset;
- s2offset = s3offset;
- s3offset = tmp;
- }
- nlines = ((By2 + 1) & ~1) - top;
- }
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- case FOURCC_Y800:
- case FOURCC_RGB565:
- default:
- left <<= 1;
- buf += (top * srcPitch) + left;
- nlines = By2 - top;
- offset = (pPriv->offset) + (top * dstPitch);
+ dst_start = pGeode->FBBase + offset + left;
+ tmp = ((top >> 1) * srcPitch2) + (left >> 1);
+ s2offset += tmp;
+ s3offset += tmp;
+ if (id == FOURCC_I420) {
+ tmp = s2offset;
+ s2offset = s3offset;
+ s3offset = tmp;
+ }
+ nlines = ((By2 + 1) & ~1) - top;
+ }
+ break;
+ case FOURCC_UYVY:
+ case FOURCC_YUY2:
+ case FOURCC_Y800:
+ case FOURCC_RGB565:
+ default:
+ left <<= 1;
+ buf += (top * srcPitch) + left;
+ nlines = By2 - top;
+ offset = (pPriv->offset) + (top * dstPitch);
#if DBUF
- if (pPriv->doubleBuffer && pPriv->currentBuffer)
- offset += (new_h >> 1) * pGeode->Pitch;
+ if (pPriv->doubleBuffer && pPriv->currentBuffer)
+ offset += (new_h >> 1) * pGeode->Pitch;
#endif
- dst_start = pGeode->FBBase + offset + left;
- break;
- }
- s1offset = (top * srcPitch) + left;
+ dst_start = pGeode->FBBase + offset + left;
+ break;
+ }
+ s1offset = (top * srcPitch) + left;
#if REINIT
- /* update cliplist */
- REGION_COPY(pScrni->pScreen, &pPriv->clip, clipBoxes);
+ /* update cliplist */
+ REGION_COPY(pScrni->pScreen, &pPriv->clip, clipBoxes);
- if (pPriv->colorKeyMode == 0) {
- xf86XVFillKeyHelper(pScrni->pScreen, pPriv->colorKey, clipBoxes);
- }
+ if (pPriv->colorKeyMode == 0) {
+ xf86XVFillKeyHelper(pScrni->pScreen, pPriv->colorKey, clipBoxes);
+ }
- GXDisplayVideo(pScrni, id, offset, width, height, dstPitch,
- Bx1, By1, Bx2, By2, &dstBox, src_w, src_h, drw_w, drw_h);
+ GXDisplayVideo(pScrni, id, offset, width, height, dstPitch,
+ Bx1, By1, Bx2, By2, &dstBox, src_w, src_h, drw_w, drw_h);
}
#endif
switch (id) {
case FOURCC_Y800:
- /* This is shared between LX and GX, so it lives in amd_common.c */
- GeodeCopyGreyscale(buf, dst_start, srcPitch, dstPitch, nlines,
- npixels);
- break;
+ /* This is shared between LX and GX, so it lives in amd_common.c */
+ GeodeCopyGreyscale(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
+ break;
case FOURCC_YV12:
case FOURCC_I420:
- GXCopyData420(buf + s1offset, dst_start, srcPitch, dstPitch, nlines,
- npixels);
- GXCopyData420(buf + s2offset, dst_start + d2offset, srcPitch2,
- dstPitch2, nlines >> 1, npixels >> 1);
- GXCopyData420(buf + s3offset, dst_start + d3offset, srcPitch2,
- dstPitch2, nlines >> 1, npixels >> 1);
- break;
+ GXCopyData420(buf + s1offset, dst_start, srcPitch, dstPitch, nlines,
+ npixels);
+ GXCopyData420(buf + s2offset, dst_start + d2offset, srcPitch2,
+ dstPitch2, nlines >> 1, npixels >> 1);
+ GXCopyData420(buf + s3offset, dst_start + d3offset, srcPitch2,
+ dstPitch2, nlines >> 1, npixels >> 1);
+ break;
case FOURCC_UYVY:
case FOURCC_YUY2:
case FOURCC_RGB565:
default:
- GXCopyData422(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
- break;
+ GXCopyData422(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
+ break;
}
#if !REINIT
/* update cliplist */
REGION_COPY(pScrni->pScreen, &pPriv->clip, clipBoxes);
if (pPriv->colorKeyMode == 0) {
- /* draw these */
- XAAFillSolidRects(pScrni, pPriv->colorKey, GXcopy, ~0,
- REGION_NUM_RECTS(clipBoxes), REGION_RECTS(clipBoxes));
+ /* draw these */
+ XAAFillSolidRects(pScrni, pPriv->colorKey, GXcopy, ~0,
+ REGION_NUM_RECTS(clipBoxes), REGION_RECTS(clipBoxes));
}
GXDisplayVideo(pScrni, id, offset, width, height, dstPitch,
- Bx1, By1, Bx2, By2, &dstBox, src_w, src_h, drw_w, drw_h);
+ Bx1, By1, Bx2, By2, &dstBox, src_w, src_h, drw_w, drw_h);
#endif
#if XV_PROFILE
@@ -1254,7 +1263,8 @@ GXPutImage(ScrnInfoPtr pScrni,
int
GeodeQueryImageAttributes(ScrnInfoPtr pScrni,
- int id, unsigned short *w, unsigned short *h, int *pitches, int *offsets)
+ int id, unsigned short *w, unsigned short *h,
+ int *pitches, int *offsets)
{
int size;
int tmp;
@@ -1262,47 +1272,47 @@ GeodeQueryImageAttributes(ScrnInfoPtr pScrni,
DEBUGMSG(0, (0, X_NONE, "QueryImageAttributes %X\n", id));
if (*w > 1024)
- *w = 1024;
+ *w = 1024;
if (*h > 1024)
- *h = 1024;
+ *h = 1024;
*w = (*w + 1) & ~1;
if (offsets)
- offsets[0] = 0;
+ offsets[0] = 0;
switch (id) {
case FOURCC_YV12:
case FOURCC_I420:
- *h = (*h + 1) & ~1;
- size = (*w + 3) & ~3;
- if (pitches)
- pitches[0] = size;
-
- size *= *h;
- if (offsets)
- offsets[1] = size;
-
- tmp = ((*w >> 1) + 3) & ~3;
- if (pitches)
- pitches[1] = pitches[2] = tmp;
-
- tmp *= (*h >> 1);
- size += tmp;
- if (offsets)
- offsets[2] = size;
-
- size += tmp;
- break;
+ *h = (*h + 1) & ~1;
+ size = (*w + 3) & ~3;
+ if (pitches)
+ pitches[0] = size;
+
+ size *= *h;
+ if (offsets)
+ offsets[1] = size;
+
+ tmp = ((*w >> 1) + 3) & ~3;
+ if (pitches)
+ pitches[1] = pitches[2] = tmp;
+
+ tmp *= (*h >> 1);
+ size += tmp;
+ if (offsets)
+ offsets[2] = size;
+
+ size += tmp;
+ break;
case FOURCC_UYVY:
case FOURCC_YUY2:
case FOURCC_Y800:
default:
- size = *w << 1;
- if (pitches)
- pitches[0] = size;
+ size = *w << 1;
+ if (pitches)
+ pitches[0] = size;
- size *= *h;
- break;
+ size *= *h;
+ break;
}
return size;
}
@@ -1320,49 +1330,49 @@ GXBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
pScrn->BlockHandler = GXBlockHandler;
if (pPriv->videoStatus & TIMER_MASK) {
- GXAccelSync(pScrni);
- UpdateCurrentTime();
- if (pPriv->videoStatus & OFF_TIMER) {
- if (pPriv->offTime < currentTime.milliseconds) {
- GFX(set_video_enable(0));
-
- /* If we have saved graphics LUT data - restore it */
- /* Otherwise, turn bypass on */
-
- if (lutflag)
- GFX(set_graphics_palette(graphics_lut));
- else
- GFX(set_video_palette_bypass(1));
-
- lutflag = 0;
-
- pPriv->videoStatus = FREE_TIMER;
- pPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
- }
- } else { /* FREE_TIMER */
- if (pPriv->freeTime < currentTime.milliseconds) {
-
- if (pPriv->area) {
+ GXAccelSync(pScrni);
+ UpdateCurrentTime();
+ if (pPriv->videoStatus & OFF_TIMER) {
+ if (pPriv->offTime < currentTime.milliseconds) {
+ GFX(set_video_enable(0));
+
+ /* If we have saved graphics LUT data - restore it */
+ /* Otherwise, turn bypass on */
+
+ if (lutflag)
+ GFX(set_graphics_palette(graphics_lut));
+ else
+ GFX(set_video_palette_bypass(1));
+
+ lutflag = 0;
+
+ pPriv->videoStatus = FREE_TIMER;
+ pPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
+ }
+ }
+ else { /* FREE_TIMER */
+ if (pPriv->freeTime < currentTime.milliseconds) {
+
+ if (pPriv->area) {
#ifdef XF86EXA
- if (pGeode->useEXA)
- exaOffscreenFree(pScrn, pPriv->area);
+ if (pGeode->useEXA)
+ exaOffscreenFree(pScrn, pPriv->area);
#endif
- if (!pGeode->useEXA)
- xf86FreeOffscreenArea(pPriv->area);
+ if (!pGeode->useEXA)
+ xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
- }
+ pPriv->area = NULL;
+ }
- pPriv->videoStatus = 0;
- }
- }
+ pPriv->videoStatus = 0;
+ }
+ }
}
}
/****************** Offscreen stuff ***************/
-typedef struct
-{
+typedef struct {
void *area;
int offset;
Bool isOn;
@@ -1383,14 +1393,15 @@ typedef struct
*/
static int
GXAllocateSurface(ScrnInfoPtr pScrni,
- int id, unsigned short w, unsigned short h, XF86SurfacePtr surface)
+ int id, unsigned short w, unsigned short h,
+ XF86SurfacePtr surface)
{
void *area = NULL;
int pitch, fbpitch, numlines;
OffscreenPrivRec *pPriv;
if ((w > 1024) || (h > 1024))
- return BadAlloc;
+ return BadAlloc;
w = (w + 1) & ~1;
pitch = ((w << 1) + 15) & ~15;
@@ -1398,23 +1409,23 @@ GXAllocateSurface(ScrnInfoPtr pScrni,
numlines = ((pitch * h) + fbpitch - 1) / fbpitch;
if (!(offset = GXAllocateMemory(pScrni, &area, numlines)))
- return BadAlloc;
+ return BadAlloc;
surface->width = w;
surface->height = h;
if (!(surface->pitches = malloc(sizeof(int))))
- return BadAlloc;
+ return BadAlloc;
if (!(surface->offsets = malloc(sizeof(int)))) {
- free(surface->pitches);
- return BadAlloc;
+ free(surface->pitches);
+ return BadAlloc;
}
if (!(pPriv = malloc(sizeof(OffscreenPrivRec)))) {
- free(surface->pitches);
- free(surface->offsets);
- return BadAlloc;
+ free(surface->pitches);
+ free(surface->offsets);
+ return BadAlloc;
}
pPriv->area = area;
@@ -1437,7 +1448,7 @@ GXStopSurface(XF86SurfacePtr surface)
OffscreenPrivRec *pPriv = (OffscreenPrivRec *) surface->devPrivate.ptr;
if (pPriv->isOn) {
- pPriv->isOn = FALSE;
+ pPriv->isOn = FALSE;
}
return Success;
@@ -1449,7 +1460,7 @@ GXFreeSurface(XF86SurfacePtr surface)
OffscreenPrivRec *pPriv = (OffscreenPrivRec *) surface->devPrivate.ptr;
if (pPriv->isOn)
- GXStopSurface(surface);
+ GXStopSurface(surface);
xf86FreeOffscreenArea(pPriv->area);
free(surface->pitches);
@@ -1460,24 +1471,25 @@ GXFreeSurface(XF86SurfacePtr surface)
}
static int
-GXGetSurfaceAttribute(ScrnInfoPtr pScrni, Atom attribute, INT32 * value)
+GXGetSurfaceAttribute(ScrnInfoPtr pScrni, Atom attribute, INT32 *value)
{
return GXGetPortAttribute(pScrni, attribute, value,
- (pointer) (GET_PORT_PRIVATE(pScrni)));
+ (pointer) (GET_PORT_PRIVATE(pScrni)));
}
static int
GXSetSurfaceAttribute(ScrnInfoPtr pScrni, Atom attribute, INT32 value)
{
return GXSetPortAttribute(pScrni, attribute, value,
- (pointer) (GET_PORT_PRIVATE(pScrni)));
+ (pointer) (GET_PORT_PRIVATE(pScrni)));
}
static int
GXDisplaySurface(XF86SurfacePtr surface,
- short src_x, short src_y,
- short drw_x, short drw_y,
- short src_w, short src_h, short drw_w, short drw_h, RegionPtr clipBoxes)
+ short src_x, short src_y,
+ short drw_x, short drw_y,
+ short src_w, short src_h, short drw_w, short drw_h,
+ RegionPtr clipBoxes)
{
OffscreenPrivRec *pPriv = (OffscreenPrivRec *) surface->devPrivate.ptr;
ScrnInfoPtr pScrni = surface->pScrn;
@@ -1497,7 +1509,7 @@ GXDisplaySurface(XF86SurfacePtr surface,
dstBox.y2 = drw_y + drw_h;
if ((x1 >= x2) || (y1 >= y2))
- return Success;
+ return Success;
dstBox.x1 -= pScrni->frameX0;
dstBox.x2 -= pScrni->frameX0;
@@ -1507,15 +1519,15 @@ GXDisplaySurface(XF86SurfacePtr surface,
xf86XVFillKeyHelper(pScrni->pScreen, portPriv->colorKey, clipBoxes);
GXDisplayVideo(pScrni, surface->id, surface->offsets[0],
- surface->width, surface->height, surface->pitches[0],
- x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h);
+ surface->width, surface->height, surface->pitches[0],
+ x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h);
pPriv->isOn = TRUE;
if (portPriv->videoStatus & CLIENT_VIDEO_ON) {
- REGION_EMPTY(pScrni->pScreen, &portPriv->clip);
- UpdateCurrentTime();
- portPriv->videoStatus = FREE_TIMER;
- portPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
+ REGION_EMPTY(pScrni->pScreen, &portPriv->clip);
+ UpdateCurrentTime();
+ portPriv->videoStatus = FREE_TIMER;
+ portPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
}
return Success;
@@ -1543,7 +1555,7 @@ GXInitOffscreenImages(ScreenPtr pScrn)
/* need to free this someplace */
if (!(offscreenImages = malloc(sizeof(XF86OffscreenImageRec))))
- return;
+ return;
offscreenImages[0].image = &Images[0];
offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
@@ -1561,4 +1573,4 @@ GXInitOffscreenImages(ScreenPtr pScrn)
xf86XVRegisterOffscreenImages(pScrn, offscreenImages, 1);
}
-#endif /* !XvExtension */
+#endif /* !XvExtension */