@Hexmage960, post #1
@Hexmage960, post #6
Skalowanie chunky 8-pikselowego do chunky 4-pikselowego a7a6a5a4a3a2a1a0 b7b6b5b4b3b2b1b0 c7c6c5c4c3c21c0 d7d6d5d4d3d2d1d0 - chunky 8-pikselowe a7a6a5a4........ b7b6b5b4........ c7c6c5c4........ d7d6d5d4........ ........a3a2a1a0 ........b3b2b1b0 ........c3c2c1c0 ........d3d2d1d0 Po przeskalowaniu: a7a6a5a4 b7b6b5b4 c7c6c5c4 d7d6d5d4 - chunky 4-pikselowe (bitplany wyższe) a3a2a1a0 b3b2b1b0 c3c2c1c0 d3d2d1d0 - chunky 4-pikselowe (bitplany niższe)
a7a6a5a4 b7b6b5b4 c7c6c5c4 d7d6d5d4 e7e6e5e4 f7f6f5f4 g7g6g5g4 h7h6h5h4 - chunky 4-pikselowe a7a6.... b7b6.... c7c6.... d7d6.... e7e6.... f7f6.... g7g6.... h7h6.... ....a5a4 ....b5b4 ....c5c4 ....d5d4 ....e5e4 ....f5f4 ....g5g4 ....h5h4 Po przeskalowaniu: a7a6 b7b6 c7c6 d7d6 e7e6 f7f6 g7g6 h7h6 - chunky 2-pikselowe a5a4 b5b4 c5c4 d5d4 e5e4 f5f4 g5g4 h5h4 - chunky 2-pikselowe a7a6 b7b6 c7c6 d7d6 e7e6 f7f6 g7g6 h7h6 i7i6 j7j6 k7k6 l7l6 m7m6 n7n6 o7o6 p7p6 a7.. b7.. c7.. d7.. e7.. f7.. g7.. h7.. i7.. j7.. k7.. l7.. m7.. n7.. o7.. p7.. ..a6 ..b6 ..c6 ..d6 ..e6 ..f6 ..g6 ..h6 ..i6 ..j6 ..k6 ..l6 ..m6 ..n6 ..o6 ..p6 Po przeskalowaniu: a7b7c7d7e7f7g7h7 i7j7k7l7m7n7o7p7 - format planarny a6b6c6d6e6f6g6h6 i6j6k6l6m6n6o6p6
@] SKOLMAN_MWS ˇ agrEssOr [, post #8
@] SKOLMAN_MWS ˇ agrEssOr [, post #10
@Hexmage960, post #11
@makarsky, post #13
@Hexmage960, post #14
@Hexmage960, post #14
W c2p (tak jak zresztą w różnych przekształceniach) jest zawsze "coś za coś" i zabawa polega na znalezieniu optymalizacji, dzięki której koszt będzie jak najmniejszy.A ostatecznym weryfikatorem teorii jest zawsze eksperyment. Dopóki nie testujesz kodu wydajnościowo, pozostaje to miłą zabawą.
@WojT_GL, post #15
Jak mozesz porownywac dzialanie swoich modyfikacji procedury (nie mowiac o porownywaniu wzgledem innych) jak nie tobisz benchmarka?
Skad wieez czy to co napisales dziala albo jak szybko dziala?
Skad wiesz jak to wypada wzgledem innych procedur ktorych kod podano Ci tutaj
Skad bedziesz wiedzial jak dobrze robisz optymalizacje?
@Hexmage960, post #17
; d0: %a0000000b0000000c0000000d0000000 rol.l #4,d0 ; d0: %0000b0000000c0000000d0000000a000 move.b d0,d1 rol.l #7,d0 ; d0: %00000c0000000d0000000a0000000b00 or.b d0,d1 rol.l #7,d0 ; d0: %000000d0000000a0000000b0000000c0 or.b d0,d1 rol.l #7,d0 or.b d0,d1 ; d1: %0000000000000000000000000000abcd
@Hexmage960, post #19
; Konwersja chunky-to-planar ; Właściwa konwersja c2p: ; Wejście: ; a0: bufor chunky ; a1: koniec bufora chunky ; a2: kopia struktury bitmapy ; Przygotowanie: move.l #$3333cccc,d7 ; maski move.l #$00ff00ff,d6 move.l #$55555555,a6 move.l #$0f0f0f0f,a5 ; Konwersja: ; etap 1: move.l (a0)+,d0 ; pobieramy 4 piksele chunky move.l d0,d1 ; kopia w d1 and.l d7,d0 eor.l d0,d1 lsr.w #2,d0 swap d0 lsl.w #2,d0 or.l d1,d0 move.l (a0)+,d1 ; pobieramy 4 piksele move.l d1,d2 and.l d7,d1 eor.l d1,d2 lsr.w #2,d1 swap d1 lsl.w #2,d1 or.l d2,d1 move.l (a0)+,d2 ; pobieramy 4 piksele move.l d2,d3 and.l d7,d2 eor.l d2,d3 lsr.w #2,d2 swap d2 lsl.w #2,d2 or.l d3,d2 move.l (a0)+,d3 ; pobieramy 4 piksele move.l d3,d4 and.l d7,d3 eor.l d3,d4 lsr.w #2,d3 swap d3 lsl.w #2,d3 or.l d4,d3 ; etap 2A: exg d7,a6 move.l d0,d4 move.l d2,d5 and.l d6,d0 and.l d6,d2 eor.l d0,d4 eor.l d2,d5 lsr.l #8,d5 lsl.l #8,d0 or.l d2,d0 or.l d5,d4 ; etap 3A: move.l d0,d2 move.l d4,d5 and.l d7,d0 and.l d7,d4 eor.l d0,d2 eor.l d4,d5 add.l d0,d0 lsr.l #1,d5 or.l d5,d2 or.l d4,d0 ; etap 2B: move.l d1,d4 move.l d3,d5 and.l d6,d1 and.l d6,d3 eor.l d1,d4 eor.l d3,d5 lsr.l #8,d5 lsl.l #8,d1 or.l d3,d1 or.l d5,d4 ; etap 3B: move.l d1,d3 move.l d4,d5 and.l d7,d1 and.l d7,d4 eor.l d1,d3 eor.l d4,d5 add.l d1,d1 lsr.l #1,d5 or.l d5,d3 or.l d4,d1 exg d7,a6 ; etap 4A: exg d7,a5 move.l d0,d4 move.l d1,d5 and.l d7,d0 and.l d7,d1 eor.l d0,d4 eor.l d1,d5 lsl.l #4,d0 lsr.l #4,d5 or.l d1,d0 or.l d5,d4 ; gotowe! ; etap 4B: move.l d2,d1 move.l d3,d5 and.l d7,d2 and.l d7,d3 eor.l d2,d1 eor.l d3,d5 lsl.l #4,d2 lsr.l #4,d5 or.l d3,d2 or.l d5,d1 ; gotowe! exg d7,a5 rts
@Hexmage960, post #22
; Poprawki do kodu ... add.l d4,d4 ; było add.l d0,d0 lsr.l #1,d2 ; było lsr.l #1,d5 ... add.l d4,d4 ; było add.l d1,d1 lsr.l #1,d3 ; było lsr.l #1,d5 ...