kompute icon indicating copy to clipboard operation
kompute copied to clipboard

Allow printf in shaders

Open koubaa opened this issue 1 year ago • 1 comments

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

koubaa avatar Dec 11 '24 17:12 koubaa

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?

eokeeffe avatar Oct 09 '25 18:10 eokeeffe