Skip to content
Snippets Groups Projects
Verified Commit 4c4f2154 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Added logging to invalid dispatch sizes

parent c437f1c3
No related branches found
No related tags found
1 merge request!105Resolve "Refactor Core API"
...@@ -42,6 +42,8 @@ namespace vkcv { ...@@ -42,6 +42,8 @@ namespace vkcv {
[[nodiscard]] [[nodiscard]]
uint32_t z() const; uint32_t z() const;
bool check() const;
}; };
[[nodiscard]] [[nodiscard]]
......
#include "vkcv/DispatchSize.hpp" #include "vkcv/DispatchSize.hpp"
#include "vkcv/Logger.hpp"
#include <cmath> #include <cmath>
namespace vkcv { namespace vkcv {
DispatchSize::DispatchSize(uint32_t count) DispatchSize::DispatchSize(uint32_t count)
: DispatchSize(count, 1, 1) : DispatchSize(count, 1, 1) {}
{}
DispatchSize::DispatchSize(uint32_t dimensionX, uint32_t dimentionY, uint32_t dimensionZ) 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 { const uint32_t *DispatchSize::data() const {
return m_Dispatch.data(); return m_Dispatch.data();
...@@ -33,6 +34,26 @@ namespace vkcv { ...@@ -33,6 +34,26 @@ namespace vkcv {
return m_Dispatch[2]; 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) { DispatchSize dispatchInvocations(DispatchSize globalInvocations, DispatchSize groupSize) {
const uint32_t dimensionX = std::ceil(1.0f * globalInvocations.x() / groupSize.x()); const uint32_t dimensionX = std::ceil(1.0f * globalInvocations.x() / groupSize.x());
const uint32_t dimensionY = std::ceil(1.0f * globalInvocations.y() / groupSize.y()); const uint32_t dimensionY = std::ceil(1.0f * globalInvocations.y() / groupSize.y());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment