HLSL 6.0 ... 6.9 and GPUTexture for d3d12#9077
HLSL 6.0 ... 6.9 and GPUTexture for d3d12#9077soufianekhiat wants to merge 25 commits intohalide:mainfrom
Conversation
|
Is that possible to have a maintainer trigger the CI for this one please? |
|
We don't seem to have any d3d12compute coverage on the buildbots. I'll need to add that prior to reviewing/merging this. |
Added this to tests HLSL 6.x features: |
|
I've modified the buildbots to test d3d12compute_sm65, which is the highest version both Windows bots support. We'll see how this goes! I notice that several features here are gated behind higher versions than that. I've tagged this |
|
Many tests require |
|
@soufianekhiat -- can you look at the codegen failures here? There seem to be two classes of bug:
|
Do we have tests for codegen? I just run locally the one I think are relevant. |
We don't have (many) compile-only tests... I'm just looking at the buildbot failures here; the issues are with invalid code being generated which is why I called them "codegen failures". Also, I'm noticing that there's some signed/unsigned mismatch happening somewhere. https://buildbot.halide-lang.org/master/#/builders/391/builds/385 |
|
@soufianekhiat - I've opened #9080 to test patches that are generally needed to fix the D3D12 backend, even for HLSL <6.0. That should provide a more stable foundation for this PR, which should be scoped to extending support to 6.0-6.9, rather than also including fundamental bug-fixes. |
|
@soufianekhiat - the HLSL 5.1 fixes are in, so please rebase/merge with main. |
|
Thanks |
- Remove dead duplicate strict_float handler (bad merge artifact); the ScopedValue<emit_precise> approach is the correct implementation - Fix strict_fma to emit mad() for float/float16 (HLSL fma() is double-only; mad() is the correct float FMA intrinsic) - Add hlsl_reinterpret_name() helper so 'as' casts always emit the correct HLSL name (asfloat/asint/asuint/asfloat16) regardless of SM level; fixes asfloat32_t -> asfloat regression at SM >= 6.2 - Fix DXC global name clashes: prefix all arg names with the kernel name via RenameKernelArgs IRMutator; rename cbuffer per-kernel to avoid redeclaration errors in multi-kernel pipelines
8872efc to
58223e6
Compare
slomp
left a comment
There was a problem hiding this comment.
A few observations and suggestions to get started.
(I will try to carve some time to review the runtime and code-gen properly, and to run everything locally).
|
@slomp here my systematic generation code: |
|
@soufianekhiat -- looks like you forgot to update Target.h/.cpp while changing the naming scheme to |
|
Just FYI, the buildbot changes I made affect all PRs, so I can't keep them indefinitely. After this week, I'm going to need to revert them if this isn't merged, so you'll need a way to test this locally rather than relying on CI for iteration. If there's something missing in your local setup that's making that hard, let me know and maybe I can help. I do want to see this land, I just need to keep the shared buildbot usage manageable. |
|
Make the tests skip 64 bits for skip correctness_{gpu_mixed_shared_mem_types, math, newtons_method}, unsupported on dx12 (DXGI_FORMAT). |
Breaking changes
Details:
Checklist