summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/radeon/drm
AgeCommit message (Collapse)AuthorFilesLines
2011-06-06r300g: Remove is_r3xxpciidsBenjamin Franzke3-215/+9
Use r300_pci_ids.h instead.
2011-05-15r300g: dynamically ask for and release Hyper-Z accessMarek Olšák3-27/+99
We ask for Hyper-Z access when clearing a zbuffer. We release it if no zbuffer clear has been done for 2 seconds.
2011-04-18r300g/winsys: rename r300->radeon and do a little cleanupMarek Olšák10-146/+461
Renaming a few files, types, and functions. Also make the winsys independent of r300g.
2011-04-08r300g: fix crash when adding a new relocationMarek Olšák1-1/+2
No idea why it's so hard to reproduce. Broken with: c35572352e3e92683988ee8d151b47f4190d62f9 Thanks to Toni Spets for assistance.
2011-04-08r300g: add 'radeon: ' prefix to error messages in winsysMarek Olšák2-5/+5
2011-04-03r300g: do not wait for a busy BO if neither GPU nor CPU is changing itMarek Olšák4-12/+75
Improves frame rate in apps with at least one user vertex buffer and a hw index buffer.
2011-04-03r300g: remove unused RADEON_PB_USAGE_CACHEMarek Olšák2-6/+0
2011-04-03r300g: avoid mapping the same buffer twiceMarek Olšák1-0/+5
Shouldn't happen, but you never know.
2011-04-03r300g: remove the redundant reference counter in radeon_boMarek Olšák3-36/+21
We already have pb_buffer::reference::count.
2011-03-08r300g: decide whether a flush should be asynchronous when calling itMarek Olšák3-16/+17
Thread offloading is not sometimes desirable, e.g. when mapping a buffer.
2011-03-02r300g: require DRM 2.3.0 (kernel 2.6.34)Marek Olšák1-7/+6
Running any older kernel is not recommended anyway.
2011-03-02r300g: do not use ioctl thread offloading on single-core machinesMarek Olšák3-1/+4
2011-02-19r300g: fix invalid dereference in winsysMarek Olšák1-1/+1
radeon_bo_unref may destroy the buffer, so call it after p_atomic_dec, not before.
2011-02-16r300g: fix a race between CS and SET_TILING ioctlsMarek Olšák3-6/+21
2011-02-15r300g: offload the CS ioctl to another threadMarek Olšák4-111/+220
This is a multi-threading optimization which hides the kernel overhead behind a thread. It improves performance in CPU-limited apps by 2-15%. Of course you must have at least 2 cores for it to make any difference. It can be disabled with: export RADEON_THREAD=0
2011-02-15r300g: actually implement the is_buffer_busy hook the right wayMarek Olšák1-3/+3
Ooops.
2011-02-15r300g: handle interaction between UNSYNCHRONIZED and DONTBLOCK flags in bo_mapMarek Olšák1-20/+16
The VBO module uses both, but they are somewhat opposite to each other. In this case, we pick UNSYNCHRONIZED and ignore DONTBLOCK.
2011-02-15r300g: fix a possible race condition when mapping a bufferMarek Olšák2-23/+34
This is the last one I think.
2011-02-14r300g: flush CS in bo_map even if we get USAGE_DONTBLOCKMarek Olšák1-0/+1
Because an app may do something like this: while (!(ptr = bo_map(..., DONT_BLOCK))) { /* Do some other work. */ } And it would be looping endlessly if we didn't flush.
2011-02-14r300g: implement pb_manager::is_buffer_busyMarek Olšák1-22/+27
2011-02-13r300g: fixup the handle_compare functionMarek Olšák1-2/+2
Accidentally negated in 685c3262b945a7f0e9f1f3a9409a12fdda08c828.
2011-02-12r300g: typecast void* to unsigned correctlyMarek Olšák1-2/+4
2011-02-12r300g: improve function radeon_bo_is_referenced_by_csMarek Olšák5-18/+30
This should prevent calling into radeon_get_reloc when there's only one context.
2011-02-11r300g: remove unused function prototypes, update copyrightMarek Olšák4-4/+56
2011-02-11r300g: plug a memory leak in winsysMarek Olšák1-0/+1
2011-02-11r300g: remove unneeded code in winsysMarek Olšák1-6/+0
We don't need the read/write flags.
2011-02-11r300g: import the last bits of libdrm and cleanup the whole thingMarek Olšák10-762/+653
Based on Dave's branch. The majority of this commit is a cleanup, mainly renaming things. There wasn't much code to import, just ioctl calls. Also done: - implemented unsynchronized bo_map (important optimization!) - radeon_bo_is_referenced_by_cs is no longer a refcount hack - dropped the libdrm_radeon dependency I'm surprised that this has resulted in less code in the end.
2011-01-31scons: Gracefully handle pkg-config errors with libdrm_radeon.Vinson Lee1-1/+6
Print warnings and continue build.
2011-01-27r300g: print driver info if RADEON_DEBUG=infoMarek Olšák3-35/+21
2011-01-27r300g: add winsys flag CAN_AACOMPRESSMarek Olšák3-9/+21
2011-01-27r300g: rename flag squaretiling -> drm_2_1_0Marek Olšák4-12/+11
2011-01-08r300g: rework command submission and resource space checkingMarek Olšák8-163/+409
The motivation behind this rework is to get some speed by reducing CPU overhead. The performance increase depends on many factors, but it's measurable (I think it's about 10% increase in Torcs). This commit replaces libdrm's radeon_cs_gem with our own implemention. It's optimized specifically for r300g, but r600g could use it as well. Reloc writes and space checking are faster and simpler than their counterparts in libdrm (the time complexity of all the functions is O(1) in nearly all scenarios, thanks to hashing). (libdrm's radeon_bo_gem is still being used in the driver.) It works like this: cs_add_reloc(cs, buf, read_domain, write_domain) adds a new relocation and also adds the size of 'buf' to the used_gart and used_vram winsys variables based on the domains, which are simply or'd for the accounting purposes. The adding is skipped if the reloc is already present in the list, but it accounts any newly-referenced domains. cs_validate is then called, which just checks: used_vram/gart < vram/gart_size * 0.8 The 0.8 number allows for some memory fragmentation. If the validation fails, the pipe driver flushes CS and tries do the validation again, i.e. it validates only that one operation. If it fails again, it drops the operation on the floor and prints some nasty message to stderr. cs_write_reloc(cs, buf) just writes a reloc that has been added using cs_add_reloc. The read_domain and write_domain parameters have been removed, because we already specify them in cs_add_reloc. The space checking has been tested by putting small values in vram/gart_size variables.
2010-12-23r300g: Remove unnecessary header.Vinson Lee1-2/+0
2010-12-22r300g: support B10G10R10A2 render targets only with DRM 2.8.0 or later versionsMarek Olšák3-1/+9
2010-12-05r300g: cleanup winsysMarek Olšák11-628/+443
2010-12-03r300g: use internal BO handle for add_buffer and write_relocMarek Olšák3-14/+28
Small perf improvement in ipers. radeon_drm_get_cs_handle is exactly what this commit tries to avoid in every write_reloc.
2010-11-25r300g/r600g: bump cache manager timeouts to 1sDave Airlie1-1/+1
On lightsmark on my r500 this drop the bufmgr allocations of the sysprof.
2010-11-23gallium/egl: fix r300 vs r600 loadingAlex Deucher1-1/+208
Should fix: https://bugs.freedesktop.org/show_bug.cgi?id=31841
2010-09-26radeong: fix leaksJoakim Sindholt1-0/+3
2010-09-24r300g: make accessing map_list and buffer_handles thread-safeMarek Olšák1-6/+58
NOTE: This is a candidate for the 7.9 branch.
2010-09-24r300g: fixup long-lived BO maps being incorrectly unmapped when flushingMarek Olšák1-4/+10
Based on commit 3ddc714b20ac4e28b80c6f88d1993445fff2262c by Dave Airlie. NOTE: This is a candidate for the 7.9 branch.
2010-09-15r300g: fix buffer reuse issue caused by previous commitDave Airlie1-3/+6
caused by 0b9eb5c9bb03e5134d9a41786178100109e80c5a test run glxgears, resize.
2010-09-15r300g: prevent creating multiple winsys BOs for the same handleMarek Olšák1-0/+26
This fixes a DRM deadlock in the cubestorm xscreensaver, because somehow there must not be 2 different BOs relocated in one CS if both BOs back the same handle. I was told it is impossible to happen, but apparently it is not, or there is something else wrong.
2010-09-13r300g: fix map_bufferMarek Olšák1-4/+17
https://bugs.freedesktop.org/show_bug.cgi?id=30145
2010-09-12pb: add void * for flush ctx to mapping functionsDave Airlie1-7/+3
If the buffer we are attempting to map is referenced by the unsubmitted command stream for this context, we need to flush the command stream, however to do that we need to be able to access the context at the lowest level map function, currently we set the buffer in the toplevel map, but this racy between context. (we probably have a lot more issues than that.) I'll look into a proper solution as suggested by jrfonseca when I get some time.
2010-08-14r300g: Remove unnecessary header.Vinson Lee1-1/+0
2010-08-08r300g: generalize the way we ask for hyperzMarek Olšák1-9/+26
This makes it compatible with the modified DRM interface in drm-radeon-testing. Also, now you need to set RADEON_HYPERZ=1 to be able to use hyperz. It's not bug-free yet.
2010-08-06r300g: do not emit GB_Z_PEQ_CONFIG on non-r500 if DRM < 2.6.0Marek Olšák3-0/+12
2010-08-05r300g: debug_print on startup whether we can use hyper-zMarek Olšák1-2/+4
2010-08-05r300g: implement hyper-z support. (v4)Dave Airlie3-0/+15
This implements fast Z clear, Z compression, and HiZ support for r300->r500 GPUs. It also allows cbzb clears when fast Z clears are being used for the ZB. It requires a kernel with hyper-z support. Thanks to Marek Olšák <maraeo@gmail.com>, who started this off, and Alex Deucher at AMD for providing lots of hints. v2: squashed zmask ram size fix] squashed r300g/blitter: fix Z readback when compressed] v3: rebase around texture changes in master - .1 fix more bits v4: migrated to using u_mm in r300_texture to manage hiz/zmask rams consistently disabled HiZ when using OQ flush z-cache before turning hyper-z off update hyper-z state on dsa state change store depthclearvalue across cbzb clears and replace it afterwards. Signed-off-by: Dave Airlie <airlied@redhat.com>