![]() ![]() You may think that it’s just that the shaders are trivial. The line that says “Error: Shader compilation finished immediately!” Indicates that the glGetShaderiv with GL_COMPLETION_STATUS_KHR is halting execution until shader compilation completes. That is the expected output, which indicates that there is a bug. However, I don’t think these shaders should take that long to link… Going to let it run overnight to see if it finishes linking. I ran htop and can see the multiple threads for linking. ![]() Also, I have yet to be able to finish linking yet with the ‘big’ shaders. I added some ‘big’ shaders that clearly showcase the application halt with GL_COMPLETION_STATUS_KHR for shaders. I get the same results on a different program with non-trivial shader compilation times, but I can’t share that one. As the program does not immediately indicate it is done linking after execution.Īlso, sorry that the shader isn’t super “heavy.” I’m a bit green to this stuff and not really sure how to bloat shader compilation times. Included is a Readme.md with sample output.įrom my testing, issue 1 & 2 from the original post still exist (However, I disagree that ‘1’ is an issue). For testing I circumvented the driver cache by writing a unique string in a comment at the end of each shader. Driver is 368.22 on GeForce GT 650M on Windows 10 圆4. ![]() This is the most frustrating one since I can’t find a workaround.Īny feedback would be appreciated. I do get the impression that it did most of the work asynchronously (given that a subsequent program status query usually completes quickly), but it means I have no way to find out when the work is completed. This is not too critical (since I’m more interested in the result of the link) but it does seem like a bug, which took me some time to figure out.Īfter starting an async link, glGetProgramiv with GL_COMPLETION_STATUS_ARB will never return GL_TRUE, no matter how long I wait. This seems like a bug an explicit call to set the thread count to 0xFFFFFFFF works to enable async linking, but it shouldn’t be necessary since that’s already the initial value.Ĭalling glGetShaderiv with GL_COMPLETION_STATUS_ARB always blocks until the compilation has finished. However, program queries of GL_COMPLETION_STATUS_ARB always return GL_TRUE (implying the link happened synchronously) unless I explicitly call glMaxShaderCompilerThreadsARB(). The spec states that the initial value of GL_MAX_SHADER_COMPILER_THREADS_ARB is 0xFFFFFFFF, which I confirmed is indeed the initial value using glGetIntegerv. ![]() I’ve been trying to implement GL_ARB_parallel_shader_compile (which is a very welcome extension!), but I ran into a couple of issues: ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |