Skip to content

Conversation

@koubaa
Copy link
Contributor

@koubaa koubaa commented Dec 11, 2024

This change gets closer to letting shader printf work in the idiomatic way for vulkan. If an env var is set, the appropriate layer is included. Together with #406, where device extensions can be selected, this almost works from the python side. There is still one problem which I don't fully understand yet whereby shader printf do not appear in the log (even if I set the information bit in on the debug logger), but it does appear if I set the (now considered obsolete) vulkan env var DEBUG_PRINTF_TO_STDOUT=1.

Note - the python logging objects were used without acquiring the GIL - which is invalid use of pybind11 that leads to race conditions. I encountered many of those while I was working on this branch. This PR fixes those issues by explicitly acquiring the GIL during the log methods.

One thing I didn't yet look into is this note:

When using Validation Layers, the fragmentStoresAndAtomics, vertexPipelineStoresAndAtomics, and timelineSemaphore features are required

// used in Core.hpp
py::object kp_trace, kp_debug, kp_info, kp_warning, kp_error;

static void kp_log(int level, const std::string& msg) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although it is already understandable, I would put an enum for the level (just to have a meaningful level name from "trace" to "error")

computeInstanceCreateInfo.enabledLayerCount =
static_cast<uint32_t>(validLayerNames.size());
computeInstanceCreateInfo.ppEnabledLayerNames = validLayerNames.data();
computeInstanceCreateInfo.setEnabledLayerCount(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for next ones but I like the usage of the VKCPP capabilities

Copy link
Contributor

@ThePseudo ThePseudo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what I understand, I would add the log levels in the python/src/main.cpp.

I would wait for people who know more than me for the rest

@eokeeffe
Copy link

eokeeffe commented Oct 9, 2025

This is can be handled using the vulkan extension VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT , see here for details . I can add some example code if that helps?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants