r300g: cleanup buffer_{from, get}_handle
authorMarek Olšák <maraeo@gmail.com>
Sun, 20 Jun 2010 01:37:14 +0000 (03:37 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sun, 20 Jun 2010 01:59:32 +0000 (03:59 +0200)
src/gallium/drivers/r300/r300_texture.c
src/gallium/drivers/r300/r300_winsys.h
src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
src/gallium/winsys/radeon/drm/radeon_r300.c

index 772bbdd2a660474f4e673c19376e8aea72706706..ddb66000561314e4f65e7c03fcdfcffeb021fd52 100644 (file)
@@ -931,17 +931,14 @@ static boolean r300_texture_get_handle(struct pipe_screen* screen,
 {
     struct r300_winsys_screen *rws = (struct r300_winsys_screen *)screen->winsys;
     struct r300_texture* tex = (struct r300_texture*)texture;
-    unsigned stride;
 
     if (!tex) {
         return FALSE;
     }
 
-    stride = r300_texture_get_stride(r300_screen(screen), tex, 0);
+    whandle->stride = r300_texture_get_stride(r300_screen(screen), tex, 0);
 
-    rws->buffer_get_handle(rws, tex->buffer, stride, whandle);
-
-    return TRUE;
+    return rws->buffer_get_handle(rws, tex->buffer, whandle);
 }
 
 struct u_resource_vtbl r300_texture_vtbl = 
@@ -1075,7 +1072,6 @@ r300_texture_from_handle(struct pipe_screen* screen,
     struct r300_screen* rscreen = r300_screen(screen);
     struct r300_winsys_buffer *buffer;
     struct r300_texture* tex;
-    unsigned stride;
     boolean override_zb_flags;
 
     /* Support only 2D textures without mipmaps */
@@ -1085,7 +1081,7 @@ r300_texture_from_handle(struct pipe_screen* screen,
         return NULL;
     }
 
-    buffer = rws->buffer_from_handle(rws, screen, whandle, &stride);
+    buffer = rws->buffer_from_handle(rws, whandle->handle);
     if (!buffer) {
         return NULL;
     }
@@ -1101,7 +1097,7 @@ r300_texture_from_handle(struct pipe_screen* screen,
     tex->b.b.screen = screen;
     tex->domain = R300_DOMAIN_VRAM;
 
-    tex->stride_override = stride;
+    tex->stride_override = whandle->stride;
 
     /* one ref already taken */
     tex->buffer = buffer;
@@ -1113,7 +1109,7 @@ r300_texture_from_handle(struct pipe_screen* screen,
                "Pitch: % 4i, Dim: %ix%i, Format: %s\n",
                tex->macrotile ? "YES" : " NO",
                tex->microtile ? "YES" : " NO",
-               stride / util_format_get_blocksize(base->format),
+               whandle->stride / util_format_get_blocksize(base->format),
                base->width0, base->height0,
                util_format_short_name(base->format));
 
index 2d43153b34f6b00af079a0365270e8bceef93500..334ec9fa84a7eb91272612d8e51058f3920901c9 100644 (file)
@@ -143,12 +143,10 @@ struct r300_winsys_screen {
                          enum r300_value_id vid);
 
     struct r300_winsys_buffer *(*buffer_from_handle)(struct r300_winsys_screen *winsys,
-                                                    struct pipe_screen *screen,
-                                                    struct winsys_handle *whandle,
-                                                    unsigned *stride);
+                                                     unsigned handle);
+
     boolean (*buffer_get_handle)(struct r300_winsys_screen *winsys,
                                 struct r300_winsys_buffer *buffer,
-                                unsigned stride,
                                 struct winsys_handle *whandle);
 
     boolean (*is_buffer_referenced)(struct r300_winsys_screen *winsys,
index ee1b9ede257665f366877aa9606101f803fd1c58..a4b6cff33d1c1900cca553c528434bfd31ad2af3 100644 (file)
@@ -267,16 +267,14 @@ static struct radeon_drm_buffer *get_drm_buffer(struct pb_buffer *_buf)
 boolean radeon_drm_bufmgr_get_handle(struct pb_buffer *_buf,
                                     struct winsys_handle *whandle)
 {
-    int retval, fd;
     struct drm_gem_flink flink;
     struct radeon_drm_buffer *buf = get_drm_buffer(_buf);
+
     if (whandle->type == DRM_API_HANDLE_TYPE_SHARED) {
        if (!buf->flinked) {
-           fd = buf->mgr->rws->fd;
            flink.handle = buf->bo->handle;
 
-           retval = ioctl(fd, DRM_IOCTL_GEM_FLINK, &flink);
-           if (retval) {
+            if (ioctl(buf->mgr->rws->fd, DRM_IOCTL_GEM_FLINK, &flink)) {
                return FALSE;
            }
 
index dbf4d197dd1a4cc84e61f8445d496d769c82e708..237fdc8bac4c29078591de7b20cc1737e579c012 100644 (file)
@@ -136,29 +136,21 @@ static boolean radeon_r300_winsys_is_buffer_referenced(struct r300_winsys_screen
 }
 
 static struct r300_winsys_buffer *radeon_r300_winsys_buffer_from_handle(struct r300_winsys_screen *rws,
-                                                                       struct pipe_screen *screen,
-                                                                       struct winsys_handle *whandle,
-                                                                       unsigned *stride)
+                                                                        unsigned handle)
 {
     struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
     struct pb_buffer *_buf;
 
-    _buf = radeon_drm_bufmgr_create_buffer_from_handle(ws->kman, whandle->handle);
-    *stride = whandle->stride;
+    _buf = radeon_drm_bufmgr_create_buffer_from_handle(ws->kman, handle);
     return radeon_libdrm_winsys_buffer(_buf);
 }
 
 static boolean radeon_r300_winsys_buffer_get_handle(struct r300_winsys_screen *rws,
                                                    struct r300_winsys_buffer *buffer,
-                                                   unsigned stride,
-                                                   struct winsys_handle *whandle)
+                                                    struct winsys_handle *whandle)
 {
     struct pb_buffer *_buf = radeon_pb_buffer(buffer);
-    boolean ret;
-    ret = radeon_drm_bufmgr_get_handle(_buf, whandle);
-    if (ret)
-       whandle->stride = stride;
-    return ret;
+    return radeon_drm_bufmgr_get_handle(_buf, whandle);
 }
 
 static void radeon_set_flush_cb(struct r300_winsys_screen *rws,