Files
compute-runtime/opencl/source/sharings/gl/gl_arb_sync_event.h
Maciej Plewka 4b42b066f8 Use dedicated using type for TaskCount
Related-To: NEO-7155

Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
2022-11-28 16:44:44 +01:00

65 lines
1.9 KiB
C++

/*
* Copyright (C) 2018-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "opencl/source/event/event.h"
struct _tagCLGLSyncInfo;
typedef _tagCLGLSyncInfo CL_GL_SYNC_INFO;
namespace NEO {
class Context;
class GLSharingFunctions;
class OsInterface;
class OsContext;
char *createArbSyncEventName();
void destroyArbSyncEventName(char *name);
void cleanupArbSyncObject(OSInterface &osInterface, CL_GL_SYNC_INFO *glSyncInfo);
bool setupArbSyncObject(GLSharingFunctions &sharing, OSInterface &osInterface, CL_GL_SYNC_INFO &glSyncInfo);
void signalArbSyncObject(OsContext &osContext, CL_GL_SYNC_INFO &glSyncInfo);
void serverWaitForArbSyncObject(OSInterface &osInterface, CL_GL_SYNC_INFO &glSyncInfo);
class GlArbSyncEvent : public Event {
public:
GlArbSyncEvent() = delete;
~GlArbSyncEvent() override;
void unblockEventBy(Event &event, TaskCountType taskLevel, int32_t transitionStatus) override;
static GlArbSyncEvent *create(Event &baseEvent);
CL_GL_SYNC_INFO *getSyncInfo() {
return glSyncInfo.get();
}
protected:
GlArbSyncEvent(Context &context);
MOCKABLE_VIRTUAL bool setBaseEvent(Event &ev);
Event *baseEvent = nullptr;
OSInterface *osInterface = nullptr;
std::unique_ptr<CL_GL_SYNC_INFO> glSyncInfo;
};
} // namespace NEO
extern "C" CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMarkerWithSyncObjectINTEL(cl_command_queue commandQueue,
cl_event *event,
cl_context *context);
extern "C" CL_API_ENTRY cl_int CL_API_CALL
clGetCLObjectInfoINTEL(cl_mem memObj,
void *pResourceInfo);
extern "C" CL_API_ENTRY cl_int CL_API_CALL
clGetCLEventInfoINTEL(cl_event event, CL_GL_SYNC_INFO **pSyncInfoHandleRet, cl_context *pClContextRet);
extern "C" CL_API_ENTRY cl_int CL_API_CALL
clReleaseGlSharedEventINTEL(cl_event event);