Lines Matching refs:pI810XvMC

61 // Arguments: pI810XvMC private data structure from the current context.
68 drmBufPtr i810_get_free_buffer(i810XvMCContext *pI810XvMC) {
75 if(GET_BUFFER(pI810XvMC, dma) || !dma.granted)
76 FLUSH(pI810XvMC);
79 buf = &(pI810XvMC->dmabufs->list[dma.request_idx]);
92 void i810_free_privContext(i810XvMCContext *pI810XvMC) {
94 I810_LOCK(pI810XvMC,DRM_LOCK_QUIESCENT);
97 pI810XvMC->ref--;
98 if(!pI810XvMC->ref) {
99 drmUnmapBufs(pI810XvMC->dmabufs);
100 drmUnmap(pI810XvMC->overlay.address,pI810XvMC->overlay.size);
101 drmUnmap(pI810XvMC->surfaces.address,pI810XvMC->surfaces.size);
102 drmClose(pI810XvMC->fd);
104 free(pI810XvMC->dmabufs->list);
105 free(pI810XvMC);
108 I810_UNLOCK(pI810XvMC);
131 i810XvMCContext *pI810XvMC;
173 pI810XvMC = (i810XvMCContext *)context->privData;
199 pI810XvMC->xv_colorkey = XInternAtom(display,"XV_COLORKEY",0);
200 if(!pI810XvMC->xv_colorkey) {
203 ret = XvGetPortAttribute(display,port,pI810XvMC->xv_colorkey,
204 &pI810XvMC->colorkey);
208 pI810XvMC->xv_brightness = XInternAtom(display,"XV_BRIGHTNESS",0);
209 pI810XvMC->xv_saturation = XInternAtom(display,"XV_SATURATION",0);
210 pI810XvMC->xv_contrast = XInternAtom(display,"XV_CONTRAST",0);
211 pI810XvMC->brightness = 0;
212 pI810XvMC->saturation = 0x80; /* 1.0 in 3.7 format */
213 pI810XvMC->contrast = 0x40; /* 1.0 in 3.6 format */
216 if((pI810XvMC->fd = drmOpen("i810",NULL)) < 0) {
218 free(pI810XvMC);
220 } /* !pI810XvMC->fd */
223 drmGetMagic(pI810XvMC->fd,&magic);
249 free(pI810XvMC);
252 pI810XvMC->drmcontext = priv_data[0];
253 pI810XvMC->fb_base = priv_data[1];
254 pI810XvMC->overlay.offset = priv_data[2] + priv_data[1];
255 pI810XvMC->overlay.size = priv_data[3];
256 pI810XvMC->surfaces.offset = priv_data[4] + priv_data[1];
257 pI810XvMC->surfaces.size = priv_data[5];
258 strncpy(pI810XvMC->busIdString,(char *)&priv_data[6],9);
259 pI810XvMC->busIdString[9] = '\0';
265 pI810XvMC->current = 0;
266 pI810XvMC->lock = 0;
267 pI810XvMC->last_flip = 0;
268 pI810XvMC->dual_prime = 0;
275 pI810XvMC->dmabufs = (drmBufMapPtr)malloc(sizeof(drmBufMap));
276 if(pI810XvMC->dmabufs == NULL) {
279 free(pI810XvMC);
281 } /* pI810XvMC->dmabufs == NULL */
282 memset(pI810XvMC->dmabufs, 0, sizeof(drmBufMap));
283 pI810XvMC->dmabufs->list = (drmBufPtr)malloc(sizeof(drmBuf) *
285 if(pI810XvMC->dmabufs->list == NULL) {
288 free(pI810XvMC);
290 } /* pI810XvMC->dmabufs->list == NULL */
291 memset(pI810XvMC->dmabufs->list, 0, sizeof(drmBuf) * I810_DMA_BUF_NR);
294 if(drmMap(pI810XvMC->fd,pI810XvMC->overlay.offset,
295 pI810XvMC->overlay.size,&(pI810XvMC->overlay.address)) < 0) {
297 (unsigned int)pI810XvMC->overlay.offset,pI810XvMC->overlay.size);
299 free(pI810XvMC->dmabufs->list);
300 free(pI810XvMC);
305 pI810XvMC->oregs = (i810OverlayRec *)
306 ((unsigned char *)pI810XvMC->overlay.address + 1024);
309 if(drmMap(pI810XvMC->fd,pI810XvMC->surfaces.offset,
310 pI810XvMC->surfaces.size,&(pI810XvMC->surfaces.address)) < 0) {
313 free(pI810XvMC->dmabufs->list);
314 free(pI810XvMC);
323 I810_LOCK(pI810XvMC,DRM_LOCK_QUIESCENT);
327 pI810XvMC->oregs->YRGB_VPH = 0;
328 pI810XvMC->oregs->UV_VPH = 0;
329 pI810XvMC->oregs->HORZ_PH = 0;
330 pI810XvMC->oregs->INIT_PH = 0;
331 pI810XvMC->oregs->DWINPOS = 0;
332 pI810XvMC->oregs->DWINSZ = (I810_XVMC_MAXHEIGHT << 16) |
334 pI810XvMC->oregs->SWID = I810_XVMC_MAXWIDTH | (I810_XVMC_MAXWIDTH << 15);
335 pI810XvMC->oregs->SWIDQW = (I810_XVMC_MAXWIDTH >> 3) |
337 pI810XvMC->oregs->SHEIGHT = I810_XVMC_MAXHEIGHT |
339 pI810XvMC->oregs->YRGBSCALE = 0x80004000; /* scale factor 1 */
340 pI810XvMC->oregs->UVSCALE = 0x80004000; /* scale factor 1 */
341 pI810XvMC->oregs->OV0CLRC0 = 0x4000; /* brightness: 0 contrast: 1.0 */
342 pI810XvMC->oregs->OV0CLRC1 = 0x80; /* saturation: bypass */
345 pI810XvMC->oregs->DCLRKV = RGB16ToColorKey(pI810XvMC->colorkey);
346 pI810XvMC->oregs->DCLRKM = 0x80070307;
349 pI810XvMC->oregs->SCLRKVH = 0;
350 pI810XvMC->oregs->SCLRKVL = 0;
351 pI810XvMC->oregs->SCLRKM = 0; /* source color key disable */
352 pI810XvMC->oregs->OV0CONF = 0; /* two 720 pixel line buffers */
354 pI810XvMC->oregs->OV0CMD = VC_UP_INTERPOLATION | HC_UP_INTERPOLATION |
357 pI810XvMC->ref = 1;
359 I810_UNLOCK(pI810XvMC);
376 i810XvMCContext *pI810XvMC;
384 pI810XvMC = (i810XvMCContext *)context->privData;
387 if(pI810XvMC->last_flip) {
388 I810_LOCK(pI810XvMC,DRM_LOCK_QUIESCENT);
391 BLOCK_OVERLAY(pI810XvMC,pI810XvMC->current);
393 pI810XvMC->oregs->OV0CMD = VC_UP_INTERPOLATION | HC_UP_INTERPOLATION |
395 pI810XvMC->current = !pI810XvMC->current;
396 if(pI810XvMC->current == 1) {
397 pI810XvMC->oregs->OV0CMD |= BUFFER1_FIELD0;
400 pI810XvMC->oregs->OV0CMD |= BUFFER0_FIELD0;
402 OVERLAY_FLIP(pI810XvMC);
403 pI810XvMC->last_flip++;
406 BLOCK_OVERLAY(pI810XvMC,pI810XvMC->current);
408 I810_UNLOCK(pI810XvMC);
414 i810_free_privContext(pI810XvMC);
426 i810XvMCContext *pI810XvMC;
436 pI810XvMC = (i810XvMCContext *)context->privData;
437 if(pI810XvMC == NULL) {
449 pI810Surface->privContext = pI810XvMC;
473 pI810Surface->data = pI810XvMC->surfaces.address;
474 pI810Surface->offset = pI810XvMC->surfaces.offset;
582 pI810XvMC->ref++;
593 i810XvMCContext *pI810XvMC;
606 pI810XvMC = (i810XvMCContext *)pI810Surface->privContext;
610 i810_free_privContext(pI810XvMC);
962 i810XvMCContext *pI810XvMC) {
967 pDMA = i810_get_free_buffer(pI810XvMC);
989 mc.last_render = ++pI810XvMC->last_render;
990 privTarget->last_render = pI810XvMC->last_render;
991 I810_MC(pI810XvMC,mc);
2436 i810XvMCContext *pI810XvMC;
2453 pI810XvMC = (i810XvMCContext *)context->privData;
2490 if(pI810XvMC->dual_prime) {
2521 I810_LOCK(pI810XvMC,0);
2541 dispatchYContext(privTarget,privPast,privFuture,pI810XvMC);
2547 mc.last_render = ++pI810XvMC->last_render;
2548 privTarget->last_render = pI810XvMC->last_render;
2549 I810_MC(pI810XvMC,mc);
2561 mc.last_render = ++pI810XvMC->last_render;
2562 privTarget->last_render = pI810XvMC->last_render;
2563 I810_MC(pI810XvMC,mc);
2579 mc.last_render = ++pI810XvMC->last_render;
2580 privTarget->last_render = pI810XvMC->last_render;
2581 I810_MC(pI810XvMC,mc);
2591 pDMAy = i810_get_free_buffer(pI810XvMC);
2595 pDMAu[u_index] = i810_get_free_buffer(pI810XvMC);
2618 pDMAv[v_index] = i810_get_free_buffer(pI810XvMC);
2652 if(!pI810XvMC->dual_prime) {
2653 pI810XvMC->dual_prime = 1;
2672 if((pI810XvMC->dual_prime) &&
2674 pI810XvMC->dual_prime = 0;
2758 dispatchYContext(privTarget,privPast,privFuture,pI810XvMC);
2762 mc.last_render = ++pI810XvMC->last_render;
2763 privTarget->last_render = pI810XvMC->last_render;
2764 I810_MC(pI810XvMC,mc);
2770 mc.last_render = ++pI810XvMC->last_render;
2771 privTarget->last_render = pI810XvMC->last_render;
2772 I810_MC(pI810XvMC,mc);
2778 mc.last_render = ++pI810XvMC->last_render;
2779 privTarget->last_render = pI810XvMC->last_render;
2780 I810_MC(pI810XvMC,mc);
2783 I810_UNLOCK(pI810XvMC);
2826 i810XvMCContext *pI810XvMC;
2856 pI810XvMC = (i810XvMCContext *)pI810Surface->privContext;
2857 pORegs = (i810OverlayRecPtr)pI810XvMC->oregs;
3092 I810_LOCK(pI810XvMC,0);
3100 if(pI810XvMC->last_flip) {
3101 BLOCK_OVERLAY(pI810XvMC,pI810XvMC->current);
3104 pI810XvMC->current = !pI810XvMC->current;
3127 pORegs->OV0CLRC0 = ((pI810XvMC->contrast & 0x1ff)<<8) |
3128 (pI810XvMC->brightness & 0xff);
3129 pORegs->OV0CLRC1 = (pI810XvMC->saturation & 0x3ff);
3132 pI810XvMC->oregs->DCLRKV = RGB16ToColorKey(pI810XvMC->colorkey);
3135 if(pI810XvMC->current) {
3164 if(pI810XvMC->current == 1) {
3178 if(pI810XvMC->current == 1) {
3193 if(pI810XvMC->current == 1) {
3218 if(pI810XvMC->current == 1) {
3230 OVERLAY_FLIP(pI810XvMC);
3237 if(!pI810XvMC->last_flip) {
3239 if(pI810XvMC->current == 1) {
3246 pI810Surface->last_flip = ++pI810XvMC->last_flip;
3247 I810_UNLOCK(pI810XvMC);
3305 i810XvMCContext *pI810XvMC;
3317 pI810XvMC = privSurface->privContext;
3318 if(pI810XvMC == NULL) {
3322 I810_LOCK(pI810XvMC,0);
3325 if(pI810XvMC->last_flip < privSurface->last_flip) {
3333 if(!(pI810XvMC->last_flip > (privSurface->last_flip + 1))) {
3338 if(pI810XvMC->last_flip == privSurface->last_flip) {
3346 temp = GET_FSTATUS(pI810XvMC);
3347 if(((temp & (1<<20))>>20) != pI810XvMC->current) {
3355 (privSurface->last_render > GET_RSTATUS(pI810XvMC))) {
3358 I810_UNLOCK(pI810XvMC);
3380 i810XvMCContext *pI810XvMC;
3412 pI810XvMC = (i810XvMCContext *)pI810Surface->privContext;
3413 if(pI810XvMC == NULL) {
3417 if(pI810XvMC->last_flip) {
3418 I810_LOCK(pI810XvMC,DRM_LOCK_QUIESCENT);
3421 BLOCK_OVERLAY(pI810XvMC,pI810XvMC->current);
3424 pI810XvMC->oregs->OV0CMD = VC_UP_INTERPOLATION | HC_UP_INTERPOLATION |
3426 pI810XvMC->current = !pI810XvMC->current;
3427 if(pI810XvMC->current == 1) {
3428 pI810XvMC->oregs->OV0CMD |= BUFFER1_FIELD0;
3431 pI810XvMC->oregs->OV0CMD |= BUFFER0_FIELD0;
3433 OVERLAY_FLIP(pI810XvMC);
3438 pI810XvMC->last_flip++;
3442 BLOCK_OVERLAY(pI810XvMC,pI810XvMC->current)
3444 I810_UNLOCK(pI810XvMC);
3479 i810XvMCContext *pI810XvMC;
3489 pI810XvMC = (i810XvMCContext *)context->privData;
3490 if(pI810XvMC == NULL) {
3524 pI810Subpicture->data = pI810XvMC->surfaces.address;
3525 pI810Subpicture->offset = pI810XvMC->surfaces.offset;
3528 pI810Subpicture->privContext = pI810XvMC;
3587 pI810XvMC->ref++;
3610 i810XvMCContext *pI810XvMC;
3623 pI810XvMC = (i810XvMCContext *)pI810Subpicture->privContext;
3624 if(pI810XvMC == NULL) {
3666 i810XvMCContext *pI810XvMC;
3679 pI810XvMC = (i810XvMCContext *)pI810Subpicture->privContext;
3680 if(pI810XvMC == NULL) {
3727 i810XvMCContext *pI810XvMC;
3737 pI810XvMC = (i810XvMCContext *)pI810Subpicture->privContext;
3738 if(!pI810XvMC) {
3749 i810_free_privContext(pI810XvMC);
3861 i810XvMCContext *pI810XvMC;
3890 pI810XvMC = (i810XvMCContext *)privSubpicture->privContext;
3891 if(pI810XvMC == NULL) {
3929 I810_LOCK(pI810XvMC,0);
3932 pDMA = i810_get_free_buffer(pI810XvMC);
4209 mc.last_render = ++pI810XvMC->last_render;
4210 privTarget->last_render = pI810XvMC->last_render;
4211 I810_MC(pI810XvMC,mc);
4213 I810_UNLOCK(pI810XvMC);
4286 i810XvMCContext *pI810XvMC;
4297 pI810XvMC = (i810XvMCContext *)privSubpicture->privContext;
4298 if(pI810XvMC == NULL) {
4302 I810_LOCK(pI810XvMC,0);
4305 (privSubpicture->last_render > GET_RSTATUS(pI810XvMC))) {
4308 I810_UNLOCK(pI810XvMC);
4345 i810XvMCContext *pI810XvMC;
4359 pI810XvMC = context->privData;
4360 if(pI810XvMC == NULL) {
4401 i810XvMCContext *pI810XvMC;
4409 pI810XvMC = context->privData;
4410 if(pI810XvMC == NULL) {
4414 if(attribute == pI810XvMC->xv_colorkey) {
4419 pI810XvMC->colorkey = value;
4422 if(attribute == pI810XvMC->xv_brightness) {
4427 pI810XvMC->brightness = value;
4430 if(attribute == pI810XvMC->xv_saturation) {
4435 pI810XvMC->saturation = value;
4438 if(attribute == pI810XvMC->xv_contrast) {
4443 pI810XvMC->contrast = value;
4472 i810XvMCContext *pI810XvMC;
4480 pI810XvMC = context->privData;
4481 if(pI810XvMC == NULL) {
4488 if(attribute == pI810XvMC->xv_colorkey) {
4489 *value = pI810XvMC->colorkey;
4492 if(attribute == pI810XvMC->xv_brightness) {
4493 *value = pI810XvMC->brightness;
4496 if(attribute == pI810XvMC->xv_saturation) {
4497 *value = pI810XvMC->saturation;
4500 if(attribute == pI810XvMC->xv_contrast) {
4501 *value = pI810XvMC->contrast;