Skip to content

Update HLSL_INTRINSIC with Flags field and MinShaderModel for SM 6.9 requirements #7198

@tex3d

Description

@tex3d

SER changes in #7097 require a new boolean in the HLSL_INTRINSIC struct used for HLSL intrinsic tables. I am also recommending the use of availability attributes for the shader model checks, as we recently agreed to use this approach. However, availability attributes on intrinsics will also require additional information captured in this HLSL_INTRINSIC struct.

We can't make a change to the HLSL_INTRINSIC struct without breaking internal integration with our user of the extension API.

I propose making an NFC change ahead of the SER PR merge that replaces the separate BOOL fields with a single UINT Flags field, adds a MinShaderModel field, defines the flag values, and updates the scripts that generate the tables. We can prepare a parallel change to scripts that generate internal intrinsic tables to unblock integration.

After that change is made, the SER PR can merge naturally without breaking internal integration.

See the current definition of HLSL_INTRINSIC here:

struct HLSL_INTRINSIC {
UINT Op; // Intrinsic Op ID
BOOL bReadOnly; // Only read memory
BOOL bReadNone; // Not read memory
BOOL bIsWave; // Is a wave-sensitive op
INT iOverloadParamIndex; // Parameter decide the overload type, -1 means ret
// type
UINT uNumArgs; // Count of arguments in pArgs.
const HLSL_INTRINSIC_ARGUMENT *pArgs; // Pointer to first argument.
};

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Triaged

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions