apply some speedup to dx11 plugin + some minor stuff

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5721 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
luisr142004 2010-06-16 10:12:57 +00:00
parent 980a2680be
commit 4f8a6a1573
13 changed files with 202 additions and 221 deletions

View File

@ -130,7 +130,7 @@ void IndexGenerator::AddStrip(int numVerts)
//if we have less than 3 verts //if we have less than 3 verts
if(numVerts == 1) if(numVerts == 1)
{ {
//dicard // discard
index++; index++;
return; return;
} }
@ -341,9 +341,3 @@ void IndexGenerator::AddPoints(int numVerts)
numP += numVerts; numP += numVerts;
Padds++; Padds++;
} }

View File

@ -294,7 +294,7 @@ HRESULT Create(HWND wnd)
{ {
// try using the first one // try using the first one
hr = factory->EnumAdapters(0, &adapter); hr = factory->EnumAdapters(0, &adapter);
if (FAILED(hr)) MessageBox(wnd, _T("Failed to enumerate adapter"), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR); if (FAILED(hr)) MessageBox(wnd, _T("Failed to enumerate adapters"), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR);
} }
// TODO: Make this configurable // TODO: Make this configurable
@ -303,7 +303,7 @@ HRESULT Create(HWND wnd)
{ {
// try using the first one // try using the first one
hr = adapter->EnumOutputs(0, &output); hr = adapter->EnumOutputs(0, &output);
if (FAILED(hr)) MessageBox(wnd, _T("Failed to enumerate output"), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR); if (FAILED(hr)) MessageBox(wnd, _T("Failed to enumerate outputs"), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR);
} }
// this will need to be changed once multisampling gets implemented // this will need to be changed once multisampling gets implemented

View File

@ -68,8 +68,8 @@ void ReplaceTexture2D(ID3D11Texture2D* pTexture, const u8* buffer, unsigned int
// TODO: Merge the conversions done here to VideoDecoder // TODO: Merge the conversions done here to VideoDecoder
switch (pcfmt) switch (pcfmt)
{ {
case PC_TEX_FMT_IA4_AS_IA8:
case PC_TEX_FMT_IA8: case PC_TEX_FMT_IA8:
case PC_TEX_FMT_IA4_AS_IA8:
for (unsigned int y = 0; y < height; y++) for (unsigned int y = 0; y < height; y++)
{ {
u16* in = (u16*)buffer + y * pitch; u16* in = (u16*)buffer + y * pitch;
@ -78,43 +78,30 @@ void ReplaceTexture2D(ID3D11Texture2D* pTexture, const u8* buffer, unsigned int
{ {
const u8 I = (*in & 0xFF); const u8 I = (*in & 0xFF);
const u8 A = (*in & 0xFF00) >> 8; const u8 A = (*in & 0xFF00) >> 8;
*pBits = (A << 24) | (I << 16) | (I << 8) | I; *(pBits++) = (A << 24) | (I << 16) | (I << 8) | I;
in++; in++;
pBits++;
} }
} }
break; break;
case PC_TEX_FMT_I8: case PC_TEX_FMT_I8:
case PC_TEX_FMT_I4_AS_I8: case PC_TEX_FMT_I4_AS_I8:
for (unsigned int y = 0; y < height; y++)
{ {
const u8 *pIn = buffer; const u8* in = buffer + (y * pitch);
for (int y = 0; y < height; y++) u32* pBits = (u32*)((u8*)outptr + (y * destPitch));
for(unsigned int i = 0; i < width; i++)
{ {
u8* pBits = ((u8*)outptr + (y * destPitch)); const u8 I = *(in++);
for(int i = 0; i < width * 4; i += 4) memset( pBits++, I, 4 );
{
pBits[i] = pIn[i / 4];
pBits[i+1] = pIn[i / 4];
pBits[i+2] = pIn[i / 4];
pBits[i + 3] = pIn[i / 4];
}
pIn += pitch;
} }
} }
break; break;
case PC_TEX_FMT_BGRA32: case PC_TEX_FMT_BGRA32:
for (unsigned int y = 0; y < height; y++) for (unsigned int y = 0; y < height; y++)
{ {
u32* in = (u32*)buffer + y * pitch; u32* in = (u32*)buffer + y * pitch;
u32* pBits = (u32*)((u8*)outptr + y * destPitch); u32* pBits = (u32*)((u8*)outptr + y * destPitch);
for (unsigned int x = 0; x < width; x++) memcpy( pBits, in, destPitch );
{
const u32 col = *in;
*pBits = col;
in++;
pBits++;
}
} }
break; break;
case PC_TEX_FMT_RGB565: case PC_TEX_FMT_RGB565:
@ -125,13 +112,11 @@ void ReplaceTexture2D(ID3D11Texture2D* pTexture, const u8* buffer, unsigned int
for (unsigned int x = 0; x < width; x++) for (unsigned int x = 0; x < width; x++)
{ {
// we can't simply shift here, since e.g. 11111 must map to 11111111 and not 11111000 // we can't simply shift here, since e.g. 11111 must map to 11111111 and not 11111000
const u16 col = *in; const u16 col = *(in++);
*pBits = 0xFF000000 | // alpha *(pBits++) = 0xFF000000 | // alpha
((((col&0xF800) << 5) * 255 / 31) & 0xFF0000) | // red ((((col&0xF800) << 5) * 255 / 31) & 0xFF0000) | // red
((((col& 0x7e0) << 3) * 255 / 63) & 0xFF00) | // green ((((col& 0x7e0) << 3) * 255 / 63) & 0xFF00) | // green
(( (col& 0x1f) * 255 / 31)); // blue (( (col& 0x1f) * 255 / 31)); // blue
pBits++;
in++;
} }
} }
break; break;

View File

@ -167,8 +167,8 @@ void TextureCache::Cleanup()
} }
else else
{ {
iter++; iter++;
} }
} }
} }
@ -215,7 +215,7 @@ TextureCache::TCacheEntry* TextureCache::Load(unsigned int stage, u32 address, u
} }
else else
{ {
// Let's reload the new texture data into the same texture, // Let's reload the new texture data into the same texture,
// instead of destroying it and having to create a new one. // instead of destroying it and having to create a new one.
// Might speed up movie playback very, very slightly. // Might speed up movie playback very, very slightly.
@ -329,8 +329,8 @@ void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer, boo
int tex_w = (abs(source_rect.GetWidth()) >> bScaleByHalf); int tex_w = (abs(source_rect.GetWidth()) >> bScaleByHalf);
int tex_h = (abs(source_rect.GetHeight()) >> bScaleByHalf); int tex_h = (abs(source_rect.GetHeight()) >> bScaleByHalf);
int Scaledtex_w = (g_ActiveConfig.bCopyEFBScaled)?((int)(Renderer::GetTargetScaleX() * tex_w)):tex_w; int Scaledtex_w = (g_ActiveConfig.bCopyEFBScaled) ? ((int)(Renderer::GetTargetScaleX() * tex_w)) : tex_w;
int Scaledtex_h = (g_ActiveConfig.bCopyEFBScaled)?((int)(Renderer::GetTargetScaleY() * tex_h)):tex_h; int Scaledtex_h = (g_ActiveConfig.bCopyEFBScaled) ? ((int)(Renderer::GetTargetScaleY() * tex_h)) : tex_h;
TexCache::iterator iter; TexCache::iterator iter;
D3DTexture2D* tex = NULL; D3DTexture2D* tex = NULL;
@ -376,130 +376,130 @@ void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer, boo
{ {
switch(copyfmt) switch(copyfmt)
{ {
case 0: // Z4 case 0: // Z4
case 1: // Z8 case 1: // Z8
colmat[0] = colmat[4] = colmat[8] = colmat[12] =1.0f; colmat[0] = colmat[4] = colmat[8] = colmat[12] = 1.0f;
cbufid = 12; cbufid = 12;
break; break;
case 3: // Z16 //? case 3: // Z16 //?
colmat[1] = colmat[5] = colmat[9] = colmat[12] = 1.0f; colmat[1] = colmat[5] = colmat[9] = colmat[12] = 1.0f;
cbufid = 13; cbufid = 13;
case 11: // Z16 (reverse order) case 11: // Z16 (reverse order)
colmat[0] = colmat[4] = colmat[8] = colmat[13] = 1.0f; colmat[0] = colmat[4] = colmat[8] = colmat[13] = 1.0f;
cbufid = 14; cbufid = 14;
break; break;
case 6: // Z24X8 case 6: // Z24X8
colmat[0] = colmat[5] = colmat[10] = 1.0f; colmat[0] = colmat[5] = colmat[10] = 1.0f;
cbufid = 15; cbufid = 15;
break; break;
case 9: // Z8M case 9: // Z8M
colmat[1] = colmat[5] = colmat[9] = colmat[13] = 1.0f; colmat[1] = colmat[5] = colmat[9] = colmat[13] = 1.0f;
cbufid = 16; cbufid = 16;
break; break;
case 10: // Z8L case 10: // Z8L
colmat[2] = colmat[6] = colmat[10] = colmat[14] = 1.0f; colmat[2] = colmat[6] = colmat[10] = colmat[14] = 1.0f;
cbufid = 17; cbufid = 17;
break; break;
case 12: // Z16L case 12: // Z16L
colmat[2] = colmat[6] = colmat[10] = colmat[13] = 1.0f; colmat[2] = colmat[6] = colmat[10] = colmat[13] = 1.0f;
cbufid = 18; cbufid = 18;
break; break;
default: default:
ERROR_LOG(VIDEO, "Unknown copy zbuf format: 0x%x", copyfmt); ERROR_LOG(VIDEO, "Unknown copy zbuf format: 0x%x", copyfmt);
colmat[2] = colmat[5] = colmat[8] = 1.0f; colmat[2] = colmat[5] = colmat[8] = 1.0f;
cbufid = 19; cbufid = 19;
break; break;
} }
} }
else if (bIsIntensityFmt) else if (bIsIntensityFmt)
{ {
colmat[16] = colmat[17] = colmat[18] = 16.0f/255.0f; colmat[16] = colmat[17] = colmat[18] = 16.0f/255.0f;
switch (copyfmt) switch (copyfmt)
{ {
case 0: // I4 case 0: // I4
case 1: // I8 case 1: // I8
case 2: // IA4 case 2: // IA4
case 3: // IA8 case 3: // IA8
// TODO - verify these coefficients // TODO - verify these coefficients
colmat[0] = 0.257f; colmat[1] = 0.504f; colmat[2] = 0.098f; colmat[0] = 0.257f; colmat[1] = 0.504f; colmat[2] = 0.098f;
colmat[4] = 0.257f; colmat[5] = 0.504f; colmat[6] = 0.098f; colmat[4] = 0.257f; colmat[5] = 0.504f; colmat[6] = 0.098f;
colmat[8] = 0.257f; colmat[9] = 0.504f; colmat[10] = 0.098f; colmat[8] = 0.257f; colmat[9] = 0.504f; colmat[10] = 0.098f;
if (copyfmt < 2) if (copyfmt < 2)
{ {
colmat[19] = 16.0f / 255.0f; colmat[19] = 16.0f / 255.0f;
colmat[12] = 0.257f; colmat[13] = 0.504f; colmat[14] = 0.098f; colmat[12] = 0.257f; colmat[13] = 0.504f; colmat[14] = 0.098f;
cbufid = 0; cbufid = 0;
} }
else// alpha else// alpha
{ {
colmat[15] = 1; colmat[15] = 1;
cbufid = 1; cbufid = 1;
} }
break; break;
default: default:
ERROR_LOG(VIDEO, "Unknown copy intensity format: 0x%x", copyfmt); ERROR_LOG(VIDEO, "Unknown copy intensity format: 0x%x", copyfmt);
colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1; colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1;
break; break;
} }
} }
else else
{ {
switch (copyfmt) switch (copyfmt)
{ {
case 0: // R4 case 0: // R4
case 8: // R8 case 8: // R8
colmat[0] = colmat[4] = colmat[8] = colmat[12] = 1; colmat[0] = colmat[4] = colmat[8] = colmat[12] = 1;
cbufid = 2; cbufid = 2;
break; break;
case 2: // RA4 case 2: // RA4
case 3: // RA8 case 3: // RA8
colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1; colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1;
cbufid = 3; cbufid = 3;
break; break;
case 7: // A8 case 7: // A8
colmat[3] = colmat[7] = colmat[11] = colmat[15] = 1; colmat[3] = colmat[7] = colmat[11] = colmat[15] = 1;
cbufid = 4; cbufid = 4;
break; break;
case 9: // G8 case 9: // G8
colmat[1] = colmat[5] = colmat[9] = colmat[13] = 1; colmat[1] = colmat[5] = colmat[9] = colmat[13] = 1;
cbufid = 5; cbufid = 5;
break; break;
case 10: // B8 case 10: // B8
colmat[2] = colmat[6] = colmat[10] = colmat[14] = 1; colmat[2] = colmat[6] = colmat[10] = colmat[14] = 1;
cbufid = 6; cbufid = 6;
break; break;
case 11: // RG8 case 11: // RG8
colmat[0] = colmat[4] = colmat[8] = colmat[13] = 1; colmat[0] = colmat[4] = colmat[8] = colmat[13] = 1;
cbufid = 7; cbufid = 7;
break; break;
case 12: // GB8 case 12: // GB8
colmat[1] = colmat[5] = colmat[9] = colmat[14] = 1; colmat[1] = colmat[5] = colmat[9] = colmat[14] = 1;
cbufid = 8; cbufid = 8;
break; break;
case 4: // RGB565 case 4: // RGB565
colmat[0] = colmat[5] = colmat[10] = 1; colmat[0] = colmat[5] = colmat[10] = 1;
colmat[19] = 1; // set alpha to 1 colmat[19] = 1; // set alpha to 1
cbufid = 9; cbufid = 9;
break; break;
case 5: // RGB5A3 case 5: // RGB5A3
case 6: // RGBA8 case 6: // RGBA8
colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1; colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1;
cbufid = 10; cbufid = 10;
break; break;
default: default:
ERROR_LOG(VIDEO, "Unknown copy color format: 0x%x", copyfmt); ERROR_LOG(VIDEO, "Unknown copy color format: 0x%x", copyfmt);
colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1; colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1;
cbufid = 11; cbufid = 11;
break; break;
} }
} }
Renderer::ResetAPIState(); // reset any game specific settings Renderer::ResetAPIState(); // reset any game specific settings
// stretch picture with increased internal resolution // stretch picture with increased internal resolution
D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)Scaledtex_w, (float)Scaledtex_h); D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)Scaledtex_w, (float)Scaledtex_h);

View File

@ -354,6 +354,7 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
DEBUGGER_PAUSE_LOG_AT(NEXT_NEW_TEXTURE,true,{printf("A new texture (%d x %d) is loaded", width, height);}); DEBUGGER_PAUSE_LOG_AT(NEXT_NEW_TEXTURE,true,{printf("A new texture (%d x %d) is loaded", width, height);});
return &entry; return &entry;
} }
void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer, bool bIsIntensityFmt, u32 copyfmt, int bScaleByHalf, const EFBRectangle &source_rect) void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer, bool bIsIntensityFmt, u32 copyfmt, int bScaleByHalf, const EFBRectangle &source_rect)
{ {
int efb_w = source_rect.GetWidth(); int efb_w = source_rect.GetWidth();
@ -417,7 +418,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer, boo
{ {
case 0: // Z4 case 0: // Z4
case 1: // Z8 case 1: // Z8
colmat[0] = colmat[4] = colmat[8] = colmat[12] =1.0f; colmat[0] = colmat[4] = colmat[8] = colmat[12] = 1.0f;
break; break;
case 3: // Z16 //? case 3: // Z16 //?
colmat[1] = colmat[5] = colmat[9] = colmat[12] = 1.0f; colmat[1] = colmat[5] = colmat[9] = colmat[12] = 1.0f;

View File

@ -102,7 +102,7 @@ void AddIndices(int _primitive, int _numVertices)
int GetRemainingSize() int GetRemainingSize()
{ {
return MAXVBUFFERSIZE - (int)(s_pCurBufferPointer - LocalVBuffer); return MAXVBUFFERSIZE - (int)(s_pCurBufferPointer - LocalVBuffer);
} }
int GetRemainingVertices(int primitive) int GetRemainingVertices(int primitive)

View File

@ -36,7 +36,7 @@ BEGIN_EVENT_TABLE(GFXDebuggerOGL,wxDialog)
END_EVENT_TABLE() END_EVENT_TABLE()
GFXDebuggerOGL::GFXDebuggerOGL(wxWindow *parent, wxWindowID id, const wxString &title, GFXDebuggerOGL::GFXDebuggerOGL(wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &position, const wxSize& size, long style) const wxPoint &position, const wxSize& size, long style)
: wxDialog(parent, id, title, position, size, style) : wxDialog(parent, id, title, position, size, style)
{ {
CreateGUIControls(); CreateGUIControls();
@ -72,7 +72,7 @@ void GFXDebuggerOGL::SaveSettings() const
// weird values, perhaps because of some conflict with the rendering window // weird values, perhaps because of some conflict with the rendering window
// TODO: get the screen resolution and make limits from that // TODO: get the screen resolution and make limits from that
if (GetPosition().x < 1000 && GetPosition().y < 1000 if (GetPosition().x < 1000 && GetPosition().y < 1000
&& GetSize().GetWidth() < 1000 && GetSize().GetWidth() < 1000
&& GetSize().GetHeight() < 1000) && GetSize().GetHeight() < 1000)
{ {
file.Set("VideoWindow", "x", GetPosition().x); file.Set("VideoWindow", "x", GetPosition().x);
@ -137,7 +137,7 @@ void GFXDebuggerOGL::CreateGUIControls()
m_Check[4] = new wxCheckBox(m_MainPanel, ID_SAVETARGETS, wxT("Save Targets"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); m_Check[4] = new wxCheckBox(m_MainPanel, ID_SAVETARGETS, wxT("Save Targets"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
m_Check[5] = new wxCheckBox(m_MainPanel, ID_SAVESHADERS, wxT("Save Shaders"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); m_Check[5] = new wxCheckBox(m_MainPanel, ID_SAVESHADERS, wxT("Save Shaders"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
for (int i = 0; i < NUM_OPTIONS-ID_SAVETOFILE; ++i) for (int i = 0; i < NUM_OPTIONS-ID_SAVETOFILE; ++i)
sOptions->Add(m_Check[i], 0, 0, 5); sOptions->Add(m_Check[i], 0, 0, 5);
// Layout everything on m_MainPanel // Layout everything on m_MainPanel

View File

@ -147,6 +147,7 @@ HWND GetWnd()
{ {
return m_hWnd; return m_hWnd;
} }
HWND GetParentWnd() HWND GetParentWnd()
{ {
return m_hParent; return m_hParent;
@ -305,7 +306,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
} }
// This is called from Create() // This is called from Create()
HWND OpenWindow(HWND parent, HINSTANCE hInstance, int width, int height, const TCHAR *title) HWND OpenWindow(HWND parent, HINSTANCE hInstance, int width, int height, const TCHAR *title)
{ {

View File

@ -24,15 +24,15 @@
namespace EmuWindow namespace EmuWindow
{ {
extern int g_winstyle; extern int g_winstyle;
HWND GetWnd(); HWND GetWnd();
HWND GetParentWnd(); HWND GetParentWnd();
HWND Create(HWND hParent, HINSTANCE hInstance, const TCHAR *title); HWND Create(HWND hParent, HINSTANCE hInstance, const TCHAR *title);
void Show(); void Show();
void Close(); void Close();
void SetSize(int displayWidth, int displayHeight); void SetSize(int displayWidth, int displayHeight);
void ToggleDisplayMode (int bFullscreen); void ToggleDisplayMode(int bFullscreen);
} }
#endif // _WIN32_H_ #endif // _WIN32_H_

View File

@ -112,7 +112,7 @@ void AddIndices(int primitive, int numVertices)
case GX_DRAW_TRIANGLE_STRIP: IndexGenerator::AddStrip(numVertices); break; case GX_DRAW_TRIANGLE_STRIP: IndexGenerator::AddStrip(numVertices); break;
case GX_DRAW_TRIANGLE_FAN: IndexGenerator::AddFan(numVertices); break; case GX_DRAW_TRIANGLE_FAN: IndexGenerator::AddFan(numVertices); break;
case GX_DRAW_LINE_STRIP: IndexGenerator::AddLineStrip(numVertices); break; case GX_DRAW_LINE_STRIP: IndexGenerator::AddLineStrip(numVertices); break;
case GX_DRAW_LINES: IndexGenerator::AddLineList(numVertices);break; case GX_DRAW_LINES: IndexGenerator::AddLineList(numVertices);break;
case GX_DRAW_POINTS: IndexGenerator::AddPoints(numVertices); break; case GX_DRAW_POINTS: IndexGenerator::AddPoints(numVertices); break;
} }
} }
@ -182,17 +182,17 @@ inline void Draw()
{ {
if(IndexGenerator::GetNumTriangles() > 0) if(IndexGenerator::GetNumTriangles() > 0)
{ {
glDrawElements(GL_TRIANGLES, IndexGenerator::GetTriangleindexLen(), GL_UNSIGNED_SHORT,TIBuffer); glDrawElements(GL_TRIANGLES, IndexGenerator::GetTriangleindexLen(), GL_UNSIGNED_SHORT, TIBuffer);
INCSTAT(stats.thisFrame.numIndexedDrawCalls); INCSTAT(stats.thisFrame.numIndexedDrawCalls);
} }
if(IndexGenerator::GetNumLines() > 0) if(IndexGenerator::GetNumLines() > 0)
{ {
glDrawElements(GL_LINES, IndexGenerator::GetLineindexLen(), GL_UNSIGNED_SHORT,LIBuffer); glDrawElements(GL_LINES, IndexGenerator::GetLineindexLen(), GL_UNSIGNED_SHORT, LIBuffer);
INCSTAT(stats.thisFrame.numIndexedDrawCalls); INCSTAT(stats.thisFrame.numIndexedDrawCalls);
} }
if(IndexGenerator::GetNumPoints() > 0) if(IndexGenerator::GetNumPoints() > 0)
{ {
glDrawElements(GL_POINTS, IndexGenerator::GetPointindexLen(), GL_UNSIGNED_SHORT,PIBuffer); glDrawElements(GL_POINTS, IndexGenerator::GetPointindexLen(), GL_UNSIGNED_SHORT, PIBuffer);
INCSTAT(stats.thisFrame.numIndexedDrawCalls); INCSTAT(stats.thisFrame.numIndexedDrawCalls);
} }
} }
@ -309,7 +309,7 @@ void Flush()
VERTEXSHADER* vs = VertexShaderCache::GetShader(g_nativeVertexFmt->m_components); VERTEXSHADER* vs = VertexShaderCache::GetShader(g_nativeVertexFmt->m_components);
// set global constants // set global constants
VertexShaderManager::SetConstants(); VertexShaderManager::SetConstants();
PixelShaderManager::SetConstants(); PixelShaderManager::SetConstants();
// finally bind // finally bind
@ -319,12 +319,12 @@ void Flush()
Draw(); Draw();
// run through vertex groups again to set alpha // run through vertex groups again to set alpha
if (!g_ActiveConfig.bDstAlphaPass && bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate) if (!g_ActiveConfig.bDstAlphaPass && bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate)
{ {
ps = PixelShaderCache::GetShader(true); ps = PixelShaderCache::GetShader(true);
if (ps)PixelShaderCache::SetCurrentShader(ps->glprogid); if (ps)PixelShaderCache::SetCurrentShader(ps->glprogid);
// only update alpha // only update alpha
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
@ -337,7 +337,7 @@ void Flush()
if (bpmem.blendmode.blendenable || bpmem.blendmode.subtract) if (bpmem.blendmode.blendenable || bpmem.blendmode.subtract)
glEnable(GL_BLEND); glEnable(GL_BLEND);
} }
s_nCurVBOIndex = (s_nCurVBOIndex + 1) % ARRAYSIZE(s_vboBuffers); s_nCurVBOIndex = (s_nCurVBOIndex + 1) % ARRAYSIZE(s_vboBuffers);
s_pCurBufferPointer = LocalVBuffer; s_pCurBufferPointer = LocalVBuffer;
IndexGenerator::Start(TIBuffer,LIBuffer,PIBuffer); IndexGenerator::Start(TIBuffer,LIBuffer,PIBuffer);
@ -366,7 +366,6 @@ void Flush()
GL_REPORT_ERRORD(); GL_REPORT_ERRORD();
} }
} // namespace } // namespace

View File

@ -129,7 +129,7 @@ void GetDllInfo (PLUGIN_INFO* _PluginInfo)
void SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals) void SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals)
{ {
globals = _pPluginGlobals; globals = _pPluginGlobals;
LogManager::SetInstance((LogManager *)globals->logManager); LogManager::SetInstance((LogManager*)globals->logManager);
} }
// This is used for the functions right below here which use wxwidgets // This is used for the functions right below here which use wxwidgets
@ -211,7 +211,7 @@ void Initialize(void *init)
g_Config.UpdateProjectionHack(); g_Config.UpdateProjectionHack();
#if defined(HAVE_WX) && HAVE_WX #if defined(HAVE_WX) && HAVE_WX
//Enable support for PNG screenshots. // Enable support for PNG screenshots.
wxImage::AddHandler( new wxPNGHandler ); wxImage::AddHandler( new wxPNGHandler );
#endif #endif
UpdateActiveConfig(); UpdateActiveConfig();
@ -231,10 +231,11 @@ void Initialize(void *init)
_pVideoInitialize->pXWindow = g_VideoInitialize.pXWindow; _pVideoInitialize->pXWindow = g_VideoInitialize.pXWindow;
#endif #endif
OSD::AddMessage("Dolphin OpenGL Video Plugin" ,5000); OSD::AddMessage("Dolphin OpenGL Video Plugin", 5000);
} }
void DoState(unsigned char **ptr, int mode) { void DoState(unsigned char **ptr, int mode)
{
#if defined(HAVE_X11) && HAVE_X11 #if defined(HAVE_X11) && HAVE_X11
OpenGL_MakeCurrent(); OpenGL_MakeCurrent();
#endif #endif
@ -351,7 +352,8 @@ void Video_AddMessage(const char* pstr, u32 milliseconds)
OSD::AddMessage(pstr, milliseconds); OSD::AddMessage(pstr, milliseconds);
} }
void Video_SetRendering(bool bEnabled) { void Video_SetRendering(bool bEnabled)
{
Fifo_SetRendering(bEnabled); Fifo_SetRendering(bEnabled);
} }