1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/*
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include <stdint.h>
namespace NEO {
enum PatchInfoAllocationType {
defaultType = 0,
kernelArg,
generalStateHeap,
dynamicStateHeap,
indirectObjectHeap,
surfaceStateHeap,
instructionHeap,
tagAddress,
tagValue,
gucStartMessage,
scratchSpace
};
struct PatchInfoData {
uint64_t sourceAllocation;
uint64_t sourceAllocationOffset;
PatchInfoAllocationType sourceType;
uint64_t targetAllocation;
uint64_t targetAllocationOffset;
PatchInfoAllocationType targetType;
uint32_t patchAddressSize;
PatchInfoData(uint64_t sourceAllocation,
uint64_t sourceAllocationOffset,
PatchInfoAllocationType sourceType,
uint64_t targetAllocation,
uint64_t targetAllocationOffset,
PatchInfoAllocationType targetType,
uint32_t patchAddressSize)
: sourceAllocation(sourceAllocation),
sourceAllocationOffset(sourceAllocationOffset),
sourceType(sourceType),
targetAllocation(targetAllocation),
targetAllocationOffset(targetAllocationOffset),
targetType(targetType),
patchAddressSize(patchAddressSize) {
}
PatchInfoData(uint64_t sourceAllocation,
uint64_t sourceAllocationOffset,
PatchInfoAllocationType sourceType,
uint64_t targetAllocation,
uint64_t targetAllocationOffset,
PatchInfoAllocationType targetType)
: sourceAllocation(sourceAllocation),
sourceAllocationOffset(sourceAllocationOffset),
sourceType(sourceType),
targetAllocation(targetAllocation),
targetAllocationOffset(targetAllocationOffset),
targetType(targetType),
patchAddressSize(sizeof(void *)) {
}
bool requiresIndirectPatching() {
return (targetType != PatchInfoAllocationType::defaultType && targetType != PatchInfoAllocationType::gucStartMessage);
}
};
struct CommandChunk {
uint64_t baseAddressCpu = 0;
uint64_t baseAddressGpu = 0;
uint64_t startOffset = 0;
uint64_t endOffset = 0;
uint64_t batchBufferStartLocation = 0;
uint64_t batchBufferStartAddress = 0;
};
} // namespace NEO
|