diff options
author | Marek Olšák <[email protected]> | 2012-03-31 01:31:47 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-04-01 23:57:50 +0200 |
commit | 669d8766ff3403938794eb80d7769347b6e52174 (patch) | |
tree | ee775a4a51c56ddae6168adb77888d5dd79014e0 /src/gallium | |
parent | 68e4c83ffa9319c934a96ca1daf25e81b78a6d90 (diff) |
r600g: optimize r600_resource_va
Avoid calling get_radeon_bo and inline it.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 8 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_resource.c | 11 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_resource.h | 2 | ||||
-rw-r--r-- | src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 6 | ||||
-rw-r--r-- | src/gallium/winsys/radeon/drm/radeon_winsys.h | 2 |
5 files changed, 11 insertions, 18 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index c5ea55eba32..9139b61ed69 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -696,4 +696,12 @@ static INLINE unsigned r600_pack_float_12p4(float x) x >= 4096 ? 0xffff : x * 16; } +static INLINE uint64_t r600_resource_va(struct pipe_screen *screen, struct pipe_resource *resource) +{ + struct r600_screen *rscreen = (struct r600_screen*)screen; + struct r600_resource *rresource = (struct r600_resource*)resource; + + return rscreen->ws->buffer_get_virtual_address(rresource->cs_buf); +} + #endif diff --git a/src/gallium/drivers/r600/r600_resource.c b/src/gallium/drivers/r600/r600_resource.c index 0689d91a299..de339e03512 100644 --- a/src/gallium/drivers/r600/r600_resource.c +++ b/src/gallium/drivers/r600/r600_resource.c @@ -62,14 +62,3 @@ void r600_init_context_resource_functions(struct r600_context *r600) r600->context.transfer_destroy = u_transfer_destroy_vtbl; r600->context.transfer_inline_write = u_default_transfer_inline_write; } - -uint64_t r600_resource_va(struct pipe_screen *screen, struct pipe_resource *resource) -{ - struct r600_screen *rscreen = (struct r600_screen*)screen; - struct r600_resource *rresource = (struct r600_resource*)resource; - - if (rresource->buf) { - return rscreen->ws->buffer_get_virtual_address(rresource->buf); - } - return 0; -} diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h index 15b706dc3b8..5bb5e577ee6 100644 --- a/src/gallium/drivers/r600/r600_resource.h +++ b/src/gallium/drivers/r600/r600_resource.h @@ -98,6 +98,4 @@ struct r600_context; void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **rbuffer, uint32_t *offset); -uint64_t r600_resource_va(struct pipe_screen *screen, struct pipe_resource *resource); - #endif diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c index 31a47c6f14c..47bbcb87513 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c @@ -898,11 +898,9 @@ static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer, return TRUE; } -static uint64_t radeon_winsys_bo_va(struct pb_buffer *buffer) +static uint64_t radeon_winsys_bo_va(struct radeon_winsys_cs_handle *buf) { - struct radeon_bo *bo = get_radeon_bo(buffer); - - return bo->va; + return ((struct radeon_bo*)buf)->va; } void radeon_bomgr_init_functions(struct radeon_drm_winsys *ws) diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h index 7d5259ad11f..6eef6b16200 100644 --- a/src/gallium/winsys/radeon/drm/radeon_winsys.h +++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h @@ -255,7 +255,7 @@ struct radeon_winsys { * \param buf A winsys buffer object * \return virtual address */ - uint64_t (*buffer_get_virtual_address)(struct pb_buffer *buf); + uint64_t (*buffer_get_virtual_address)(struct radeon_winsys_cs_handle *buf); /************************************************************************** * Command submission. |