Devsh-Graphics-Programming / Nabla

Vulkan, OptiX and CUDA Interoperation Modular Rendering Library and Framework for PC/Linux/Android
http://devsh.eu
Apache License 2.0
492 stars 59 forks source link

HLSL preprocessor cannot handle comments on the same line as a preprocessor directive #794

Open Fletterio opened 3 days ago

Fletterio commented 3 days ago

Describe the bug

If you try to put a comment on the same line as a preprocessor directive, preprocessing will fail

Steps to Reproduce

In my case I hit this when trying to write a file that can be #included from both host code and device code. For example, code like the following:

#ifndef __HLSL_VERSION // CPP
// Host code...
#else // HLSL
// Device code...
#endif // End device code

will fail to preprocess because of the comments on the same line as the directives. Remove those comments, and it preprocesses fine

Also, I'm hitting this catch(...): https://github.com/Devsh-Graphics-Programming/Nabla/blob/e8f4dca1724b907826f2b9ca1f238ad114716218/src/nbl/asset/utils/CHLSLCompiler.cpp#L358

Meaning that Wave can't even provide a reason for why it's failing to preprocess.

I would guess that currently when it encounters a preprocess directive it does not know to recognize // as the start of a comment, which makes it try to parse the whole line as a directive and fails to do so.

Environment