diff options
Diffstat (limited to 'src/vulkan/engine_vulkan.cc')
-rw-r--r-- | src/vulkan/engine_vulkan.cc | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/vulkan/engine_vulkan.cc b/src/vulkan/engine_vulkan.cc index dc10f01..b0b6ae2 100644 --- a/src/vulkan/engine_vulkan.cc +++ b/src/vulkan/engine_vulkan.cc @@ -191,16 +191,15 @@ Result EngineVulkan::CreatePipeline(amber::Pipeline* pipeline) { info.vk_pipeline = std::move(vk_pipeline); for (const auto& vtex_info : pipeline->GetVertexBuffers()) { - auto& fmt = vtex_info.buffer->IsFormatBuffer() - ? vtex_info.buffer->AsFormatBuffer()->GetFormat() - : Format(); + auto fmt = + vtex_info.buffer->IsFormatBuffer() + ? vtex_info.buffer->AsFormatBuffer()->GetFormat() + : vtex_info.buffer->AsDataBuffer()->GetDatumType().AsFormat(); + if (!device_->IsFormatSupportedByPhysicalDevice(fmt, vtex_info.buffer)) return Result("Vulkan vertex buffer format is not supported"); - if (!info.vertex_buffer) info.vertex_buffer = MakeUnique<VertexBuffer>(device_.get()); - if (!vtex_info.buffer->IsFormatBuffer()) - return Result("Vulkan vertex buffer is not a format buffer"); info.vertex_buffer->SetData(static_cast<uint8_t>(vtex_info.location), vtex_info.buffer->AsFormatBuffer()); |