/* * Copyright (C) 2019-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "opencl/test/unit_test/command_stream/compute_mode_tests.h" HWTEST2_F(ComputeModeRequirements, givenCsrRequestFlagsWithSharedHandlesWhenCommandSizeIsCalculatedThenCorrectCommandSizeIsReturned, IsTGLLP) { SetUpImpl(); using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE; using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT; auto cmdsSize = sizeof(STATE_COMPUTE_MODE) + 3 * sizeof(PIPE_CONTROL) + 2 * sizeof(PIPELINE_SELECT); char buff[1024]; LinearStream stream(buff, 1024); overrideComputeModeRequest(false, false, true); auto retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(false, true, true); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, true, true); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, false, true); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(false, false, true, true, 127u); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); } HWTEST2_F(ComputeModeRequirements, givenCsrRequestFlagsWithoutSharedHandlesWhenCommandSizeIsCalculatedThenCorrectCommandSizeIsReturned, IsTGLLP) { SetUpImpl(); using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE; using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT; auto cmdsSize = sizeof(STATE_COMPUTE_MODE) + 2 * sizeof(PIPE_CONTROL) + 2 * sizeof(PIPELINE_SELECT); char buff[1024]; LinearStream stream(buff, 1024); overrideComputeModeRequest(false, false, false); auto retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(0u, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(0u, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, true, false); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, false, false); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(false, false, false, true, 127u); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); } HWTEST2_F(ComputeModeRequirements, givenCsrRequestOnEngineCCSWhenCommandSizeIsCalculatedThenCorrectCommandSizeIsReturned, IsTGLLP) { auto hwInfo = *defaultHwInfo; hwInfo.featureTable.ftrCCSNode = true; hwInfo.capabilityTable.defaultEngineType = aub_stream::ENGINE_CCS; SetUpImpl(&hwInfo); using STATE_COMPUTE_MODE = typename FamilyType::STATE_COMPUTE_MODE; auto cmdsSize = sizeof(STATE_COMPUTE_MODE); char buff[1024]; LinearStream stream(buff, 1024); overrideComputeModeRequest(false, false, false); auto retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(0u, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(0u, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, true, false); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(true, false, false); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); stream.replaceBuffer(buff, 1024); overrideComputeModeRequest(false, false, false, true, 127u); retSize = getCsrHw()->getCmdSizeForComputeMode(); EXPECT_EQ(cmdsSize, retSize); getCsrHw()->programComputeMode(stream, flags, *defaultHwInfo); EXPECT_EQ(cmdsSize, stream.getUsed()); }