feature: assert support - decode zebin argument

Related-To: NEO-5753

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2023-03-17 09:01:10 +00:00
committed by Compute-Runtime-Automation
parent a4a296d59f
commit c0794bd974
4 changed files with 29 additions and 2 deletions

View File

@@ -119,6 +119,7 @@ inline constexpr ConstStringRef syncBuffer("sync_buffer");
inline constexpr ConstStringRef rtGlobalBuffer("rt_global_buffer");
inline constexpr ConstStringRef dataConstBuffer("const_base");
inline constexpr ConstStringRef dataGlobalBuffer("global_base");
inline constexpr ConstStringRef assertBuffer("assert_buffer");
namespace Image {
inline constexpr ConstStringRef width("image_width");
@@ -482,6 +483,7 @@ enum ArgType : uint8_t {
ArgTypeRtGlobalBuffer,
ArgTypeDataConstBuffer,
ArgTypeDataGlobalBuffer,
ArgTypeAssertBuffer,
ArgTypeMax
};

View File

@@ -1205,6 +1205,10 @@ DecodeError populateKernelPayloadArgument(NEO::KernelDescriptor &dst, const Kern
dst.kernelAttributes.flags.usesPrintf = true;
return populateArgPointerStateless(dst.payloadMappings.implicitArgs.printfSurfaceAddress);
case Types::Kernel::ArgTypeAssertBuffer:
dst.kernelAttributes.flags.usesAssert = true;
return populateArgPointerStateless(dst.payloadMappings.implicitArgs.assertBufferAddress);
case Types::Kernel::ArgTypeSyncBuffer:
dst.kernelAttributes.flags.usesSyncBuffer = true;
return populateArgPointerStateless(dst.payloadMappings.implicitArgs.syncBufferAddress);

View File

@@ -22,7 +22,7 @@ using namespace Tags::Kernel::PayloadArgument::ArgType::Sampler::Vme;
using ArgType = Types::Kernel::ArgType;
inline constexpr ConstStringRef name = "argument type";
inline constexpr LookupArray<ConstStringRef, ArgType, 38> lookup({{{packedLocalIds, ArgType::ArgTypePackedLocalIds},
inline constexpr LookupArray<ConstStringRef, ArgType, 39> lookup({{{packedLocalIds, ArgType::ArgTypePackedLocalIds},
{localId, ArgType::ArgTypeLocalId},
{localSize, ArgType::ArgTypeLocalSize},
{groupCount, ArgType::ArgTypeGroupCount},
@@ -59,7 +59,8 @@ inline constexpr LookupArray<ConstStringRef, ArgType, 38> lookup({{{packedLocalI
{syncBuffer, ArgType::ArgTypeSyncBuffer},
{rtGlobalBuffer, ArgType::ArgTypeRtGlobalBuffer},
{dataConstBuffer, ArgType::ArgTypeDataConstBuffer},
{dataGlobalBuffer, ArgType::ArgTypeDataGlobalBuffer}}});
{dataGlobalBuffer, ArgType::ArgTypeDataGlobalBuffer},
{assertBuffer, ArgType::ArgTypeAssertBuffer}}});
static_assert(lookup.size() == ArgType::ArgTypeMax - 1, "Every enum field must be present");
} // namespace ArgType

View File

@@ -4886,6 +4886,26 @@ TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypePrintfBufferWhenOffsetAndSizeIsV
EXPECT_EQ(8U, printfSurfaceAddress.pointerSize);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypeAssertBufferWhenOffsetAndSizeIsValidThenPopulatesKernelDescriptor) {
ConstStringRef zeinfo = R"===(
kernels:
- name : some_kernel
execution_env:
simd_size: 32
payload_arguments:
- arg_type: assert_buffer
offset: 32
size: 8
)===";
auto err = decodeZeInfoKernelEntry(zeinfo);
EXPECT_EQ(NEO::DecodeError::Success, err);
EXPECT_TRUE(errors.empty()) << errors;
EXPECT_TRUE(warnings.empty()) << warnings;
const auto assertBufferAddress = kernelDescriptor->payloadMappings.implicitArgs.assertBufferAddress;
ASSERT_EQ(32U, assertBufferAddress.stateless);
EXPECT_EQ(8U, assertBufferAddress.pointerSize);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypeSyncBufferWhenOffsetAndSizeIsValidThenPopulatesKernelDescriptor) {
ConstStringRef zeinfo = R"===(
kernels: