Mesa (master): gallium: split transfer_inline_write into buffer and texture callbacks
Marek Olšák
mareko at kemper.freedesktop.org
Sat Jul 23 11:34:01 UTC 2016
Module: Mesa
Branch: master
Commit: 1ffe77e7bb2486ea74cda077ed2a9622b758395c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ffe77e7bb2486ea74cda077ed2a9622b758395c
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Jul 16 21:19:48 2016 +0200
gallium: split transfer_inline_write into buffer and texture callbacks
to reduce the call indirections with u_resource_vtbl.
The worst call tree you could get was:
- u_transfer_inline_write_vtbl
- u_default_transfer_inline_write
- u_transfer_map_vtbl
- driver_transfer_map
- u_transfer_unmap_vtbl
- driver_transfer_unmap
That's 6 indirect calls. Some drivers only had 5. The goal is to have
1 indirect call for drivers that care. The resource type can be determined
statically at most call sites.
The new interface is:
pipe_context::buffer_subdata(ctx, resource, usage, offset, size, data)
pipe_context::texture_subdata(ctx, resource, level, usage, box, data,
stride, layer_stride)
v2: fix whitespace, correct ilo's behavior
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
Acked-by: Roland Scheidegger <sroland at vmware.com>
---
src/gallium/auxiliary/postprocess/pp_mlaa.c | 14 +--
src/gallium/auxiliary/util/u_inlines.h | 28 +-----
src/gallium/auxiliary/util/u_transfer.c | 112 ++++++++++-----------
src/gallium/auxiliary/util/u_transfer.h | 39 +++----
src/gallium/docs/source/context.rst | 5 +-
src/gallium/drivers/ddebug/dd_context.c | 30 ++++--
src/gallium/drivers/freedreno/freedreno_resource.c | 4 +-
src/gallium/drivers/i915/i915_resource.c | 3 +-
src/gallium/drivers/i915/i915_resource.h | 6 ++
src/gallium/drivers/i915/i915_resource_buffer.c | 19 ++--
src/gallium/drivers/i915/i915_resource_texture.c | 3 +-
src/gallium/drivers/ilo/ilo_transfer.c | 36 ++-----
src/gallium/drivers/llvmpipe/lp_texture.c | 3 +-
src/gallium/drivers/noop/noop_pipe.c | 26 +++--
src/gallium/drivers/nouveau/nouveau_buffer.c | 1 -
src/gallium/drivers/nouveau/nv30/nv30_miptree.c | 1 -
src/gallium/drivers/nouveau/nv30/nv30_resource.c | 3 +-
src/gallium/drivers/nouveau/nv50/nv50_miptree.c | 1 -
src/gallium/drivers/nouveau/nv50/nv50_resource.c | 3 +-
src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c | 1 -
src/gallium/drivers/nouveau/nvc0/nvc0_resource.c | 3 +-
src/gallium/drivers/r300/r300_resource.c | 3 +-
src/gallium/drivers/r300/r300_screen_buffer.c | 1 -
src/gallium/drivers/r300/r300_texture.c | 1 -
src/gallium/drivers/r600/evergreen_compute.c | 13 ---
src/gallium/drivers/radeon/r600_buffer_common.c | 1 -
src/gallium/drivers/radeon/r600_pipe_common.c | 5 +-
src/gallium/drivers/radeon/r600_texture.c | 1 -
src/gallium/drivers/rbug/rbug_context.c | 52 ++++++----
src/gallium/drivers/softpipe/sp_texture.c | 3 +-
src/gallium/drivers/svga/svga_resource.c | 3 +-
src/gallium/drivers/svga/svga_resource_buffer.c | 1 -
src/gallium/drivers/svga/svga_resource_texture.c | 1 -
src/gallium/drivers/swr/swr_context.cpp | 3 +-
src/gallium/drivers/trace/tr_context.c | 67 +++++++++---
src/gallium/drivers/vc4/vc4_resource.c | 4 +-
src/gallium/drivers/virgl/virgl_buffer.c | 1 -
src/gallium/drivers/virgl/virgl_resource.c | 14 ++-
src/gallium/drivers/virgl/virgl_texture.c | 1 -
src/gallium/include/pipe/p_context.h | 27 +++--
.../state_trackers/clover/core/resource.cpp | 10 +-
src/gallium/state_trackers/nine/buffer9.h | 8 +-
src/gallium/state_trackers/nine/nine_state.c | 11 +-
src/gallium/state_trackers/nine/surface9.c | 4 +-
src/gallium/state_trackers/nine/volume9.c | 4 +-
src/gallium/state_trackers/omx/vid_enc.c | 12 +--
src/gallium/state_trackers/va/image.c | 8 +-
src/gallium/state_trackers/vdpau/bitmap.c | 6 +-
src/gallium/state_trackers/vdpau/output.c | 20 ++--
src/gallium/state_trackers/vdpau/surface.c | 10 +-
src/gallium/tests/graw/fs-test.c | 16 +--
src/gallium/tests/graw/graw_util.h | 16 +--
src/gallium/tests/graw/gs-test.c | 45 +++------
src/gallium/tests/graw/quad-sample.c | 16 +--
src/gallium/tests/graw/vs-test.c | 28 ++----
src/mesa/state_tracker/st_cb_bufferobjects.c | 9 +-
src/mesa/state_tracker/st_cb_texture.c | 6 +-
57 files changed, 383 insertions(+), 389 deletions(-)
Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=1ffe77e7bb2486ea74cda077ed2a9622b758395c
More information about the mesa-commit
mailing list