Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 731 → Rev 732

/kernel/trunk/drivers/r500hw.inc
33,7 → 33,6
an all rights reserved statement.
 
 
 
Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
VA Linux Systems Inc., Fremont, California.
 
67,8 → 66,8
 
end if
 
D1GRPH_PITCH equ 0x6120
 
 
R5XX_DATATYPE_ARGB8888 equ 6
 
R5XX_RB3D_CNTL equ 0x1c3c
124,10 → 123,6
R5XX_SC_SIGN_MASK_LO equ 0x8000
R5XX_SC_SIGN_MASK_HI equ 0x80000000
 
R5XX_SRC_Y_X equ 0x1434
R5XX_DST_Y_X equ 0x1438
R5XX_DST_HEIGHT_WIDTH equ 0x143c
 
R5XX_DP_GUI_MASTER_CNTL equ 0x146c
R5XX_GMC_SRC_PITCH_OFFSET_CNTL equ (1 shl 0)
R5XX_GMC_DST_PITCH_OFFSET_CNTL equ (1 shl 1)
234,8 → 229,18
R5XX_BRUSH_DATA0 equ 0x1480
R5XX_BRUSH_DATA1 equ 0x1484
 
R5XX_SRC_Y_X equ 0x1434
 
R5XX_DST_Y_X equ 0x1438
R5XX_DST_HEIGHT_WIDTH equ 0x143c
R5XX_DST_WIDTH_HEIGHT equ 0x1598
 
R5XX_DST_LINE_START equ 0x1600
R5XX_DST_LINE_END equ 0x1604
R5XX_DST_LINE_PATCOUNT equ 0x1608
R5XX_BRES_CNTL_SHIFT equ 8
 
 
R5XX_DP_SRC_BKGD_CLR equ 0x15dc
R5XX_DP_SRC_FRGD_CLR equ 0x15d8
 
501,9 → 506,14
mov [rhd.datatype], R5XX_DATATYPE_ARGB8888
mov [rhd.surface_cntl],0
 
mov eax, [r500_LFB]
shr eax, 10
or eax, ((1024*4)/64) shl 22
rdr eax, D1GRPH_PITCH
shl eax, 18
 
mov ebx, [r500_LFB]
shr ebx, 10
or eax, ebx
 
; or eax, ((1024*4)/64) shl 22
mov [rhd.dst_pitch_offset], eax
 
ret
570,4 → 580,172
ret
endp
 
handle equ IOCTL.handle
io_code equ IOCTL.io_code
input equ IOCTL.input
inp_size equ IOCTL.inp_size
output equ IOCTL.output
out_size equ IOCTL.out_size
 
SRV_GETVERSION equ 0
SOLID_FILL equ 1
LINE_2P equ 2
 
align 4
proc r500_entry stdcall, state:dword
 
.close:
; call r500_close
 
xor eax, eax
ret
endp
 
align 4
proc r500_HDraw stdcall, ioctl:dword
 
mov ebx, [ioctl]
mov eax, [ebx+io_code]
cmp eax, LINE_2P
ja .fail
 
cmp eax, SRV_GETVERSION
jne @F
 
mov eax, [ebx+output]
cmp [ebx+out_size], 4
jne .fail
mov [eax], dword API_VERSION
xor eax, eax
ret
@@:
cmp eax, SOLID_FILL
jne @F
 
cmp [ebx+inp_size], 5
jne .fail
 
mov esi, [ebx+input]
call solid_fill
xor eax, eax
ret
@@:
cmp eax, LINE_2P
jne @F
 
cmp [ebx+inp_size], 5
jne .fail
 
mov esi, [ebx+input]
call solid_line
xor eax, eax
ret
@@:
 
.fail:
or eax, -1
ret
endp
 
restore handle
restore io_code
restore input
restore inp_size
restore output
restore out_size
 
struc FILL
{
.color rd 1
.x rd 1
.y rd 1
.w rd 1
.h rd 1
}
 
virtual at 0
FILL FILL
end virtual
 
struc LINE2P
{
.color rd 1
.x1 rd 1
.y1 rd 1
.x2 rd 1
.y2 rd 1
}
 
virtual at 0
LINE2P LINE2P
end virtual
 
GXcopy equ 3
 
; esi= input params
align 4
solid_fill:
 
mov edx, [R5xxRops+4+GXcopy*8]
or edx, [rhd.control]
or edx, (R5XX_GMC_BRUSH_SOLID_COLOR or R5XX_GMC_SRC_DATATYPE_COLOR)
 
mov eax, 7
call R5xxFIFOWait
 
wrr R5XX_DP_GUI_MASTER_CNTL, edx
 
mov eax, [esi+FILL.color]
wrr R5XX_DP_BRUSH_FRGD_CLR, eax
 
wrr R5XX_DP_WRITE_MASK, 0xFFFFFFFF
 
wrr R5XX_DP_CNTL, (R5XX_DST_X_LEFT_TO_RIGHT or R5XX_DST_Y_TOP_TO_BOTTOM)
 
mov eax, [rhd.dst_pitch_offset]
wrr R5XX_DST_PITCH_OFFSET, eax
 
mov ebx, [esi+FILL.y]
shl ebx, 16
mov bx, word [esi+FILL.x]
wrr R5XX_DST_Y_X, ebx
 
mov ecx, [esi+FILL.w]
shl ecx, 16
mov cx, word [esi+FILL.h]
wrr R5XX_DST_WIDTH_HEIGHT, ecx
 
ret
 
align 4
solid_line:
 
mov eax, 7
call R5xxFIFOWait
 
mov edx, [R5xxRops+4+GXcopy*8]
or edx, [rhd.control]
or edx, (R5XX_GMC_BRUSH_SOLID_COLOR or R5XX_GMC_SRC_DATATYPE_COLOR)
 
wrr R5XX_DST_LINE_PATCOUNT, (0x55 shl R5XX_BRES_CNTL_SHIFT)
wrr R5XX_DP_GUI_MASTER_CNTL, edx
 
mov eax, [esi+FILL.color]
wrr R5XX_DP_BRUSH_FRGD_CLR, eax
 
wrr R5XX_DP_WRITE_MASK, 0xFFFFFFFF
 
mov eax, [rhd.dst_pitch_offset]
wrr R5XX_DST_PITCH_OFFSET, eax
 
mov ebx, [esi+LINE2P.y1]
shl ebx, 16
mov bx, word [esi+LINE2P.x1]
wrr R5XX_DST_LINE_START, ebx
 
mov ecx, [esi+LINE2P.y2]
shl ecx, 16
mov cx, word [esi+LINE2P.x2]
wrr R5XX_DST_LINE_END, ecx
 
ret