D3D scissoring, skip texture stages and some warning fixes.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2616 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
XTra.KrazzY 2009-03-08 18:45:39 +00:00
parent feb670044e
commit c7a45ecf95
3 changed files with 14 additions and 9 deletions

View file

@ -339,8 +339,14 @@ void Renderer::SetViewport(float* _Viewport)
void Renderer::SetScissorRect() void Renderer::SetScissorRect()
{ {
/* int xoff = bpmem.scissorOffset.x * 2 - 342;
RECT rc = {0,0,0,0}; // FIXX int yoff = bpmem.scissorOffset.y * 2 - 342;
RECT rc;
rc.left = (int)((float)bpmem.scissorTL.x - xoff - 342);
rc.top = (int)((float)bpmem.scissorTL.y - yoff - 342);
rc.right = (int)((float)bpmem.scissorBR.x - xoff - 341);
rc.bottom = (int)((float)bpmem.scissorBR.y - yoff - 341);
rc.left = (int)(rc.left * xScale); rc.left = (int)(rc.left * xScale);
rc.top = (int)(rc.top * yScale); rc.top = (int)(rc.top * yScale);
rc.right = (int)(rc.right * xScale); rc.right = (int)(rc.right * xScale);
@ -348,7 +354,7 @@ void Renderer::SetScissorRect()
if (rc.right >= rc.left && rc.bottom >= rc.top) if (rc.right >= rc.left && rc.bottom >= rc.top)
D3D::dev->SetScissorRect(&rc); D3D::dev->SetScissorRect(&rc);
else else
g_VideoInitialize.pLog("SCISSOR ERROR", FALSE);*/ g_VideoInitialize.pLog("SCISSOR ERROR", FALSE);
} }
/* /*
@ -456,6 +462,7 @@ void Renderer::SetSamplerState(DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Va
} }
} }
// Called from VertexShaderManager // Called from VertexShaderManager
void UpdateViewport() void UpdateViewport()
{ {

View file

@ -199,8 +199,7 @@ void Flush()
u32 nonpow2tex = 0; u32 nonpow2tex = 0;
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
// if (usedtextures & (1 << i)) { if (usedtextures & (1 << i)) {
{
FourTexUnits &tex = bpmem.tex[i >> 2]; FourTexUnits &tex = bpmem.tex[i >> 2];
TextureCache::TCacheEntry* tentry = TextureCache::Load(i, TextureCache::TCacheEntry* tentry = TextureCache::Load(i,
(tex.texImage3[i&3].image_base/* & 0x1FFFFF*/) << 5, (tex.texImage3[i&3].image_base/* & 0x1FFFFF*/) << 5,
@ -235,11 +234,11 @@ void Flush()
{ {
PixelShaderCache::SetShader(); // TODO(ector): only do this if shader has changed PixelShaderCache::SetShader(); // TODO(ector): only do this if shader has changed
VertexShaderCache::SetShader(g_nativeVertexFmt->m_components); // TODO(ector): only do this if shader has changed VertexShaderCache::SetShader(g_nativeVertexFmt->m_components); // TODO(ector): only do this if shader has changed
// set global constants // set global constants
VertexShaderManager::SetConstants(false); VertexShaderManager::SetConstants(false);
PixelShaderManager::SetConstants(); PixelShaderManager::SetConstants();
int stride = g_nativeVertexFmt->GetVertexStride(); int stride = g_nativeVertexFmt->GetVertexStride();
g_nativeVertexFmt->SetupVertexPointers(); g_nativeVertexFmt->SetupVertexPointers();
if (collection != C_POINTS) if (collection != C_POINTS)

View file

@ -44,7 +44,6 @@ void SetVSConstant4fv(int const_number, const float *f)
D3D::dev->SetVertexShaderConstantF(const_number, f, 1); D3D::dev->SetVertexShaderConstantF(const_number, f, 1);
} }
void VertexShaderCache::Init() void VertexShaderCache::Init()
{ {
@ -88,7 +87,7 @@ void VertexShaderCache::SetShader(u32 components)
bool HLSL = false; bool HLSL = false;
const char *code = GenerateVertexShader(components, false); const char *code = GenerateVertexShader(components, false);
LPDIRECT3DVERTEXSHADER9 shader = HLSL ? D3D::CompileVertexShader(code, strlen(code), false) : CompileCgShader(code); LPDIRECT3DVERTEXSHADER9 shader = HLSL ? D3D::CompileVertexShader(code, (int)strlen(code), false) : CompileCgShader(code);
if (shader) if (shader)
{ {
// Make an entry in the table // Make an entry in the table