mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 14:02:58 +08:00
Add zeImageGetMemoryPropertiesExp implementation
Signed-off-by: Kamil Diedrich <kamil.diedrich@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
72d124e275
commit
6aa40191e2
@@ -584,3 +584,19 @@ zeGetKernelExpProcAddrTable(
|
||||
driver_ddiTable.core_ddiTable.KernelExp = *pDdiTable;
|
||||
return result;
|
||||
}
|
||||
|
||||
ZE_APIEXPORT ze_result_t ZE_APICALL
|
||||
zeGetImageExpProcAddrTable(
|
||||
ze_api_version_t version,
|
||||
ze_image_exp_dditable_t *pDdiTable) {
|
||||
if (nullptr == pDdiTable)
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
if (ZE_MAJOR_VERSION(driver_ddiTable.version) != ZE_MAJOR_VERSION(version) ||
|
||||
ZE_MINOR_VERSION(driver_ddiTable.version) > ZE_MINOR_VERSION(version))
|
||||
return ZE_RESULT_ERROR_UNSUPPORTED_VERSION;
|
||||
|
||||
ze_result_t result = ZE_RESULT_SUCCESS;
|
||||
pDdiTable->pfnGetMemoryPropertiesExp = zeImageGetMemoryPropertiesExp;
|
||||
driver_ddiTable.core_ddiTable.ImageExp = *pDdiTable;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "level_zero/api/extensions/public/ze_exp_ext.h"
|
||||
|
||||
#include "level_zero/core/source/image/image.h"
|
||||
#include "level_zero/core/source/kernel/kernel.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
@@ -22,6 +23,13 @@ zeKernelSetGlobalOffsetExp(
|
||||
return L0::Kernel::fromHandle(hKernel)->setGlobalOffsetExp(offsetX, offsetY, offsetZ);
|
||||
}
|
||||
|
||||
ZE_APIEXPORT ze_result_t ZE_APICALL
|
||||
zeImageGetMemoryPropertiesExp(
|
||||
ze_image_handle_t hImage,
|
||||
ze_image_memory_properties_exp_t *pMemoryProperties) {
|
||||
return L0::Image::fromHandle(hImage)->getMemoryProperties(pMemoryProperties);
|
||||
}
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
@@ -38,6 +38,7 @@ struct Image : _ze_image_handle_t {
|
||||
virtual void copyRedescribedSurfaceStateToSSH(void *surfaceStateHeap, const uint32_t surfaceStateOffset) = 0;
|
||||
virtual NEO::ImageInfo getImageInfo() = 0;
|
||||
virtual ze_image_desc_t getImageDesc() = 0;
|
||||
virtual ze_result_t getMemoryProperties(ze_image_memory_properties_exp_t *pMemoryProperties) = 0;
|
||||
|
||||
static Image *fromHandle(ze_image_handle_t handle) { return static_cast<Image *>(handle); }
|
||||
|
||||
|
||||
@@ -25,6 +25,15 @@ struct ImageImp : public Image {
|
||||
ze_image_desc_t getImageDesc() override {
|
||||
return imageFormatDesc;
|
||||
}
|
||||
|
||||
ze_result_t getMemoryProperties(ze_image_memory_properties_exp_t *pMemoryProperties) override {
|
||||
pMemoryProperties->rowPitch = imgInfo.rowPitch;
|
||||
pMemoryProperties->slicePitch = imgInfo.slicePitch;
|
||||
pMemoryProperties->size = imgInfo.surfaceFormat->ImageElementSizeInBytes;
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
static NEO::ImageType convertType(const ze_image_type_t type) {
|
||||
switch (type) {
|
||||
case ZE_IMAGE_TYPE_2D:
|
||||
|
||||
@@ -619,5 +619,42 @@ TEST(ImageFormatDescHelperTest, givenSupportedSwizzlesThenProperClEnumIsReturned
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_BGRA));
|
||||
}
|
||||
|
||||
using ImageGetMemoryProperties = Test<DeviceFixture>;
|
||||
|
||||
HWTEST2_F(ImageGetMemoryProperties, givenImageMemoryPropertiesExpStructureWhenGetMemroyPropertiesThenProperDataAreSet, ImageSupport) {
|
||||
ze_image_desc_t zeDesc = {};
|
||||
zeDesc.arraylevels = 1u;
|
||||
zeDesc.depth = 1u;
|
||||
zeDesc.height = 1u;
|
||||
zeDesc.width = 1u;
|
||||
zeDesc.miplevels = 1u;
|
||||
zeDesc.type = ZE_IMAGE_TYPE_2DARRAY;
|
||||
zeDesc.flags = ZE_IMAGE_FLAG_BIAS_UNCACHED;
|
||||
|
||||
zeDesc.format = {ZE_IMAGE_FORMAT_LAYOUT_32,
|
||||
ZE_IMAGE_FORMAT_TYPE_UINT,
|
||||
ZE_IMAGE_FORMAT_SWIZZLE_R,
|
||||
ZE_IMAGE_FORMAT_SWIZZLE_G,
|
||||
ZE_IMAGE_FORMAT_SWIZZLE_B,
|
||||
ZE_IMAGE_FORMAT_SWIZZLE_A};
|
||||
|
||||
Image *image_ptr;
|
||||
auto result = Image::create(productFamily, device, &zeDesc, &image_ptr);
|
||||
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
|
||||
std::unique_ptr<L0::Image> image(image_ptr);
|
||||
|
||||
ASSERT_NE(image, nullptr);
|
||||
|
||||
ze_image_memory_properties_exp_t imageMemoryPropertiesExp = {};
|
||||
|
||||
image->getMemoryProperties(&imageMemoryPropertiesExp);
|
||||
|
||||
auto imageInfo = image->getImageInfo();
|
||||
|
||||
EXPECT_EQ(imageInfo.surfaceFormat->ImageElementSizeInBytes, imageMemoryPropertiesExp.size);
|
||||
EXPECT_EQ(imageInfo.slicePitch, imageMemoryPropertiesExp.slicePitch);
|
||||
EXPECT_EQ(imageInfo.rowPitch, imageMemoryPropertiesExp.rowPitch);
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
Reference in New Issue
Block a user