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
cdrom: change pause timing again
[pcsx_rearmed.git]
/
plugins
/
gpu_unai
/
gpulib_if.cpp
diff --git
a/plugins/gpu_unai/gpulib_if.cpp
b/plugins/gpu_unai/gpulib_if.cpp
index
45c73a7
..
6816e2b
100644
(file)
--- a/
plugins/gpu_unai/gpulib_if.cpp
+++ b/
plugins/gpu_unai/gpulib_if.cpp
@@
-393,13
+393,14
@@
static void gpuGP0Cmd_0xEx(gpu_unai_t &gpu_unai, u32 cmd_word)
#include "../gpulib/gpu_timing.h"
extern const unsigned char cmd_lengths[256];
#include "../gpulib/gpu_timing.h"
extern const unsigned char cmd_lengths[256];
-int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
+int do_cmd_list(u32 *list_, int list_len,
+ int *cycles_sum_out, int *cycles_last, int *last_cmd)
{
{
+ int cpu_cycles_sum = 0, cpu_cycles = *cycles_last;
u32 cmd = 0, len, i;
u32 cmd = 0, len, i;
- le32_t *list = (le32_t *)
_list
;
+ le32_t *list = (le32_t *)
list_
;
le32_t *list_start = list;
le32_t *list_end = list + list_len;
le32_t *list_start = list;
le32_t *list_end = list + list_len;
- u32 cpu_cycles = 0;
//TODO: set ilace_mask when resolution changes instead of every time,
// eliminate #ifdef below.
//TODO: set ilace_mask when resolution changes instead of every time,
// eliminate #ifdef below.
@@
-432,8
+433,8
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
{
case 0x02:
gpuClearImage(packet);
{
case 0x02:
gpuClearImage(packet);
-
cpu_cycles += gput_fill(le16_to_s16(packet.U2[4]) & 0x3ff
,
-
le16_to_s16(packet.U2[5]) & 0x1ff
);
+
gput_sum(cpu_cycles_sum, cpu_cycles
,
+
gput_fill(le16_to_s16(packet.U2[4]) & 0x3ff, le16_to_s16(packet.U2[5]) & 0x1ff)
);
break;
case 0x20:
break;
case 0x20:
@@
-446,7
+447,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | gpu_unai.PixelMSB
];
gpuDrawPolyF(packet, driver, false);
gpu_unai.Masking | Blending | gpu_unai.PixelMSB
];
gpuDrawPolyF(packet, driver, false);
-
cpu_cycles += gput_poly_base(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_poly_base()
);
} break;
case 0x24:
} break;
case 0x24:
@@
-471,7
+472,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PP driver = gpuPolySpanDrivers[driver_idx];
gpuDrawPolyFT(packet, driver, false);
PP driver = gpuPolySpanDrivers[driver_idx];
gpuDrawPolyFT(packet, driver, false);
-
cpu_cycles += gput_poly_base_t(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_poly_base_t()
);
} break;
case 0x28:
} break;
case 0x28:
@@
-484,7
+485,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | gpu_unai.PixelMSB
];
gpuDrawPolyF(packet, driver, true); // is_quad = true
gpu_unai.Masking | Blending | gpu_unai.PixelMSB
];
gpuDrawPolyF(packet, driver, true); // is_quad = true
-
cpu_cycles += gput_quad_base(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_quad_base()
);
} break;
case 0x2C:
} break;
case 0x2C:
@@
-509,7
+510,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PP driver = gpuPolySpanDrivers[driver_idx];
gpuDrawPolyFT(packet, driver, true); // is_quad = true
PP driver = gpuPolySpanDrivers[driver_idx];
gpuDrawPolyFT(packet, driver, true); // is_quad = true
-
cpu_cycles += gput_quad_base_t(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_quad_base_t()
);
} break;
case 0x30:
} break;
case 0x30:
@@
-527,7
+528,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | 129 | gpu_unai.PixelMSB
];
gpuDrawPolyG(packet, driver, false);
gpu_unai.Masking | Blending | 129 | gpu_unai.PixelMSB
];
gpuDrawPolyG(packet, driver, false);
-
cpu_cycles += gput_poly_base_g(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_poly_base_g()
);
} break;
case 0x34:
} break;
case 0x34:
@@
-543,7
+544,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | ((Lighting)?129:0) | gpu_unai.PixelMSB
];
gpuDrawPolyGT(packet, driver, false);
gpu_unai.Masking | Blending | ((Lighting)?129:0) | gpu_unai.PixelMSB
];
gpuDrawPolyGT(packet, driver, false);
-
cpu_cycles += gput_poly_base_gt(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_poly_base_gt()
);
} break;
case 0x38:
} break;
case 0x38:
@@
-558,7
+559,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | 129 | gpu_unai.PixelMSB
];
gpuDrawPolyG(packet, driver, true); // is_quad = true
gpu_unai.Masking | Blending | 129 | gpu_unai.PixelMSB
];
gpuDrawPolyG(packet, driver, true); // is_quad = true
-
cpu_cycles += gput_quad_base_g(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_quad_base_g()
);
} break;
case 0x3C:
} break;
case 0x3C:
@@
-574,7
+575,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.Masking | Blending | ((Lighting)?129:0) | gpu_unai.PixelMSB
];
gpuDrawPolyGT(packet, driver, true); // is_quad = true
gpu_unai.Masking | Blending | ((Lighting)?129:0) | gpu_unai.PixelMSB
];
gpuDrawPolyGT(packet, driver, true); // is_quad = true
-
cpu_cycles += gput_quad_base_gt(
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_quad_base_gt()
);
} break;
case 0x40:
} break;
case 0x40:
@@
-585,7
+586,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
u32 driver_idx = (Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1;
PSD driver = gpuPixelSpanDrivers[driver_idx];
gpuDrawLineF(packet, driver);
u32 driver_idx = (Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1;
PSD driver = gpuPixelSpanDrivers[driver_idx];
gpuDrawLineF(packet, driver);
-
cpu_cycles += gput_line(0
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_line(0)
);
} break;
case 0x48 ... 0x4F: { // Monochrome line strip
} break;
case 0x48 ... 0x4F: { // Monochrome line strip
@@
-602,7
+603,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.PacketBuffer.U4[1] = gpu_unai.PacketBuffer.U4[2];
gpu_unai.PacketBuffer.U4[2] = *list_position++;
gpuDrawLineF(packet, driver);
gpu_unai.PacketBuffer.U4[1] = gpu_unai.PacketBuffer.U4[2];
gpu_unai.PacketBuffer.U4[2] = *list_position++;
gpuDrawLineF(packet, driver);
-
cpu_cycles += gput_line(0
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_line(0)
);
num_vertexes++;
if(list_position >= list_end) {
num_vertexes++;
if(list_position >= list_end) {
@@
-626,7
+627,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
driver_idx |= (1 << 5);
PSD driver = gpuPixelSpanDrivers[driver_idx];
gpuDrawLineG(packet, driver);
driver_idx |= (1 << 5);
PSD driver = gpuPixelSpanDrivers[driver_idx];
gpuDrawLineG(packet, driver);
-
cpu_cycles += gput_line(0
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_line(0)
);
} break;
case 0x58 ... 0x5F: { // Gouraud-shaded line strip
} break;
case 0x58 ... 0x5F: { // Gouraud-shaded line strip
@@
-647,7
+648,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
gpu_unai.PacketBuffer.U4[2] = *list_position++;
gpu_unai.PacketBuffer.U4[3] = *list_position++;
gpuDrawLineG(packet, driver);
gpu_unai.PacketBuffer.U4[2] = *list_position++;
gpu_unai.PacketBuffer.U4[3] = *list_position++;
gpuDrawLineG(packet, driver);
-
cpu_cycles += gput_line(0
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_line(0)
);
num_vertexes++;
if(list_position >= list_end) {
num_vertexes++;
if(list_position >= list_end) {
@@
-668,7
+669,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
case 0x64:
} break;
case 0x64:
@@
-697,7
+698,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
case 0x68:
} break;
case 0x68:
@@
-708,7
+709,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(1, 1
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(1, 1)
);
} break;
case 0x70:
} break;
case 0x70:
@@
-719,7
+720,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
case 0x74:
} break;
case 0x74:
@@
-738,7
+739,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
case 0x78:
} break;
case 0x78:
@@
-749,7
+750,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
PT driver = gpuTileSpanDrivers[(Blending_Mode | gpu_unai.Masking | Blending | (gpu_unai.PixelMSB>>3)) >> 1];
s32 w = 0, h = 0;
gpuDrawT(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
case 0x7C:
} break;
case 0x7C:
@@
-760,7
+761,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
s32 w = 0, h = 0;
gpuSetCLUT(le32_to_u32(gpu_unai.PacketBuffer.U4[2]) >> 16);
gpuDrawS16(packet, &w, &h);
s32 w = 0, h = 0;
gpuSetCLUT(le32_to_u32(gpu_unai.PacketBuffer.U4[2]) >> 16);
gpuDrawS16(packet, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
break;
}
// fallthrough
break;
}
// fallthrough
@@
-778,7
+779,7
@@
int do_cmd_list(u32 *_list, int list_len, int *cpu_cycles_out, int *last_cmd)
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
driver_idx |= Lighting;
PS driver = gpuSpriteSpanDrivers[driver_idx];
gpuDrawS(packet, driver, &w, &h);
-
cpu_cycles += gput_sprite(w, h
);
+
gput_sum(cpu_cycles_sum, cpu_cycles, gput_sprite(w, h)
);
} break;
#ifdef TEST
} break;
#ifdef TEST
@@
-815,7
+816,8
@@
breakloop:
gpu.ex_regs[1] &= ~0x1ff;
gpu.ex_regs[1] |= gpu_unai.GPU_GP1 & 0x1ff;
gpu.ex_regs[1] &= ~0x1ff;
gpu.ex_regs[1] |= gpu_unai.GPU_GP1 & 0x1ff;
- *cpu_cycles_out += cpu_cycles;
+ *cycles_sum_out += cpu_cycles_sum;
+ *cycles_last = cpu_cycles;
*last_cmd = cmd;
return list - list_start;
}
*last_cmd = cmd;
return list - list_start;
}
@@
-823,7
+825,7
@@
breakloop:
void renderer_sync_ecmds(u32 *ecmds)
{
int dummy;
void renderer_sync_ecmds(u32 *ecmds)
{
int dummy;
- do_cmd_list(&ecmds[1], 6, &dummy, &dummy);
+ do_cmd_list(&ecmds[1], 6, &dummy, &dummy
, &dummy
);
}
void renderer_update_caches(int x, int y, int w, int h, int state_changed)
}
void renderer_update_caches(int x, int y, int w, int h, int state_changed)