vk_rasterizer: Fix broken software shaders
This commit is contained in:
@@ -457,14 +457,6 @@ void RasterizerVulkan::DrawTriangles() {
|
|||||||
pipeline_cache.UseTrivialVertexShader();
|
pipeline_cache.UseTrivialVertexShader();
|
||||||
pipeline_cache.UseTrivialGeometryShader();
|
pipeline_cache.UseTrivialGeometryShader();
|
||||||
|
|
||||||
auto [buffer, offset, _] = stream_buffer.Map(vertex_size, sizeof(HardwareVertex));
|
|
||||||
std::memcpy(buffer, vertex_batch.data(), vertex_size);
|
|
||||||
stream_buffer.Commit(vertex_size);
|
|
||||||
|
|
||||||
scheduler.Record([this, offset = offset](vk::CommandBuffer cmdbuf) {
|
|
||||||
cmdbuf.bindVertexBuffers(0, stream_buffer.Handle(), offset);
|
|
||||||
});
|
|
||||||
|
|
||||||
Draw(false, false);
|
Draw(false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -587,7 +579,15 @@ bool RasterizerVulkan::Draw(bool accelerate, bool is_indexed) {
|
|||||||
succeeded = AccelerateDrawBatchInternal(is_indexed);
|
succeeded = AccelerateDrawBatchInternal(is_indexed);
|
||||||
} else {
|
} else {
|
||||||
pipeline_cache.BindPipeline(pipeline_info, true);
|
pipeline_cache.BindPipeline(pipeline_info, true);
|
||||||
scheduler.Record([vertex_count = vertex_batch.size()](vk::CommandBuffer cmdbuf) {
|
|
||||||
|
const u64 vertex_size = vertex_batch.size() * sizeof(HardwareVertex);
|
||||||
|
auto [buffer, offset, _] = stream_buffer.Map(vertex_size, sizeof(HardwareVertex));
|
||||||
|
|
||||||
|
std::memcpy(buffer, vertex_batch.data(), vertex_size);
|
||||||
|
stream_buffer.Commit(vertex_size);
|
||||||
|
|
||||||
|
scheduler.Record([this, offset = offset, vertex_count = vertex_batch.size()](vk::CommandBuffer cmdbuf) {
|
||||||
|
cmdbuf.bindVertexBuffers(0, stream_buffer.Handle(), offset);
|
||||||
cmdbuf.draw(vertex_count, 1, 0, 0);
|
cmdbuf.draw(vertex_count, 1, 0, 0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user