X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu-gles%2Fgpulib_if.c;h=69285daa74c60bb5397e4b2c1565dd3bdd1e4ce0;hb=5fa6cb1729bd2bc6c1d9d0d04c4acd611675518f;hp=09dc20097a3956895822bfd1dc7eccff4f195489;hpb=e929dec505f8d3692248fe0d42c84a37c994ad39;p=pcsx_rearmed.git diff --git a/plugins/gpu-gles/gpulib_if.c b/plugins/gpu-gles/gpulib_if.c index 09dc2009..69285daa 100644 --- 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" @@ -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 -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; @@ -41,15 +42,15 @@ GLfloat gl_z=0.0f; 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; -long lClearOnSwap; -long lClearOnSwapColor; +int lClearOnSwap; +int lClearOnSwapColor; BOOL bSkipNextFrame; PSXDisplay_t PSXDisplay; @@ -195,13 +196,13 @@ void updateFrontDisplay(void) 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; -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? @@ -312,7 +313,7 @@ if(bUp) updateDisplay(); // yeah, real update (swap } #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) { @@ -479,10 +480,15 @@ switch((gdata>>24)&0xff) static int is_opened; -int renderer_init(void) +static void set_vram(void *vram) { - psxVub=(void *)gpu.vram; + psxVub=vram; psxVuw=(unsigned short *)psxVub; +} + +int renderer_init(void) +{ + set_vram(gpu.vram); PSXDisplay.RGB24 = FALSE; // init some stuff PSXDisplay.Interlaced = FALSE; @@ -544,7 +550,12 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) 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++; @@ -562,7 +573,12 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) 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; @@ -588,6 +604,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; @@ -674,7 +691,7 @@ long GPUopen(void **dpy) InitializeTextureStore(); // init texture mem - ret = GLinitialize(); + ret = GLinitialize(cbs->gles_display, cbs->gles_surface); MakeDisplayLists(); is_opened = 1; @@ -710,6 +727,17 @@ void renderer_set_config(const struct rearmed_cbs *cbs_) 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 (is_opened && cbs->gles_display != NULL && cbs->gles_surface != NULL) { + // HACK.. + GPUclose(); + GPUopen(NULL); + } + + set_vram(gpu.vram); } void SetAspectRatio(void)