minor cleanup - don't leak so many fragment shaders :p also fix address range for the Generate Symbol Map feature
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3379 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e384c91313
commit
fd5a4ee71a
|
@ -160,7 +160,7 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event)
|
||||||
break;
|
break;
|
||||||
case IDM_SCANFUNCTIONS:
|
case IDM_SCANFUNCTIONS:
|
||||||
{
|
{
|
||||||
PPCAnalyst::FindFunctions(0x81300000, 0x81800000, &g_symbolDB);
|
PPCAnalyst::FindFunctions(0x80000000, 0x80400000, &g_symbolDB);
|
||||||
SignatureDB db;
|
SignatureDB db;
|
||||||
if (db.Load((File::GetSysDirectory() + TOTALDB).c_str()))
|
if (db.Load((File::GetSysDirectory() + TOTALDB).c_str()))
|
||||||
db.Apply(&g_symbolDB);
|
db.Apply(&g_symbolDB);
|
||||||
|
|
|
@ -27,6 +27,14 @@
|
||||||
struct FRAGMENTSHADER
|
struct FRAGMENTSHADER
|
||||||
{
|
{
|
||||||
FRAGMENTSHADER() : glprogid(0) { }
|
FRAGMENTSHADER() : glprogid(0) { }
|
||||||
|
void Destroy()
|
||||||
|
{
|
||||||
|
if (glprogid)
|
||||||
|
{
|
||||||
|
glDeleteProgramsARB(1, &glprogid);
|
||||||
|
glprogid = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
GLuint glprogid; // opengl program id
|
GLuint glprogid; // opengl program id
|
||||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||||
std::string strprog;
|
std::string strprog;
|
||||||
|
@ -41,10 +49,9 @@ class PixelShaderCache
|
||||||
int frameCount;
|
int frameCount;
|
||||||
PSCacheEntry() : frameCount(0) {}
|
PSCacheEntry() : frameCount(0) {}
|
||||||
~PSCacheEntry() {}
|
~PSCacheEntry() {}
|
||||||
void Destroy() {
|
void Destroy()
|
||||||
// printf("Destroying ps %i\n", shader.glprogid);
|
{
|
||||||
glDeleteProgramsARB(1, &shader.glprogid);
|
shader.Destroy();
|
||||||
shader.glprogid = 0;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -893,11 +893,12 @@ void Renderer::Swap(const TRectangle& rc)
|
||||||
// Tell the OSD Menu about the current internal resolution
|
// Tell the OSD Menu about the current internal resolution
|
||||||
OSDInternalW = rc.right; OSDInternalH = rc.bottom;
|
OSDInternalW = rc.right; OSDInternalH = rc.bottom;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// Make sure that the wireframe setting doesn't screw up the screen copy.
|
||||||
// Apply AA
|
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
// Resolve the multisampled rendertarget into the normal one.
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
if (/*s_bHaveFramebufferBlit*/ s_MSAASamples > 1)
|
if (/*s_bHaveFramebufferBlit*/ s_MSAASamples > 1)
|
||||||
{
|
{
|
||||||
// Use framebuffer blit to stretch screen.
|
// Use framebuffer blit to stretch screen.
|
||||||
|
@ -953,6 +954,8 @@ void Renderer::Swap(const TRectangle& rc)
|
||||||
glDrawArrays(GL_QUADS, 0, 4);
|
glDrawArrays(GL_QUADS, 0, 4);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Here's an opportunity to bind a fragment shader to do post processing.
|
||||||
|
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
glTexCoord2f(0, v_min); glVertex2f(-1, -1);
|
glTexCoord2f(0, v_min); glVertex2f(-1, -1);
|
||||||
glTexCoord2f(0, v_max); glVertex2f(-1, 1);
|
glTexCoord2f(0, v_max); glVertex2f(-1, 1);
|
||||||
|
|
|
@ -40,13 +40,15 @@ const int renderBufferHeight = 1024;
|
||||||
static FRAGMENTSHADER s_rgbToYuyvProgram;
|
static FRAGMENTSHADER s_rgbToYuyvProgram;
|
||||||
static FRAGMENTSHADER s_yuyvToRgbProgram;
|
static FRAGMENTSHADER s_yuyvToRgbProgram;
|
||||||
|
|
||||||
// todo - store shaders in a smarter way - there are not 64 different copy texture formats
|
// Not all slots are taken - but who cares.
|
||||||
const u32 NUM_ENCODING_PROGRAMS = 64;
|
const u32 NUM_ENCODING_PROGRAMS = 64;
|
||||||
static FRAGMENTSHADER s_encodingPrograms[NUM_ENCODING_PROGRAMS];
|
static FRAGMENTSHADER s_encodingPrograms[NUM_ENCODING_PROGRAMS];
|
||||||
|
|
||||||
void CreateRgbToYuyvProgram()
|
void CreateRgbToYuyvProgram()
|
||||||
{
|
{
|
||||||
// output is BGRA because that is slightly faster than RGBA
|
// Output is BGRA because that is slightly faster than RGBA.
|
||||||
|
|
||||||
|
// TODO: Use the dot() function for faster dot products. Probably mostly helps ATI (nvidia is scalar anyway).
|
||||||
const char *FProgram =
|
const char *FProgram =
|
||||||
"uniform samplerRECT samp0 : register(s0);\n"
|
"uniform samplerRECT samp0 : register(s0);\n"
|
||||||
"void main(\n"
|
"void main(\n"
|
||||||
|
@ -152,6 +154,13 @@ void Shutdown()
|
||||||
glDeleteTextures(1, &s_srcTexture);
|
glDeleteTextures(1, &s_srcTexture);
|
||||||
glDeleteRenderbuffersEXT(1, &s_dstRenderBuffer);
|
glDeleteRenderbuffersEXT(1, &s_dstRenderBuffer);
|
||||||
glDeleteFramebuffersEXT(1, &s_texConvFrameBuffer);
|
glDeleteFramebuffersEXT(1, &s_texConvFrameBuffer);
|
||||||
|
|
||||||
|
s_rgbToYuyvProgram.Destroy();
|
||||||
|
s_yuyvToRgbProgram.Destroy();
|
||||||
|
|
||||||
|
for (int i = 0; i < NUM_ENCODING_PROGRAMS; i++)
|
||||||
|
s_encodingPrograms[i].Destroy();
|
||||||
|
|
||||||
s_srcTexture = 0;
|
s_srcTexture = 0;
|
||||||
s_dstRenderBuffer = 0;
|
s_dstRenderBuffer = 0;
|
||||||
s_texConvFrameBuffer = 0;
|
s_texConvFrameBuffer = 0;
|
||||||
|
|
Loading…
Reference in New Issue