Skip to content

Merge 'release-1.8.2505' to 'staging-sm6.9' #7461

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
May 19, 2025

Conversation

tex3d
Copy link
Contributor

@tex3d tex3d commented May 19, 2025

Merge 'release-1.8.2505' to 'staging-sm6.9'. No conflicts.

simoll and others added 15 commits May 9, 2025 09:42
Validates:
 All resources
 All instructions using resources

Rules:
 'reordercoherent' may only be used in SM6.9+ in resource handles and
 resource declarations.
 Increment/DecrementCounter unsupported on 'reordercoherent' resources.

Create a new DXIL 1.9 variant of the 'CompileWhenOkThenCheckRDAT'
container test and restore the old one without 'reordercoherent'
(pre-microsoft#7250). The validator now rejects 'reordercoherent' in DXIL 1.3 and
accepts from DXIL 1.9+.

SER implementation tracker: microsoft#7214

---------

Co-authored-by: Tex Riddell <texr@microsoft.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…icrosoft#7401)

Change the definition of the HLSL `dot4add_i8packed` and
`dot4add_u8packed` intrinsics in `utils/hct/gen_intrin_main.txt` to
simply spell out the return types, rather than saying that their return
type is determined by their third argument.

This prevents DXC from trying to give those functions declarations like

declare i64 @"\01?dot4add_u8packed@hlsl@@YA_JII_J@Z"(i32, i32, i64
signext) #1

which seems to expect a 64-bit third argument and return value.

These functions are not generic, and they have only one overload, so
there is no need to use interesting `uComponentTypeId` values to get the
right effects, and `HLSLExternalSource::MatchArguments` seems to get
confused about how to treat argument types that affect the return types.

Fixes microsoft#7400.
…productoptimal and matrix stride must be zero (microsoft#7417)

Implements the DXIL portion of microsoft/hlsl-specs#494, The HLSL checks will be a part of the HLSL validation checks, did not add it to this PR due to shared infrastructure.
The SV_DispatchGrid DXIL metadata for a node input record was not
generated in cases where:
- the field with the SV_DispatchGrid semantic was in a nested record
- the field with the SV_DispatchGrid semantic was in a record field
- the field with the SV_DispatchGrid semantic was inherited from a base
record
- in any combinations of the above

Added FindDispatchGridSemantic() to be used by the
AddHLSLNodeRecordTypeInfo() function, and added a test case.

Fixes microsoft#6928

---------

Co-authored-by: Tim Corringham <tcorring@amd.com>
Co-authored-by: Tex Riddell <texr@microsoft.com>
Built-in DXR struct types RayDesc and
BuiltInTriangleIntersectionAttributes were not treated identically to
other UDT types.

This caused differences in intrinsic codegen when one of these types is
returned.

This change corrects this difference so these builtin structs are
handled in the same way as other UDTs.

Fixes microsoft#7450.
The SPIR-V operations require 32-bit floats. Smaller float type can be
cast to 32-bits to perform the operation. The FE already emits a warning
for 64-bits.

Fixes microsoft#7431
…#7454)

It is possible to have two struct types in spir-v that are the same
except for the decorations. Sometimes we have to reconstruct the value
from one type to another.

In the case of a vk::SpirvType, we do not know anything about the type,
so this should not happen. When trying to reconstuct the value, we
should simply return the original value.

Fixes microsoft#6963
To be consistent with DXIL, we will start emitting a warning for
extenally visible variables that have an initializer. Until now, there
were silently ignored.

Fixes microsoft#3950
microsoft#7446
This fixes some outdated documentation as well as a compile error when
enabling fvk-invert-y on lib files and makes sure that it only gets
enabled on SV_POSITION that is used in VS/GS/DS/MS (so PS doesn't get
caught in the crossfire).
Also tested the dx-position-w one and that one already has correct
behavior here.

---------

Co-authored-by: NielsbishereAlt <nb@osomi.net>
…osoft#7440)

Intrinsics that take UDT arguments need copy-in/copy-out. Other
aggregate args are flattened for intrinsic calls. Previously, these
operations were intermingled, driven by SROA on alloca/GV values.

There were RayDesc arguments that weren't treated consistently, and
weren't copied in when necessary, leading to problems. They should be
flattened into the intrinsic arguments, but TraceRay calls didn't do
this.

This change:
- flattens RayDesc args for all intrinsics that use them.
- separates the copy-in/copy-out generation into a separate operation
before SROA. Ideally, this copy-in/copy-out would have been generated by
CodeGen based on by-value passing, but that's a deeper intrinsic AST
issue potentially.
- Updated and added tests.

Fixes microsoft#7434.
…ft#7376)

- Generalize long vector diagnostics code to HitObjects.
- Diagnose unsupported use of HitObject in globals, entry params/returns
and various other shader-kind-specific contexts.
- Create HitObject variants from the invalid-longvec-decls*.hlsl tests
to make sure all cases are covered.

Specification:
https://github.com/microsoft/hlsl-specs/blob/main/proposals/0027-shader-execution-reordering.md

Closes microsoft#7234 [SER] Diagnose and validate illegal use of HitObject in
unsupported contexts (discussed offline)
This PR implements checks to validate the linalg builtin functions:
__builtin_MatVecMul, __builtin_MatVecMulAdd,
__builtin_OuterProductAccumulate and __builtin_VectorAccumulate. This
includes:
- verify valid types for input and output vectors
- const checks for compile-time const parameters
- value checks for interpretation and layout (enum) parameters
- min/max checks for matrix dimensions
- verify input-output vector are the right dimensions for the given
matrix (dimM and dimK) : packed and unpacked cases
- verify matrix layout, transpose and stride rules
- incorrect shader model warning

Adds tests for all the above error checks.

Implements
microsoft#7336
@damyanp damyanp merged commit 7f86d74 into microsoft:staging-sm6.9 May 19, 2025
13 checks passed
@github-project-automation github-project-automation bot moved this from New to Done in HLSL Roadmap May 19, 2025
@tex3d tex3d deleted the merge-release-to-staging-sm6.9 branch May 19, 2025 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

8 participants