mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
New patch token for pure stateful buffer access
Change-Id: I90589a1cc3c3fa3608e7a5da438660ed85efcffa
This commit is contained in:

committed by
sys_ocldev

parent
d2e820aac8
commit
4a6be207cd
@ -49,6 +49,7 @@ struct KernelArgInfo {
|
||||
bool isAccelerator = false;
|
||||
bool isDeviceQueue = false;
|
||||
bool isBuffer = false;
|
||||
bool pureStatefulBufferAccess = false;
|
||||
uint32_t samplerArgumentType = 0;
|
||||
uint32_t offsetImgWidth = undefinedOffset;
|
||||
uint32_t offsetImgHeight = undefinedOffset;
|
||||
|
@ -20,17 +20,17 @@
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "patch_list.h"
|
||||
#include "patch_shared.h"
|
||||
#include "program.h"
|
||||
#include "program_debug_data.h"
|
||||
#include "runtime/helpers/aligned_memory.h"
|
||||
#include "runtime/helpers/debug_helpers.h"
|
||||
#include "runtime/helpers/hash.h"
|
||||
#include "runtime/helpers/ptr_math.h"
|
||||
#include "runtime/helpers/string.h"
|
||||
#include "runtime/memory_manager/memory_manager.h"
|
||||
#include "patch_list.h"
|
||||
#include "patch_shared.h"
|
||||
#include "program_debug_data.h"
|
||||
#include "program.h"
|
||||
#include "runtime/kernel/kernel.h"
|
||||
#include "runtime/memory_manager/memory_manager.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@ -436,6 +436,11 @@ cl_int Program::parsePatchList(KernelInfo &kernelInfo) {
|
||||
kernelInfo.kernelArgInfo[argNum].offsetNumMipLevels = pDataParameterBuffer->Offset;
|
||||
DEBUG_BREAK_IF(pDataParameterBuffer->DataSize != sizeof(uint32_t));
|
||||
break;
|
||||
case DATA_PARAMETER_BUFFER_STATEFUL:
|
||||
DBG_LOG(LogPatchTokens, "\n .Type", "BUFFER_STATEFUL");
|
||||
kernelInfo.resizeKernelArgInfoAndRegisterParameter(argNum);
|
||||
kernelInfo.kernelArgInfo[argNum].pureStatefulBufferAccess = true;
|
||||
break;
|
||||
case DATA_PARAMETER_IMAGE_SRGB_CHANNEL_ORDER:
|
||||
case DATA_PARAMETER_STAGE_IN_GRID_ORIGIN:
|
||||
case DATA_PARAMETER_STAGE_IN_GRID_SIZE:
|
||||
|
@ -23,8 +23,8 @@
|
||||
#include "runtime/helpers/string.h"
|
||||
#include "runtime/platform/platform.h"
|
||||
#include "runtime/program/program.h"
|
||||
#include "unit_tests/helpers/gtest_helpers.h"
|
||||
#include "unit_tests/fixtures/kernel_data_fixture.h"
|
||||
#include "unit_tests/helpers/gtest_helpers.h"
|
||||
|
||||
TEST_F(KernelDataTest, KernelInfo_Name) {
|
||||
kernelName = "myTestKernel";
|
||||
@ -463,6 +463,13 @@ TEST_P(DataParameterTest, DataParameterTests) {
|
||||
if (pKernelInfo->patchInfo.dataParameterBuffers.size() > 0) {
|
||||
EXPECT_EQ_CONST(PATCH_TOKEN_DATA_PARAMETER_BUFFER, pKernelInfo->patchInfo.dataParameterBuffers[0]->Token);
|
||||
EXPECT_EQ_VAL(GetParam(), pKernelInfo->patchInfo.dataParameterBuffers[0]->Type);
|
||||
if (pKernelInfo->kernelArgInfo.size() == dataParameterToken.ArgumentNumber + 1) {
|
||||
if (GetParam() == DATA_PARAMETER_BUFFER_STATEFUL) {
|
||||
EXPECT_TRUE(pKernelInfo->kernelArgInfo[dataParameterToken.ArgumentNumber].pureStatefulBufferAccess);
|
||||
} else {
|
||||
EXPECT_FALSE(pKernelInfo->kernelArgInfo[dataParameterToken.ArgumentNumber].pureStatefulBufferAccess);
|
||||
}
|
||||
} // no else - some params are skipped
|
||||
}
|
||||
}
|
||||
|
||||
@ -494,6 +501,24 @@ TEST_F(KernelDataParameterTest, DataParameterTestsDataPatameterBufferOffset) {
|
||||
EXPECT_EQ_VAL(DATA_PARAMETER_BUFFER_OFFSET, pKernelInfo->patchInfo.dataParameterBuffers[0]->Type);
|
||||
}
|
||||
|
||||
TEST_F(KernelDataParameterTest, givenDataParameterBufferStatefulWhenDecodingThenSetArgAsPureStateful) {
|
||||
SPatchDataParameterBuffer dataParameterToken = {};
|
||||
dataParameterToken.Token = PATCH_TOKEN_DATA_PARAMETER_BUFFER;
|
||||
dataParameterToken.Size = sizeof(SPatchDataParameterBuffer);
|
||||
dataParameterToken.Type = DATA_PARAMETER_BUFFER_STATEFUL;
|
||||
dataParameterToken.ArgumentNumber = 1;
|
||||
|
||||
pPatchList = &dataParameterToken;
|
||||
patchListSize = dataParameterToken.Size;
|
||||
|
||||
buildAndDecode();
|
||||
|
||||
ASSERT_EQ(1u, pKernelInfo->patchInfo.dataParameterBuffers.size());
|
||||
EXPECT_EQ_CONST(PATCH_TOKEN_DATA_PARAMETER_BUFFER, pKernelInfo->patchInfo.dataParameterBuffers[0]->Token);
|
||||
EXPECT_EQ_VAL(DATA_PARAMETER_BUFFER_STATEFUL, pKernelInfo->patchInfo.dataParameterBuffers[0]->Type);
|
||||
EXPECT_TRUE(pKernelInfo->kernelArgInfo[dataParameterToken.ArgumentNumber].pureStatefulBufferAccess);
|
||||
}
|
||||
|
||||
TEST_F(KernelDataParameterTest, givenUnknownDataParameterWhenDecodedThenParameterIsIgnored) {
|
||||
SPatchDataParameterBuffer dataParameterToken;
|
||||
dataParameterToken.Token = PATCH_TOKEN_DATA_PARAMETER_BUFFER;
|
||||
|
Reference in New Issue
Block a user