mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
d3d12: Start writing vertex/index buffer support
This commit is contained in:
parent
722e6b8ac5
commit
fedd35989c
@ -293,27 +293,41 @@ void D3D12GSRender::EnableVertexData(bool indexed_draw)
|
||||
m_vdata.resize(m_vdata.size() + data_size);
|
||||
memcpy(&m_vdata[pos], &m_vertex_data[i].data[data_offset * item_size], data_size);
|
||||
}
|
||||
// TODO: Use default heap and upload data
|
||||
D3D12_HEAP_PROPERTIES heapProp = {};
|
||||
heapProp.Type = D3D12_HEAP_TYPE_UPLOAD;
|
||||
D3D12_RESOURCE_DESC resDesc = {};
|
||||
resDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
|
||||
resDesc.Width = (UINT)m_vdata.size();
|
||||
resDesc.Height = 1;
|
||||
resDesc.DepthOrArraySize = 1;
|
||||
resDesc.SampleDesc.Count = 1;
|
||||
resDesc.MipLevels = 1;
|
||||
resDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
|
||||
check(m_device->CreateCommittedResource(
|
||||
&heapProp,
|
||||
D3D12_HEAP_FLAG_NONE,
|
||||
&resDesc,
|
||||
D3D12_RESOURCE_STATE_GENERIC_READ,
|
||||
nullptr,
|
||||
IID_PPV_ARGS(&m_vertexBuffer)
|
||||
));
|
||||
void *bufferMap;
|
||||
|
||||
/* m_vao.Create();
|
||||
m_vao.Bind();
|
||||
checkForGlError("initializing vao");
|
||||
|
||||
m_vbo.Create(indexed_draw ? 2 : 1);
|
||||
m_vbo.Bind(0);
|
||||
m_vbo.SetData(m_vdata.data(), m_vdata.size());*/
|
||||
check(m_vertexBuffer->Map(0, nullptr, (void**)&bufferMap));
|
||||
memcpy(bufferMap, m_vdata.data(), m_vdata.size());
|
||||
m_vertexBuffer->Unmap(0, nullptr);
|
||||
|
||||
if (indexed_draw)
|
||||
{
|
||||
// TODO: Use default heap and upload data
|
||||
D3D12_HEAP_PROPERTIES heapProp = {};
|
||||
heapProp.Type = D3D12_HEAP_TYPE_UPLOAD;
|
||||
|
||||
D3D12_RESOURCE_DESC resDesc = {};
|
||||
resDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
|
||||
resDesc.Width = (UINT)m_indexed_array.m_data.size();
|
||||
resDesc.Height = 1;
|
||||
resDesc.DepthOrArraySize = 1;
|
||||
resDesc.SampleDesc.Count = 1;
|
||||
resDesc.MipLevels = 1;
|
||||
resDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
|
||||
check(m_device->CreateCommittedResource(
|
||||
&heapProp,
|
||||
D3D12_HEAP_FLAG_NONE,
|
||||
@ -322,9 +336,9 @@ void D3D12GSRender::EnableVertexData(bool indexed_draw)
|
||||
nullptr,
|
||||
IID_PPV_ARGS(&m_indexBuffer)
|
||||
));
|
||||
void *indexBufferMap;
|
||||
check(m_indexBuffer->Map(0, nullptr, (void**)indexBufferMap));
|
||||
memcpy(indexBufferMap, m_indexed_array.m_data.data(), m_indexed_array.m_data.size());
|
||||
|
||||
check(m_indexBuffer->Map(0, nullptr, (void**)&bufferMap));
|
||||
memcpy(bufferMap, m_indexed_array.m_data.data(), m_indexed_array.m_data.size());
|
||||
m_indexBuffer->Unmap(0, nullptr);
|
||||
|
||||
D3D12_INDEX_BUFFER_VIEW indexBufferView = {};
|
||||
|
@ -48,18 +48,12 @@ private:
|
||||
|
||||
PipelineStateObjectCache m_cachePSO;
|
||||
ID3D12PipelineState *m_PSO;
|
||||
// GLProgramBuffer m_prog_buffer;
|
||||
|
||||
// GLFragmentProgram m_fragment_prog;
|
||||
// GLVertexProgram m_vertex_prog;
|
||||
|
||||
// GLTexture m_gl_textures[m_textures_count];
|
||||
// GLTexture m_gl_vertex_textures[m_textures_count];
|
||||
|
||||
ID3D12Resource *m_indexBuffer;
|
||||
ID3D12Resource *m_indexBuffer, *m_vertexBuffer;
|
||||
std::vector<D3D12_INPUT_ELEMENT_DESC> m_IASet;
|
||||
// GLvao m_vao;
|
||||
// GLvbo m_vbo;
|
||||
D3D12RenderTargetSets *m_fbo;
|
||||
ID3D12Device* m_device;
|
||||
ID3D12CommandQueue *m_commandQueueCopy;
|
||||
@ -89,9 +83,6 @@ private:
|
||||
void InitVertexData();
|
||||
void InitFragmentData();
|
||||
|
||||
void Enable(bool enable, const u32 cap);
|
||||
|
||||
|
||||
void WriteBuffers();
|
||||
void WriteDepthBuffer();
|
||||
void WriteColorBuffers();
|
||||
|
@ -157,9 +157,9 @@ ID3D12PipelineState *PipelineStateObjectCache::getGraphicPipelineState(ID3D12Dev
|
||||
}
|
||||
else
|
||||
{
|
||||
/* LOG_WARNING(RSX, "Add program :");
|
||||
LOG_WARNING(RSX, "Add program :");
|
||||
LOG_WARNING(RSX, "*** vp id = %d", m_vertex_prog.Id);
|
||||
LOG_WARNING(RSX, "*** fp id = %d", m_fragment_prog.Id);*/
|
||||
LOG_WARNING(RSX, "*** fp id = %d", m_fragment_prog.Id);
|
||||
|
||||
D3D12_GRAPHICS_PIPELINE_STATE_DESC graphicPipelineStateDesc = {};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user