summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_blit.c
AgeCommit message (Collapse)Author
2010-09-24r600g: Remove unnecessary header.Vinson Lee
2010-09-23r600g: use blitter to do db->cb flushing.Dave Airlie
use the blitter + custom stage to avoid doing a whole lot of state setup by hand. This makes life a lot easier for doing this on evergreen it also keeps all the state setup in one place. We setup a custom context state at the start with a flag to denote its for the flush, when it gets generated we generate the correct state for the flush and no longer have to do it all by hand. this should also make adding texture *to* depth easier.
2010-09-23r600g: fix depth readback on rv610 and other quirky variants.Dave Airlie
at least zreaddraw works for me here now on my rv610
2010-09-23r600g: use floats instead of hex for blit vboDave Airlie
once I go past 0x3f80000, I can't translate hex to float in-brain anymore.
2010-09-22r600g: make stencil readback workDave Airlie
need to write two components to get stencil components as well
2010-09-22r600g: cleanup some of the DB blit codeDave Airlie
add cb/db flush states to the blit code. add support for the rv6xx that need special treatment. according to R6xx_7xx_3D.pdf set r700 CB_SHADER_CONTROL reg in blit code docs say dual export should be disabled for DB->CB
2010-09-20r600g: move chip class to radeon common structureJerome Glisse
So texture code can be shared btw new state design & old one. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-17r600g: move constant buffer creation behind winsys abstraction.Dave Airlie
this paves the way for moving to pb bufmgrs now.
2010-09-17r600g: attempt to abstract kernel bos from pipe driver.Dave Airlie
introduce an abstraction layer between kernel bos and the winsys BOs. this is to allow plugging in pb manager with minimal disruption to pipe driver.
2010-09-17r600g: hide radeon_ctx inside winsys.Dave Airlie
no need for this info to be exported to pipe driver.
2010-09-16r600g: Fixed a bo leak in r600_blit_state_ps_shader().Tilman Sauerbeck
We would leak the newly created bo if it cannot be mapped. Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-09-01r600g: avoid dynamic allocation of statesJerome Glisse
Make state statically allocated, this kills a bunch of code and avoid intensive use of malloc/free. There is still a lot of useless duplicate function wrapping that can be kill. This doesn't improve yet performance, needs to avoid memcpy states in radeon_ctx_set_draw and to avoid rebuilding vs_resources, dsa, scissor, cb_cntl, ... states at each draw command. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-09-01Revert "Revert "r600g: precompute some of the hw state""Jerome Glisse
This reverts commit 1fa7245c348cb7aced81f1672140f64cb6450e2f. Conflicts: src/gallium/drivers/r600/r600_state.c
2010-09-01Revert "r600g: precompute some of the hw state"Dave Airlie
This reverts commit de0b76cab22caa9fc7260f80acb8f151ccced6c5, its pre-computes the texture state wrong, you can't just use an array of levels, since you can have FBOs to depth texture slices inside a level as well it would get really messy quickly. Probably need to split commits like this up into pieces for each piece of state, so we can revert bits easier in case of regressions. This also break 5 piglit tests, and valgrind starts to warn about invalid read/writes after this.
2010-09-01r600g: fix typo causing segfault.Dave Airlie
fixes warning that r600_blit.c: In function ‘r600_resource_copy_region’: r600_blit.c:136: warning: passing argument 1 of ‘util_resource_copy_region’ from incompatible pointer type and also 7 more piglit tests.
2010-08-30r600g: precompute some of the hw stateJerome Glisse
Idea is to build hw state at pipe state creation and reuse them while keeping a non PM4 packet interface btw winsys & pipe driver. This commit also force rebuild of pm4 packet on each call to radeon_state_pm4 which in turn slow down everythings, this will be addressed. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-30r600g: fix depth buffer decompression after states reworkJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-30r600g: fixup states generation in winsys.Dave Airlie
The current states code had an unhealthy relationship between that had to somehow magically align themselves, editing either place meant renumbering all states after the one you were on, and it was pretty unapproachable code. This replaces the huge types structures with a simple type + sub type struct, which is keyed on an stype enum in radeon.h. Each stype can have a per-shader type subclassing (4 types supported, PS/VS/GS/FS), and also has a number of states per-subtype. So you have 256 constants per 4 shaders per one CONSTANT stype. The interface from the driver is changed to pass in the tuple, (stype, id, shader_type), and we look for this. If radeon_state_shader ever shows up on profile, it could use a hashtable based on stype/shader_type to speed things up. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-08-27Revert "r600g: simplify states"Dave Airlie
This reverts commit bd25e23bf3740f59ce8859848c715daeb9e9821f. Apart from introducing a lot of hex magic numbers and being highly impenetable code, it causes lots of lockups on an average piglit run that always runs without lockups. Always run piglit before/after doing big things like this.
2010-08-25r600g: simplify statesJerome Glisse
Directly build PM4 packet, avoid using malloc (no states are bigger than 128 dwords), remove unecessary informations, remove pm4 building in favor of prebuild pm4 packet. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-23r600g: export one component per pixel + r7xx uncompression shaderJerome Glisse
We need to always at least export one component (wether it's depth or color. Add valid r7xx shader program for depth decompression. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-22r600g: fix DB decompressionJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-22r600g: depth buffer likely needs decompression when used as textureJerome Glisse
Before using depth buffer as texture, it needs to be decompressed (tile pattern of db are different from one used for colorbuffer like texture) Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-21r600g: partialy fix texturing from depth buffer + initial support for untilingJerome Glisse
Partialy fix texturing from depth buffer, depth buffer is tiled following different tile organisation that color buffer. This properly set the tile type & array mode field of texture sampler when sampling from db resource. Add initial support to untiling buffer when transfering them, it's kind of broken by corruption the vertex buffer of previous draw. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-20r600g: add occlusion query supportDave Airlie
Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-08-17r600g: add user clip plane support.Dave Airlie
Apart from the fact that the radeon.h/r600_states.h editing is a nightmare, this wasn't so bad. passes piglit user-clip test now also trivial tests. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-08-03r600g: fix stencilJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-07-28r600g: split pipe state creating/binding from hw state creationJerome Glisse
Split hw vs pipe states creation handling as hw states group doesn't match pipe state group exactly. Right now be dumb about that and rebuild all hw states on each draw call. More optimization on that side coming. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-06-09r600g: save vertex buffers in blitterMarek Olšák
2010-06-04r600g: implement clear_{render_target, depth_stencil}, resource_copy_regionMarek Olšák
resource_copy_region uses a software fallback because it relies on texture samplers which haven't been implemented yet.
2010-06-04r600g: make blit functions static (private)Marek Olšák
2010-06-04r600g: use cast wrappersMarek Olšák
2010-06-03r600g: adapt to interface changesRoland Scheidegger
r600g should be able to handle separate depth stencil clears as well. Also adapt surface_fill/copy stubs to new interface (not that it matters).
2010-05-30r600g: Remove unnecessary headers.Vinson Lee
2010-05-29r600g: make a local copy of viewport stateMarek Olšák
2010-05-27r600g: various fixesBas Nieuwenhuizen
- enabled flushing a buffer more than once - enabled the blitter for r600_clear - added some more colors to r600_is_format_supported (copied from r600_conv_pipe_format) - r600_set_framebuffer_state now sets rctx->fb_state - more states are saved before a blit (had to add some accounting for the viewport and the vertex elements state) - fixed a few errors with reference counting
2010-05-27r600g: Initial importJerome Glisse