winsys/virgl: throw in some inline wrappers
authorEmil Velikov <emil.l.velikov@gmail.com>
Wed, 28 Oct 2015 12:38:35 +0000 (12:38 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 30 Oct 2015 17:37:09 +0000 (17:37 +0000)
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
src/gallium/winsys/virgl/drm/virgl_drm_winsys.h
src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c
src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.h

index 2d5bf257d24597df4af5ce30f9e18710e3c70bba..31317b906f5fd54ca5b32c80bb775391c13c4a63 100644 (file)
@@ -532,7 +532,7 @@ static struct virgl_cmd_buf *virgl_drm_cmd_buf_create(struct virgl_winsys *qws)
 
 static void virgl_drm_cmd_buf_destroy(struct virgl_cmd_buf *_cbuf)
 {
-   struct virgl_drm_cmd_buf *cbuf = (struct virgl_drm_cmd_buf *)_cbuf;
+   struct virgl_drm_cmd_buf *cbuf = virgl_drm_cmd_buf(_cbuf);
 
    FREE(cbuf->res_hlist);
    FREE(cbuf->res_bo);
@@ -597,7 +597,7 @@ static void virgl_drm_emit_res(struct virgl_winsys *qws,
                              struct virgl_cmd_buf *_cbuf, struct virgl_hw_res *res, boolean write_buf)
 {
    struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
-   struct virgl_drm_cmd_buf *cbuf = (struct virgl_drm_cmd_buf *)_cbuf;
+   struct virgl_drm_cmd_buf *cbuf = virgl_drm_cmd_buf(_cbuf);
    boolean already_in_list = virgl_drm_lookup_res(cbuf, res);
 
    if (write_buf)
@@ -620,7 +620,7 @@ static boolean virgl_drm_res_is_ref(struct virgl_winsys *qws,
 static int virgl_drm_winsys_submit_cmd(struct virgl_winsys *qws, struct virgl_cmd_buf *_cbuf)
 {
    struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
-   struct virgl_drm_cmd_buf *cbuf = (struct virgl_drm_cmd_buf *)_cbuf;
+   struct virgl_drm_cmd_buf *cbuf = virgl_drm_cmd_buf(_cbuf);
    struct drm_virtgpu_execbuffer eb;
    int ret;
 
@@ -690,7 +690,7 @@ static bool virgl_fence_wait(struct virgl_winsys *vws,
                              uint64_t timeout)
 {
    struct virgl_drm_winsys *vdws = virgl_drm_winsys(vws);
-   struct virgl_hw_res *res = (struct virgl_hw_res *)fence;
+   struct virgl_hw_res *res = virgl_hw_res(fence);
 
    if (timeout == 0)
       return virgl_drm_resource_is_busy(vdws, res);
@@ -715,7 +715,7 @@ static void virgl_fence_reference(struct virgl_winsys *vws,
 {
    struct virgl_drm_winsys *vdws = virgl_drm_winsys(vws);
    virgl_drm_resource_reference(vdws, (struct virgl_hw_res **)dst,
-                                (struct virgl_hw_res *)src);
+                                virgl_hw_res(src));
 }
 
 
index a547654499778b83ed5b37c0ef590411555fecc2..c83527206f560d40ff36e60de419f08fc44c8af2 100644 (file)
@@ -39,6 +39,8 @@
 #include "virgl/virgl_hw.h"
 #include "virgl/virgl_winsys.h"
 
+struct pipe_fence_handle;
+
 struct virgl_hw_res {
    struct pipe_reference reference;
    uint32_t res_handle;
@@ -87,10 +89,22 @@ struct virgl_drm_cmd_buf {
 
 };
 
+static inline struct virgl_hw_res *
+virgl_hw_res(struct pipe_fence_handle *f)
+{
+   return (struct virgl_hw_res *)f;
+}
+
 static inline struct virgl_drm_winsys *
 virgl_drm_winsys(struct virgl_winsys *iws)
 {
    return (struct virgl_drm_winsys *)iws;
 }
 
+static inline struct virgl_drm_cmd_buf *
+virgl_drm_cmd_buf(struct virgl_cmd_buf *cbuf)
+{
+   return (struct virgl_drm_cmd_buf *)cbuf;
+}
+
 #endif
index 24ba7ec116fab3837c5d01c44dc66223fe48ea8d..1c8df6e469d200d8e7bbd44ed53dddd6670117f2 100644 (file)
@@ -407,7 +407,7 @@ static struct virgl_cmd_buf *virgl_vtest_cmd_buf_create(struct virgl_winsys *vws
 
 static void virgl_vtest_cmd_buf_destroy(struct virgl_cmd_buf *_cbuf)
 {
-   struct virgl_vtest_cmd_buf *cbuf = (struct virgl_vtest_cmd_buf *)_cbuf;
+   struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
 
    FREE(cbuf->res_bo);
    FREE(cbuf);
@@ -468,7 +468,7 @@ static void virgl_vtest_add_res(struct virgl_vtest_winsys *vtws,
 static int virgl_vtest_winsys_submit_cmd(struct virgl_winsys *vws, struct virgl_cmd_buf *_cbuf)
 {
    struct virgl_vtest_winsys *vtws = virgl_vtest_winsys(vws);
-   struct virgl_vtest_cmd_buf *cbuf = (struct virgl_vtest_cmd_buf *)_cbuf;
+   struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
    int ret;
 
    if (cbuf->base.cdw == 0)
@@ -485,7 +485,7 @@ static int virgl_vtest_winsys_submit_cmd(struct virgl_winsys *vws, struct virgl_
 static void virgl_vtest_emit_res(struct virgl_winsys *vws, struct virgl_cmd_buf *_cbuf, struct virgl_hw_res *res, boolean write_buf)
 {
    struct virgl_vtest_winsys *vtws = virgl_vtest_winsys(vws);
-   struct virgl_vtest_cmd_buf *cbuf = (struct virgl_vtest_cmd_buf *)_cbuf;
+   struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
    boolean already_in_list = virgl_vtest_lookup_res(cbuf, res);
 
    if (write_buf)
@@ -529,7 +529,7 @@ static bool virgl_fence_wait(struct virgl_winsys *vws,
                              uint64_t timeout)
 {
    struct virgl_vtest_winsys *vdws = virgl_vtest_winsys(vws);
-   struct virgl_hw_res *res = (struct virgl_hw_res *)fence;
+   struct virgl_hw_res *res = virgl_hw_res(fence);
 
    if (timeout == 0)
       return virgl_vtest_resource_is_busy(vdws, res);
@@ -554,7 +554,7 @@ static void virgl_fence_reference(struct virgl_winsys *vws,
 {
    struct virgl_vtest_winsys *vdws = virgl_vtest_winsys(vws);
    virgl_vtest_resource_reference(vdws, (struct virgl_hw_res **)dst,
-                                  (struct virgl_hw_res *)src);
+                                  virgl_hw_res(src));
 }
 
 static void virgl_vtest_flush_frontbuffer(struct virgl_winsys *vws,
index 6d0e7b0a598f8d6ec1123ef121a4fa231084dbd2..fd8cb7a63683de578727777cec19cb3d73a253e6 100644 (file)
@@ -34,6 +34,9 @@
 #include "os/os_thread.h"
 
 #include "vtest_protocol.h"
+
+struct pipe_fence_handle;
+
 struct virgl_vtest_winsys {
    struct virgl_winsys base;
 
@@ -83,12 +86,25 @@ struct virgl_vtest_cmd_buf {
    unsigned                    reloc_indices_hashlist[512];
 };
 
+static inline struct virgl_hw_res *
+virgl_hw_res(struct pipe_fence_handle *f)
+{
+   return (struct virgl_hw_res *)f;
+}
+
 static inline struct virgl_vtest_winsys *
 virgl_vtest_winsys(struct virgl_winsys *iws)
 {
    return (struct virgl_vtest_winsys *)iws;
 }
 
+static inline struct virgl_vtest_cmd_buf *
+virgl_vtest_cmd_buf(struct virgl_cmd_buf *cbuf)
+{
+   return (struct virgl_vtest_cmd_buf *)cbuf;
+}
+
+
 int virgl_vtest_connect(struct virgl_vtest_winsys *vws);
 int virgl_vtest_send_get_caps(struct virgl_vtest_winsys *vws,
                               struct virgl_drm_caps *caps);