notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
psx_gpu: do enhanced lines
[pcsx_rearmed.git]
/
plugins
/
gpu_neon
/
psx_gpu
/
psx_gpu_arm_neon.S
diff --git
a/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S
b/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S
index
79d5466
..
3239412
100644
(file)
--- a/
plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S
+++ b/
plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S
@@
-182,6
+182,7
@@
#define uvrg_dx3l d6
#define uvrg_dx3h d7
#define uvrg_dx3l d6
#define uvrg_dx3h d7
+#define uvrgb_phase q13
.align 4
.align 4
@@
-313,11
+314,16
@@
function(compute_all_gradients)
vmull.s16 ga_uvrg_y, d0_b, d1_b
rsbmi ga_bx, ga_bx, #0
vmull.s16 ga_uvrg_y, d0_b, d1_b
rsbmi ga_bx, ga_bx, #0
+ @ r12 = psx_gpu->uvrgb_phase
+ ldr r12, [ psx_gpu, #psx_gpu_uvrgb_phase_offset ]
+
vmlsl.s16 ga_uvrg_y, d2_b, d3_b
movs gs_by, ga_by, asr #31
vshr.u64 d0, d30, #22
vmlsl.s16 ga_uvrg_y, d2_b, d3_b
movs gs_by, ga_by, asr #31
vshr.u64 d0, d30, #22
- mov b_base, b0, lsl #16
+ add b_base, r12, b0, lsl #16
+
+ vdup.u32 uvrgb_phase, r12
rsbmi ga_by, ga_by, #0
vclt.s32 gs_uvrg_x, ga_uvrg_x, #0 @ gs_uvrg_x = ga_uvrg_x < 0
rsbmi ga_by, ga_by, #0
vclt.s32 gs_uvrg_x, ga_uvrg_x, #0 @ gs_uvrg_x = ga_uvrg_x < 0
@@
-326,7
+332,6
@@
function(compute_all_gradients)
ldrb r12, [ psx_gpu, #psx_gpu_triangle_winding_offset ]
vclt.s32 gs_uvrg_y, ga_uvrg_y, #0 @ gs_uvrg_y = ga_uvrg_y < 0
ldrb r12, [ psx_gpu, #psx_gpu_triangle_winding_offset ]
vclt.s32 gs_uvrg_y, ga_uvrg_y, #0 @ gs_uvrg_y = ga_uvrg_y < 0
- add b_base, b_base, #0x8000
rsb r12, r12, #0 @ r12 = -(triangle->winding)
vdup.u32 w_mask, r12 @ w_mask = { -w, -w, -w, -w }
rsb r12, r12, #0 @ r12 = -(triangle->winding)
vdup.u32 w_mask, r12 @ w_mask = { -w, -w, -w, -w }
@@
-335,7
+340,7
@@
function(compute_all_gradients)
vshll.u16 uvrg_base, uvrg0, #16 @ uvrg_base = uvrg0 << 16
vdup.u32 r_shift, r14 @ r_shift = { shift, shift, shift, shift }
vshll.u16 uvrg_base, uvrg0, #16 @ uvrg_base = uvrg0 << 16
vdup.u32 r_shift, r14 @ r_shift = { shift, shift, shift, shift }
- v
orr.u32 uvrg_base, #0x8000
+ v
add.u32 uvrg_base, uvrgb_phase
vabs.s32 ga_uvrg_x, ga_uvrg_x @ ga_uvrg_x = abs(ga_uvrg_x)
vmov area_r_s, s0 @ area_r_s = triangle_reciprocal
vabs.s32 ga_uvrg_x, ga_uvrg_x @ ga_uvrg_x = abs(ga_uvrg_x)
vmov area_r_s, s0 @ area_r_s = triangle_reciprocal
@@
-1337,7
+1342,7
@@
function(setup_blocks_shaded_textured_dithered_##swizzling##_indirect) \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
ptr_offset ];
\
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_ptr_offset ];
\
\
cmp span_num_blocks, #0; \
beq 1f; \
\
cmp span_num_blocks, #0; \
beq 1f; \
@@
-1604,7
+1609,7
@@
function(setup_blocks_unshaded_textured_dithered_##swizzling##_indirect) \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
ptr_offset ];
\
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_ptr_offset ];
\
\
cmp span_num_blocks, #0; \
beq 1f; \
\
cmp span_num_blocks, #0; \
beq 1f; \
@@
-1799,7
+1804,7
@@
function(setup_blocks_unshaded_untextured_undithered_unswizzled_indirect)
ldrh span_num_blocks, [ span_edge_data, #edge_data_num_blocks_offset ]
ldrh y, [ span_edge_data, #edge_data_y_offset ]
ldrh span_num_blocks, [ span_edge_data, #edge_data_num_blocks_offset ]
ldrh y, [ span_edge_data, #edge_data_y_offset ]
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_ptr_offset ]
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_
ptr_offset ]
cmp span_num_blocks, #0
beq 1f
cmp span_num_blocks, #0
beq 1f
@@
-1919,7
+1924,7
@@
function(setup_blocks_unshaded_untextured_undithered_unswizzled_direct)
ldrh span_num_blocks, [ span_edge_data, #edge_data_num_blocks_offset ]
ldrh y, [ span_edge_data, #edge_data_y_offset ]
ldrh span_num_blocks, [ span_edge_data, #edge_data_num_blocks_offset ]
ldrh y, [ span_edge_data, #edge_data_y_offset ]
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_ptr_offset ]
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_
ptr_offset ]
cmp span_num_blocks, #0
beq 1f
cmp span_num_blocks, #0
beq 1f
@@
-2106,7
+2111,7
@@
function(setup_blocks_shaded_untextured_##dithering##_unswizzled_indirect) \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
ptr_offset ];
\
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_ptr_offset ];
\
\
cmp span_num_blocks, #0; \
beq 1f; \
\
cmp span_num_blocks, #0; \
beq 1f; \
@@
-2346,7
+2351,7
@@
function(setup_blocks_shaded_untextured_##dithering##_unswizzled_direct) \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
add dither_offset_ptr, psx_gpu, #psx_gpu_dither_table_offset; \
\
ldrh y, [ span_edge_data, #edge_data_y_offset ]; \
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
ptr_offset ];
\
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_ptr_offset ];
\
\
cmp span_num_blocks, #0; \
beq 1f; \
\
cmp span_num_blocks, #0; \
beq 1f; \
@@
-4804,7
+4809,7
@@
function(setup_sprite_##texture_mode) \
and offset_u, u, #0xF; \
\
ldr width, [ sp, #40 ]; \
and offset_u, u, #0xF; \
\
ldr width, [ sp, #40 ]; \
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
ptr_offset ];
\
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_ptr_offset ];
\
\
ldr height, [ sp, #44 ]; \
add fb_ptr, fb_ptr, y, lsl #11; \
\
ldr height, [ sp, #44 ]; \
add fb_ptr, fb_ptr, y, lsl #11; \
@@
-5052,7
+5057,7
@@
setup_sprites_16bpp_flush_row:
function(setup_sprite_16bpp)
stmdb sp!, { r4 - r11, r14 }
function(setup_sprite_16bpp)
stmdb sp!, { r4 - r11, r14 }
- ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_ptr_offset ]
+ ldr fb_ptr, [ psx_gpu, #psx_gpu_vram_
out_
ptr_offset ]
ldr v, [ sp, #36 ]
add fb_ptr, fb_ptr, y, lsl #11
ldr v, [ sp, #36 ]
add fb_ptr, fb_ptr, y, lsl #11