From 49bd4d9a66dc2053ff268576a343b8a99dc9a2e3 Mon Sep 17 00:00:00 2001
From: foreman
Date: Thu, 12 Nov 2015 15:20:52 -0500
Subject: [PATCH] P4 to Git Change 1210657 by lmoriche@lmoriche_opencl_dev on
2015/11/12 15:05:23
SWDEV-78467 - OpenCL LiquidFlash feature
- Add a function to return the LF file block size
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp#11 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.h#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h#22 edit
---
opencl/api/opencl/amdocl/cl_context.cpp | 3 +++
opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp | 25 +++++++++++++++++++
opencl/api/opencl/amdocl/cl_lqdflash_amd.h | 8 ++++++
.../khronos/headers/opencl2.0/CL/cl_ext.h | 10 ++++++++
4 files changed, 46 insertions(+)
diff --git a/opencl/api/opencl/amdocl/cl_context.cpp b/opencl/api/opencl/amdocl/cl_context.cpp
index 0f659adb39..6c76007cb4 100644
--- a/opencl/api/opencl/amdocl/cl_context.cpp
+++ b/opencl/api/opencl/amdocl/cl_context.cpp
@@ -552,6 +552,9 @@ clGetExtensionFunctionAddress(const char* func_name)
CL_EXTENSION_ENTRYPOINT_CHECK(clGetPlaneFromImageAMD);
#endif //_WIN32
CL_EXTENSION_ENTRYPOINT_CHECK(clGetKernelSubGroupInfoKHR);
+#if cl_amd_liquid_flash && !defined(OPENCL_MAINLINE)
+ CL_EXTENSION_ENTRYPOINT_CHECK(clGetFileObjectInfoAMD);
+#endif // cl_amd_liquid_flash
break;
case 'H':
#ifdef _WIN32
diff --git a/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp b/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp
index 3a974430d7..4c4981be35 100644
--- a/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp
+++ b/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp
@@ -123,6 +123,31 @@ RUNTIME_ENTRY_RET(cl_file_amd, clCreateFileObjectAMD, (
}
RUNTIME_EXIT
+RUNTIME_ENTRY(cl_int, clGetFileObjectInfoAMD, (
+ cl_file_amd file,
+ cl_file_info_amd param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret))
+{
+ if (!is_valid(file)) {
+ return CL_INVALID_FILE_OBJECT_AMD;
+ }
+
+ switch (param_name) {
+ case CL_FILE_BLOCK_SIZE_AMD: {
+ cl_uint size = as_amd(file)->blockSize();
+ return amd::clGetInfo(
+ size, param_value_size, param_value, param_value_size_ret);
+ }
+ default:
+ break;
+ }
+
+ return CL_INVALID_VALUE;
+}
+RUNTIME_EXIT
+
RUNTIME_ENTRY(cl_int, clRetainFileObjectAMD, (
cl_file_amd file))
{
diff --git a/opencl/api/opencl/amdocl/cl_lqdflash_amd.h b/opencl/api/opencl/amdocl/cl_lqdflash_amd.h
index 7b857c2c9b..e5cbffbb26 100644
--- a/opencl/api/opencl/amdocl/cl_lqdflash_amd.h
+++ b/opencl/api/opencl/amdocl/cl_lqdflash_amd.h
@@ -14,6 +14,14 @@ clCreateFileObjectAMD(
const wchar_t * file_name,
cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetFileObjectInfoAMD(
+ cl_file_amd file,
+ cl_file_info_amd param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainFileObjectAMD(
cl_file_amd file) CL_EXT_SUFFIX__VERSION_1_2;
diff --git a/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h b/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h
index 5b117e2b5a..ee1af60d93 100644
--- a/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h
+++ b/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h
@@ -467,12 +467,22 @@ typedef cl_uint cl_file_flags_amd;
#define CL_FILE_WRITE_ONLY_AMD (1 << 1)
#define CL_FILE_READ_WRITE_AMD (1 << 2)
+typedef cl_uint cl_file_info_amd;
+#define CL_FILE_BLOCK_SIZE_AMD 0x4085
+
typedef CL_API_ENTRY cl_file_amd
(CL_API_CALL * clCreateFileObjectAMD_fn)( cl_context /*context*/,
cl_file_flags_amd /*flags*/,
const wchar_t * /*file_name*/,
cl_int * /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_1_2;
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL * clGetFileObjectInfoAMD_fn)(cl_file_amd /* file */,
+ cl_file_info_amd /* param_name */,
+ size_t /* param_value_size */,
+ void * /* param_value */,
+ size_t * /* param_value_size_ret */) CL_EXT_SUFFIX__VERSION_1_2;
+
typedef CL_API_ENTRY cl_int
(CL_API_CALL * clRetainFileObjectAMD_fn)( cl_file_amd /*file*/) CL_EXT_SUFFIX__VERSION_1_2;