diff --git a/include/vkcv/Core.hpp b/include/vkcv/Core.hpp index f3048748bcafdec0758f7022a37c75c67bc8d2fc..f7f725ea3308d4cb63a3355284b34c9e10f90d31 100644 --- a/include/vkcv/Core.hpp +++ b/include/vkcv/Core.hpp @@ -230,8 +230,6 @@ namespace vkcv void renderMesh( const PassHandle renderpassHandle, const PipelineHandle pipelineHandle, - const uint32_t width, - const uint32_t height, const size_t pushConstantSize, const void* pushConstantData, const std::vector<VertexBufferBinding> &vertexBufferBindings, diff --git a/projects/cmd_sync_test/src/main.cpp b/projects/cmd_sync_test/src/main.cpp index 3f6e2c3fd691744460bb38019b47a16c8b724b75..b70394d91fd9bd7937abc9f5ed873c13283c53ac 100644 --- a/projects/cmd_sync_test/src/main.cpp +++ b/projects/cmd_sync_test/src/main.cpp @@ -162,8 +162,6 @@ int main(int argc, const char** argv) { core.renderMesh( trianglePass, trianglePipeline, - windowWidth, - windowHeight, sizeof(mvp), &mvp, vertexBufferBindings, diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp index c9a43edbda136e0f1ee3f28389811f23e8c4b1a9..b320f5db90e4534e515626f8cb5e7b6a9a264516 100644 --- a/src/vkcv/Core.cpp +++ b/src/vkcv/Core.cpp @@ -176,8 +176,6 @@ namespace vkcv void Core::renderMesh( const PassHandle renderpassHandle, const PipelineHandle pipelineHandle, - const uint32_t width, - const uint32_t height, const size_t pushConstantSize, const void *pushConstantData, const std::vector<VertexBufferBinding>& vertexBufferBindings, @@ -191,6 +189,25 @@ namespace vkcv return; } + uint32_t width; + uint32_t height; + if (renderTargets.size() > 0) { + const vkcv::ImageHandle firstImage = renderTargets[0]; + if (firstImage.isSwapchainImage()) { + width = m_window.getWidth(); + height = m_window.getHeight(); + } + else { + width = m_ImageManager->getImageWidth(firstImage); + height = m_ImageManager->getImageHeight(firstImage); + } + } + else { + width = 1; + height = 1; + } + // TODO: validate that width/height match for all attachments + const vk::RenderPass renderpass = m_PassManager->getVkPass(renderpassHandle); const PassConfig passConfig = m_PassManager->getPassConfig(renderpassHandle); diff --git a/src/vkcv/ImageManager.cpp b/src/vkcv/ImageManager.cpp index 4b46b5fc422e1666049b22d422a16fec10fe08aa..a3ca22b16b2c96962b188c8a8be51ebb9cd7314d 100644 --- a/src/vkcv/ImageManager.cpp +++ b/src/vkcv/ImageManager.cpp @@ -178,6 +178,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getVulkanImage invalid handle" << std::endl; return nullptr; } @@ -190,6 +191,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getVulkanDeviceMemory invalid handle" << std::endl; return nullptr; } @@ -202,6 +204,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getVulkanImageView invalid handle" << std::endl; return nullptr; } @@ -214,6 +217,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::switchImageLayout invalid handle" << std::endl; return; } @@ -295,6 +299,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::fillImage invalid handle" << std::endl; return; } @@ -371,6 +376,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getImageWidth invalid handle" << std::endl; return 0; } @@ -383,6 +389,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getImageHeight invalid handle" << std::endl; return 0; } @@ -395,6 +402,7 @@ namespace vkcv { const uint64_t id = handle.getId(); if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::getImageDepth invalid handle" << std::endl; return 0; } @@ -406,6 +414,7 @@ namespace vkcv { void ImageManager::destroyImageById(uint64_t id) { if (id >= m_images.size()) { + std::cerr << "Error: ImageManager::destroyImageById invalid handle" << std::endl; return; }