- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We use half on mobile devices, and on other desktop gpus. Intel Vulkan drivers post full support for half/fp16/float16_t usage.
When we run our shaders on the latest Intel driver, the code crashes. If we replace float16_t/f16vec2/3/4 with float and vec2/3/4, then the crashes do not occur. But that's obviously not performant.
The code that kills the driver is little more that a mediump vec3 *= float16_t. I'm running the Vulkan 1.3 driver, but our shaders are only compiled for 1.2. We are also running glslc from 1.5 years back. This kind of construct shouldn't cause a driver crash.
It happens when we call vkCreateGraphicsPipelines, but the shader load produces no errors. We get the following message:
Unhandled exception at 0x00007FFF1AE38BD8 (igc64.dll) in App.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.
This is running on a Gen12 Alderlake gpu with Intel UHD Graphics 770.
Here's a permalink with the spriv source.
https://shader-playground.timjones.io/d8ffbb592f4bf8087c52040f20b9267f
```
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Alecazam,
Thank you for posting on the Intel® communities. I'm sorry for the inconvenience this might have caused you. Please help me with the following information in order to assist you:
- Does this only happen on our latest driver?
- To get more information from your system, please install the Intel® System Support Utility (Intel® SSU): https://downloadcenter.intel.com/download/25293/Intel-System-Support-Utility-for-Windows- Open the application and select "Everything" click on "Scan" to see the system and device information. By default, Intel® SSU will take you to the "Summary View". Click on the menu where it says "Summary" to change to "Detailed View". Click on "Next", save the report and attach it to your response.
Best regards,
Carlos L.
Intel Customer Support Technician.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is on latest Vulkan 1.3 driver. I only have an Alderlake w/integrated UHD Graphics 770. But I do have a discrete Arc A750 that I can try. It would be the same driver, so I suspect the same issue.
Note this is a reduced case of several shaders that were failing. So this may not be the only usage that crashes. But I hope this repros on your side. I did compare Spriv output from our old tools vs. shader playground, and the code is fairly similar. It's just promoting the fp16 to fp32, and them multiplying that against the fp32 vec3. That shouldn't cause a driver exception.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hey Carlos,
I'm a DevTech engineer on the Game Team and I'm already working with the driver and compiler team to get this sorted out!
Cheers,
Pete
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @PeteBrubaker, @Alecazam,
Thank you for your posts. Since Pete is already working to resolve this with his team we are going to proceed to close this thread. I appreciate your help.
Best regards,
Carlos L.
Intel Customer Support Technician.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm testing the fp16 support in Intel 31.0.101.5084, 12/21/23 release, and the driver is still broken for fp16 shaders.
These are the exceptions the driver throws when we feed it a small amount of fp16 shader data for our Avatar code. So we pass a nullptr pipeline, and get back nullptr, but with VK_SUCCESS. So I've added an assert for that. This shouldn't be returning success if the pipeline failed to build internally.
```
VkResult err = vkCreateGraphicsPipelines( m_device.device, m_device.cache, 1, &info, nullptr, &pipeline );
GFX_ASSERT_MSG( err == VK_SUCCESS, "Failed building shader pipeline %s: %s", shader.name, VulkanErrorString( err ) );
GFX_ASSERT_MSG( pipeline, "Intel driver probably returned success and nullptr pipeline for shaders using fp16 for shader %s", shader.name );
Intel 31.0.101.5084, 12/21/23 release
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: VK::Exception at memory location 0x0000009A907F8350.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: VK::Exception at memory location 0x0000009A907F8350.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: VK::Exception at memory location 0x0000009A907F8350.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFE6513CF19 in Sky.exe: Microsoft C++ exception: VK::Exception at memory location 0x0000009A907F8350.
```

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page