mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-27 07:44:16 +08:00
feature: Add interface for Ext area regarding payload args in zebin spec
Related-To: NEO-14899, IGC-11358 Signed-off-by: Arek G <arkadiusz.grubba@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
50303d7c60
commit
695ef4877a
@@ -663,7 +663,19 @@ inline constexpr OffsetT offset = -1;
|
||||
inline constexpr BtiValueT btiValue = -1;
|
||||
} // namespace Defaults
|
||||
|
||||
struct PayloadArgumentBaseT {
|
||||
struct PayloadArgumentExtT;
|
||||
PayloadArgumentExtT *allocatePayloadArgumentExt();
|
||||
void freePayloadArgumentExt(PayloadArgumentExtT *);
|
||||
|
||||
struct PayloadArgumentBaseT final {
|
||||
PayloadArgumentBaseT() {
|
||||
pPayArgExt = allocatePayloadArgumentExt();
|
||||
}
|
||||
~PayloadArgumentBaseT() {
|
||||
freePayloadArgumentExt(pPayArgExt);
|
||||
}
|
||||
PayloadArgumentExtT *pPayArgExt = nullptr;
|
||||
|
||||
ArgTypeT argType = argTypeUnknown;
|
||||
OffsetT offset = Defaults::offset;
|
||||
SourceOffseT sourceOffset = Defaults::sourceOffset;
|
||||
|
||||
@@ -1107,7 +1107,8 @@ DecodeError readZeInfoPayloadArguments(const Yaml::YamlParser &parser, const Yam
|
||||
for (const auto &payloadArgumentMemberNd : parser.createChildrenRange(payloadArgumentNd)) {
|
||||
auto key = parser.readKey(payloadArgumentMemberNd);
|
||||
if (Tags::Kernel::PayloadArgument::argType == key) {
|
||||
validPayload &= readZeInfoEnumChecked(parser, payloadArgumentMemberNd, payloadArgMetadata.argType, context, outErrReason);
|
||||
validPayload &= readZeInfoArgTypeNameCheckedExt(parser, payloadArgumentMemberNd, payloadArgMetadata) ||
|
||||
readZeInfoEnumChecked(parser, payloadArgumentMemberNd, payloadArgMetadata.argType, context, outErrReason);
|
||||
} else if (Tags::Kernel::PayloadArgument::argIndex == key) {
|
||||
validPayload &= parser.readValueChecked(payloadArgumentMemberNd, payloadArgMetadata.argIndex);
|
||||
outMaxPayloadArgumentIndex = std::max<int32_t>(outMaxPayloadArgumentIndex, payloadArgMetadata.argIndex);
|
||||
@@ -1207,6 +1208,9 @@ DecodeError populateKernelPayloadArgument(NEO::KernelDescriptor &dst, const Kern
|
||||
|
||||
switch (src.argType) {
|
||||
default:
|
||||
if (DecodeError::success == populateKernelPayloadArgumentExt(dst, src, outErrReason)) {
|
||||
return DecodeError::success;
|
||||
}
|
||||
outErrReason.append("DeviceBinaryFormat::zebin : Invalid arg type in cross thread data section in context of : " + kernelName + ".\n");
|
||||
return DecodeError::invalidBinary; // unsupported
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace Zebin::ZeInfo {
|
||||
inline constexpr NEO::Zebin::ZeInfo::Types::Version zeInfoDecoderVersion{1, 54};
|
||||
|
||||
using KernelExecutionEnvBaseT = Types::Kernel::ExecutionEnv::ExecutionEnvBaseT;
|
||||
using KernelPayloadArgBaseT = Types::Kernel::PayloadArgument::PayloadArgumentBaseT;
|
||||
|
||||
template <typename T>
|
||||
bool readZeInfoValueChecked(const NEO::Yaml::YamlParser &parser, const NEO::Yaml::Node &node, T &outValue, ConstStringRef context, std::string &outErrReason);
|
||||
|
||||
@@ -17,6 +17,10 @@ void readZeInfoValueCheckedExtra(const NEO::Yaml::YamlParser &parser, const NEO:
|
||||
encounterUnknownZeInfoAttribute(entry.str(), outErrReason, outWarning, error);
|
||||
}
|
||||
|
||||
bool readZeInfoArgTypeNameCheckedExt(const NEO::Yaml::YamlParser &parser, const NEO::Yaml::Node &payloadArgumentMemberNd, KernelPayloadArgBaseT &outKernelPayArg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace Types::Kernel::ExecutionEnv {
|
||||
ExecutionEnvExt *allocateExecEnvExt() {
|
||||
return nullptr;
|
||||
@@ -28,4 +32,16 @@ void freeExecEnvExt(ExecutionEnvExt *envExt) {
|
||||
void populateKernelExecutionEnvironmentExt(KernelDescriptor &dst, const KernelExecutionEnvBaseT &execEnv, const Types::Version &srcZeInfoVersion) {
|
||||
}
|
||||
|
||||
namespace Types::Kernel::PayloadArgument {
|
||||
PayloadArgumentExtT *allocatePayloadArgumentExt() {
|
||||
return nullptr;
|
||||
}
|
||||
void freePayloadArgumentExt(PayloadArgumentExtT *pPayArgExt) {
|
||||
}
|
||||
} // namespace Types::Kernel::PayloadArgument
|
||||
|
||||
DecodeError populateKernelPayloadArgumentExt(NEO::KernelDescriptor &dst, const KernelPayloadArgBaseT &src, std::string &outErrReason) {
|
||||
return DecodeError::unhandledBinary;
|
||||
}
|
||||
|
||||
} // namespace NEO::Zebin::ZeInfo
|
||||
|
||||
@@ -13,4 +13,8 @@ namespace NEO::Zebin::ZeInfo {
|
||||
|
||||
void populateKernelExecutionEnvironmentExt(KernelDescriptor &dst, const KernelExecutionEnvBaseT &execEnv, const Types::Version &srcZeInfoVersion);
|
||||
|
||||
DecodeError populateKernelPayloadArgumentExt(NEO::KernelDescriptor &dst, const KernelPayloadArgBaseT &src, std::string &outErrReason);
|
||||
|
||||
bool readZeInfoArgTypeNameCheckedExt(const NEO::Yaml::YamlParser &parser, const NEO::Yaml::Node &payloadArgumentMemberNd, KernelPayloadArgBaseT &outKernelPayArg);
|
||||
|
||||
} // namespace NEO::Zebin::ZeInfo
|
||||
|
||||
Reference in New Issue
Block a user