Age | Commit message (Collapse) | Author |
|
DMA buffers are often remapped many times for singel cs. To reduce number of
mapping calls ending to kernel dma buffers are mapped when allocated and unmapped
when full or in cs flush. This makes indifual mapping calls in other parts of
code simple increment/decrement reference count which is faster than entering
kernel.
This improves Anholt's openarena benchmark from 36 fps to 44 fps.
|
|
|
|
Conflicts:
src/gallium/drivers/svga/svga_screen_texture.c
src/gallium/state_trackers/xorg/xorg_composite.c
src/gallium/state_trackers/xorg/xorg_exa.c
src/gallium/state_trackers/xorg/xorg_renderer.c
src/gallium/state_trackers/xorg/xorg_xv.c
src/mesa/main/texgetimage.c
src/mesa/main/version.h
|
|
We can get a lot of swtcl bo allocations - need to probably abstract
this a bit further.
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
This moves the bo mapping outside the DMA layer and makes it explicit,
this should in theory make it simpler to split the clean up the dma/cmdbuf
linkage that I created before that is broken.
Tested on: r600, rv380 (tcl/no-tcl), rv200 (tcl/no-tcl)
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
This reverts commit 284a7af274bc148f112bd0ebb40583923ee26b49.
This breaks kde desktop effects. See fdo bug 24131
|
|
This should help detecting possible memory leaks with dma buffers and prevent
possible visual corruption if data would be overwriten too early.
|
|
dma_bo varaible is only used for iterating so allocating memory for it only
causes memory leaks.
|
|
Converted r100 to use shared debug code with sed and fast compile check. New
code has compability layer so old debugging code doesn't have to be changed
all immidiatly.
|
|
Problem was to find the correct place to run prediction. Only place that is
called for every primitive is ALLOC_VERTS so we have to do prediction there
before allocation.
|
|
We were check command buffer sizes too alte so allocated dma regions
were freed before relocations so space checking failed.
|
|
|
|
|
|
r600_state_predict
Conflicts:
src/mesa/drivers/dri/r300/r300_cmdbuf.c
src/mesa/drivers/dri/radeon/radeon_cmdbuf.h
|
|
This makes sure that objects are leaving wait list only when they are processed by gpu.
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
Trying to make understanding code easier with small refactoring and renaming.
|
|
- emit prediction
- fixes to emit_sizes for data
- clean up of excesive use of radeonEnsureCmdBufferSpace
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
|
|
This fixes problem that dma buffers were leaking in dri1 mode.
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
|
|
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
This fixes problems when application is using large vertex arrays for drawing.
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
In radeonRefillCurrentDmaRegion() make sure we
unmap the previous buffer.
|
|
This allows us to return the unused portion of the dma buffer
to the allocator instead of wasting nearly 16k a pop.
Cherry picked and ported to new code by Pauli.
|
|
We keep dma buffer objects in list untill they have been unused for many
draw operations. Current limit of having 100 flushes is just guess for
good performance/memory trade off.
Moving WARN_ONCE macro to common context because it is used in multiple drivers.
Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
|
|
This stuff was a vestige of the r600 bring up and
now mostly serves to periodically break the build.
|
|
|
|
|
|
into r6xx-rewrite
This builds, but I get an assertion in radeonGetLock() due to
the drawable being null.
|
|
|
|
This moves a big chunk of the space checking code into libdrm so
it can be shared by the DDX.
|
|
This reverts commit 0952645fe04a27968565ea4d913500c23b1b11e3.
Need to revisit where this is going wrong
|
|
This allows us to return the unused portion of the dma buffer
to the allocator instead of wasting nearly 16k a pop.
|
|
|
|
Revalidate can trigger flushing and dma buffer deallocation,
so retry allocation on such case.
|
|
|
|
|
|
|
|
This fixes up the buffer validation scheme, so that we keep a list
of buffers to validate so cmdbuf flushes during a pipeline get
all the buffers revalidated on the next emit.
This also fixes radeonFlush to not flush unless we have something
useful to send to the GPU, like a DMA buffer or something not state
|
|
Context destruction was nearly the same over all the drivers,
so collapse it down.
|
|
|
|
When we finish emitting swtcl objects, we request space in the cmdbuf,
and flush if no space exists. However in this case we also flush
the DMA buffer we just put the vertices we wanted to send in.
This checks in advance if we have space in the buffer.
|
|
|