1
/* normal blitting routines */
3
#if SRC_DEPTH != DEST_DEPTH || SRC_DEPTH == 16
4
INLINE void FUNC_NAME(blit_normal_line_1)(SRC_PIXEL *src,
5
SRC_PIXEL *end, RENDER_PIXEL *dst, unsigned int *lookup)
7
for(;src<end;src+=4,dst+=4)
9
*(dst ) = GETPIXEL(*(src ));
10
*(dst+1) = GETPIXEL(*(src+1));
11
*(dst+2) = GETPIXEL(*(src+2));
12
*(dst+3) = GETPIXEL(*(src+3));
17
INLINE void FUNC_NAME(blit_normal_line_2)(SRC_PIXEL *src,
18
SRC_PIXEL *end, RENDER_PIXEL *dst, unsigned int *lookup)
20
for(;src<end; src+=4, dst+=8)
22
*(dst+ 1) = *(dst ) = GETPIXEL(*(src ));
23
*(dst+ 3) = *(dst+ 2) = GETPIXEL(*(src+1));
24
*(dst+ 5) = *(dst+ 4) = GETPIXEL(*(src+2));
25
*(dst+ 7) = *(dst+ 6) = GETPIXEL(*(src+3));
29
INLINE void FUNC_NAME(blit_normal_line_3)(SRC_PIXEL *src,
30
SRC_PIXEL *end, RENDER_PIXEL *dst, unsigned int *lookup)
32
for(;src<end; src+=4, dst+=12)
34
*(dst+ 2) = *(dst+ 1) = *(dst ) = GETPIXEL(*(src ));
35
*(dst+ 5) = *(dst+ 4) = *(dst+ 3) = GETPIXEL(*(src+1));
36
*(dst+ 8) = *(dst+ 7) = *(dst+ 6) = GETPIXEL(*(src+2));
37
*(dst+11) = *(dst+10) = *(dst+ 9) = GETPIXEL(*(src+3));
41
INLINE void FUNC_NAME(blit_normal_line_x)(SRC_PIXEL *src,
42
SRC_PIXEL *end, RENDER_PIXEL *dst, unsigned int *lookup)
46
const DEST_PIXEL v = GETPIXEL(*(src));
47
dst+=sysdep_display_params.widthscale;
48
switch (sysdep_display_params.widthscale)
62
BLIT_BEGIN(blit_normal)
63
switch(sysdep_display_params.widthscale)
66
#if SRC_DEPTH != DEST_DEPTH || SRC_DEPTH == 16
67
BLIT_LOOP_YARBSIZE(blit_normal_line_1)
68
#else /* Speedup hack in case we just have to memcpy */
69
if (sysdep_display_params.orientation) {
70
if (sysdep_display_properties.mode_info[
71
sysdep_display_params.video_mode] &
72
SYSDEP_DISPLAY_DIRECT_FB)
74
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
75
int reps = ((y+1)*yarbsize)/sysdep_display_params.height -
76
(y*yarbsize)/sysdep_display_params.height;
78
rotate_func(line_dest, bitmap, y, dirty_area);
79
line_dest += DEST_WIDTH;
84
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
85
int reps = ((y+1)*yarbsize)/sysdep_display_params.height -
86
(y*yarbsize)/sysdep_display_params.height;
88
rotate_func(line_dest, bitmap, y, dirty_area);
90
memcpy(line_dest+DEST_WIDTH, line_dest,
91
(vis_in_dest_out->max_x-vis_in_dest_out->min_x)*
93
line_dest += DEST_WIDTH;
95
line_dest += DEST_WIDTH;
100
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
101
int reps = ((y+1)*yarbsize)/sysdep_display_params.height -
102
(y*yarbsize)/sysdep_display_params.height;
105
((SRC_PIXEL *)(bitmap->line[y])) + dirty_area->min_x,
106
(vis_in_dest_out->max_x-vis_in_dest_out->min_x)*DEST_PIXEL_SIZE);
107
line_dest += DEST_WIDTH;
115
BLIT_LOOP_YARBSIZE(blit_normal_line_2)
118
BLIT_LOOP_YARBSIZE(blit_normal_line_3)
121
BLIT_LOOP_YARBSIZE(blit_normal_line_x)
125
BLIT_BEGIN(blit_fakescan_h)
126
switch(sysdep_display_params.widthscale)
129
#if SRC_DEPTH != DEST_DEPTH || SRC_DEPTH == 16
130
BLIT_LOOP_FAKESCAN(blit_normal_line_1)
131
#else /* Speedup hack in case we just have to memcpy */
132
if (sysdep_display_params.orientation) {
133
if (sysdep_display_properties.mode_info[
134
sysdep_display_params.video_mode] &
135
SYSDEP_DISPLAY_DIRECT_FB)
137
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
138
int reps = sysdep_display_params.heightscale-1;
140
rotate_func(line_dest, bitmap, y, dirty_area);
141
line_dest += DEST_WIDTH;
144
line_dest += DEST_WIDTH;
147
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
148
int reps = sysdep_display_params.heightscale-1;
149
rotate_func(line_dest, bitmap, y, dirty_area);
151
memcpy(line_dest+DEST_WIDTH, line_dest,
152
(vis_in_dest_out->max_x-vis_in_dest_out->min_x)*
154
line_dest += DEST_WIDTH;
156
line_dest += 2*DEST_WIDTH;
160
for (y = dirty_area->min_y; y < dirty_area->max_y; y++) {
161
int reps = sysdep_display_params.heightscale-1;
164
((SRC_PIXEL *)(bitmap->line[y])) + dirty_area->min_x,
165
(vis_in_dest_out->max_x-vis_in_dest_out->min_x)*DEST_PIXEL_SIZE);
166
line_dest += DEST_WIDTH;
169
line_dest += DEST_WIDTH;
175
BLIT_LOOP_FAKESCAN(blit_normal_line_2)
178
BLIT_LOOP_FAKESCAN(blit_normal_line_3)
181
BLIT_LOOP_FAKESCAN(blit_normal_line_x)