Commit graph

39979 commits

Author SHA1 Message Date
Keith Whitwell
f40357e25c gallium: beginnings of draw module vertex rework
Trying to put a structure in place that we can actually optimize.
Initially just implementing a passthrough mode, this will fairly soon
replace all the vertex_cache/prim_queue/shader_queue stuff that's so
hard to understand...

Split the vertex processing into a couple of distinct stages:
- Frontend
    - Prepares two lists of elements (fetch and draw) to be processed
      by the next stage.  This stage doesn't fetch or draw vertices, but
      makes the decision which to draw.  Multiple implementations of this
      will implement different strategies, currently just a vcache
      implementation.
- MiddleEnd
    - Takes the list of fetch elements, fetches them, runs the vertex
      shader, cliptest, viewport transform on them to produce a
      linear array of vertex_header vertices.
    - Passes that list of vertices, plus the draw_elements (which index
      into that list) onto the backend
- Backend
    - Either the existing primitive/clipping pipeline, or the vbuf_render
      hardware backend provided by the driver.

Currently, the middle-end is the old passthrough code, and it build hardware
vertices, not vertex_header vertices as above.  It may be that passthrough
is a special case in this respect.
2008-03-23 17:36:49 +00:00
Ben Skeggs
17491ea27f nv40: vp reg changes similar to recent fp changes 2008-03-23 19:08:59 +11:00
Ben Skeggs
e1ad8c232b nv40: fix fp depth write 2008-03-23 18:20:04 +11:00
Ben Skeggs
4dfcf91296 nv40: remove some badness from fp temp/result allocation
Should hopefully be OK now (on the fragprog size) for MRT.  The hack from
a commit 01cb2cd93e is no longer needed.
2008-03-23 18:15:41 +11:00
Ben Skeggs
3158035154 nv40: catch fp extra-const cases where both const and immd have same idx 2008-03-23 16:32:00 +11:00
Ben Skeggs
ba223e91df nv40: fp: fix multiple refs to a single const withing an instruction 2008-03-23 16:26:42 +11:00
Ben Skeggs
01cb2cd93e nv40: workaround fp result.data[0] clobberage
Temporary, the fp reg handling will get reworked at some point in the near
future.  But before that, there's a few bugs to find.
2008-03-23 16:11:03 +11:00
Ben Skeggs
62a8e7685f nv40: add dxtn formats (disabled) 2008-03-23 14:29:35 +11:00
Ben Skeggs
dcf04ee23c Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1 2008-03-23 14:18:06 +11:00
Brian
dae7993afc gallium: free samplers, textures in destroy() 2008-03-22 09:42:59 -06:00
Brian
2f8f6c2918 gallium: remove temporary _screen suffix from function names 2008-03-22 09:15:23 -06:00
Brian
28b3b07895 gallium: fix mem leak (fee pstipple stage) 2008-03-22 09:12:27 -06:00
José Fonseca
4e977fb35b gallium: Remove pedantic asserts.
Move these to a higher level instead.
2008-03-22 10:59:52 +00:00
Ian Romanick
47531442e9 cell: Generate blend / depth test code when state atom is created
Code generation should be performed when the device-specific state
atom is created, not when it is bound.
2008-03-21 15:57:01 -07:00
Ian Romanick
600499cf88 cell: Change code-gen for CONST_COLOR blend factor
Previously the constant color blend factor was compiled into the
generated code.  This meant that the code had to be regenerated each
time the constant color was changed.  This doesn't fit with the model
used in Gallium.

As-is, the code could be better.  The constant color is loaded for
every quad processed, even if it is not used.  Also, if a lot of (1-x)
blend factors are used, 1.0 will be loaded and reloaded into registers
many times.
2008-03-21 15:57:01 -07:00
Ian Romanick
f140062b72 Tabs to spaces 2008-03-21 15:57:01 -07:00
Ian Romanick
2902c164a2 cell: Remove unnecessary default_blend work-around
I suspect that there was some other bug in the blend code-gen that
made this work-around necessary.
2008-03-21 15:57:01 -07:00
Brian
b70a6babfb i915: added to-do note about setting the max_lod register to get proper min/mag filter selection 2008-03-21 11:10:42 -06:00
Brian Paul
4394736252 gallium: added DXT formats (preliminary, will probably change) 2008-03-21 11:06:52 -06:00
Brian Paul
419248b528 gallium: document is_format_supported()'s type param 2008-03-21 11:06:52 -06:00
Brian Paul
a472e3558e gallium: PIPE_FORMAT_TYPE_ comments 2008-03-21 11:06:52 -06:00
Brian Paul
ad62644290 gallium: added sRGB formats 2008-03-21 11:06:51 -06:00
Brian Paul
403c7ba91a gallium: additional comments, fix typos, etc 2008-03-21 11:06:51 -06:00
Ben Skeggs
75b85fd33a nv40: fix bug in query code 2008-03-21 23:24:16 +11:00
Ben Skeggs
3be8785e08 nv40: add 16-bit SSCALED vb formats 2008-03-21 23:09:01 +11:00
Ben Skeggs
3a0dd2e6d1 nv40: ensure vb relocs don't end up on list for swtnl
Avoids bo code bailing out because of mapped buffers being validated.
2008-03-21 23:03:25 +11:00
Ben Skeggs
19b57690ad nv40: call semi-magic 0x1d88 method 2008-03-21 22:28:18 +11:00
Ben Skeggs
308d7b1711 nv40: swtnl fallback on unsupported array format 2008-03-21 22:09:29 +11:00
Ben Skeggs
0c91f5991d nv40: oops 2008-03-21 22:02:49 +11:00
Ben Skeggs
46b8dd9c16 nv40: s/free/FREE/ 2008-03-21 22:01:22 +11:00
Ben Skeggs
3216287139 nv40: align each level to 64 pixels 2008-03-21 21:58:17 +11:00
Ben Skeggs
ebde8d3a12 nv40: use num_cbufs 2008-03-21 21:18:16 +11:00
Ben Skeggs
1a4dcde808 nouveau: do a retry if initial buffer alloc fails 2008-03-21 18:28:07 +11:00
Ben Skeggs
83e94189c4 nouveau: use saved fence pointer, not head of unsignalled list
It's possible for the unsignalled list head to change during fence_flush.
Fixes valgrind complaint exposed by a previous commit.
2008-03-21 18:17:12 +11:00
Ben Skeggs
735ecf5de8 nouveau: potentially delay buffer destruction
Rather than spinning waiting for the GPU to finish with the buffer,
add a callback on the buffer's fence object instead.  Gives a sizable
performance increase in OA.
2008-03-21 17:40:01 +11:00
Ben Skeggs
5d2577e576 nouveau: try combining prev and next resources on free
Fixes some cases where we end up with a list of many unused chunks that are
too small to be useful.
2008-03-21 17:38:24 +11:00
Ben Skeggs
95e8cad9a3 nv40: use new pipe_framebuffer width/height fields 2008-03-21 12:57:05 +11:00
Ben Skeggs
85108e5f8f Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1 2008-03-21 12:54:34 +11:00
Ian Romanick
cab68957c7 cell: Fix several bugs in blend code-gen
- Alpha factor set to a _COLOR mode was mishandled
- Cases when either dst factor or src factor was ZERO were mishandled
- MIN and MAX cases were backwards
- Case when blend was disabled was mishandled
- Incorrect comments about number of instructions generated

The tests blendminmax and blendsquare run correctly.
2008-03-20 18:17:48 -07:00
Ian Romanick
4b9520fc05 cell: Call the correct function to generate blending code
Cut-and-paste for the lose. :(
2008-03-20 17:37:26 -07:00
Ian Romanick
df1d6e2410 cell: Fix bus error when there is no depth buffer 2008-03-20 17:37:26 -07:00
Ian Romanick
2b21bde3b1 cell: Use code-gen for alpha blend
So far this is only tested when GL_BLEND is disabled.
2008-03-20 17:37:26 -07:00
Brian
0565e6888a gallium: set fb.width/height 2008-03-20 15:22:20 -06:00
Brian
00cf178d93 gallium: enable vp input semantic info 2008-03-20 15:21:55 -06:00
Brian
09f67990ab gallium: use new framebuffer width, height fields 2008-03-20 15:04:08 -06:00
Brian
2fb30b77ad cell: use pipe_framebuffer_state.width, height 2008-03-20 15:04:08 -06:00
Brian
80567f9c9f gallium: added width, height to pipe_framebuffer_state 2008-03-20 15:04:08 -06:00
Brian
b028d32af4 gallium: create one vertex buffer and re-use 2008-03-20 15:04:08 -06:00
Brian
18be9a588a gallium: use sizeof(vertex buffer) 2008-03-20 15:04:08 -06:00
José Fonseca
9fa88fb3c5 gallium: Give some chance for the table to actually grow. 2008-03-20 20:40:50 +00:00