WIP: Adding vertex stream support.

This commit is contained in:
Branimir Karadžić
2016-09-12 19:38:29 -07:00
parent a61010a9ff
commit 1ae77b0cfb
8 changed files with 178 additions and 124 deletions

View File

@@ -3431,10 +3431,10 @@ data.NumQualityLevels = 0;
{
Enum type = Enum(!!isValid(_draw.m_indexBuffer) );
VertexBufferD3D12& vb = s_renderD3D12->m_vertexBuffers[_draw.m_vertexBuffer.idx];
VertexBufferD3D12& vb = s_renderD3D12->m_vertexBuffers[_draw.m_stream[0].m_handle.idx];
vb.setState(_commandList, D3D12_RESOURCE_STATE_GENERIC_READ);
uint16_t declIdx = !isValid(vb.m_decl) ? _draw.m_vertexDecl.idx : vb.m_decl.idx;
uint16_t declIdx = !isValid(vb.m_decl) ? _draw.m_stream[0].m_decl.idx : vb.m_decl.idx;
const VertexDecl& vertexDecl = s_renderD3D12->m_vertexDecls[declIdx];
uint32_t numIndices = 0;
@@ -3464,7 +3464,7 @@ data.NumQualityLevels = 0;
}
cmd.draw.InstanceCount = _draw.m_numInstances;
cmd.draw.VertexCountPerInstance = numVertices;
cmd.draw.StartVertexLocation = _draw.m_startVertex;
cmd.draw.StartVertexLocation = _draw.m_stream[0].m_startVertex;
cmd.draw.StartInstanceLocation = 0;
}
else
@@ -3506,7 +3506,7 @@ data.NumQualityLevels = 0;
cmd.drawIndexed.IndexCountPerInstance = numIndices;
cmd.drawIndexed.InstanceCount = _draw.m_numInstances;
cmd.drawIndexed.StartIndexLocation = _draw.m_startIndex;
cmd.drawIndexed.BaseVertexLocation = _draw.m_startVertex;
cmd.drawIndexed.BaseVertexLocation = _draw.m_stream[0].m_startVertex;
cmd.drawIndexed.StartInstanceLocation = 0;
}
@@ -5200,7 +5200,7 @@ data.NumQualityLevels = 0;
rendererUpdateUniforms(this, _render->m_uniformBuffer, draw.m_constBegin, draw.m_constEnd);
if (isValid(draw.m_vertexBuffer) )
if (isValid(draw.m_stream[0].m_handle) )
{
const uint64_t state = draw.m_stateFlags;
bool hasFactor = 0
@@ -5210,8 +5210,8 @@ data.NumQualityLevels = 0;
|| f3 == (state & f3)
;
const VertexBufferD3D12& vb = m_vertexBuffers[draw.m_vertexBuffer.idx];
uint16_t declIdx = !isValid(vb.m_decl) ? draw.m_vertexDecl.idx : vb.m_decl.idx;
const VertexBufferD3D12& vb = m_vertexBuffers[draw.m_stream[0].m_handle.idx];
uint16_t declIdx = !isValid(vb.m_decl) ? draw.m_stream[0].m_decl.idx : vb.m_decl.idx;
ID3D12PipelineState* pso =
getPipelineState(state