- Notifications
You must be signed in to change notification settings - Fork 805
Description
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:
DirectXShaderCompiler/include/dxc/dxcapi.internal.h
Lines 163 to 172 in a2979e7
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
Projects
Status