Subversion Repositories Kolibri OS

Rev

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
}
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
}
-
 
481
>