mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
Warning fixes/suppressions(aui), assorted code cleanup, d3d vertex shader cache expiration interval increased.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4165 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
dd7eba0bb9
commit
e97bc516e6
16
Externals/wxWidgets/build/msw/wx_aui.vcproj
vendored
16
Externals/wxWidgets/build/msw/wx_aui.vcproj
vendored
@ -58,7 +58,7 @@
|
||||
AssemblerListingLocation="$(IntDir)\"
|
||||
ObjectFile="$(IntDir)\"
|
||||
ProgramDataBaseFileName="$(IntDir)\wxmsw28d_aui.pdb"
|
||||
WarningLevel="4"
|
||||
WarningLevel="1"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@ -136,7 +136,7 @@
|
||||
AssemblerListingLocation="$(IntDir)\"
|
||||
ObjectFile="$(IntDir)\"
|
||||
ProgramDataBaseFileName="$(IntDir)\wxmsw28d_aui.pdb"
|
||||
WarningLevel="4"
|
||||
WarningLevel="1"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@ -215,7 +215,7 @@
|
||||
AssemblerListingLocation="$(IntDir)\"
|
||||
ObjectFile="$(IntDir)\"
|
||||
ProgramDataBaseFileName="$(IntDir)\wxmsw28_aui.pdb"
|
||||
WarningLevel="4"
|
||||
WarningLevel="1"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
@ -294,7 +294,7 @@
|
||||
AssemblerListingLocation="$(IntDir)\"
|
||||
ObjectFile="$(IntDir)\"
|
||||
ProgramDataBaseFileName="$(IntDir)\wxmsw28_aui.pdb"
|
||||
WarningLevel="4"
|
||||
WarningLevel="1"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
@ -429,6 +429,10 @@
|
||||
<Filter
|
||||
Name="Setup Headers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\univ\setup.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\msw\setup.h"
|
||||
>
|
||||
@ -473,10 +477,6 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\univ\setup.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="MSW Headers"
|
||||
|
@ -309,7 +309,7 @@ bool CEXIETHERNET::sendPacket(u8 *etherpckt, int size)
|
||||
|
||||
bool CEXIETHERNET::handleRecvdPacket()
|
||||
{
|
||||
int rbwpp = mCbw.p_write() + CB_OFFSET; //read buffer write page pointer
|
||||
int rbwpp = (int)(mCbw.p_write() + CB_OFFSET); // read buffer write page pointer
|
||||
u32 available_bytes_in_cb;
|
||||
if (rbwpp < mRBRPP)
|
||||
available_bytes_in_cb = mRBRPP - rbwpp;
|
||||
@ -328,7 +328,7 @@ bool CEXIETHERNET::handleRecvdPacket()
|
||||
cbwriteDescriptor(mRecvBufferLength);
|
||||
mCbw.write(mRecvBuffer, mRecvBufferLength);
|
||||
mCbw.align();
|
||||
rbwpp = mCbw.p_write() + CB_OFFSET;
|
||||
rbwpp = (int)(mCbw.p_write() + CB_OFFSET);
|
||||
//DUMPWORD(rbwpp);
|
||||
|
||||
//mPacketsRcvd++;
|
||||
@ -384,7 +384,7 @@ bool CEXIETHERNET::startRecv()
|
||||
return true;
|
||||
}
|
||||
|
||||
DWORD res = ReadFile(mHAdapter, mRecvBuffer, mRecvBuffer.size(),
|
||||
DWORD res = ReadFile(mHAdapter, mRecvBuffer, (DWORD)mRecvBuffer.size(),
|
||||
&mRecvBufferLength, &mReadOverlapped);
|
||||
|
||||
if (res)
|
||||
@ -471,11 +471,11 @@ bool CEXIETHERNET::cbwriteDescriptor(u32 size)
|
||||
u32 npp;
|
||||
if (mCbw.p_write() + size < CB_SIZE)
|
||||
{
|
||||
npp = mCbw.p_write() + size + CB_OFFSET;
|
||||
npp = (u32)(mCbw.p_write() + size + CB_OFFSET);
|
||||
}
|
||||
else
|
||||
{
|
||||
npp = mCbw.p_write() + size + CB_OFFSET - CB_SIZE;
|
||||
npp = (u32)(mCbw.p_write() + size + CB_OFFSET - CB_SIZE);
|
||||
}
|
||||
|
||||
npp = (npp + 0xff) & ~0xff;
|
||||
|
@ -296,7 +296,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command, u32 _BufferIn,
|
||||
u32 TYPE = Memory::Read_U32(_BufferIn + 0x04);
|
||||
u32 PROT = Memory::Read_U32(_BufferIn + 0x04 * 2);
|
||||
u32 Unk1 = Memory::Read_U32(_BufferIn + 0x04 * 3);
|
||||
u32 Socket = socket(AF, TYPE, PROT);
|
||||
u32 Socket = (u32)socket(AF, TYPE, PROT);
|
||||
return Common::swap32(Socket); // So it doesn't get mangled later on
|
||||
}
|
||||
break;
|
||||
@ -322,13 +322,13 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command, u32 _BufferIn,
|
||||
return Return;
|
||||
}
|
||||
break;
|
||||
case IOCTL_SO_ACCEPT:
|
||||
case IOCTL_SO_ACCEPT:
|
||||
{
|
||||
//TODO: (Sonic)Check if this is correct
|
||||
u32 S = Memory::Read_U32(_BufferIn);
|
||||
socklen_t addrlen;
|
||||
struct sockaddr_in address;
|
||||
int Return = accept(S, (struct sockaddr *)&address, &addrlen);
|
||||
u32 Return = (u32)accept(S, (struct sockaddr *)&address, &addrlen);
|
||||
GC_sockaddr_in *addr = (GC_sockaddr_in*)Memory::GetPointer(BufferOut);
|
||||
addr->sin_family = (u8)address.sin_family;
|
||||
addr->sin_addr.s_addr_ = address.sin_addr.s_addr;
|
||||
|
@ -370,21 +370,23 @@ void CFrame::OnAllowNotebookDnD(wxAuiNotebookEvent& event)
|
||||
void CFrame::HidePane()
|
||||
{
|
||||
// Get the first notebook
|
||||
wxAuiNotebook * NB;
|
||||
wxAuiNotebook * NB = NULL;
|
||||
for (u32 i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
|
||||
{
|
||||
if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
|
||||
NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
|
||||
}
|
||||
if (NB->GetPageCount() == 0)
|
||||
m_Mgr->GetPane(wxT("Pane 1")).Hide();
|
||||
else
|
||||
m_Mgr->GetPane(wxT("Pane 1")).Show();
|
||||
m_Mgr->Update();
|
||||
|
||||
if (NB) {
|
||||
if (NB->GetPageCount() == 0)
|
||||
m_Mgr->GetPane(wxT("Pane 1")).Hide();
|
||||
else
|
||||
m_Mgr->GetPane(wxT("Pane 1")).Show();
|
||||
m_Mgr->Update();
|
||||
}
|
||||
SetSimplePaneSize();
|
||||
}
|
||||
void CFrame::DoRemovePageString(wxString Str, bool _hide, bool _destroy)
|
||||
|
||||
void CFrame::DoRemovePageString(wxString Str, bool /*_hide*/, bool _destroy)
|
||||
{
|
||||
for (u32 i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
|
||||
{
|
||||
@ -673,7 +675,7 @@ void CFrame::OnDropDownToolbarSelect(wxCommandEvent& event)
|
||||
void CFrame::ResetToolbarStyle()
|
||||
{
|
||||
wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
|
||||
for (int i = 0, Count = AllPanes.GetCount(); i < Count; ++i)
|
||||
for (int i = 0, Count = (int)AllPanes.GetCount(); i < Count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& Pane = AllPanes.Item(i);
|
||||
if (Pane.window->IsKindOf(CLASSINFO(wxAuiToolBar)))
|
||||
@ -726,7 +728,7 @@ void CFrame::TogglePaneStyle(bool On, int EventId)
|
||||
void CFrame::ToggleNotebookStyle(long Style)
|
||||
{
|
||||
wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
|
||||
for (int i = 0, Count = AllPanes.GetCount(); i < Count; ++i)
|
||||
for (int i = 0, Count = (int)AllPanes.GetCount(); i < Count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& Pane = AllPanes.Item(i);
|
||||
if (Pane.window->IsKindOf(CLASSINFO(wxAuiNotebook)))
|
||||
|
@ -224,7 +224,7 @@ void BPWritten(const BPCmd& bp)
|
||||
float xfbLines = ((bpmem.copyTexSrcWH.y + 1.0f) * yScale);
|
||||
if ((u32)xfbLines > MAX_XFB_HEIGHT)
|
||||
{
|
||||
WARN_LOG(VIDEO, "Tried to scale EFB to too many XFB lines (%f)", xfbLines);
|
||||
INFO_LOG(VIDEO, "Tried to scale EFB to too many XFB lines (%f)", xfbLines);
|
||||
xfbLines = MAX_XFB_HEIGHT;
|
||||
}
|
||||
|
||||
@ -460,6 +460,7 @@ void BPWritten(const BPCmd& bp)
|
||||
case BPMEM_TX_SETMODE0+1:
|
||||
case BPMEM_TX_SETMODE0+2:
|
||||
case BPMEM_TX_SETMODE0+3:
|
||||
SetSamplerState(bp);
|
||||
case BPMEM_TX_SETMODE1:
|
||||
case BPMEM_TX_SETMODE1+1:
|
||||
case BPMEM_TX_SETMODE1+2:
|
||||
@ -472,7 +473,6 @@ void BPWritten(const BPCmd& bp)
|
||||
case BPMEM_TX_SETMODE1_4+1:
|
||||
case BPMEM_TX_SETMODE1_4+2:
|
||||
case BPMEM_TX_SETMODE1_4+3:
|
||||
SetSamplerState(bp);
|
||||
break;
|
||||
// --------------------------------------------
|
||||
// BPMEM_TX_SETIMAGE0 - Texture width, height, format
|
||||
|
@ -322,7 +322,7 @@ inline u32 makecol(int r, int g, int b, int a)
|
||||
|
||||
void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch)
|
||||
{
|
||||
// S3TC Decoder (Note: GCN decodes differently from PC)
|
||||
// S3TC Decoder (Note: GCN decodes differently from PC so we can't use native support)
|
||||
u16 c1 = Common::swap16(src->color1);
|
||||
u16 c2 = Common::swap16(src->color2);
|
||||
u8 blue1 = Convert5To8(c1 & 0x1F);
|
||||
@ -331,9 +331,7 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch)
|
||||
u8 green2 = Convert6To8((c2 >> 5) & 0x3F);
|
||||
u8 red1 = Convert5To8((c1 >> 11) & 0x1F);
|
||||
u8 red2 = Convert5To8((c2 >> 11) & 0x1F);
|
||||
|
||||
int colors[4];
|
||||
|
||||
if (c1 > c2)
|
||||
{
|
||||
colors[0] = makecol(red1, green1, blue1, 255);
|
||||
@ -457,10 +455,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh
|
||||
for (int y = 0; y < height; y += 4)
|
||||
for (int x = 0; x < width; x += 8)
|
||||
for (int iy = 0; iy < 4; iy++, src += 8)
|
||||
{
|
||||
//decodebytesIA4((u32*)dst+(y+iy)*width+x, src, 8);
|
||||
decodebytesIA4((u16*)dst + (y + iy) * width + x, src);
|
||||
}
|
||||
}
|
||||
return PC_TEX_FMT_IA4_AS_IA8;
|
||||
case GX_TF_IA8:
|
||||
|
@ -111,7 +111,7 @@ void CMailHandler::DoState(PointerWrap &p)
|
||||
else // WRITE and MEASURE
|
||||
{
|
||||
std::queue<u32> temp;
|
||||
int sz = m_Mails.size();
|
||||
int sz = (int)m_Mails.size();
|
||||
p.Do(sz);
|
||||
for (int i = 0; i < sz; i++)
|
||||
{
|
||||
|
@ -127,30 +127,24 @@ void SetScissor(const BPCmd &bp)
|
||||
{
|
||||
Renderer::SetScissorRect();
|
||||
}
|
||||
|
||||
void SetLineWidth(const BPCmd &bp)
|
||||
{
|
||||
// We can't change line width in D3D unless we use ID3DXLine
|
||||
float psize = float(bpmem.lineptwidth.pointsize) * 6.0f;
|
||||
Renderer::SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&psize));
|
||||
}
|
||||
|
||||
void SetDepthMode(const BPCmd &bp)
|
||||
{
|
||||
if (bpmem.zmode.testenable)
|
||||
{
|
||||
// dev->SetRenderState(D3DRS_ZENABLE, TRUE);
|
||||
// dev->SetRenderState(D3DRS_ZWRITEENABLE, bpmem.zmode.updateenable);
|
||||
// dev->SetRenderState(D3DRS_ZFUNC,d3dCmpFuncs[bpmem.zmode.func]);
|
||||
|
||||
Renderer::SetRenderState(D3DRS_ZENABLE, TRUE);
|
||||
Renderer::SetRenderState(D3DRS_ZWRITEENABLE, bpmem.zmode.updateenable);
|
||||
Renderer::SetRenderState(D3DRS_ZFUNC, d3dCmpFuncs[bpmem.zmode.func]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// if the test is disabled write is disabled too
|
||||
// dev->SetRenderState(D3DRS_ZENABLE, FALSE);
|
||||
// dev->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
|
||||
|
||||
Renderer::SetRenderState(D3DRS_ZENABLE, FALSE);
|
||||
Renderer::SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
|
||||
}
|
||||
@ -193,7 +187,8 @@ void SetBlendMode(const BPCmd &bp)
|
||||
Renderer::SetRenderState(D3DRS_DESTBLEND, dst);
|
||||
}
|
||||
|
||||
Renderer::SetRenderState(D3DRS_BLENDOP, bpmem.blendmode.subtract ? D3DBLENDOP_SUBTRACT : D3DBLENDOP_ADD);
|
||||
Renderer::SetRenderState(D3DRS_BLENDOP,
|
||||
bpmem.blendmode.subtract ? D3DBLENDOP_SUBTRACT : D3DBLENDOP_ADD);
|
||||
}
|
||||
}
|
||||
void SetDitherMode(const BPCmd &bp)
|
||||
@ -218,9 +213,8 @@ void SetColorMask(const BPCmd &bp)
|
||||
void CopyEFB(const BPCmd &bp, const EFBRectangle &rc, const u32 &address, const bool &fromZBuffer, const bool &isIntensityFmt, const u32 ©fmt, const bool &scaleByHalf)
|
||||
{
|
||||
// TODO: Scale EFBRectangle correctly
|
||||
|
||||
RECT rec = { rc.left, rc.top, rc.right, rc.bottom };
|
||||
TextureCache::CopyEFBToRenderTarget(bpmem.copyTexDest<<5, &rec);
|
||||
TextureCache::CopyEFBToRenderTarget(bpmem.copyTexDest << 5, &rec);
|
||||
}
|
||||
|
||||
void RenderToXFB(const BPCmd &bp, const EFBRectangle &rc, const float &yScale, const float &xfbLines, u32 xfbAddr, const u32 &dstWidth, const u32 &dstHeight)
|
||||
@ -229,6 +223,7 @@ void RenderToXFB(const BPCmd &bp, const EFBRectangle &rc, const float &yScale, c
|
||||
PRIM_LOG("Renderer::SwapBuffers()");
|
||||
g_VideoInitialize.pCopiedToXFB(false);
|
||||
}
|
||||
|
||||
void ClearScreen(const BPCmd &bp, const EFBRectangle &rc)
|
||||
{
|
||||
// TODO: Scale EFBRectangle correctly
|
||||
@ -248,7 +243,7 @@ void ClearScreen(const BPCmd &bp, const EFBRectangle &rc)
|
||||
{
|
||||
if (bpmem.blendmode.colorupdate || bpmem.blendmode.alphaupdate)
|
||||
col = (bpmem.clearcolorAR << 16) | bpmem.clearcolorGB;
|
||||
// clearflags |= D3DCLEAR_TARGET; set to break animal crossing :p
|
||||
clearflags |= D3DCLEAR_TARGET; // set to break animal crossing :p ??
|
||||
}
|
||||
|
||||
// clear z-buffer
|
||||
@ -283,10 +278,12 @@ bool GetConfig(const int &type)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
u8 *GetPointer(const u32 &address)
|
||||
{
|
||||
return g_VideoInitialize.pGetMemoryPointer(address);
|
||||
}
|
||||
|
||||
void SetSamplerState(const BPCmd &bp)
|
||||
{
|
||||
FourTexUnits &tex = bpmem.tex[(bp.address & 0xE0) == 0xA0];
|
||||
|
@ -197,7 +197,8 @@ namespace D3D
|
||||
|
||||
void SaveRenderStates()
|
||||
{
|
||||
for (int i = 0; i < 6; i++) {
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
dev->GetRenderState((_D3DRENDERSTATETYPE)RS[i][0], &(RS_old[i]));
|
||||
dev->GetTextureStageState(0, (_D3DTEXTURESTAGESTATETYPE)int(TS[i][0]), &(TS_old[i]));
|
||||
}
|
||||
@ -215,10 +216,8 @@ namespace D3D
|
||||
|
||||
dev->SetPixelShader(0);
|
||||
dev->SetVertexShader(0);
|
||||
dev->SetVertexDeclaration(0);
|
||||
|
||||
// dev->SetFVF(D3DFVF_FONT2DVERTEX);
|
||||
Renderer::SetFVF(D3DFVF_FONT2DVERTEX);
|
||||
dev->SetFVF(D3DFVF_FONT2DVERTEX);
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
// dev->SetRenderState((_D3DRENDERSTATETYPE)RS[i][0],RS[i][1]);
|
||||
@ -236,10 +235,8 @@ namespace D3D
|
||||
|
||||
dev->SetPixelShader(ps_old);
|
||||
dev->SetVertexShader(vs_old);
|
||||
dev->SetVertexDeclaration(decl_old);
|
||||
|
||||
// dev->SetFVF(FVF_old);
|
||||
Renderer::SetFVF(FVF_old);
|
||||
dev->SetFVF(FVF_old);
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
@ -384,7 +381,7 @@ namespace D3D
|
||||
dev->SetVertexShader(0);
|
||||
dev->SetVertexDeclaration(0);
|
||||
|
||||
Renderer::SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
|
||||
dev->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
|
||||
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, coords, sizeof(Q2DVertex));
|
||||
|
||||
RestoreRenderStates();
|
||||
|
@ -98,7 +98,6 @@ void PixelShaderCache::SetShader(bool dstAlpha)
|
||||
PixelShaders[uid] = newentry;
|
||||
last_entry = &PixelShaders[uid];
|
||||
|
||||
Renderer::SetFVF(NULL);
|
||||
D3D::dev->SetPixelShader(shader);
|
||||
last_shader = shader;
|
||||
|
||||
@ -119,7 +118,7 @@ void PixelShaderCache::Cleanup()
|
||||
while (iter != PixelShaders.end())
|
||||
{
|
||||
PSCacheEntry &entry = iter->second;
|
||||
if (entry.frameCount < frameCount - 400)
|
||||
if (entry.frameCount < frameCount - 1400)
|
||||
{
|
||||
entry.Destroy();
|
||||
iter = PixelShaders.erase(iter);
|
||||
|
@ -56,7 +56,6 @@ std::vector<LPDIRECT3DBASETEXTURE9> Renderer::m_Textures;
|
||||
DWORD Renderer::m_RenderStates[MaxRenderStates+46];
|
||||
DWORD Renderer::m_TextureStageStates[MaxTextureStages][MaxTextureTypes];
|
||||
DWORD Renderer::m_SamplerStates[MaxSamplerSize][MaxSamplerTypes];
|
||||
DWORD Renderer::m_FVF;
|
||||
|
||||
bool Renderer::m_LastFrameDumped;
|
||||
bool Renderer::m_AVIDumping;
|
||||
@ -116,7 +115,6 @@ void Renderer::Shutdown()
|
||||
|
||||
void Renderer::Initialize()
|
||||
{
|
||||
m_FVF = 0;
|
||||
m_Textures.reserve(MaxTextureStages);
|
||||
for (int i = 0; i < MaxTextureStages; i++)
|
||||
m_Textures.push_back(NULL);
|
||||
@ -360,12 +358,17 @@ void Renderer::SwapBuffers()
|
||||
D3D::dev->SetScissorRect(&rc);
|
||||
D3D::dev->SetRenderState(D3DRS_SCISSORTESTENABLE, false);
|
||||
|
||||
D3D::dev->Clear(0, 0, D3DCLEAR_TARGET, 0x101010, 0, 0);
|
||||
// We probably shouldn't clear here.
|
||||
D3D::dev->Clear(0, 0, D3DCLEAR_TARGET, 0x00000000, 0, 0);
|
||||
|
||||
u32 clearColor = (bpmem.clearcolorAR << 16) | bpmem.clearcolorGB;
|
||||
// clearColor |= 0x003F003F;
|
||||
// D3D::BeginFrame(true,clearColor,1.0f);
|
||||
D3D::BeginFrame(false, clearColor, 1.0f);
|
||||
D3D::EnableAlphaToCoverage();
|
||||
|
||||
// This probably causes problems, and the visual difference is tiny anyway.
|
||||
// So let's keep it commented out.
|
||||
// D3D::EnableAlphaToCoverage();
|
||||
|
||||
Postprocess::BeginFrame();
|
||||
VertexManager::BeginFrame();
|
||||
@ -502,15 +505,6 @@ void Renderer::SetTexture(DWORD Stage, LPDIRECT3DBASETEXTURE9 pTexture)
|
||||
}
|
||||
}
|
||||
|
||||
void Renderer::SetFVF(DWORD FVF)
|
||||
{
|
||||
if (m_FVF != FVF)
|
||||
{
|
||||
m_FVF = FVF;
|
||||
D3D::dev->SetFVF(FVF);
|
||||
}
|
||||
}
|
||||
|
||||
void Renderer::SetRenderState(D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
if (m_RenderStates[State] != Value)
|
||||
|
@ -51,7 +51,6 @@ class Renderer
|
||||
static DWORD m_RenderStates[MaxRenderStates+46];
|
||||
static DWORD m_TextureStageStates[MaxTextureStages][MaxTextureTypes];
|
||||
static DWORD m_SamplerStates[MaxSamplerSize][MaxSamplerTypes];
|
||||
static DWORD m_FVF;
|
||||
|
||||
public:
|
||||
static void Init(SVideoInitialize &_VideoInitialize);
|
||||
@ -79,7 +78,6 @@ public:
|
||||
|
||||
// The following are "filtered" versions of the corresponding D3Ddev-> functions.
|
||||
static void SetTexture(DWORD Stage, IDirect3DBaseTexture9 *pTexture);
|
||||
static void SetFVF(DWORD FVF);
|
||||
static void SetRenderState(D3DRENDERSTATETYPE State, DWORD Value);
|
||||
static void SetTextureStageState(DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value);
|
||||
static void SetSamplerState(DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value);
|
||||
|
@ -105,8 +105,8 @@ void TextureCache::Cleanup()
|
||||
|
||||
TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width, int height, int format, int tlutaddr, int tlutfmt)
|
||||
{
|
||||
|
||||
if (address == 0) return NULL;
|
||||
if (address == 0)
|
||||
return NULL;
|
||||
|
||||
TexCache::iterator iter = textures.find(address);
|
||||
|
||||
@ -185,7 +185,7 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
|
||||
d3d_fmt = D3DFMT_R5G6B5;
|
||||
break;
|
||||
case PC_TEX_FMT_IA4_AS_IA8:
|
||||
d3d_fmt = D3DFMT_A8L8; //D3DFMT_A4L4;
|
||||
d3d_fmt = D3DFMT_A8L8;
|
||||
break;
|
||||
case PC_TEX_FMT_I8:
|
||||
case PC_TEX_FMT_I4_AS_I8:
|
||||
@ -262,24 +262,25 @@ void TextureCache::CopyEFBToRenderTarget(u32 address, RECT *source)
|
||||
{
|
||||
if (!iter->second.isRenderTarget)
|
||||
{
|
||||
g_VideoInitialize.pLog("Using non-rendertarget texture as render target!!! WTF?", FALSE);
|
||||
ERROR_LOG(VIDEO, "Using non-rendertarget texture as render target!!! WTF?", FALSE);
|
||||
//TODO: remove it and recreate it as a render target
|
||||
}
|
||||
tex = iter->second.texture;
|
||||
iter->second.frameCount=frameCount;
|
||||
iter->second.frameCount = frameCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
TCacheEntry entry;
|
||||
entry.isRenderTarget=true;
|
||||
entry.isRenderTarget = true;
|
||||
entry.hash = 0;
|
||||
entry.hashoffset = 0;
|
||||
entry.frameCount = frameCount;
|
||||
// TODO(ector): infer this size in some sensible way
|
||||
D3D::dev->CreateTexture(512,512,1,D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &entry.texture, 0);
|
||||
D3D::dev->CreateTexture(512, 512, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &entry.texture, 0);
|
||||
textures[address] = entry;
|
||||
tex = entry.texture;
|
||||
}
|
||||
|
||||
LPDIRECT3DSURFACE9 srcSurface,destSurface;
|
||||
tex->GetSurfaceLevel(0,&destSurface);
|
||||
srcSurface = D3D::GetBackBufferSurface();
|
||||
|
@ -110,8 +110,7 @@ void VertexShaderCache::SetShader(u32 components)
|
||||
PanicAlert("Failed to compile Vertex Shader:\n\n%s", code);
|
||||
}
|
||||
|
||||
Renderer::SetFVF(NULL);
|
||||
//D3D::dev->SetVertexShader(shader);
|
||||
D3D::dev->SetFVF(NULL);
|
||||
}
|
||||
|
||||
void VertexShaderCache::Cleanup()
|
||||
@ -119,7 +118,7 @@ void VertexShaderCache::Cleanup()
|
||||
for (VSCache::iterator iter = vshaders.begin(); iter != vshaders.end();)
|
||||
{
|
||||
VSCacheEntry &entry = iter->second;
|
||||
if (entry.frameCount < frameCount - 30)
|
||||
if (entry.frameCount < frameCount - 1400)
|
||||
{
|
||||
entry.Destroy();
|
||||
iter = vshaders.erase(iter);
|
||||
|
@ -166,16 +166,20 @@ bool GetConfig(const int &type)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
u8 *GetPointer(const u32 &address)
|
||||
{
|
||||
return g_VideoInitialize.pGetMemoryPointer(address);
|
||||
}
|
||||
|
||||
void SetSamplerState(const BPCmd &bp)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void SetInterlacingMode(const BPCmd &bp)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user