mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-08 09:09:46 +00:00
d3d12: Use GL enum for primitive type
This commit is contained in:
parent
b8073b4e75
commit
2df1220144
1 changed files with 31 additions and 36 deletions
|
@ -480,16 +480,18 @@ std::pair<std::vector<D3D12_VERTEX_BUFFER_VIEW>, D3D12_INDEX_BUFFER_VIEW> D3D12G
|
||||||
switch (m_draw_mode - 1)
|
switch (m_draw_mode - 1)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0:
|
case GL_POINTS:
|
||||||
case 1:
|
case GL_LINES:
|
||||||
case 2:
|
case GL_LINE_LOOP:
|
||||||
case 3:
|
case GL_LINE_STRIP:
|
||||||
case 4:
|
case GL_TRIANGLES:
|
||||||
case 5:
|
case GL_TRIANGLE_STRIP:
|
||||||
case 6:
|
case GL_TRIANGLE_FAN:
|
||||||
|
case GL_QUAD_STRIP:
|
||||||
|
case GL_POLYGON:
|
||||||
m_forcedIndexBuffer = false;
|
m_forcedIndexBuffer = false;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case GL_QUADS:
|
||||||
m_forcedIndexBuffer = true;
|
m_forcedIndexBuffer = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -809,33 +811,24 @@ bool D3D12GSRender::LoadProgram()
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12PipelineProperties prop = {};
|
D3D12PipelineProperties prop = {};
|
||||||
/*
|
|
||||||
#define GL_POINTS 0x0000
|
|
||||||
#define GL_LINES 0x0001
|
|
||||||
#define GL_LINE_LOOP 0x0002
|
|
||||||
#define GL_LINE_STRIP 0x0003
|
|
||||||
#define GL_TRIANGLES 0x0004
|
|
||||||
#define GL_TRIANGLE_STRIP 0x0005
|
|
||||||
#define GL_TRIANGLE_FAN 0x0006
|
|
||||||
#define GL_QUADS 0x0007
|
|
||||||
#define GL_QUAD_STRIP 0x0008
|
|
||||||
#define GL_POLYGON 0x0009
|
|
||||||
*/
|
|
||||||
switch (m_draw_mode - 1)
|
switch (m_draw_mode - 1)
|
||||||
{
|
{
|
||||||
case 0:
|
case GL_POINTS:
|
||||||
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT;
|
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case GL_LINES:
|
||||||
case 2:
|
case GL_LINE_LOOP:
|
||||||
case 3:
|
case GL_LINE_STRIP:
|
||||||
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE;
|
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case GL_TRIANGLES:
|
||||||
case 5:
|
case GL_TRIANGLE_STRIP:
|
||||||
case 6:
|
case GL_TRIANGLE_FAN:
|
||||||
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
||||||
break;
|
break;
|
||||||
|
case GL_QUADS:
|
||||||
|
case GL_QUAD_STRIP:
|
||||||
|
case GL_POLYGON:
|
||||||
default:
|
default:
|
||||||
// LOG_ERROR(RSX, "Unsupported primitive type");
|
// LOG_ERROR(RSX, "Unsupported primitive type");
|
||||||
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
prop.Topology = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
||||||
|
@ -1004,30 +997,32 @@ void D3D12GSRender::ExecCMD()
|
||||||
bool requireIndexBuffer = false;
|
bool requireIndexBuffer = false;
|
||||||
switch (m_draw_mode - 1)
|
switch (m_draw_mode - 1)
|
||||||
{
|
{
|
||||||
case 0:
|
case GL_POINTS:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_POINTLIST);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_POINTLIST);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case GL_LINES:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case GL_LINE_LOOP:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case GL_LINE_STRIP:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINESTRIP);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINESTRIP);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case GL_TRIANGLES:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case GL_TRIANGLE_STRIP:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case GL_TRIANGLE_FAN:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case GL_QUADS:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||||
requireIndexBuffer = true;
|
requireIndexBuffer = true;
|
||||||
|
case GL_QUAD_STRIP:
|
||||||
|
case GL_POLYGON:
|
||||||
default:
|
default:
|
||||||
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||||
// LOG_ERROR(RSX, "Unsupported primitive type");
|
// LOG_ERROR(RSX, "Unsupported primitive type");
|
||||||
|
@ -1042,7 +1037,7 @@ void D3D12GSRender::ExecCMD()
|
||||||
commandList->DrawIndexedInstanced((UINT)getCurrentResourceStorage().m_indexBufferCount, 1, 0, (UINT)m_draw_array_first, 0);
|
commandList->DrawIndexedInstanced((UINT)getCurrentResourceStorage().m_indexBufferCount, 1, 0, (UINT)m_draw_array_first, 0);
|
||||||
// Indexed triangles
|
// Indexed triangles
|
||||||
else if (m_indexed_array.m_count)
|
else if (m_indexed_array.m_count)
|
||||||
commandList->DrawIndexedInstanced(m_indexed_array.m_count, 1, 0, (UINT)m_draw_array_first, 0);
|
commandList->DrawIndexedInstanced(m_indexed_array.m_data.size() / 2, 1, 0, (UINT)m_draw_array_first, 0);
|
||||||
else if (m_draw_array_count)
|
else if (m_draw_array_count)
|
||||||
commandList->DrawInstanced(m_draw_array_count, 1, m_draw_array_first, 0);
|
commandList->DrawInstanced(m_draw_array_count, 1, m_draw_array_first, 0);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue