Vulkan-Samples icon indicating copy to clipboard operation
Vulkan-Samples copied to clipboard

Add sample demonstrating VK_KHR_shader_relaxed_extended_instruction

Open gpx1000 opened this issue 2 months ago • 2 comments

Description

Add a sample that shows how to use VK_KHR_shader_relaxed_extended_instruction and tutorial for it.

Fixes #

General Checklist:

Please ensure the following points are checked:

  • [ ] My code follows the coding style
  • [ ] I have reviewed file licenses
  • [ ] I have commented any added functions (in line with Doxygen)
  • [ ] I have commented any code that could be hard to understand
  • [ ] My changes do not add any new compiler warnings
  • [ ] My changes do not add any new validation layer errors or warnings
  • [ ] I have used existing framework/helper functions where possible
  • [ ] My changes do not add any regressions
  • [ ] I have tested every sample to ensure everything runs correctly
  • [ ] This PR describes the scope and expected impact of the changes I am making

Note: The Samples CI runs a number of checks including:

  • [ ] I have updated the header Copyright to reflect the current year (CI build will fail if Copyright is out of date)
  • [ ] My changes build on Windows, Linux, macOS and Android. Otherwise I have documented any exceptions

If this PR contains framework changes:

  • [ ] I did a full batch run using the batch command line argument to make sure all samples still work properly

Sample Checklist

If your PR contains a new or modified sample, these further checks must be carried out in addition to the General Checklist:

  • [ ] I have tested the sample on at least one compliant Vulkan implementation
  • [ ] If the sample is vendor-specific, I have tagged it appropriately
  • [ ] I have stated on what implementation the sample has been tested so that others can test on different implementations and platforms
  • [ ] Any dependent assets have been merged and published in downstream modules
  • [ ] For new samples, I have added a paragraph with a summary to the appropriate chapter in the readme of the folder that the sample belongs to e.g. api samples readme
  • [ ] For new samples, I have added a tutorial README.md file to guide users through what they need to know to implement code using this feature. For example, see conditional_rendering
  • [ ] For new samples, I have added a link to the Antora navigation so that the sample will be listed at the Vulkan documentation site

gpx1000 avatar Oct 16 '25 21:10 gpx1000

I'm not really sure what I'm expecting to see with this sample.

What I'm currently seeing is that I seem to have some seemingly random framebuffers begin displayed, and a bunch of these being printed to the console:

[info] vkQueueSubmit(): pSubmits[0] DebugPrintf:
relaxed-ext-inst demo: gid = 0
[info] vkQueueSubmit(): pSubmits[0] DebugPrintf:
relaxed-ext-inst demo: gid = 0

gary-sweet avatar Oct 20 '25 10:10 gary-sweet

Hello! I looked at the SPIR-V file in this PR (relaxed_demo.comp.spv) and it seams it has no OpExtInstWithForwardRef instructions.

I don't know if GLSL emits those, but you can have a HLSL shader doing the same thing with the following code:

// RUN: %dxc %s -T cs_6_0 -spirv -fspv-target-env=vulkan1.3 -E main -fspv-debug=vulkan-with-source -O3

class A {
  void foo(uint3 gid) {
    printf("relaxed-ext-inst demo: gid = %u", gid.x);
  }
};

[numthreads(1, 1, 1)]
void main(uint3 gid : SV_DispatchThreadID)
{
  A a;
  a.foo(tid);
}

Here, one OpExtInstWithForwardRefs will be emitted as we have debug info with a class method, which brings a circular dependencies in the debug instructions.

Keenuts avatar Oct 31 '25 10:10 Keenuts