KhronosGroup / glslang

Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
Other
2.9k stars 816 forks source link

GL_EXT_control_flow_attributes2 support. #3531

Closed wooyoungqcom closed 4 months ago

wooyoungqcom commented 4 months ago

The actual support has been available with GL_EXT_control_flow_attributes. This change set is to handle

"#extension GL_EXT_control_flow_attributes2 : "

wooyoungqcom commented 4 months ago

Thanks. I thought about adding it, then decided not to. Anyways, it is added.

As for the second question, if I compile the test spv.1.4.LoopControl.frag with no extension enabled, I get

ERROR: spv.1.4.LoopControl.frag:10: 'attribute' : required extension not requested: GL_EXT_control_flow_attributes

I am afraid adding something specific for GL_EXT_control_flow_attributes2 would break shaders out there that may have used the attributes, though I am not sure if there are any that are using those attributes.

wooyoungqcom commented 4 months ago

updated the grammar to allow shaders that enable GL_EXT_control_flow_attributes2 only.

wooyoungqcom commented 4 months ago

Generated the grammar using bison 3.8.2.

For the test results, there is an error while running the test suite, and I don't see 460.frag get executed. The same error occurred with the main branch without any of my changes.

wooyoungqcom commented 4 months ago

@arcady-lunarg Have you seen this error ?

2: [ FAILED ] Glsl/VulkanRelaxedTest.FromFile/0, where GetParam() = 48-byte object <A0-53 7F-F9 F4-55 00-00 C0-53 7F-F9 F4-55 00-00 C0-53 7F-F9 F4-55 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00> (416 ms) 2: [ RUN ] Glsl/VulkanRelaxedTest.FromFile/1 2: [ OK ] Glsl/VulkanRelaxedTest.FromFile/1 (11 ms) 2: [ RUN ] Glsl/VulkanRelaxedTest.FromFile/2 2: [ OK ] Glsl/VulkanRelaxedTest.FromFile/2 (122 ms) 2: [ RUN ] Glsl/VulkanRelaxedTest.FromFile/3 2: [ OK ] Glsl/VulkanRelaxedTest.FromFile/3 (17 ms) 2: [ RUN ] Glsl/VulkanRelaxedTest.FromFile/4 2: glslangtests: ../SPIRV/../glslang/MachineIndependent/../Include/../Include/Types.h:1795: virtual const TString& glslang::TType::getFieldName() const: Assertion `fieldName' failed.

I am getting this error with a clean build off of the main branch.

arcady-lunarg commented 4 months ago

I am not seeing this failure, neither is the CI. That's really odd, are you sure you're doing a clean build from latest source and not picking up any changes? Also, if you make your branch editable by maintainers I can just push the updated test as a separate commit on top of yours.

wooyoungqcom commented 4 months ago

I did the clean build with the latest source. Let me try it again. One difference I have from the main branch is I had to add "stdc++fs"

target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES} -lstdc++fs)

Without it, the build fails on my Linux box.

Let me also make the branch editable by maintainers.

wooyoungqcom commented 4 months ago

Clean re-build from the scratch resolved the issue.

I updated Test/baseResults/460.frag.out