void VertexInputLayout::dispose() { sceGxmShaderPatcherReleaseVertexProgram(shaderPatcher, vertexProgram); }
int vita2d_fini() { unsigned int i; if (!vita2d_initialized) { DEBUG("libvita2d is not initialized!\n"); return 1; } // wait until rendering is done sceGxmFinish(_vita2d_context); // clean up allocations sceGxmShaderPatcherReleaseFragmentProgram(shaderPatcher, clearFragmentProgram); sceGxmShaderPatcherReleaseVertexProgram(shaderPatcher, clearVertexProgram); sceGxmShaderPatcherReleaseFragmentProgram(shaderPatcher, _vita2d_colorFragmentProgram); sceGxmShaderPatcherReleaseVertexProgram(shaderPatcher, _vita2d_colorVertexProgram); sceGxmShaderPatcherReleaseFragmentProgram(shaderPatcher, _vita2d_textureFragmentProgram); sceGxmShaderPatcherReleaseFragmentProgram(shaderPatcher, _vita2d_textureTintFragmentProgram); sceGxmShaderPatcherReleaseVertexProgram(shaderPatcher, _vita2d_textureVertexProgram); gpu_free(clearIndicesUid); gpu_free(clearVerticesUid); // wait until display queue is finished before deallocating display buffers sceGxmDisplayQueueFinish(); // clean up display queue gpu_free(depthBufferUid); for (i = 0; i < DISPLAY_BUFFER_COUNT; i++) { // clear the buffer then deallocate memset(displayBufferData[i], 0, DISPLAY_HEIGHT*DISPLAY_STRIDE_IN_PIXELS*4); gpu_free(displayBufferUid[i]); // destroy the sync object sceGxmSyncObjectDestroy(displayBufferSync[i]); } // unregister programs and destroy shader patcher sceGxmShaderPatcherUnregisterProgram(shaderPatcher, clearFragmentProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, clearVertexProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, colorFragmentProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, colorVertexProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureFragmentProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureTintFragmentProgramId); sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureVertexProgramId); sceGxmShaderPatcherDestroy(shaderPatcher); fragment_usse_free(patcherFragmentUsseUid); vertex_usse_free(patcherVertexUsseUid); gpu_free(patcherBufferUid); // destroy the render target sceGxmDestroyRenderTarget(renderTarget); // destroy the _vita2d_context sceGxmDestroyContext(_vita2d_context); fragment_usse_free(fragmentUsseRingBufferUid); gpu_free(fragmentRingBufferUid); gpu_free(vertexRingBufferUid); gpu_free(vdmRingBufferUid); free(contextParams.hostMem); gpu_free(poolUid); // terminate libgxm sceGxmTerminate(); return 1; }