From 4c4f21542e507f47c34f20cb987deba97d0cb43a Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Fri, 15 Jul 2022 02:55:57 +0200 Subject: [PATCH] Added logging to invalid dispatch sizes Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- include/vkcv/DispatchSize.hpp | 2 ++ src/vkcv/DispatchSize.cpp | 29 +++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/vkcv/DispatchSize.hpp b/include/vkcv/DispatchSize.hpp index 10d0d602..66878260 100644 --- a/include/vkcv/DispatchSize.hpp +++ b/include/vkcv/DispatchSize.hpp @@ -42,6 +42,8 @@ namespace vkcv { [[nodiscard]] uint32_t z() const; + bool check() const; + }; [[nodiscard]] diff --git a/src/vkcv/DispatchSize.cpp b/src/vkcv/DispatchSize.cpp index 4f758672..bf34d2de 100644 --- a/src/vkcv/DispatchSize.cpp +++ b/src/vkcv/DispatchSize.cpp @@ -1,17 +1,18 @@ #include "vkcv/DispatchSize.hpp" +#include "vkcv/Logger.hpp" #include <cmath> namespace vkcv { DispatchSize::DispatchSize(uint32_t count) - : DispatchSize(count, 1, 1) - {} + : DispatchSize(count, 1, 1) {} DispatchSize::DispatchSize(uint32_t dimensionX, uint32_t dimentionY, uint32_t dimensionZ) - : m_Dispatch({ dimensionX, dimentionY, dimensionZ }) - {} + : m_Dispatch({ dimensionX, dimentionY, dimensionZ }) { + check(); + } const uint32_t *DispatchSize::data() const { return m_Dispatch.data(); @@ -33,6 +34,26 @@ namespace vkcv { return m_Dispatch[2]; } + bool DispatchSize::check() const { + const uint32_t dimensionX = x(); + const uint32_t dimensionY = y(); + const uint32_t dimensionZ = z(); + + if ((dimensionX <= 0) || (dimensionY <= 0) || (dimensionZ <= 0)) { + vkcv_log( + LogLevel::WARNING, + "Dispatch size invalid: x = %u, y = %u, z = %u", + dimensionX, + dimensionY, + dimensionZ + ); + + return false; + } else { + return true; + } + } + DispatchSize dispatchInvocations(DispatchSize globalInvocations, DispatchSize groupSize) { const uint32_t dimensionX = std::ceil(1.0f * globalInvocations.x() / groupSize.x()); const uint32_t dimensionY = std::ceil(1.0f * globalInvocations.y() / groupSize.y()); -- GitLab