Subversion Repositories Kolibri OS

Rev

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

Rev 729 Rev 732
Line 31... Line 31...
31
 The below code is a rework from code in xf86-video-ati/src/radeon_accel.c
31
 The below code is a rework from code in xf86-video-ati/src/radeon_accel.c
32
 The original license is included below, it has the messed up disclaimer and
32
 The original license is included below, it has the messed up disclaimer and
33
 an all rights reserved statement.
33
 an all rights reserved statement.
Line 34... Line -...
34
 
-
 
35
 
34
 
36
 
35
 
Line 37... Line 36...
37
 Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
36
 Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
Line 65... Line 64...
65
   Rickard E. Faith 
64
   Rickard E. Faith 
66
   Alan Hourihane 
65
   Alan Hourihane 
Line 67... Line 66...
67
 
66
 
Line 68... Line -...
68
end if
-
 
-
 
67
end if
Line 69... Line 68...
69
 
68
 
Line 70... Line 69...
70
 
69
D1GRPH_PITCH                     equ 0x6120
Line 122... Line 121...
122
R5XX_SC_TOP_LEFT                 equ  0x16ec
121
R5XX_SC_TOP_LEFT                 equ  0x16ec
123
  R5XX_SC_BOTTOM_RIGHT           equ  0x16f0
122
  R5XX_SC_BOTTOM_RIGHT           equ  0x16f0
124
  R5XX_SC_SIGN_MASK_LO           equ  0x8000
123
  R5XX_SC_SIGN_MASK_LO           equ  0x8000
125
  R5XX_SC_SIGN_MASK_HI           equ  0x80000000
124
  R5XX_SC_SIGN_MASK_HI           equ  0x80000000
Line 126... Line -...
126
 
-
 
127
R5XX_SRC_Y_X                     equ  0x1434
-
 
128
R5XX_DST_Y_X                     equ  0x1438
-
 
129
R5XX_DST_HEIGHT_WIDTH            equ  0x143c
-
 
130
 
125
 
131
R5XX_DP_GUI_MASTER_CNTL          equ  0x146c
126
R5XX_DP_GUI_MASTER_CNTL          equ  0x146c
132
R5XX_GMC_SRC_PITCH_OFFSET_CNTL   equ  (1 shl 0)
127
R5XX_GMC_SRC_PITCH_OFFSET_CNTL   equ  (1 shl 0)
133
R5XX_GMC_DST_PITCH_OFFSET_CNTL   equ  (1 shl 1)
128
R5XX_GMC_DST_PITCH_OFFSET_CNTL   equ  (1 shl 1)
134
R5XX_GMC_SRC_CLIPPING            equ  (1 shl 2)
129
R5XX_GMC_SRC_CLIPPING            equ  (1 shl 2)
Line 232... Line 227...
232
R5XX_DP_BRUSH_BKGD_CLR              equ  0x1478
227
R5XX_DP_BRUSH_BKGD_CLR              equ  0x1478
233
R5XX_DP_BRUSH_FRGD_CLR              equ  0x147c
228
R5XX_DP_BRUSH_FRGD_CLR              equ  0x147c
234
R5XX_BRUSH_DATA0                    equ  0x1480
229
R5XX_BRUSH_DATA0                    equ  0x1480
235
R5XX_BRUSH_DATA1                    equ  0x1484
230
R5XX_BRUSH_DATA1                    equ  0x1484
Line -... Line 231...
-
 
231
 
-
 
232
R5XX_SRC_Y_X                        equ  0x1434
-
 
233
 
-
 
234
R5XX_DST_Y_X                        equ  0x1438
236
 
235
R5XX_DST_HEIGHT_WIDTH               equ  0x143c
Line -... Line 236...
-
 
236
R5XX_DST_WIDTH_HEIGHT               equ  0x1598
-
 
237
 
-
 
238
R5XX_DST_LINE_START                 equ  0x1600
-
 
239
R5XX_DST_LINE_END                   equ  0x1604
-
 
240
R5XX_DST_LINE_PATCOUNT              equ  0x1608
-
 
241
  R5XX_BRES_CNTL_SHIFT              equ  8
237
R5XX_DST_WIDTH_HEIGHT               equ  0x1598
242
 
238
 
243
 
Line 239... Line 244...
239
R5XX_DP_SRC_BKGD_CLR                equ  0x15dc
244
R5XX_DP_SRC_BKGD_CLR                equ  0x15dc
Line 499... Line 504...
499
                              R5XX_GMC_CLR_CMP_CNTL_DIS or R5XX_GMC_DST_PITCH_OFFSET_CNTL
504
                              R5XX_GMC_CLR_CMP_CNTL_DIS or R5XX_GMC_DST_PITCH_OFFSET_CNTL
Line 500... Line 505...
500
 
505
 
501
           mov [rhd.datatype], R5XX_DATATYPE_ARGB8888
506
           mov [rhd.datatype], R5XX_DATATYPE_ARGB8888
Line -... Line 507...
-
 
507
           mov [rhd.surface_cntl],0
-
 
508
 
-
 
509
           rdr eax, D1GRPH_PITCH
502
           mov [rhd.surface_cntl],0
510
           shl eax, 18
503
 
511
 
-
 
512
           mov ebx, [r500_LFB]
-
 
513
           shr ebx, 10
504
           mov eax, [r500_LFB]
514
           or eax, ebx
505
           shr eax, 10
515
 
Line 506... Line 516...
506
           or eax,  ((1024*4)/64) shl 22
516
;           or eax,  ((1024*4)/64) shl 22
Line 507... Line 517...
507
           mov [rhd.dst_pitch_offset], eax
517
           mov [rhd.dst_pitch_offset], eax
Line 568... Line 578...
568
           wrr R5XX_DST_WIDTH_HEIGHT, ecx
578
           wrr R5XX_DST_WIDTH_HEIGHT, ecx
Line 569... Line 579...
569
 
579
 
570
           ret
580
           ret
Line -... Line 581...
-
 
581
endp
-
 
582
 
-
 
583
handle     equ  IOCTL.handle
-
 
584
io_code    equ  IOCTL.io_code
-
 
585
input      equ  IOCTL.input
-
 
586
inp_size   equ  IOCTL.inp_size
-
 
587
output     equ  IOCTL.output
-
 
588
out_size   equ  IOCTL.out_size
-
 
589
 
-
 
590
SRV_GETVERSION  equ 0
-
 
591
SOLID_FILL      equ 1
-
 
592
LINE_2P         equ 2
-
 
593
 
-
 
594
align 4
-
 
595
proc r500_entry stdcall, state:dword
-
 
596
 
-
 
597
.close:
-
 
598
          ; call r500_close
-
 
599
 
-
 
600
           xor eax, eax
-
 
601
           ret
-
 
602
endp
-
 
603
 
-
 
604
align 4
-
 
605
proc r500_HDraw stdcall, ioctl:dword
-
 
606
 
-
 
607
           mov ebx, [ioctl]
-
 
608
           mov eax, [ebx+io_code]
-
 
609
           cmp eax, LINE_2P
-
 
610
           ja .fail
-
 
611
 
-
 
612
           cmp eax, SRV_GETVERSION
-
 
613
           jne @F
-
 
614
 
-
 
615
           mov eax, [ebx+output]
-
 
616
           cmp [ebx+out_size], 4
-
 
617
           jne .fail
-
 
618
           mov [eax], dword API_VERSION
-
 
619
           xor eax, eax
-
 
620
           ret
-
 
621
@@:
-
 
622
           cmp eax, SOLID_FILL
-
 
623
           jne @F
-
 
624
 
-
 
625
           cmp [ebx+inp_size], 5
-
 
626
           jne .fail
-
 
627
 
-
 
628
           mov esi, [ebx+input]
-
 
629
           call solid_fill
-
 
630
           xor eax, eax
-
 
631
           ret
-
 
632
@@:
-
 
633
           cmp eax, LINE_2P
-
 
634
           jne @F
-
 
635
 
-
 
636
           cmp [ebx+inp_size], 5
-
 
637
           jne .fail
-
 
638
 
-
 
639
           mov esi, [ebx+input]
-
 
640
           call solid_line
-
 
641
           xor eax, eax
-
 
642
           ret
-
 
643
@@:
-
 
644
 
-
 
645
.fail:
-
 
646
           or eax, -1
-
 
647
           ret
-
 
648
endp
-
 
649
 
-
 
650
restore   handle
-
 
651
restore   io_code
-
 
652
restore   input
-
 
653
restore   inp_size
-
 
654
restore   output
-
 
655
restore   out_size
-
 
656
 
-
 
657
struc FILL
-
 
658
{
-
 
659
  .color  rd 1
-
 
660
  .x      rd 1
-
 
661
  .y      rd 1
-
 
662
  .w      rd 1
-
 
663
  .h      rd 1
-
 
664
}
-
 
665
 
-
 
666
virtual at 0
-
 
667
  FILL FILL
-
 
668
end virtual
-
 
669
 
-
 
670
struc LINE2P
-
 
671
{
-
 
672
  .color  rd 1
-
 
673
  .x1      rd 1
-
 
674
  .y1      rd 1
-
 
675
  .x2      rd 1
-
 
676
  .y2      rd 1
-
 
677
}
-
 
678
 
-
 
679
virtual at 0
-
 
680
  LINE2P LINE2P
-
 
681
end virtual
Line -... Line 682...
-
 
682
 
-
 
683
GXcopy  equ 3
-
 
684
 
-
 
685
; esi= input params
-
 
686
align 4
-
 
687
solid_fill:
-
 
688
 
-
 
689
           mov edx, [R5xxRops+4+GXcopy*8]
-
 
690
           or edx, [rhd.control]
-
 
691
           or edx, (R5XX_GMC_BRUSH_SOLID_COLOR or R5XX_GMC_SRC_DATATYPE_COLOR)
-
 
692
 
-
 
693
           mov eax, 7
-
 
694
           call R5xxFIFOWait
-
 
695
 
-
 
696
           wrr R5XX_DP_GUI_MASTER_CNTL, edx
-
 
697
 
-
 
698
           mov eax, [esi+FILL.color]
-
 
699
           wrr R5XX_DP_BRUSH_FRGD_CLR, eax
-
 
700
 
-
 
701
           wrr R5XX_DP_WRITE_MASK, 0xFFFFFFFF
-
 
702
 
-
 
703
           wrr R5XX_DP_CNTL, (R5XX_DST_X_LEFT_TO_RIGHT or R5XX_DST_Y_TOP_TO_BOTTOM)
-
 
704
 
-
 
705
           mov eax, [rhd.dst_pitch_offset]
-
 
706
           wrr R5XX_DST_PITCH_OFFSET, eax
-
 
707
 
-
 
708
           mov ebx, [esi+FILL.y]
-
 
709
           shl ebx, 16
-
 
710
           mov bx, word [esi+FILL.x]
-
 
711
           wrr R5XX_DST_Y_X, ebx
-
 
712
 
-
 
713
           mov ecx, [esi+FILL.w]
-
 
714
           shl ecx, 16
-
 
715
           mov cx, word [esi+FILL.h]
-
 
716
           wrr R5XX_DST_WIDTH_HEIGHT, ecx
-
 
717
 
-
 
718
           ret
-
 
719
 
-
 
720
align 4
-
 
721
solid_line:
-
 
722
 
-
 
723
           mov eax, 7
-
 
724
           call R5xxFIFOWait
-
 
725
 
-
 
726
           mov edx, [R5xxRops+4+GXcopy*8]
-
 
727
           or edx, [rhd.control]
-
 
728
           or edx, (R5XX_GMC_BRUSH_SOLID_COLOR or R5XX_GMC_SRC_DATATYPE_COLOR)
-
 
729
 
-
 
730
           wrr R5XX_DST_LINE_PATCOUNT, (0x55 shl R5XX_BRES_CNTL_SHIFT)
-
 
731
           wrr R5XX_DP_GUI_MASTER_CNTL, edx
-
 
732
 
-
 
733
           mov eax, [esi+FILL.color]
-
 
734
           wrr R5XX_DP_BRUSH_FRGD_CLR, eax
-
 
735
 
-
 
736
           wrr R5XX_DP_WRITE_MASK, 0xFFFFFFFF
-
 
737
 
-
 
738
           mov eax, [rhd.dst_pitch_offset]
-
 
739
           wrr R5XX_DST_PITCH_OFFSET, eax
-
 
740
 
-
 
741
           mov ebx, [esi+LINE2P.y1]
-
 
742
           shl ebx, 16
-
 
743
           mov bx, word [esi+LINE2P.x1]
-
 
744
           wrr R5XX_DST_LINE_START, ebx
-
 
745
 
-
 
746
           mov ecx, [esi+LINE2P.y2]
-
 
747
           shl ecx, 16
-
 
748
           mov cx, word [esi+LINE2P.x2]