summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_context.h
AgeCommit message (Collapse)Author
2010-09-28r300g: add support for 3D NPOT textures without mipmappingMarek Olšák
The driver actually creates a 3D texture aligned to POT and does all the magic with texture coordinates in the fragment shader. It first emulates REPEAT and MIRRORED wrap modes in the fragment shader to get the coordinates into the range [0, 1]. (already done for 2D NPOT) Then it scales them to get the coordinates of the NPOT subtexture. NPOT textures are now less of a lie and we can at least display something meaningful even for the 3D ones. Supported wrap modes: - REPEAT - MIRRORED_REPEAT - CLAMP_TO_EDGE (NEAREST filtering only) - MIRROR_CLAMP_TO_EDGE (NEAREST filtering only) - The behavior of other CLAMP modes is undefined on borders, but they usually give results very close to CLAMP_TO_EDGE with mirroring working perfectly. This fixes: - piglit/fbo-3d - piglit/tex3d-npot
2010-09-26r300g: fix glsl-fs-pointcoordDave Airlie
Move GB_ENABLE to derived rs state, and find sprite coord for the correct generic and enable the tex coord for that generic. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-09-24r300g: fix the border color for every format other than PIPE_FORMAT_B8G8R8A8Marek Olšák
TX_BORDER_COLOR should be formatted according to the texture format. Also the interaction with ARB_texture_swizzle should be fixed too. NOTE: This is a candidate for the 7.9 branch.
2010-09-16r300g/swtcl: fix CS overrunMarek Olšák
https://bugs.freedesktop.org/show_bug.cgi?id=29901
2010-09-13r300g: fix SWTCLMarek Olšák
https://bugs.freedesktop.org/show_bug.cgi?id=29901
2010-08-25r300g: eliminate unused constants in VSMarek Olšák
2010-08-25r300g: clean up some mess in set_constant_bufferMarek Olšák
2010-08-25r300g: reset the index bias to 0 at the end of CSMarek Olšák
2010-08-23r300g: avoid stall in no-tcl drawing when mapping vboDave Airlie
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>
2010-08-15r300g: do not use HiZ if HiZ RAM is not properly initializedMarek Olšák
2010-08-15r300g: rename dirty_zmask -> zmask_in_useMarek Olšák
2010-08-15r300g: do not use fastfill if ZMask RAM is not properly initializedMarek Olšák
z_fastfill -> dirty_zmask[level].
2010-08-08r300g: flush zmasks of zbuffers we are going to use as samplersMarek Olšák
It sometimes works, sometimes not. I guess we have the zmask offsets wrong.
2010-08-05r300g: implement hyper-z support. (v4)Dave Airlie
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>
2010-07-29gallium: Implement draw_vbo and set_index_buffer for all drivers.Chia-I Wu
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.
2010-07-25r300g: do not use TXPITCH_EN if the width is POT and the height is NPOTMarek Olšák
2010-07-25r300g: cleanup texture creation codeMarek Olšák
This decouples initializing a texture layout/miptree description from an actual texture creation, it also partially unifies texture_create and texture_from_handle. r300_texture inherits r300_texture_desc, which inherits u_resource. The CBZB clear criteria are moved to r300_texture_desc::cbzb_allowed[level]. And other minor cleanups.
2010-07-25r300g: reject resources from handles which are not large enoughMarek Olšák
The driver gets a buffer and its size in resource_from_handle. It computes the required minimum buffer size from given texture properties, and compares the two sizes. This is to early detect DDX bugs.
2010-07-19r300g: use memory pools for buffer_create and get_transferMarek Olšák
The improvement in Tremulous: 68.9 fps -> 71.1 fps.
2010-07-16r300g: do not make copies of constant buffers, emit them directlyMarek Olšák
2010-07-16r300g: rebuild winsys and command submission to support multiple contextsMarek Olšák
2010-07-12r300g: implement fast color clearMarek Olšák
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
2010-07-08r300g: add a function for marking framebuffer atoms as dirtyMarek Olšák
2010-07-08r300g: minor fixupsMarek Olšák
2010-06-30r300g: add workaround for multiple contextsMarek Olšák
2010-06-30r300g: move one flush from winsys to the contextMarek Olšák
This flush happens when changing the tiling flags, and it should really be done in the context. I hope this fixes FDO bug #28630.
2010-06-27r300g: separate the hyperz state and pipelined FB regs out of the FB stateMarek Olšák
2010-06-27r300g: turn rasterizer state into a command bufferMarek Olšák
2010-06-27r300g: move emission of the MSPOS regs into the framebuffer stateMarek Olšák
Now the question is whether we are allowed to ignore gl_rasterization_rules and pipe_rasterizer_state::multisample. The former is invariant anyway and I think the latter would need re-emitting the AA state which is quite costly, considering that it implicitly flushes the whole pipeline (all AA regs in the AA state are *unpipelined*).
2010-06-27r300g: turn invariant state into a command bufferMarek Olšák
2010-06-26r300g: introduce VAP invariant stateMarek Olšák
Unlike other invariant states, this one must be emitted after VAP flush.
2010-06-24r300g: move AA registers into the new AA stateMarek Olšák
2010-06-24r300g: separate the cache flush from the framebuffer stateMarek Olšák
2010-06-22r300g: optimize the immediate mode emission path a bitMarek Olšák
2010-06-21r300g: fix the KIL opcode for r3xx-r4xx (v4)Marek Olšák
2010-06-20r300g: manually assign texture cache regionsMarek Olšák
This should fix corrupted texturing on r3xx-r4xx.
2010-06-19r300g: improve the ZTOP conditionMarek Olšák
The real difference here is that ZTOP is now enabled if all stencil ops are set to KEEP. This improves performance.
2010-06-16r300g: Old MSAA code from before gallium-msaa.Corbin Simpson
2010-06-14r300g: rewrite occlusion queriesMarek Olšák
The previous implementation had issues with queries spanning over several command streams as well as using a very large number of queries. This fixes flickering in Enemy Territory: Quake Wars. The driver now renders everything correctly in this game and the graphics is awesome.
2010-06-14r300g: subclass pipe_surfaceMarek Olšák
2010-06-13r300g: optimize emission of fragment shader constantsMarek Olšák
2010-06-13r300g: turn depth stencil state into a CBMarek Olšák
2010-06-13r300g: turn clip state into a CBMarek Olšák
2010-06-13r300g: turn blend color into a CBMarek Olšák
2010-06-13r300g: turn blend state into a CBMarek Olšák
2010-06-13r300g: remove r300_state.hMarek Olšák
2010-06-13r300g: move two-sided stencilref fallback to its own fileMarek Olšák
2010-06-13r300g: move index buffer translate functions to their new homeMarek Olšák
2010-06-13r300g: add fallback for unaligned/unsupported vertex stride/offset/formatMarek Olšák
There is a problem though, the translate module cannot emit half float vertices.
2010-06-08r300g: skip rendering for unsupported vertex formats instead of abortingMarek Olšák
The next step is to replace skipping by an actual fallback.