Rev 818 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 818 | Rev 829 | ||
---|---|---|---|
Line 290... | Line 290... | ||
290 | } |
290 | } |
291 | return ERR_OK; |
291 | return ERR_OK; |
292 | } |
292 | } |
Line -... | Line 293... | ||
- | 293 | ||
- | 294 | int DestroyPixmap( userpixmap_t *io) |
|
- | 295 | { |
|
- | 296 | pixmap_t *pixmap; |
|
- | 297 | ||
- | 298 | dbgprintf("Destroy pixmap %x\n", io->pixmap); |
|
- | 299 | ||
- | 300 | if(io->pixmap == (pixmap_t*)-1) |
|
- | 301 | return ERR_PARAM; |
|
- | 302 | else |
|
- | 303 | pixmap = io->pixmap; |
|
- | 304 | ||
- | 305 | if( (pixmap->flags & 1) == PX_LOCK ) |
|
- | 306 | UnlockPixmap(io); |
|
- | 307 | ||
- | 308 | UserFree(pixmap->usermap); |
|
- | 309 | rhd_mem_free(&rhd,RHD_MEM_FB,pixmap->raw); |
|
- | 310 | free(pixmap); |
|
- | 311 | ||
- | 312 | io->pixmap = NULL; |
|
- | 313 | io->usermap = NULL; |
|
- | 314 | io->format = 0; |
|
- | 315 | io->pitch = 0; |
|
- | 316 | ||
- | 317 | return ERR_OK; |
|
- | 318 | }; |
|
293 | 319 | ||
294 | int LockPixmap(userpixmap_t *io) |
320 | int LockPixmap(userpixmap_t *io) |
295 | { |
321 | { |
296 | pixmap_t *pixmap; |
322 | pixmap_t *pixmap; |
297 | size_t size; |
323 | size_t size; |
Line 398... | Line 424... | ||
398 | 424 | ||
Line 399... | Line 425... | ||
399 | safe_sti(ifl); |
425 | safe_sti(ifl); |
400 | return ERR_OK; |
426 | return ERR_OK; |
401 | }16)|blit-><16)|blit->16)|blit-><16)|blit->16)|blit-><16)|blit->><>><>9),><9),>22)|><22)|>16)|x1); |
427 | } |
- | 428 | ||
- | 429 | ||
- | 430 | int TransBlit(pixblit_t *blit) |
|
- | 431 | { |
|
- | 432 | ||
- | 433 | u32 *ring, write; |
|
- | 434 | int w, h; |
|
- | 435 | u32 ifl; |
|
- | 436 | int x0, y0; |
|
- | 437 | ||
- | 438 | pixmap_t *srcpixmap; |
|
- | 439 | pixmap_t *dstpixmap; |
|
- | 440 | ||
- | 441 | dbgprintf("Transblit src: %x dst: %x\n",blit->srcpix, blit->dstpix); |
|
- | 442 | ||
- | 443 | dstpixmap = (blit->dstpix == (void*)-1) ? &scr_pixmap : blit->dstpix ; |
|
- | 444 | srcpixmap = (blit->srcpix == (void*)-1) ? &scr_pixmap : blit->srcpix ; |
|
- | 445 | ||
- | 446 | //dbgprintf("srcpixmap: %x dstpixmap: %x\n",srcpixmap, dstpixmap); |
|
- | 447 | ||
- | 448 | //dbgprintf("dst.width: %d dst.height: %d\n", dstpixmap->width,dstpixmap->height); |
|
- | 449 | //dbgprintf("src.width: %d src.height: %d\n", srcpixmap->width,srcpixmap->height); |
|
- | 450 | //dbgprintf("srcpitch: %x dstpitch: %x\n", |
|
- | 451 | // srcpixmap->pitch_offset,dstpixmap->pitch_offset); |
|
- | 452 | ||
- | 453 | ifl = safe_cli(); |
|
- | 454 | ||
- | 455 | BEGIN_RING(); |
|
- | 456 | OUT_RING(CP_PACKET3(RADEON_CNTL_TRANBLT, 8)); |
|
- | 457 | ||
- | 458 | OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL | |
|
- | 459 | RADEON_GMC_DST_PITCH_OFFSET_CNTL | |
|
- | 460 | RADEON_GMC_BRUSH_NONE | |
|
- | 461 | RADEON_GMC_DST_32BPP | |
|
- | 462 | RADEON_GMC_SRC_DATATYPE_COLOR | |
|
- | 463 | RADEON_DP_SRC_SOURCE_MEMORY | |
|
- | 464 | (1 << 30) | R5XX_ROP3_S); |
|
- | 465 | ||
- | 466 | OUT_RING(srcpixmap->pitch_offset); |
|
- | 467 | OUT_RING(dstpixmap->pitch_offset); |
|
- | 468 | ||
- | 469 | OUT_RING((2<<24)+5); |
|
- | 470 | OUT_RING(0xFF000000); |
|
- | 471 | OUT_RING(0xFF000000); |
|
- | 472 | ||
- | 473 | OUT_RING((blit->src_x<<16)|blit->src_y); |
|
- | 474 | OUT_RING((blit->dst_x<<16)|blit->dst_y); |
|
- | 475 | OUT_RING((blit->w<<16)|blit->h); |
|
- | 476 | COMMIT_RING(); |
|
- | 477 | ||
- | 478 | safe_sti(ifl); |
|
- | 479 | return ERR_OK; |
|
- | 480 | }16)|blit-><16)|blit->16)|blit-><16)|blit->16)|blit-><16)|blit->24)+5); |
|
- | 481 | ><24)+5); |