File: address_patch.h

package info (click to toggle)
intel-compute-runtime 25.35.35096.9-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 79,324 kB
  • sloc: cpp: 926,243; lisp: 3,433; sh: 715; makefile: 162; python: 21
file content (80 lines) | stat: -rw-r--r-- 2,394 bytes parent folder | download | duplicates (2)
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