mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 01:04:57 +08:00
feat(zebin): Support for is_pipe ptr argument attribute
Pipe qualifier must be set (known) on kernel initialization in order to properly chose kernel arg handler. A new attribute is_pipe has been introduced; this commit adds support for it. Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
efe1afb698
commit
50df7f430e
@@ -197,6 +197,7 @@ constexpr ConstStringRef samplerType("sampler_type");
|
||||
constexpr ConstStringRef addrMode("sampler_desc_addrmode");
|
||||
constexpr ConstStringRef filterMode("sampler_desc_filtermode");
|
||||
constexpr ConstStringRef normalized("sampler_desc_normalized");
|
||||
constexpr ConstStringRef isPipe("is_pipe");
|
||||
|
||||
namespace ArgType {
|
||||
constexpr ConstStringRef localSize("local_size");
|
||||
@@ -686,6 +687,7 @@ struct PayloadArgumentBaseT {
|
||||
ImageType imageType = ImageTypeUnknown;
|
||||
bool imageTransformable = false;
|
||||
SamplerType samplerType = SamplerTypeUnknown;
|
||||
bool isPipe = false;
|
||||
};
|
||||
|
||||
} // namespace PayloadArgument
|
||||
|
||||
@@ -585,6 +585,8 @@ DecodeError readZeInfoPayloadArguments(const NEO::Yaml::YamlParser &parser, cons
|
||||
validPayload &= readZeInfoValueChecked(parser, payloadArgumentMemberNd, payloadArgMetadata.imageTransformable, context, outErrReason);
|
||||
} else if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::PayloadArgument::samplerType == key) {
|
||||
validPayload &= readZeInfoEnumChecked(parser, payloadArgumentMemberNd, payloadArgMetadata.samplerType, context, outErrReason);
|
||||
} else if (NEO::Elf::ZebinKernelMetadata::Tags::Kernel::PayloadArgument::isPipe == key) {
|
||||
validPayload &= readZeInfoValueChecked(parser, payloadArgumentMemberNd, payloadArgMetadata.isPipe, context, outErrReason);
|
||||
} else {
|
||||
outWarning.append("DeviceBinaryFormat::Zebin::" + NEO::Elf::SectionsNamesZebin::zeInfo.str() + " : Unknown entry \"" + key.str() + "\" for payload argument in context of " + context.str() + "\n");
|
||||
}
|
||||
@@ -868,6 +870,9 @@ NEO::DecodeError populateArgDescriptor(const NEO::Elf::ZebinKernelMetadata::Type
|
||||
argTraits.argByValSize = sizeof(void *);
|
||||
if (dst.payloadMappings.explicitArgs[src.argIndex].is<NEO::ArgDescriptor::ArgTPointer>()) {
|
||||
dst.payloadMappings.explicitArgs[src.argIndex].as<ArgDescPointer>().accessedUsingStatelessAddressingMode = false;
|
||||
if (src.isPipe) {
|
||||
argTraits.typeQualifiers.pipeQual = true;
|
||||
}
|
||||
}
|
||||
switch (src.addrmode) {
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user