From 46f2055c8361411c4ae7d5f735258b3a6a120dcd Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 27 Mar 2026 17:23:18 -0700 Subject: [PATCH] fix that --- msgq/visionipc/visionipc.pxd | 2 +- msgq/visionipc/visionipc_client.cc | 4 +++- msgq/visionipc/visionipc_client.h | 4 +++- msgq/visionipc/visionipc_pyx.pyx | 12 ++++++++++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/msgq/visionipc/visionipc.pxd b/msgq/visionipc/visionipc.pxd index 8151768..7531bc0 100644 --- a/msgq/visionipc/visionipc.pxd +++ b/msgq/visionipc/visionipc.pxd @@ -53,7 +53,7 @@ cdef extern from "msgq/visionipc/visionipc_client.h": cdef cppclass VisionIpcClient: int num_buffers VisionBuf buffers[1] - VisionIpcClient(string, VisionStreamType, bool) + VisionIpcClient(string, VisionStreamType, bool, cl_device_id, cl_context) VisionBuf * recv(VisionIpcBufExtra *, int) bool connect(bool) bool is_connected() diff --git a/msgq/visionipc/visionipc_client.cc b/msgq/visionipc/visionipc_client.cc index 1812b33..467dd62 100644 --- a/msgq/visionipc/visionipc_client.cc +++ b/msgq/visionipc/visionipc_client.cc @@ -22,7 +22,7 @@ static int connect_to_vipc_server(const std::string &name, bool blocking) { return socket_fd; } -VisionIpcClient::VisionIpcClient(std::string name_, VisionStreamType type_, bool conflate) : name(name_), type(type_) { +VisionIpcClient::VisionIpcClient(std::string name_, VisionStreamType type_, bool conflate, cl_device_id device_id, cl_context ctx) : name(name_), type(type_), device_id(device_id), ctx(ctx) { msg_ctx = Context::create(); sock = SubSocket::create(msg_ctx, get_endpoint_name(name, type), "127.0.0.1", conflate, false); @@ -71,6 +71,8 @@ bool VisionIpcClient::connect(bool blocking) { buffers[i].fd = fds[i]; buffers[i].import(); buffers[i].init_yuv(buffers[i].width, buffers[i].height, buffers[i].stride, buffers[i].uv_offset); + + if (device_id) buffers[i].init_cl(device_id, ctx); } close(socket_fd); diff --git a/msgq/visionipc/visionipc_client.h b/msgq/visionipc/visionipc_client.h index f7ecc74..0d29521 100644 --- a/msgq/visionipc/visionipc_client.h +++ b/msgq/visionipc/visionipc_client.h @@ -19,7 +19,9 @@ public: VisionStreamType type; int num_buffers = 0; VisionBuf buffers[VISIONIPC_MAX_FDS]; - VisionIpcClient(std::string name, VisionStreamType type, bool conflate); + cl_device_id device_id = nullptr; + cl_context ctx = nullptr; + VisionIpcClient(std::string name, VisionStreamType type, bool conflate, cl_device_id device_id=nullptr, cl_context ctx=nullptr); ~VisionIpcClient(); VisionBuf * recv(VisionIpcBufExtra * extra=nullptr, const int timeout_ms=100); bool connect(bool blocking=true); diff --git a/msgq/visionipc/visionipc_pyx.pyx b/msgq/visionipc/visionipc_pyx.pyx index dbf7bb3..1342a1f 100644 --- a/msgq/visionipc/visionipc_pyx.pyx +++ b/msgq/visionipc/visionipc_pyx.pyx @@ -15,6 +15,7 @@ from .visionipc cimport VisionIpcClient as cppVisionIpcClient from .visionipc cimport VisionBuf as cppVisionBuf from .visionipc cimport VisionIpcBufExtra from .visionipc cimport get_endpoint_name as cpp_get_endpoint_name +from .visionipc cimport cl_device_id, cl_context def get_endpoint_name(string name, VisionStreamType stream): @@ -64,6 +65,10 @@ cdef class VisionBuf: return self.buf.fd +cdef class CLContext: + pass + + cdef class VisionIpcServer: cdef cppVisionIpcServer * server @@ -102,8 +107,11 @@ cdef class VisionIpcClient: cdef cppVisionIpcClient * client cdef VisionIpcBufExtra extra - def __cinit__(self, string name, VisionStreamType stream, bool conflate): - self.client = new cppVisionIpcClient(name, stream, conflate) + def __cinit__(self, string name, VisionStreamType stream, bool conflate, CLContext context=None): + if context is not None: + self.client = new cppVisionIpcClient(name, stream, conflate, context.device_id, context.context) + else: + self.client = new cppVisionIpcClient(name, stream, conflate, NULL, NULL) def __dealloc__(self): del self.client