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 |