Subversion Repositories Kolibri OS

Rev

Rev 829 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 829 Rev 868
Line 194... Line 194...
194
    ifl = safe_cli();
194
    ifl = safe_cli();
Line 195... Line 195...
195
 
195
 
Line 196... Line 196...
196
#if R300_PIO
196
#if R300_PIO
Line 197... Line 197...
197
 
197
 
-
 
198
     R5xxFIFOWait(6);
198
     R5xxFIFOWait(7);
199
 
199
 
200
     OUTREG(R5XX_DP_GUI_MASTER_CNTL,
-
 
201
            rhd.gui_control             |
-
 
202
            R5XX_GMC_BRUSH_SOLID_COLOR  |
-
 
203
            R5XX_GMC_SRC_DATATYPE_COLOR |
-
 
204
            R5XX_GMC_CLR_CMP_CNTL_DIS   |
Line 200... Line 205...
200
     OUTREG(R5XX_DP_GUI_MASTER_CNTL, rhd.gui_control | R5XX_ROP3_P |
205
            R5XX_GMC_WR_MSK_DIS         |
Line 201... Line 206...
201
                                     R5XX_GMC_BRUSH_SOLID_COLOR |
206
            R5XX_ROP3_P
202
                                     R5XX_GMC_SRC_DATATYPE_COLOR);
-
 
203
 
207
            );
Line 204... Line 208...
204
     OUTREG(R5XX_DST_LINE_PATCOUNT, 0x55 << R5XX_BRES_CNTL_SHIFT);
208
 
205
 
209
     OUTREG(R5XX_DST_LINE_PATCOUNT, 0x55 << R5XX_BRES_CNTL_SHIFT);
Line 217... Line 221...
217
         OUT_RING(RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
221
         OUT_RING(RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
218
                  RADEON_GMC_BRUSH_SOLID_COLOR      |
222
                  RADEON_GMC_BRUSH_SOLID_COLOR      |
219
                  RADEON_GMC_DST_32BPP              |
223
                  RADEON_GMC_DST_32BPP              |
220
                  RADEON_GMC_SRC_DATATYPE_COLOR     |
224
                  RADEON_GMC_SRC_DATATYPE_COLOR     |
221
                  (1 << 28)+(1 << 30) | R5XX_ROP3_P);
225
                  R5XX_GMC_CLR_CMP_CNTL_DIS         |
-
 
226
                  R5XX_GMC_WR_MSK_DIS               |
-
 
227
                  R5XX_ROP3_P);
222
 
228
 
Line 223... Line 229...
223
         OUT_RING(rhd.dst_pitch_offset);
229
         OUT_RING(rhd.dst_pitch_offset);
224
         OUT_RING(draw->color);
230
         OUT_RING(draw->color);
225
         OUT_RING((y0<<16)|x0);
231
         OUT_RING((y0<<16)|x0);
226
         OUT_RING((y1<<16)|x1);
232
         OUT_RING((y1<<16)|x1);
Line 363... Line 369...
363
 
369
 
Line 364... Line 370...
364
  if( (pixmap->flags & 1) != PX_LOCK )
370
  if( (pixmap->flags & 1) != PX_LOCK )
365
    return ERR_PARAM;
371
    return ERR_PARAM;
Line -... Line 372...
-
 
372
 
-
 
373
/*   Sanity checks  */
-
 
374
 
-
 
375
  if( (pixmap->usermap == 0)||
-
 
376
      ((u32_t)pixmap->usermap >= 0x80000000) ||
-
 
377
      ((u32_t)pixmap->usermap & 4095)
-
 
378
    )
-
 
379
    return ERR_PARAM;
366
 
380
 
Line 367... Line 381...
367
  size = (pixmap->pitch*pixmap->width+4095) & ~ 4095;
381
  size = (pixmap->pitch*pixmap->width+4095) & ~ 4095;
368
 
382
 
369
  UnmapPages(pixmap->usermap, size);
383
  UnmapPages(pixmap->usermap, size);
Line 401... Line 415...
401
     //           srcpixmap->pitch_offset,dstpixmap->pitch_offset);
415
     //           srcpixmap->pitch_offset,dstpixmap->pitch_offset);
402
 
416
 
Line 403... Line 417...
403
     ifl = safe_cli();
417
     ifl = safe_cli();
Line -... Line 418...
-
 
418
 
-
 
419
#if R300_PIO
-
 
420
 
-
 
421
     R5xxFIFOWait(7);
-
 
422
 
-
 
423
     OUTREG(R5XX_DP_GUI_MASTER_CNTL,
-
 
424
            RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
-
 
425
            RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
-
 
426
            RADEON_GMC_BRUSH_NONE             |
-
 
427
            RADEON_GMC_DST_32BPP              |
-
 
428
            RADEON_GMC_SRC_DATATYPE_COLOR     |
-
 
429
            RADEON_DP_SRC_SOURCE_MEMORY       |
-
 
430
            R5XX_GMC_CLR_CMP_CNTL_DIS         |
-
 
431
            R5XX_GMC_WR_MSK_DIS               |
-
 
432
            R5XX_ROP3_S
-
 
433
           );
-
 
434
 
-
 
435
     OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM);
-
 
436
 
-
 
437
     OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset);
-
 
438
     OUTREG(R5XX_SRC_PITCH_OFFSET, srcpixmap->pitch_offset);
-
 
439
 
-
 
440
     OUTREG(R5XX_SRC_Y_X,(blit->src_y<<16)|blit->src_x);
-
 
441
     OUTREG(R5XX_DST_Y_X,(blit->dst_y<<16)|blit->dst_x);
-
 
442
     OUTREG(R5XX_DST_HEIGHT_WIDTH,(blit->h<<16)|blit->w);
-
 
443
 
Line 404... Line 444...
404
 
444
#else
405
 
445
 
Line 406... Line 446...
406
     BEGIN_RING();
446
     BEGIN_RING();
407
       OUT_RING(CP_PACKET3(RADEON_CNTL_BITBLT, 5));
447
       OUT_RING(CP_PACKET3(RADEON_CNTL_BITBLT, 5));
408
 
448
 
409
       OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
449
       OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
410
                RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
450
                RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
411
                RADEON_GMC_BRUSH_NONE             |
451
                RADEON_GMC_BRUSH_NONE             |
-
 
452
                RADEON_GMC_DST_32BPP              |
-
 
453
                RADEON_GMC_SRC_DATATYPE_COLOR     |
412
                RADEON_GMC_DST_32BPP              |
454
                RADEON_DP_SRC_SOURCE_MEMORY       |
-
 
455
                R5XX_GMC_CLR_CMP_CNTL_DIS         |
Line 413... Line 456...
413
                RADEON_GMC_SRC_DATATYPE_COLOR     |
456
                R5XX_GMC_WR_MSK_DIS               |
414
                RADEON_DP_SRC_SOURCE_MEMORY       |
457
                R5XX_ROP3_S
Line 415... Line 458...
415
                (1 << 28)+(1 << 30) | R5XX_ROP3_S);
458
               );
416
 
459
 
417
       OUT_RING(srcpixmap->pitch_offset);
460
       OUT_RING(srcpixmap->pitch_offset);
418
       OUT_RING(dstpixmap->pitch_offset);
461
       OUT_RING(dstpixmap->pitch_offset);
Line -... Line 462...
-
 
462
 
-
 
463
       OUT_RING((blit->src_x<<16)|blit->src_y);
419
 
464
       OUT_RING((blit->dst_x<<16)|blit->dst_y);
420
       OUT_RING((blit->src_x<<16)|blit->src_y);
465
       OUT_RING((blit->w<<16)|blit->h);
421
       OUT_RING((blit->dst_x<<16)|blit->dst_y);
466
     COMMIT_RING();
Line 437... Line 482...
437
 
482
 
Line 438... Line 483...
438
     pixmap_t *srcpixmap;
483
     pixmap_t *srcpixmap;
439
     pixmap_t *dstpixmap;
484
     pixmap_t *dstpixmap;
Line 440... Line 485...
440
 
485
 
Line 441... Line 486...
441
     dbgprintf("Transblit src: %x dst: %x\n",blit->srcpix, blit->dstpix);
486
    // dbgprintf("Transblit src: %x dst: %x\n",blit->srcpix, blit->dstpix);
442
 
487
 
Line 443... Line 488...
443
     dstpixmap = (blit->dstpix == (void*)-1) ? &scr_pixmap : blit->dstpix ;
488
     dstpixmap = (blit->dstpix == (void*)-1) ? &scr_pixmap : blit->dstpix ;
Line 451... Line 496...
451
     //           srcpixmap->pitch_offset,dstpixmap->pitch_offset);
496
     //           srcpixmap->pitch_offset,dstpixmap->pitch_offset);
452
 
497
 
Line 453... Line 498...
453
     ifl = safe_cli();
498
     ifl = safe_cli();
Line -... Line 499...
-
 
499
 
-
 
500
#if R300_PIO
-
 
501
 
-
 
502
     R5xxFIFOWait(10);
-
 
503
 
-
 
504
     OUTREG(R5XX_DP_GUI_MASTER_CNTL,
-
 
505
            RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
-
 
506
            RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
-
 
507
            RADEON_GMC_BRUSH_NONE             |
-
 
508
            RADEON_GMC_DST_32BPP              |
-
 
509
            RADEON_GMC_SRC_DATATYPE_COLOR     |
-
 
510
            RADEON_DP_SRC_SOURCE_MEMORY       |
-
 
511
            R5XX_GMC_WR_MSK_DIS               |
-
 
512
            R5XX_ROP3_S
-
 
513
           );
-
 
514
 
-
 
515
     OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM);
-
 
516
 
-
 
517
     OUTREG(R5XX_CLR_CMP_CLR_SRC, 0xFF000000);
-
 
518
     OUTREG(R5XX_CLR_CMP_MASK, R5XX_CLR_CMP_MSK);
-
 
519
     OUTREG(R5XX_CLR_CMP_CNTL, R5XX_SRC_CMP_EQ_COLOR | R5XX_CLR_CMP_SRC_SOURCE);
-
 
520
 
-
 
521
     OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset);
-
 
522
     OUTREG(R5XX_SRC_PITCH_OFFSET, srcpixmap->pitch_offset);
-
 
523
 
-
 
524
     OUTREG(R5XX_SRC_Y_X,(blit->src_y<<16)|blit->src_x);
-
 
525
     OUTREG(R5XX_DST_Y_X,(blit->dst_y<<16)|blit->dst_x);
-
 
526
     OUTREG(R5XX_DST_HEIGHT_WIDTH,(blit->h<<16)|blit->w);
-
 
527
 
-
 
528
#else
454
 
529
 
455
     BEGIN_RING();
530
     BEGIN_RING();
Line 456... Line 531...
456
       OUT_RING(CP_PACKET3(RADEON_CNTL_TRANBLT, 8));
531
       OUT_RING(CP_PACKET3(RADEON_CNTL_TRANBLT, 8));
457
 
532
 
458
       OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
533
       OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL  |
459
                RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
534
                RADEON_GMC_DST_PITCH_OFFSET_CNTL  |
460
                RADEON_GMC_BRUSH_NONE             |
535
                RADEON_GMC_BRUSH_NONE             |
461
                RADEON_GMC_DST_32BPP              |
536
                RADEON_GMC_DST_32BPP              |
-
 
537
                RADEON_GMC_SRC_DATATYPE_COLOR     |
462
                RADEON_GMC_SRC_DATATYPE_COLOR     |
538
                RADEON_DP_SRC_SOURCE_MEMORY       |
-
 
539
                R5XX_GMC_WR_MSK_DIS               |
Line 463... Line 540...
463
                RADEON_DP_SRC_SOURCE_MEMORY       |
540
                R5XX_ROP3_S
464
                (1 << 30) | R5XX_ROP3_S);
541
               );
Line 465... Line 542...
465
 
542
 
466
       OUT_RING(srcpixmap->pitch_offset);
543
       OUT_RING(srcpixmap->pitch_offset);
467
       OUT_RING(dstpixmap->pitch_offset);
544
       OUT_RING(dstpixmap->pitch_offset);
Line 468... Line 545...
468
 
545
 
469
       OUT_RING((2<<24)+5);
546
       OUT_RING(R5XX_CLR_CMP_SRC_SOURCE | R5XX_SRC_CMP_EQ_COLOR);
470
       OUT_RING(0xFF000000);
547
       OUT_RING(0xFF000000);
-
 
548
       OUT_RING(0xFF000000);
471
       OUT_RING(0xFF000000);
549
 
Line -... Line 550...
-
 
550
       OUT_RING((blit->src_x<<16)|blit->src_y);
-
 
551
       OUT_RING((blit->dst_x<<16)|blit->dst_y);
472
 
552
       OUT_RING((blit->w<<16)|blit->h);
473
       OUT_RING((blit->src_x<<16)|blit->src_y);
553
 
474
       OUT_RING((blit->dst_x<<16)|blit->dst_y);
554
     COMMIT_RING();