Skip to content

Commit c0853b9

Browse files
WA Passing function pointers to gtpin
Signed-off-by: Maciej Plewka <[email protected]>
1 parent beb04bd commit c0853b9

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

opencl/source/gtpin/gtpin_init.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@ bool isGTPinInitialized = false;
2222
gtpin::ocl::gtpin_events_t GTPinCallbacks = {0};
2323
} // namespace NEO
2424

25+
// Do not change this code, needed to avoid compiler optimization that breaks GTPin_Init
26+
// Beginning
27+
void passCreateBuffer(BufferAllocateFPTR src, BufferAllocateFPTR &dst) {
28+
dst = src;
29+
}
30+
void passFreeBuffer(BufferDeallocateFPTR src, BufferDeallocateFPTR &dst) {
31+
dst = src;
32+
}
33+
void passMapBuffer(BufferMapFPTR src, BufferMapFPTR &dst) {
34+
dst = src;
35+
}
36+
void passUnMapBuffer(BufferUnMapFPTR src, BufferUnMapFPTR &dst) {
37+
dst = src;
38+
}
39+
// End of WA
2540
GTPIN_DI_STATUS GTPin_Init(gtpin::ocl::gtpin_events_t *pGtpinEvents, driver_services_t *pDriverServices,
2641
interface_version_t *pDriverVersion) {
2742
if (isGTPinInitialized) {
@@ -48,11 +63,18 @@ GTPIN_DI_STATUS GTPin_Init(gtpin::ocl::gtpin_events_t *pGtpinEvents, driver_serv
4863
return GTPIN_DI_ERROR_INVALID_ARGUMENT;
4964
}
5065

51-
pDriverServices->bufferAllocate = NEO::gtpinCreateBuffer;
52-
pDriverServices->bufferDeallocate = NEO::gtpinFreeBuffer;
53-
pDriverServices->bufferMap = NEO::gtpinMapBuffer;
54-
pDriverServices->bufferUnMap = NEO::gtpinUnmapBuffer;
66+
// Do not change this code, needed to avoid compiler optimization that breaks GTPin_Init
67+
// Beginning
68+
auto createBuffer = NEO::gtpinCreateBuffer;
69+
auto freeBuffer = NEO::gtpinFreeBuffer;
70+
auto mapBuffer = NEO::gtpinMapBuffer;
71+
auto unMapBuffer = NEO::gtpinUnmapBuffer;
5572

73+
passCreateBuffer(createBuffer, pDriverServices->bufferAllocate);
74+
passFreeBuffer(freeBuffer, pDriverServices->bufferDeallocate);
75+
passMapBuffer(mapBuffer, pDriverServices->bufferMap);
76+
passUnMapBuffer(unMapBuffer, pDriverServices->bufferUnMap);
77+
// End of WA
5678
GTPinCallbacks = *pGtpinEvents;
5779
isGTPinInitialized = true;
5880

0 commit comments

Comments
 (0)