-
Notifications
You must be signed in to change notification settings - Fork 173
Allow printf in shaders #407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: koubaa <koubaa@github.com>
Signed-off-by: koubaa <koubaa@github.com>
Signed-off-by: koubaa <koubaa@github.com>
Signed-off-by: koubaa <koubaa@github.com>
@@ -14,6 +14,30 @@ namespace py = pybind11; | |||
// 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) { |
There was a problem hiding this comment.
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( |
There was a problem hiding this comment.
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
There was a problem hiding this 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
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: