Merge pull request #1716 from Armada651/geom-wireframe

VideoCommon: Handle wireframe mode in the geometry shader.
This commit is contained in:
Dolphin Bot
2014-12-20 12:22:40 +01:00
8 changed files with 39 additions and 33 deletions

View File

@ -407,7 +407,7 @@ ID3D11RasterizerState* StateCache::Get(RasterizerState state)
if (it != m_raster.end())
return it->second;
D3D11_RASTERIZER_DESC rastdc = CD3D11_RASTERIZER_DESC(state.wireframe ? D3D11_FILL_WIREFRAME : D3D11_FILL_SOLID,
D3D11_RASTERIZER_DESC rastdc = CD3D11_RASTERIZER_DESC(D3D11_FILL_SOLID,
state.cull_mode,
false, 0, 0.f, 0, true, true, false, false);

View File

@ -22,7 +22,6 @@ namespace DX11
union RasterizerState
{
BitField<0, 2, D3D11_CULL_MODE> cull_mode;
BitField<2, 1, u32> wireframe;
u32 packed;
};

View File

@ -211,7 +211,7 @@ bool GeometryShaderCache::SetShader(u32 primitive_type)
last_uid = uid;
// Check if the shader is a pass-through shader
if (IsPassthroughGeometryShader(uid))
if (uid.GetUidData()->IsPassthrough())
{
// Return the default pass-through shader
last_entry = &pass_entry;

View File

@ -255,7 +255,6 @@ Renderer::Renderer(void *&window_handle)
gx_state.zmode.func = ZMode::NEVER;
gx_state.raster.cull_mode = D3D11_CULL_NONE;
gx_state.raster.wireframe = false;
// Clear EFB textures
float ClearColor[4] = { 0.f, 0.f, 0.f, 1.f };
@ -1084,10 +1083,7 @@ void Renderer::ApplyState(bool bUseDstAlpha)
{
gx_state.blend.use_dst_alpha = bUseDstAlpha;
D3D::stateman->PushBlendState(gx_state_cache.Get(gx_state.blend));
D3D::stateman->PushDepthState(gx_state_cache.Get(gx_state.zmode));
gx_state.raster.wireframe = g_ActiveConfig.bWireFrame;
D3D::stateman->PushRasterizerState(gx_state_cache.Get(gx_state.raster));
for (unsigned int stage = 0; stage < 8; stage++)

View File

@ -211,7 +211,7 @@ SHADER* ProgramShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components
ShaderCode gcode;
GenerateVertexShaderCode(vcode, components, API_OPENGL);
GeneratePixelShaderCode(pcode, dstAlphaMode, API_OPENGL, components);
if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && !IsPassthroughGeometryShader(uid.guid))
if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && !uid.guid.GetUidData()->IsPassthrough())
GenerateGeometryShaderCode(gcode, primitive_type, API_OPENGL);
if (g_ActiveConfig.bEnableShaderDebugging)

View File

@ -1790,9 +1790,6 @@ void Renderer::RestoreAPIState()
SetLogicOpMode();
SetViewport();
if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL)
glPolygonMode(GL_FRONT_AND_BACK, g_ActiveConfig.bWireFrame ? GL_LINE : GL_FILL);
VertexManager *vm = (OGL::VertexManager*)g_vertex_manager;
glBindBuffer(GL_ARRAY_BUFFER, vm->m_vertex_buffers);
if (vm->m_last_vao)