Subversion Repositories Kolibri OS

Rev

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

Rev 2881 Rev 2984
Line 59... Line 59...
59
     paddd	 mm0,mm2 ;[.dz]
59
     paddd	 mm0,mm2 ;[.dz]
60
     paddd	 mm1,mm3 ;[.dg]
60
     paddd	 mm1,mm3 ;[.dg]
61
     movq	 [.cz],mm0
61
     movq	 [.cz],mm0
62
     movq	 [.cg],mm1
62
     movq	 [.cg],mm1
63
elseif Ext >= SSE2
63
elseif Ext >= SSE2
64
     movups	 xmm1,[.cz]
64
;     movups      xmm1,[.cz]
65
     paddd	 xmm1,xmm0
65
     paddd	 xmm1,xmm0
66
     movups	 [.cz],xmm1
66
;     movups      [.cz],xmm1
67
end if
67
end if
68
}
68
}
69
macro .draw_pixel
69
macro .draw_pixel
70
{
70
{
71
    mov 	[esi],ebx	       ; actualize Z buffer
71
    mov 	[esi],ebx	       ; actualize Z buffer
72
;if Ext=SSE2
72
if Ext=SSE2
73
;    movups      xmm2,[.cb]
73
    movaps	xmm7,xmm1 ;[.cb] ;;xmm1
74
   ; shufps      xmm1,xmm1,11000110b
74
    shufps	xmm7,xmm7,00111001b
75
   ; pand        xmm1,[.mask]
75
    psrld	xmm7,ROUND
76
;    psrld       xmm2,ROUND
76
    packssdw	xmm7,xmm7
77
;    packssdw    xmm2,xmm2
77
    packuswb	xmm7,xmm7
78
;    packuswb    xmm2,xmm2
78
    pand	xmm7,xmm6 ;[.mask]
79
;    movss       [edi],xmm2
79
    movd	[edi],xmm7
80
;else
80
else
Line 81... Line 81...
81
 
81
 
82
    mov 	eax,[.cb]
82
    mov 	eax,[.cb]
83
    sar 	eax,ROUND
83
    sar 	eax,ROUND
84
    mov 	[edi],al
84
    mov 	[edi],al
Line 88... Line 88...
88
    mov 	[edi+1],bl
88
    mov 	[edi+1],bl
89
;    mov         ah,bl
89
;    mov         ah,bl
90
    mov 	edx,[.cr]
90
    mov 	edx,[.cr]
91
    sar 	edx,ROUND
91
    sar 	edx,ROUND
92
    mov 	[edi+2],dl
92
    mov 	[edi+2],dl
93
;end if
93
end if
94
;    shl         ebx,16
94
;    shl         ebx,16
95
;    or          eax,ebx
95
;    or          eax,ebx
96
;    mov         [edi],eax
96
;    mov         [edi],eax
97
}
97
}
98
macro .sort
98
macro .sort
Line 206... Line 206...
206
    shl 	ebx,ROUND
206
    shl 	ebx,ROUND
207
    mov 	[.cb],ebx
207
    mov 	[.cb],ebx
208
    movsx	ebx,word[.z1]
208
    movsx	ebx,word[.z1]
209
    shl 	ebx,ROUND
209
    shl 	ebx,ROUND
210
    mov 	[.cz],ebx
210
    mov 	[.cz],ebx
-
 
211
if Ext = SSE2
-
 
212
    movups	xmm1,[.cz]
-
 
213
end if
211
.hdraw:
214
.hdraw:
-
 
215
if Ext = SSE2
-
 
216
    movd	ebx,xmm1
-
 
217
else
212
    mov 	ebx,[.cz]
218
    mov 	ebx,[.cz]
-
 
219
end if
213
    cmp 	[esi],ebx
220
    cmp 	[esi],ebx
214
    jle 	.skip
221
    jle 	.skip
Line 215... Line 222...
215
 
222
 
Line 265... Line 272...
265
    shl 	ebx,ROUND
272
    shl 	ebx,ROUND
266
    mov 	[.cb],ebx
273
    mov 	[.cb],ebx
267
    movsx	ebx,word[.z1]
274
    movsx	ebx,word[.z1]
268
    shl 	ebx,ROUND
275
    shl 	ebx,ROUND
269
    mov 	[.cz],ebx
276
    mov 	[.cz],ebx
-
 
277
if Ext = SSE2
-
 
278
    movups	xmm1,[.cz]
-
 
279
end if
-
 
280
 
270
.v_draw:
281
.v_draw:
-
 
282
if Ext = SSE2
-
 
283
    movd	ebx,xmm1
-
 
284
else
271
    mov 	ebx,[.cz]
285
    mov 	ebx,[.cz]
-
 
286
end if
272
    cmp 	[esi],ebx
287
    cmp 	[esi],ebx
273
    jle 	@f
288
    jle 	@f
Line 274... Line 289...
274
 
289
 
Line 329... Line 344...
329
    mov 	[.cb],ebx
344
    mov 	[.cb],ebx
330
    movsx	ebx,word[.z1]
345
    movsx	ebx,word[.z1]
331
    shl 	ebx,ROUND
346
    shl 	ebx,ROUND
332
    mov 	[.cz],ebx
347
    mov 	[.cz],ebx
333
.d45_draw:
348
.d45_draw:
-
 
349
if Ext = SSE2
-
 
350
    movd	ebx,xmm1
-
 
351
else
334
    mov 	ebx,[.cz]
352
    mov 	ebx,[.cz]
-
 
353
end if
335
    cmp 	[esi],ebx
354
    cmp 	[esi],ebx
336
    jle 	@f
355
    jle 	@f
Line 337... Line 356...
337
 
356
 
Line 398... Line 417...
398
    shl 	ebx,ROUND
417
    shl 	ebx,ROUND
399
    mov 	[.cb],ebx
418
    mov 	[.cb],ebx
400
    movsx	ebx,word[.z1]
419
    movsx	ebx,word[.z1]
401
    shl 	ebx,ROUND
420
    shl 	ebx,ROUND
402
    mov 	[.cz],ebx
421
    mov 	[.cz],ebx
-
 
422
if Ext = SSE2
-
 
423
    movups	xmm1,[.cz]
-
 
424
end if
403
    movsx	ebx,word[.x1]
425
    movsx	ebx,word[.x1]
404
    shl 	ebx,ROUND
426
    shl 	ebx,ROUND
405
    mov 	[.ccoord],ebx	 ; .ccoord -> x coordinate
427
    mov 	[.ccoord],ebx	 ; .ccoord -> x coordinate
406
.draw_m_v:
428
.draw_m_v:
407
    mov 	edi,[.cscr]
429
    mov 	edi,[.cscr]
Line 410... Line 432...
410
    sar 	eax,ROUND
432
    sar 	eax,ROUND
411
    lea 	ebx,[eax*3]
433
    lea 	ebx,[eax*3]
412
    add 	edi,ebx
434
    add 	edi,ebx
413
    add 	esi,ebx
435
    add 	esi,ebx
414
    add 	esi,eax
436
    add 	esi,eax
-
 
437
if Ext = SSE2
-
 
438
    movd	ebx,xmm1
-
 
439
else
415
    mov 	ebx,[.cz]
440
    mov 	ebx,[.cz]
-
 
441
end if
416
    cmp 	[esi],ebx
442
    cmp 	[esi],ebx
417
    jle 	@f
443
    jle 	@f
Line 418... Line 444...
418
 
444
 
Line 478... Line 504...
478
    shl 	ebx,ROUND
504
    shl 	ebx,ROUND
479
    mov 	[.cb],ebx
505
    mov 	[.cb],ebx
480
    movsx	ebx,word[.z1]
506
    movsx	ebx,word[.z1]
481
    shl 	ebx,ROUND
507
    shl 	ebx,ROUND
482
    mov 	[.cz],ebx
508
    mov 	[.cz],ebx
-
 
509
if Ext = SSE2
-
 
510
    movups	xmm1,[.cz]
-
 
511
end if
483
    movsx	ebx,word[.y1]
512
    movsx	ebx,word[.y1]
484
    shl 	ebx,ROUND
513
    shl 	ebx,ROUND
485
    mov 	[.ccoord],ebx	 ; .ccoord -> y coordinate
514
    mov 	[.ccoord],ebx	 ; .ccoord -> y coordinate
Line 486... Line 515...
486
 
515
 
Line 493... Line 522...
493
    mul 	ebx
522
    mul 	ebx
494
    add 	esi,eax
523
    add 	esi,eax
495
    lea 	eax,[eax*3]
524
    lea 	eax,[eax*3]
496
    add 	esi,eax
525
    add 	esi,eax
497
    add 	edi,eax
526
    add 	edi,eax
-
 
527
if Ext = SSE2
-
 
528
    movd	ebx,xmm1
-
 
529
else
498
    mov 	ebx,[.cz]
530
    mov 	ebx,[.cz]
-
 
531
end if
499
    cmp 	[esi],ebx
532
    cmp 	[esi],ebx
500
    jle 	@f
533
    jle 	@f
Line 501... Line 534...
501
 
534
 
Line 551... Line 584...
551
if Ext=MMX | Ext = SSE
584
if Ext=MMX | Ext = SSE
552
    movq	mm2,[.dz]
585
    movq	mm2,[.dz]
553
    movq	mm3,[.dg]
586
    movq	mm3,[.dg]
554
else if Ext >= SSE2
587
else if Ext >= SSE2
555
    movups	xmm0,[.dz]
588
    movups	xmm0,[.dz]
-
 
589
    movups	xmm6,[.mask]
556
end if
590
end if
557
ret
591
ret
558
;align 16
-
 
559
;.mask:
592
.mask:
560
;           dq 0xffffffffffffffff
593
	   dq 0xffffffff00ffffff
561
;           dq 0xffffffff00000000
594
	   dq 0xffffffffffffffff