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] |