Subversion Repositories Kolibri OS

Rev

Rev 9237 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9237 Rev 9512
Line 24... Line 24...
24
.y2	equ word[ebp-12]
24
.y2     equ word[ebp-12]
25
.x3	equ word[ebp-14]
25
.x3     equ word[ebp-14]
26
.y3	equ word[ebp-16]
26
.y3     equ word[ebp-16]
Line 27... Line 27...
27
 
27
 
28
.dx12	equ dword[ebp-20]
28
.dx12   equ dword[ebp-20]
29
;.dz12   equ dword[ebp-24]
-
 
30
.dx13	equ dword[ebp-24]
29
.dz12   equ dword[ebp-24]
31
.dz13	equ dword[ebp-28]
-
 
32
.dz12	equ dword[ebp-32]
30
.dx13   equ dword[ebp-28]
33
;.dz13   equ dword[ebp-32]
31
.dz13   equ dword[ebp-32]
34
.dx23	equ dword[ebp-36]
-
 
35
.dz13M	equ	 [ebp-40]
32
.dx23   equ dword[ebp-36]
36
.dz23	equ dword[ebp-44]
33
.dz23   equ dword[ebp-40]
37
.zz1	equ dword[ebp-48]
34
.zz1    equ dword[ebp-44]
38
.zz2	equ dword[ebp-52]
-
 
39
.zz2M	equ qword[ebp-52]
-
 
40
.dz12M	equ qword[ebp-32]
-
 
41
.dz23M	equ qword[ebp-44]
-
 
42
;if Ext>=MMX
-
 
43
;        emms
35
.zz2    equ dword[ebp-48]
44
;end if
36
 
Line 45... Line 37...
45
	mov	ebp,esp
37
        mov     ebp,esp
46
 
38
 
47
	push	edx	       ; store edx in variable .col
39
        push    edx            ; store edx in variable .col
Line 85... Line 77...
85
       ;  jle      @f
77
       ;  jle      @f
86
       ;  cmp      cx,SIZE_X
78
       ;  cmp      cx,SIZE_X
87
       ;  jle      @f
79
       ;  jle      @f
88
       ;  jmp      .ft_loop2_end
80
       ;  jmp      .ft_loop2_end
89
       ;@@:
81
       ;@@:
90
	sub	esp,52-12
82
  ;      sub     esp,52-12
Line 91... Line 83...
91
 
83
 
92
	mov	bx,.y2	     ; calc delta 12
84
        mov     bx,.y2       ; calc delta 12
93
	sub	bx,.y1
85
        sub     bx,.y1
94
	jnz	.ft_dx12_make
86
        jnz     .ft_dx12_make
95
	mov	.dx12,0
87
        push    dword 0
96
	mov	.dz12,0
88
        push    dword 0
97
	jmp	.ft_dx12_done
89
        jmp     .ft_dx12_done
98
   .ft_dx12_make:
90
   .ft_dx12_make:
99
	mov	ax,.x2
91
        mov     ax,.x2
100
	sub	ax,.x1
92
        sub     ax,.x1
101
	cwde
93
        cwde
102
	movsx	ebx,bx
94
        movsx   ebx,bx
103
	shl	eax,ROUND
95
        shl     eax,ROUND
104
	cdq
96
        cdq
105
	idiv	ebx
97
        idiv    ebx
Line 106... Line 98...
106
	mov	.dx12,eax
98
        push    eax
107
 
99
 
108
	mov	ax,.z2
100
        mov     ax,.z2
109
	sub	ax,.z1
101
        sub     ax,.z1
110
	cwde
102
        cwde
111
	shl	eax,CATMULL_SHIFT
103
        shl     eax,CATMULL_SHIFT
112
	cdq
104
        cdq
113
	idiv	ebx
105
        idiv    ebx
114
	mov	.dz12,eax
106
        push    eax
115
  .ft_dx12_done:
107
  .ft_dx12_done:
116
	mov	bx,.y3	     ; calc delta 13
108
        mov     bx,.y3       ; calc delta 13
117
	sub	bx,.y1
-
 
118
	jnz	.ft_dx13_make
109
        sub     bx,.y1
119
	mov	.dx13,0
110
        jnz     .ft_dx13_make
120
	mov	.dz13,0
111
        push    dword 0
121
	mov	dword .dz13M,0
112
        push    dword 0
122
	jmp	.ft_dx13_done
113
        jmp     .ft_dx13_done
123
   .ft_dx13_make:
114
   .ft_dx13_make:
124
	mov	ax,.x3
115
        mov     ax,.x3
125
	sub	ax,.x1
116
        sub     ax,.x1
126
	cwde
117
        cwde
127
	movsx	ebx,bx
118
        movsx   ebx,bx
128
	shl	eax,ROUND
119
        shl     eax,ROUND
129
	cdq
120
        cdq
Line 130... Line 121...
130
	idiv	ebx
121
        idiv    ebx
131
	mov	.dx13,eax
122
        push    eax
132
 
123
 
133
	mov	ax,.z3
124
        mov     ax,.z3
134
	sub	ax,.z1
125
        sub     ax,.z1
135
	cwde
126
        cwde
136
	shl	eax,CATMULL_SHIFT
-
 
137
	cdq
127
        shl     eax,CATMULL_SHIFT
-
 
128
        cdq
138
	idiv	ebx
129
        idiv    ebx
-
 
130
        push    eax
139
	mov	.dz13,eax
131
 
140
	mov	dword .dz13M,eax
132
    .ft_dx13_done:
141
    .ft_dx13_done:
133
    ;    sub     esp,48
-
 
134
        mov     bx,.y3       ; calc delta 23
-
 
135
        sub     bx,.y2
142
	mov	bx,.y3	     ; calc delta 23
136
        jnz     .gt_dx23_make
143
	sub	bx,.y2
137
        push    dword 0
144
	jnz	.gt_dx23_make
138
        push    dword 0
145
	mov	.dx23,0
139
    ;    mov     .dx23,0
146
	mov	.dz23,0
140
    ;    mov     .dz23,0
147
	jmp	.gt_dx23_done
141
        jmp     .gt_dx23_done
148
   .gt_dx23_make:
142
   .gt_dx23_make:
149
	mov	ax,.x3
143
        mov     ax,.x3
150
	sub	ax,.x2
144
        sub     ax,.x2
151
	cwde
145
        cwde
152
	movsx	ebx,bx
146
        movsx   ebx,bx
153
	shl	eax,ROUND
147
        shl     eax,ROUND
Line 154... Line 148...
154
	cdq
148
        cdq
155
	idiv	ebx
149
        idiv    ebx
156
	mov	.dx23,eax
150
        push    eax
157
 
151
 
158
	mov	ax,.z3
152
        mov     ax,.z3
159
	sub	ax,.z2
153
        sub     ax,.z2
-
 
154
        cwde
160
	cwde
155
        shl     eax,CATMULL_SHIFT
161
	shl	eax,CATMULL_SHIFT
156
        cdq
Line 162... Line 157...
162
	cdq
157
        idiv    ebx
163
	idiv	ebx
158
        push    eax
164
	mov	.dz23,eax
159
    ;    mov     .dz23,eax
165
    .gt_dx23_done:
160
    .gt_dx23_done:
-
 
161
 
166
 
162
        movsx   edx,.z1
167
	movsx	edx,.z1
163
        shl     edx,CATMULL_SHIFT
168
	shl	edx,CATMULL_SHIFT
164
        push    edx
169
	mov	.zz1,edx
-
 
170
	mov	.zz2,edx
-
 
171
	movsx	eax,.x1
-
 
172
	shl	eax,ROUND    ; eax - x1
165
        push    edx
173
	mov	ebx,eax      ; ebx - x2
166
 
174
;if Ext>=MMX
167
        movsx   eax,.x1
175
;        movq    mm0,.zz2M
168
        shl     eax,ROUND    ; eax - x1
Line 185... Line 178...
185
	push	cx	    ; y
178
        push    cx          ; y
186
	sar	ebx,ROUND
179
        sar     ebx,ROUND
187
	push	bx	    ; x2
180
        push    bx          ; x2
188
	sar	eax,ROUND
181
        sar     eax,ROUND
189
	push	ax	    ; x1
182
        push    ax          ; x1
190
;if Ext>=MMX
-
 
191
;        sub     esp,8
-
 
192
;        movq    [esp],mm0
-
 
193
;else
-
 
194
	push	.zz2	    ; z2 shl CATMULL_SHIFT
183
        push    .zz2        ; z2 shl CATMULL_SHIFT
195
	push	.zz1	    ; z1 shl CATMULL_SHIFT
184
        push    .zz1        ; z1 shl CATMULL_SHIFT
196
;end if
185
 
197
	call	flat_line_z
186
        call    flat_line_z
Line 198... Line 187...
198
 
187
 
Line 199... Line 188...
199
	popad
188
        popad
200
 
189
 
201
	add	eax,.dx13
-
 
202
	add	ebx,.dx12
-
 
203
;if  Ext>=MMX
-
 
Line 204... Line 190...
204
;        paddd   mm0,.dz12M
190
        add     eax,.dx13
205
;else
191
        add     ebx,.dx12
206
 
192
 
207
	mov	edx,.dz13
193
        mov     edx,.dz13
Line 217... Line 203...
217
	movsx	edx,.z2
203
        movsx   edx,.z2
218
	shl	edx,CATMULL_SHIFT
204
        shl     edx,CATMULL_SHIFT
219
	mov	.zz2,edx
205
        mov     .zz2,edx
220
	movsx	ebx,.x2
206
        movsx   ebx,.x2
221
	shl	ebx,ROUND
207
        shl     ebx,ROUND
222
;if Ext>=MMX
-
 
223
;        movq    mm0,.zz2M
-
 
224
;;        push    .dz13    ; exchange
-
 
225
;;        pop     .dz12
-
 
226
;;        push    .dz23    ; exchange
-
 
227
;;        pop     .dz13
-
 
228
;end if
208
 
229
	mov	cx,.y2
209
        mov     cx,.y2
230
	cmp	cx,.y3
210
        cmp     cx,.y3
231
	jge	.ft_loop2_end
211
        jge     .ft_loop2_end
232
     .ft_loop2:
212
     .ft_loop2:
233
	pushad
213
        pushad
Line 236... Line 216...
236
	push	cx
216
        push    cx
237
	sar	ebx,ROUND
217
        sar     ebx,ROUND
238
	push	bx
218
        push    bx
239
	sar	eax,ROUND
219
        sar     eax,ROUND
240
	push	ax	    ; x1
220
        push    ax          ; x1
241
;if Ext>=MMX
-
 
242
;        sub     esp,8
-
 
243
;        movq    [esp],mm0
-
 
244
;else
221
 
245
	push	.zz2	    ; z2 shl CATMULL_SHIFT
222
        push    .zz2        ; z2 shl CATMULL_SHIFT
246
	push	.zz1	    ; z1 shl CATMULL_SHIFT
223
        push    .zz1        ; z1 shl CATMULL_SHIFT
247
;end if
224
 
248
	call	flat_line_z
225
        call    flat_line_z
Line 249... Line 226...
249
 
226
 
Line 250... Line 227...
250
	popad
227
        popad
251
 
228
 
252
	add	eax,.dx13
-
 
253
	add	ebx,.dx23
-
 
254
;if  Ext>=MMX
229
        add     eax,.dx13
255
;        paddd   mm0,.dz23M
230
        add     ebx,.dx23
256
;else
231
 
257
	mov	edx,.dz13
232
        mov     edx,.dz13
258
	add	.zz1,edx
233
        add     .zz1,edx
Line 259... Line -...
259
	mov	edx,.dz23
-
 
260
	add	.zz2,edx
-
 
261
 
-
 
262
;        mov     edx,.dz13
-
 
263
;        add     .zz1,edx
-
 
264
;        mov     edx,.dz12
234
        mov     edx,.dz23
265
;        add     .zz2,edx
235
        add     .zz2,edx
266
;end if
236
 
267
	inc	cx
237
        inc     cx
Line 372... Line 342...
372
   .ddraw:
342
   .ddraw:
373
     cmp	ebx,dword[esi]
343
     cmp        ebx,dword[esi]
374
   ;  cmovl      [edi],eax
344
  ;   cmovl      [edi],eax
375
    ; cmovl      [esi],ebx
345
  ;   cmovl      [esi],ebx
376
     jge	@f
346
     jge        @f
-
 
347
     mov        [edi],eax
377
     stosd
348
     mov        [esi],ebx
-
 
349
  ;   stosd          ; less branches
378
     dec	edi
350
  ;   dec        edi
379
     mov	dword[esi],ebx
351
  ;   mov        dword[esi],ebx
380
     jmp	.no_skip
352
  ;   jmp        .no_skip
381
   @@:
353
   @@:
382
     add	edi,3
354
     add        edi,3
383
   .no_skip:
355
  ; .no_skip:
384
     add	esi,4
356
     add        esi,4
385
     add	ebx,edx
357
     add        ebx,edx
386
     loop	.ddraw
358
     loop       .ddraw
Line 387... Line 359...
387
 
359