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
gpu: start doing some basic gpu timing
[pcsx_rearmed.git]
/
plugins
/
gpu-gles
/
gpulib_if.c
diff --git
a/plugins/gpu-gles/gpulib_if.c
b/plugins/gpu-gles/gpulib_if.c
index
068dc41
..
d440fdb
100644
(file)
--- a/
plugins/gpu-gles/gpulib_if.c
+++ b/
plugins/gpu-gles/gpulib_if.c
@@
-16,6
+16,7
@@
* *
***************************************************************************/
* *
***************************************************************************/
+#include "gpuStdafx.h"
#include "gpuDraw.c"
#include "gpuTexture.c"
#include "gpuPrim.c"
#include "gpuDraw.c"
#include "gpuTexture.c"
#include "gpuPrim.c"
@@
-26,10
+27,10
@@
short g_m1,g_m2,g_m3;
short DrawSemiTrans;
short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3; // global psx vertex coords
short DrawSemiTrans;
short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3; // global psx vertex coords
-
long
GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
-
long
GlobalTextREST,GlobalTextABR,GlobalTextPAGE;
+
int
GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
+
int
GlobalTextREST,GlobalTextABR,GlobalTextPAGE;
-unsigned
long
dwGPUVersion;
+unsigned
int
dwGPUVersion;
int iGPUHeight=512;
int iGPUHeightMask=511;
int GlobalTextIL;
int iGPUHeight=512;
int iGPUHeightMask=511;
int GlobalTextIL;
@@
-41,15
+42,15
@@
GLfloat gl_z=0.0f;
BOOL bNeedInterlaceUpdate;
BOOL bNeedRGB24Update;
BOOL bChangeWinMode;
BOOL bNeedInterlaceUpdate;
BOOL bNeedRGB24Update;
BOOL bChangeWinMode;
-
long
lGPUstatusRet;
-unsigned
long
ulGPUInfoVals[16];
+
int
lGPUstatusRet;
+unsigned
int
ulGPUInfoVals[16];
VRAMLoad_t VRAMWrite;
VRAMLoad_t VRAMRead;
int iDataWriteMode;
int iDataReadMode;
VRAMLoad_t VRAMWrite;
VRAMLoad_t VRAMRead;
int iDataWriteMode;
int iDataReadMode;
-
long
lClearOnSwap;
-
long
lClearOnSwapColor;
+
int
lClearOnSwap;
+
int
lClearOnSwapColor;
BOOL bSkipNextFrame;
PSXDisplay_t PSXDisplay;
BOOL bSkipNextFrame;
PSXDisplay_t PSXDisplay;
@@
-195,13
+196,13
@@
void updateFrontDisplay(void)
static void ChangeDispOffsetsX(void) // CENTER X
{
static void ChangeDispOffsetsX(void) // CENTER X
{
-
long
lx,l;short sO;
+
int
lx,l;short sO;
if(!PSXDisplay.Range.x1) return; // some range given?
l=PSXDisplay.DisplayMode.x;
if(!PSXDisplay.Range.x1) return; // some range given?
l=PSXDisplay.DisplayMode.x;
-l*=(
long
)PSXDisplay.Range.x1; // some funky calculation
+l*=(
int
)PSXDisplay.Range.x1; // some funky calculation
l/=2560;lx=l;l&=0xfffffff8;
if(l==PreviousPSXDisplay.Range.x1) return; // some change?
l/=2560;lx=l;l&=0xfffffff8;
if(l==PreviousPSXDisplay.Range.x1) return; // some change?
@@
-312,7
+313,7
@@
if(bUp) updateDisplay(); // yeah, real update (swap
}
#define GPUwriteStatus_ext GPUwriteStatus_ext // for gpulib to see this
}
#define GPUwriteStatus_ext GPUwriteStatus_ext // for gpulib to see this
-void GPUwriteStatus_ext(unsigned
long
gdata)
+void GPUwriteStatus_ext(unsigned
int
gdata)
{
switch((gdata>>24)&0xff)
{
{
switch((gdata>>24)&0xff)
{
@@
-513,10
+514,14
@@
void renderer_notify_res_change(void)
{
}
{
}
+void renderer_notify_scanout_change(int x, int y)
+{
+}
+
extern const unsigned char cmd_lengths[256];
// XXX: mostly dupe code from soft peops
extern const unsigned char cmd_lengths[256];
// XXX: mostly dupe code from soft peops
-int do_cmd_list(unsigned int *list, int list_len, int *last_cmd)
+int do_cmd_list(unsigned int *list, int list_len, int *
cycles, int *
last_cmd)
{
unsigned int cmd, len;
unsigned int *list_start = list;
{
unsigned int cmd, len;
unsigned int *list_start = list;
@@
-549,7
+554,12
@@
int do_cmd_list(unsigned int *list, int list_len, int *last_cmd)
while(1)
{
while(1)
{
- if((*list_position & 0xf000f000) == 0x50005000 || list_position >= list_end)
+ if(list_position >= list_end) {
+ cmd = -1;
+ goto breakloop;
+ }
+
+ if((*list_position & 0xf000f000) == 0x50005000)
break;
list_position++;
break;
list_position++;
@@
-567,7
+577,12
@@
int do_cmd_list(unsigned int *list, int list_len, int *last_cmd)
while(1)
{
while(1)
{
- if((*list_position & 0xf000f000) == 0x50005000 || list_position >= list_end)
+ if(list_position >= list_end) {
+ cmd = -1;
+ goto breakloop;
+ }
+
+ if((*list_position & 0xf000f000) == 0x50005000)
break;
list_position += 2;
break;
list_position += 2;
@@
-593,6
+608,7
@@
int do_cmd_list(unsigned int *list, int list_len, int *last_cmd)
}
}
}
}
+breakloop:
gpu.ex_regs[1] &= ~0x1ff;
gpu.ex_regs[1] |= lGPUstatusRet & 0x1ff;
gpu.ex_regs[1] &= ~0x1ff;
gpu.ex_regs[1] |= lGPUstatusRet & 0x1ff;
@@
-610,7
+626,7
@@
void renderer_sync_ecmds(uint32_t *ecmds)
cmdSTP((unsigned char *)&ecmds[6]);
}
cmdSTP((unsigned char *)&ecmds[6]);
}
-void renderer_update_caches(int x, int y, int w, int h)
+void renderer_update_caches(int x, int y, int w, int h
, int state_changed
)
{
VRAMWrite.x = x;
VRAMWrite.y = y;
{
VRAMWrite.x = x;
VRAMWrite.y = y;
@@
-663,7
+679,7
@@
void vout_set_config(const struct rearmed_cbs *cbs)
static struct rearmed_cbs *cbs;
static struct rearmed_cbs *cbs;
-long GPUopen(
void **dpy
)
+long GPUopen(
unsigned long *disp, char *cap, char *cfg
)
{
int ret;
{
int ret;
@@
-679,7
+695,7
@@
long GPUopen(void **dpy)
InitializeTextureStore(); // init texture mem
InitializeTextureStore(); // init texture mem
- ret = GLinitialize();
+ ret = GLinitialize(
cbs->gles_display, cbs->gles_surface
);
MakeDisplayLists();
is_opened = 1;
MakeDisplayLists();
is_opened = 1;
@@
-715,9
+731,16
@@
void renderer_set_config(const struct rearmed_cbs *cbs_)
bUseFastMdec = cbs->gpu_peopsgl.bUseFastMdec;
iTexGarbageCollection = cbs->gpu_peopsgl.iTexGarbageCollection;
iVRamSize = cbs->gpu_peopsgl.iVRamSize;
bUseFastMdec = cbs->gpu_peopsgl.bUseFastMdec;
iTexGarbageCollection = cbs->gpu_peopsgl.iTexGarbageCollection;
iVRamSize = cbs->gpu_peopsgl.iVRamSize;
+
if (cbs->pl_set_gpu_caps)
cbs->pl_set_gpu_caps(GPU_CAP_OWNS_DISPLAY);
if (cbs->pl_set_gpu_caps)
cbs->pl_set_gpu_caps(GPU_CAP_OWNS_DISPLAY);
+ if (is_opened && cbs->gles_display != NULL && cbs->gles_surface != NULL) {
+ // HACK..
+ GPUclose();
+ GPUopen(NULL, NULL, NULL);
+ }
+
set_vram(gpu.vram);
}
set_vram(gpu.vram);
}