46 lines
1.7 KiB
C++
46 lines
1.7 KiB
C++
/*
|
|
* Copyright (C) 2018-2020 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include "opencl/extensions/public/cl_gl_private_intel.h"
|
|
#include "opencl/source/sharings/gl/gl_sharing.h"
|
|
|
|
#include "CL/cl_gl.h"
|
|
|
|
namespace NEO {
|
|
class Context;
|
|
class Image;
|
|
class GlTexture : GlSharing {
|
|
public:
|
|
static Image *createSharedGlTexture(Context *context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture,
|
|
cl_int *errcodeRet);
|
|
void synchronizeObject(UpdateData &updateData) override;
|
|
cl_int getGlTextureInfo(cl_gl_texture_info paramName, size_t paramValueSize, void *paramValue, size_t *paramValueSizeRet) const;
|
|
cl_GLint getMiplevel() const { return miplevel; }
|
|
CL_GL_RESOURCE_INFO *getTextureInfo() { return &textureInfo; }
|
|
cl_GLenum getTarget() const { return target; }
|
|
|
|
static bool setClImageFormat(int glFormat, cl_image_format &clImgFormat);
|
|
static cl_mem_object_type getClMemObjectType(cl_GLenum glType);
|
|
static cl_gl_object_type getClGlObjectType(cl_GLenum glType);
|
|
static cl_GLenum getBaseTargetType(cl_GLenum target);
|
|
|
|
protected:
|
|
GlTexture(GLSharingFunctions *sharingFunctions, unsigned int glObjectType, unsigned int glObjectId, CL_GL_RESOURCE_INFO texInfo,
|
|
cl_GLenum target, cl_GLint miplevel)
|
|
: GlSharing(sharingFunctions, glObjectType, glObjectId), target(target), miplevel(miplevel), textureInfo(texInfo){};
|
|
|
|
static uint32_t getClObjectType(cl_GLenum glType, bool returnClGlObjectType);
|
|
|
|
void releaseResource(MemObj *memObject, uint32_t rootDeviceIndex) override;
|
|
|
|
cl_GLenum target;
|
|
cl_GLint miplevel;
|
|
CL_GL_RESOURCE_INFO textureInfo;
|
|
};
|
|
} // namespace NEO
|