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=d245c44b362df8e0a7a7b560049bde96bebec40b;hpb=9ee0fd5b333039b1140d90f935aa9299825f1e42;p=pcsx_rearmed.git diff --git a/plugins/gpu-gles/gpulib_if.c b/plugins/gpu-gles/gpulib_if.c index d245c44b..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) { @@ -549,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++; @@ -567,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; @@ -593,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; @@ -679,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; @@ -716,6 +728,15 @@ void renderer_set_config(const struct rearmed_cbs *cbs_) 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); }