Skip to content

Commit 2ef9140

Browse files
author
Alexander Batashev
committed
Get rid of plugin calls in buffer and image
Signed-off-by: Alexander Batashev <[email protected]>
1 parent f0a8403 commit 2ef9140

File tree

7 files changed

+30
-30
lines changed

7 files changed

+30
-30
lines changed

sycl/include/CL/sycl/buffer.hpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,8 @@ class buffer {
194194
event AvailableEvent = {})
195195
: Range{0} {
196196

197-
size_t BufSize = 0;
198-
const detail::plugin &Plugin =
199-
getPluginFromContext(detail::getSyclObjImpl(SyclContext));
200-
Plugin.call<detail::PiApiKind::piMemGetInfo>(
201-
detail::pi::cast<detail::RT::PiMem>(MemObject), CL_MEM_SIZE,
202-
sizeof(size_t), &BufSize, nullptr);
197+
size_t BufSize = detail::SYCLMemObjT::getBufSizeForContext(
198+
detail::getSyclObjImpl(SyclContext), MemObject);
203199

204200
Range[0] = BufSize / sizeof(T);
205201
impl = std::make_shared<detail::buffer_impl>(

sycl/include/CL/sycl/context.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ class device;
2121
class platform;
2222
namespace detail {
2323
class context_impl;
24-
const detail::plugin &
25-
getPluginFromContext(const shared_ptr_class<context_impl> Context);
2624
}
2725

2826
class context {

sycl/include/CL/sycl/detail/image_impl.hpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,6 @@ template <int Dimensions> class image_impl final : public SYCLMemObjT {
219219
~image_impl() { BaseT::updateHostMemory(); }
220220

221221
private:
222-
template <typename T>
223-
void getImageInfo(const ContextImplPtr Context, RT::PiMemImageInfo Info,
224-
T &Dest) {
225-
const detail::plugin &Plugin = getPluginFromContext(Context);
226-
RT::PiMem Mem = pi::cast<RT::PiMem>(BaseT::MInteropMemObject);
227-
Plugin.call<PiApiKind::piMemImageGetInfo>(Mem, Info, sizeof(T), &Dest,
228-
nullptr);
229-
}
230-
231222
vector_class<device> getDevices(const ContextImplPtr Context);
232223

233224
template <info::device Param>

sycl/include/CL/sycl/detail/sycl_mem_obj_t.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ class SYCLMemObjT : public SYCLMemObjI {
256256
MAllocator->setAlignment(RequiredAlign);
257257
}
258258

259+
static size_t getBufSizeForContext(ContextImplPtr Context, cl_mem MemObject);
260+
259261
protected:
260262
// Allocator used for allocation memory on host.
261263
unique_ptr_class<SYCLMemObjAllocator> MAllocator;

sycl/source/context.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,5 @@ vector_class<device> context::get_devices() const {
8888

8989
context::context(shared_ptr_class<detail::context_impl> Impl) : impl(Impl) {}
9090

91-
namespace detail {
92-
const detail::plugin &
93-
getPluginFromContext(const shared_ptr_class<context_impl> Context) {
94-
return Context->getPlugin();
95-
}
96-
} // namespace detail
9791
} // namespace sycl
9892
} // __SYCL_INLINE_NAMESPACE(cl)

sycl/source/detail/image_impl.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,15 @@ image_channel_type convertChannelType(RT::PiMemImageChannelType Type) {
231231
}
232232
}
233233

234+
template <typename T>
235+
static void getImageInfo(const ContextImplPtr Context, RT::PiMemImageInfo Info,
236+
T &Dest, RT::PiMem InteropMemObject) {
237+
const detail::plugin &Plugin = Context->getPlugin();
238+
RT::PiMem Mem = pi::cast<RT::PiMem>(InteropMemObject);
239+
Plugin.call<PiApiKind::piMemImageGetInfo>(Mem, Info, sizeof(T), &Dest,
240+
nullptr);
241+
}
242+
234243
template <int Dimensions>
235244
image_impl<Dimensions>::image_impl(
236245
cl_mem MemObject, const context &SyclContext, event AvailableEvent,
@@ -245,26 +254,26 @@ image_impl<Dimensions>::image_impl(
245254
&(BaseT::MSizeInBytes), nullptr);
246255

247256
RT::PiMemImageFormat Format;
248-
getImageInfo(Context, PI_IMAGE_INFO_FORMAT, Format);
257+
getImageInfo(Context, PI_IMAGE_INFO_FORMAT, Format, Mem);
249258
MOrder = detail::convertChannelOrder(Format.image_channel_order);
250259
MType = detail::convertChannelType(Format.image_channel_data_type);
251260
MNumChannels = getImageNumberChannels(MOrder);
252261

253-
getImageInfo(Context, PI_IMAGE_INFO_ELEMENT_SIZE, MElementSize);
262+
getImageInfo(Context, PI_IMAGE_INFO_ELEMENT_SIZE, MElementSize, Mem);
254263
assert(getImageElementSize(MNumChannels, MType) == MElementSize);
255264

256-
getImageInfo(Context, PI_IMAGE_INFO_ROW_PITCH, MRowPitch);
257-
getImageInfo(Context, PI_IMAGE_INFO_SLICE_PITCH, MSlicePitch);
265+
getImageInfo(Context, PI_IMAGE_INFO_ROW_PITCH, MRowPitch, Mem);
266+
getImageInfo(Context, PI_IMAGE_INFO_SLICE_PITCH, MSlicePitch, Mem);
258267

259268
switch (Dimensions) {
260269
case 3:
261-
getImageInfo(Context, PI_IMAGE_INFO_DEPTH, MRange[2]);
270+
getImageInfo(Context, PI_IMAGE_INFO_DEPTH, MRange[2], Mem);
262271
// fall through
263272
case 2:
264-
getImageInfo(Context, PI_IMAGE_INFO_HEIGHT, MRange[1]);
273+
getImageInfo(Context, PI_IMAGE_INFO_HEIGHT, MRange[1], Mem);
265274
// fall through
266275
case 1:
267-
getImageInfo(Context, PI_IMAGE_INFO_WIDTH, MRange[0]);
276+
getImageInfo(Context, PI_IMAGE_INFO_WIDTH, MRange[0], Mem);
268277
}
269278
}
270279

sycl/source/detail/sycl_mem_obj_t.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ const plugin &SYCLMemObjT::getPlugin() const {
8686
"Trying to get Plugin from SYCLMemObjT with nullptr ContextImpl.");
8787
return (MInteropContext->getPlugin());
8888
}
89+
90+
size_t SYCLMemObjT::getBufSizeForContext(ContextImplPtr Context,
91+
cl_mem MemObject) {
92+
size_t BufSize = 0;
93+
const detail::plugin &Plugin = Context->getPlugin();
94+
Plugin.call<detail::PiApiKind::piMemGetInfo>(
95+
detail::pi::cast<detail::RT::PiMem>(MemObject), CL_MEM_SIZE,
96+
sizeof(size_t), &BufSize, nullptr);
97+
return BufSize;
98+
}
8999
} // namespace detail
90100
} // namespace sycl
91101
} // __SYCL_INLINE_NAMESPACE(cl)

0 commit comments

Comments
 (0)