Age | Commit message (Collapse) | Author |
|
the current code reuses the same vbo over and over, however after a flush
we'd stall and wait for mapping on the vbo when we should just fire and forget.
On a gears test this brings me from ~620 to ~750 on my rv530 in swtcl mode.
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
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>
|
|
The Draw flush inside r300_flush was the culprit.
Also, no need to flush Draw when changing a state since the flush is
already inside swtcl_draw_vbo.
|
|
|
|
This fixes fdo bug #29286.
|
|
That is, remove pipe_context::draw_arrays, pipe_context::draw_elements,
pipe_context::draw_arrays_instanced,
pipe_context::draw_elements_instanced,
pipe_context::draw_range_elements.
|
|
Some drivers define a generic function that is called by all drawing
functions. To implement draw_vbo for such drivers, either draw_vbo
calls the generic function or the prototype of the generic function is
changed to match draw_vbo.
Other drivers have no such generic function. draw_vbo is implemented by
calling either draw_arrays and draw_elements.
For most drivers, set_index_buffer does not mark the state dirty for
tracking. Instead, the index buffer state is emitted whenever draw_vbo
is called, just like the case with draw_elements. It surely can be
improved.
|
|
fix vb/ib uploads
|
|
|
|
|
|
|
|
It is a lot simplier, cleaner, and more stable now.
|
|
An initial implementation made by Dave Airlie.
For it to be used, a color-only clear must be invoked and exactly one
point-sampled render target must be set. The render target must be
macrotiled (for us to overcome alignment issues) and bpp must be either
16 or 32.
I can't see a difference in performance. :(
Conflicts:
src/gallium/drivers/r300/r300_blit.c
|
|
With an ordinary quad, the pixels on the main diagonal are computed
and stored twice, which is somewhat inefficient and might not work well
with specialized clear codepaths.
|
|
And other minor fixups.
|
|
|
|
|
|
|
|
|
|
|
|
Yay for old code.
|
|
|
|
|
|
|
|
|
|
|
|
There is a problem though, the translate module cannot emit half float
vertices.
|
|
The next step is to replace skipping by an actual fallback.
|
|
|
|
I admit blitting to/from GTT is actually enforced in this commit,
texture transfers are now damned fast!
|
|
|
|
It's now more separate from the rest of the driver and it can be disabled
by commenting out just 1 line. Well, I couldn't make the previous version
work with SW TCL reliably, that's the reason of this little rework.
|
|
This fixes piglit/draw-elements.
|
|
|
|
|
|
|
|
|
|
|
|
This fixes CS rejections in openarena.
|
|
|
|
|
|
Fixes SCons build.
|
|
|
|
|
|
Commented out, not easily enabled. *Very* noisy.
|
|
This could be done later of course. SW TCL should have a much different
threshold because it's much more worth it.
|
|
This reduces redundant code by moving:
- CS space reservation
- buffer validation
- dirty state emission
- index bias emission
- AOS emission
into r300_prepare_for_rendering.
|
|
Now we have draw_elements() and draw_arrays() to be consistent with the
pipe_context drawing functions.
|