mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-28 10:35:29 +03:00
Make GetVertexBuffer
return a pointer to the requested buffer
This avoids a redundancy in the `Draw` function and makes code easier to read
This commit is contained in:
parent
5c3559e888
commit
bcaf7dfe1c
@ -1726,19 +1726,19 @@ namespace skyline::gpu::interconnect {
|
||||
}
|
||||
}
|
||||
|
||||
BufferView GetVertexBuffer(size_t index) {
|
||||
VertexBuffer *GetVertexBuffer(size_t index) {
|
||||
auto &vertexBuffer{vertexBuffers.at(index)};
|
||||
if (vertexBuffer.start > vertexBuffer.end || vertexBuffer.start == 0 || vertexBuffer.end == 0)
|
||||
return nullptr;
|
||||
else if (vertexBuffer.view)
|
||||
return vertexBuffer.view;
|
||||
return &vertexBuffer;
|
||||
|
||||
auto mappings{channelCtx.asCtx->gmmu.TranslateRange(vertexBuffer.start, (vertexBuffer.end + 1) - vertexBuffer.start)};
|
||||
if (mappings.size() != 1)
|
||||
Logger::Warn("Multiple buffer mappings ({}) are not supported", mappings.size());
|
||||
|
||||
vertexBuffer.view = gpu.buffer.FindOrCreate(mappings.front(), executor.cycle);
|
||||
return vertexBuffer.view;
|
||||
return &vertexBuffer;
|
||||
}
|
||||
|
||||
/* Input Assembly */
|
||||
@ -2619,12 +2619,12 @@ namespace skyline::gpu::interconnect {
|
||||
boost::container::static_vector<vk::VertexInputBindingDivisorDescriptionEXT, maxwell3d::VertexBufferCount> vertexBindingDivisorsDescriptions{};
|
||||
|
||||
for (u32 index{}; index < maxwell3d::VertexBufferCount; index++) {
|
||||
auto vertexBufferView{GetVertexBuffer(index)};
|
||||
if (vertexBufferView) {
|
||||
auto &vertexBuffer{vertexBuffers[index]};
|
||||
vertexBindingDescriptions.push_back(vertexBuffer.bindingDescription);
|
||||
if (vertexBuffer.bindingDescription.inputRate == vk::VertexInputRate::eInstance)
|
||||
vertexBindingDivisorsDescriptions.push_back(vertexBuffer.bindingDivisorDescription);
|
||||
auto vertexBuffer{GetVertexBuffer(index)};
|
||||
if (vertexBuffer) {
|
||||
auto &vertexBufferView{vertexBuffer->view};
|
||||
vertexBindingDescriptions.push_back(vertexBuffer->bindingDescription);
|
||||
if (vertexBuffer->bindingDescription.inputRate == vk::VertexInputRate::eInstance)
|
||||
vertexBindingDivisorsDescriptions.push_back(vertexBuffer->bindingDivisorDescription);
|
||||
|
||||
std::scoped_lock vertexBufferLock(vertexBufferView);
|
||||
vertexBufferView.RegisterUsage([handle = boundVertexBuffers->handles.data() + index, offset = boundVertexBuffers->offsets.data() + index](const Buffer::BufferViewStorage &view, const std::shared_ptr<Buffer> &buffer) {
|
||||
|
Loading…
Reference in New Issue
Block a user