96 lines
2.1 KiB
C++
96 lines
2.1 KiB
C++
//
|
|
// Copyright 2021 The ANGLE Project Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
//
|
|
// CLImage.h: Defines the cl::Image class, which stores a texture, frame-buffer or image.
|
|
|
|
#ifndef LIBANGLE_CLIMAGE_H_
|
|
#define LIBANGLE_CLIMAGE_H_
|
|
|
|
#include "libANGLE/CLMemory.h"
|
|
|
|
#include "libANGLE/cl_utils.h"
|
|
|
|
namespace cl
|
|
{
|
|
|
|
class Image final : public Memory
|
|
{
|
|
public:
|
|
// Front end entry functions, only called from OpenCL entry points
|
|
|
|
static bool IsTypeValid(MemObjectType imageType);
|
|
static bool IsValid(const _cl_mem *image);
|
|
|
|
cl_int getInfo(ImageInfo name, size_t valueSize, void *value, size_t *valueSizeRet) const;
|
|
|
|
public:
|
|
~Image() override;
|
|
|
|
MemObjectType getType() const final;
|
|
|
|
const cl_image_format &getFormat() const;
|
|
const ImageDescriptor &getDescriptor() const;
|
|
|
|
bool isRegionValid(const size_t origin[3], const size_t region[3]) const;
|
|
|
|
size_t getElementSize() const;
|
|
size_t getRowSize() const;
|
|
size_t getSliceSize() const;
|
|
|
|
private:
|
|
Image(Context &context,
|
|
PropArray &&properties,
|
|
MemFlags flags,
|
|
const cl_image_format &format,
|
|
const ImageDescriptor &desc,
|
|
Memory *parent,
|
|
void *hostPtr,
|
|
cl_int &errorCode);
|
|
|
|
const cl_image_format mFormat;
|
|
const ImageDescriptor mDesc;
|
|
|
|
friend class Object;
|
|
};
|
|
|
|
inline bool Image::IsValid(const _cl_mem *image)
|
|
{
|
|
return Memory::IsValid(image) && IsTypeValid(image->cast<Memory>().getType());
|
|
}
|
|
|
|
inline MemObjectType Image::getType() const
|
|
{
|
|
return mDesc.type;
|
|
}
|
|
|
|
inline const cl_image_format &Image::getFormat() const
|
|
{
|
|
return mFormat;
|
|
}
|
|
|
|
inline const ImageDescriptor &Image::getDescriptor() const
|
|
{
|
|
return mDesc;
|
|
}
|
|
|
|
inline size_t Image::getElementSize() const
|
|
{
|
|
return GetElementSize(mFormat);
|
|
}
|
|
|
|
inline size_t Image::getRowSize() const
|
|
{
|
|
return GetElementSize(mFormat) * mDesc.width;
|
|
}
|
|
|
|
inline size_t Image::getSliceSize() const
|
|
{
|
|
return GetElementSize(mFormat) * mDesc.width * mDesc.height;
|
|
}
|
|
|
|
} // namespace cl
|
|
|
|
#endif // LIBANGLE_CLIMAGE_H_
|