mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-11 00:29:11 +01:00
Fail initializing if the D3D11 runtime is installed but no at least D3D 10.0 capable video card is used.
Remove some superfluous checks in the shader caches. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5702 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
76a2172cee
commit
0ec6a91477
@ -38,6 +38,13 @@ D3D_FEATURE_LEVEL featlevel;
|
|||||||
D3DTexture2D* backbuf = NULL;
|
D3DTexture2D* backbuf = NULL;
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
|
|
||||||
|
#define NUM_SUPPORTED_FEATURE_LEVELS 3
|
||||||
|
const D3D_FEATURE_LEVEL supported_feature_levels[NUM_SUPPORTED_FEATURE_LEVELS] = {
|
||||||
|
D3D_FEATURE_LEVEL_11_0,
|
||||||
|
D3D_FEATURE_LEVEL_10_1,
|
||||||
|
D3D_FEATURE_LEVEL_10_0
|
||||||
|
};
|
||||||
|
|
||||||
unsigned int xres, yres;
|
unsigned int xres, yres;
|
||||||
|
|
||||||
bool bFrameInProgress = false;
|
bool bFrameInProgress = false;
|
||||||
@ -327,10 +334,13 @@ HRESULT Create(HWND wnd)
|
|||||||
#else
|
#else
|
||||||
D3D11_CREATE_DEVICE_FLAG device_flags = D3D11_CREATE_DEVICE_SINGLETHREADED;
|
D3D11_CREATE_DEVICE_FLAG device_flags = D3D11_CREATE_DEVICE_SINGLETHREADED;
|
||||||
#endif
|
#endif
|
||||||
hr = D3D11CreateDeviceAndSwapChain(adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, device_flags, NULL, 0, D3D11_SDK_VERSION, &swap_chain_desc, &swapchain, &device, &featlevel, &context);
|
hr = D3D11CreateDeviceAndSwapChain(adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, device_flags,
|
||||||
|
supported_feature_levels, NUM_SUPPORTED_FEATURE_LEVELS,
|
||||||
|
D3D11_SDK_VERSION, &swap_chain_desc, &swapchain, &device,
|
||||||
|
&featlevel, &context);
|
||||||
if (FAILED(hr) || !device || !context || !swapchain)
|
if (FAILED(hr) || !device || !context || !swapchain)
|
||||||
{
|
{
|
||||||
MessageBox(wnd, _T("Failed to initialize Direct3D."), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR);
|
MessageBox(wnd, _T("Failed to initialize Direct3D.\nMake sure your video card supports at least D3D 10.0"), _T("Dolphin Direct3D 11 plugin"), MB_OK | MB_ICONERROR);
|
||||||
SAFE_RELEASE(device);
|
SAFE_RELEASE(device);
|
||||||
SAFE_RELEASE(context);
|
SAFE_RELEASE(context);
|
||||||
SAFE_RELEASE(swapchain);
|
SAFE_RELEASE(swapchain);
|
||||||
|
@ -128,35 +128,23 @@ unsigned int ps_constant_offset_table[] = {
|
|||||||
};
|
};
|
||||||
void SetPSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4)
|
void SetPSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4)
|
||||||
{
|
{
|
||||||
if(D3D::gfxstate->psconstants[ps_constant_offset_table[const_number] ] != f1
|
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number] ] = f1;
|
||||||
|| D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+1] != f2
|
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+1] = f2;
|
||||||
|| D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+2] != f3
|
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+2] = f3;
|
||||||
|| D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+3] != f4)
|
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+3] = f4;
|
||||||
{
|
D3D::gfxstate->pscbufchanged = true;
|
||||||
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number] ] = f1;
|
|
||||||
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+1] = f2;
|
|
||||||
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+2] = f3;
|
|
||||||
D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]+3] = f4;
|
|
||||||
D3D::gfxstate->pscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetPSConstant4fv(unsigned int const_number, const float* f)
|
void SetPSConstant4fv(unsigned int const_number, const float* f)
|
||||||
{
|
{
|
||||||
if(memcmp(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4))
|
memcpy(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4);
|
||||||
{
|
D3D::gfxstate->pscbufchanged = true;
|
||||||
memcpy(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4);
|
|
||||||
D3D::gfxstate->pscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetMultiPSConstant4fv(unsigned int const_number, unsigned int count, const float* f)
|
void SetMultiPSConstant4fv(unsigned int const_number, unsigned int count, const float* f)
|
||||||
{
|
{
|
||||||
if(memcmp(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4*count))
|
memcpy(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4*count);
|
||||||
{
|
D3D::gfxstate->pscbufchanged = true;
|
||||||
memcpy(&D3D::gfxstate->psconstants[ps_constant_offset_table[const_number]], f, sizeof(float)*4*count);
|
|
||||||
D3D::gfxstate->pscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this class will load the precompiled shaders into our cache
|
// this class will load the precompiled shaders into our cache
|
||||||
|
@ -51,26 +51,17 @@ ID3D11InputLayout* VertexShaderCache::GetClearInputLayout() { return ClearLayout
|
|||||||
unsigned int vs_constant_offset_table[238];
|
unsigned int vs_constant_offset_table[238];
|
||||||
void SetVSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4)
|
void SetVSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4)
|
||||||
{
|
{
|
||||||
if(D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number] ] != f1
|
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number] ] = f1;
|
||||||
|| D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+1] != f2
|
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+1] = f2;
|
||||||
|| D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+2] != f3
|
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+2] = f3;
|
||||||
|| D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+3] != f4)
|
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+3] = f4;
|
||||||
{
|
D3D::gfxstate->vscbufchanged = true;
|
||||||
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number] ] = f1;
|
|
||||||
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+1] = f2;
|
|
||||||
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+2] = f3;
|
|
||||||
D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]+3] = f4;
|
|
||||||
D3D::gfxstate->vscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetVSConstant4fv(unsigned int const_number, const float* f)
|
void SetVSConstant4fv(unsigned int const_number, const float* f)
|
||||||
{
|
{
|
||||||
if(memcmp(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4))
|
memcpy(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4);
|
||||||
{
|
D3D::gfxstate->vscbufchanged = true;
|
||||||
memcpy(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4);
|
|
||||||
D3D::gfxstate->vscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetMultiVSConstant3fv(unsigned int const_number, unsigned int count, const float* f)
|
void SetMultiVSConstant3fv(unsigned int const_number, unsigned int count, const float* f)
|
||||||
@ -85,11 +76,8 @@ void SetMultiVSConstant3fv(unsigned int const_number, unsigned int count, const
|
|||||||
|
|
||||||
void SetMultiVSConstant4fv(unsigned int const_number, unsigned int count, const float* f)
|
void SetMultiVSConstant4fv(unsigned int const_number, unsigned int count, const float* f)
|
||||||
{
|
{
|
||||||
if(memcmp(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4*count))
|
memcpy(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4*count);
|
||||||
{
|
D3D::gfxstate->vscbufchanged = true;
|
||||||
memcpy(&D3D::gfxstate->vsconstants[vs_constant_offset_table[const_number]], f, sizeof(float)*4*count);
|
|
||||||
D3D::gfxstate->vscbufchanged = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this class will load the precompiled shaders into our cache
|
// this class will load the precompiled shaders into our cache
|
||||||
|
Loading…
x
Reference in New Issue
Block a user