Commit Graph

35011 Commits

Author SHA1 Message Date
Tom Stellard 0f1109ce36 r300/compiler: Unroll loops that have a constant number of iterations.
This only works with for loops that increment the counter.
e.g. for(i=0; i<10; i++)
2010-06-11 22:06:58 +02:00
Tom Stellard 622fd4d061 r300/compiler: Implement simple loop emulation
The loop emulation unrolls loops as may times as possbile while still
keeping the shader program below the maximum instruction limit.  At this
point, there are no checks for constant conditionals.  This is only enabled
for fragment shaders.
2010-06-11 22:06:58 +02:00
Eric Anholt 108264e859 i965: Remove the surface key used to generate constant surfaces.
We had to fill out all that junk when using the cache, but no more.
2010-06-11 12:21:23 -07:00
Eric Anholt 34c82804ed i965: Warning fixes from the i965-streaming merge. 2010-06-11 12:09:26 -07:00
Zack Rusin 53bd9796a1 gallium/softpipe/draw: support samplers in geometry shaders 2010-06-11 13:31:52 -04:00
Zack Rusin 2396967038 tgsi: support 2d indirect addressing 2010-06-11 10:35:24 -04:00
Eric Anholt 27bc2de546 i965: Use the state base address to avoid relocations.
This makes the binding table code simpler, and is required for gen6,
which requires binding table addresses to be under 64k offset from the
surface state base addr.

No significant change in performance on firefox-talos-gfx.
2010-06-11 00:16:15 -07:00
Eric Anholt 8ad3fdc967 i965: GC the last two arguments to brw_cache_data.
Now that the binding table is streamed indirect state, they were
always NULL/0.
2010-06-11 00:16:15 -07:00
Eric Anholt 309c011641 i965: Remove brw_state_cache_bo_delete now that it's unused again. 2010-06-11 00:16:09 -07:00
Eric Anholt 178414eba4 i965: Remove caching of surface state objects.
It turns out that computing a 56 byte key to look up a 20-byte object
out of a hash table was some sort of a bad idea.  Whoops.

before:
[ # ]  backend                         test   min(s) median(s) stddev. count
[  0]       gl            firefox-talos-gfx   37.799   38.203   0.39%    6/6
after:
[  0]       gl            firefox-talos-gfx   34.761   34.784   0.17%    5/6
2010-06-11 00:15:59 -07:00
Eric Anholt 73de09f265 i965: Convert the binding table to streamed indirect state.
This slightly reduces reduces cairo-gl firefox-talos-gfx runtime on my
Ironlake:
before:
[ # ]  backend                         test   min(s) median(s) stddev. count
[  0]       gl            firefox-talos-gfx   38.236   38.383   0.43%    5/6
after:
[  0]       gl            firefox-talos-gfx   37.799   38.203   0.39%    6/6

It turns out the cost of caching these objects and looking them up in
the cache again is greater than the cost of just computing the object
again, particularly when the overhead of having a separate BO to pin
is removed.

(Those that are paying close attention will note that this is a
reversal of the path I was moving the driver in a couple of years ago.
The major thing that has changed is that back then all state was
recomputed when we wrapped the streaming state buffer, including
recompiling our precious programs.  Now, we're uncaching just the
objects that are cheap to compute, and retaining caching of expensive
objects)
2010-06-11 00:15:56 -07:00
Eric Anholt 118a47623a i965: Split constant buffer setup from its surface state/binding state.
This was bothering me when redoing the binding tables.
2010-06-11 00:15:56 -07:00
Eric Anholt 321014156b i965: Add support for streaming indirect state rather than caching objects. 2010-06-11 00:15:56 -07:00
Eric Anholt f5bb775fd1 i965: Set the CC VP state immediately on state change.
The cache lookup of these two little floats was .12% of total CPU time
on firefox-talos-gfx because we did it any time commonly-changed state
changed.  On the other hand, updating the CC VP bo immediately whenver
CC VP state changes is a .07% overhead due to putting a driver hoook
in glEnable().
2010-06-11 00:15:56 -07:00
Eric Anholt 315ef0312a i965: Update old comment about state cache sizing. 2010-06-11 00:15:56 -07:00
Eric Anholt 3b3278519a i965: Move no_batch_wrap assertion out across the area we're trying to verify.
It's more likely that we wrap badly in state setup than in the little
primitive packet.
2010-06-11 00:15:55 -07:00
Brian Paul 0a48949a11 i965: remove UseProgram driver callback
It just duplicated the default/core Mesa behaviour.
2010-06-10 23:33:51 -06:00
Chia-I Wu 411bba3446 docs: Update EGL doc.
Update for recent removal of demos and additions of new displays and
functions.
2010-06-11 12:55:09 +08:00
Chia-I Wu ebed500fae st/egl: Do not build non-working driver combinations.
The KMS backend requires a hardware pipe driver.  Do not build
egl_kms_swrast.  Also, only build egl_fbdev_swrast for fbdev backend.
It is a pure software backend.
2010-06-11 12:55:09 +08:00
Chia-I Wu 71580edc01 st/egl: Add fbdev backend.
The backend is pure software.  It implements EGL_MESA_screen_surface
extension, and is kept simple by only exporting the current mode.
2010-06-11 12:55:09 +08:00
Chia-I Wu ce0c837f60 winsys: Add fbdev software winsys.
This is a simple winsys that mmap()s the framebuffer device and
memcpy()s the contents of display targets to the framebuffer device for
displaying.
2010-06-11 12:23:38 +08:00
Vinson Lee 628cf02d67 st/egl: Remove unnecessary header. 2010-06-10 15:52:04 -07:00
Vinson Lee 77cbf32e61 intel: Remove unnecessary header. 2010-06-10 15:47:37 -07:00
Zack Rusin 9896b7ebeb draw: forgot to add a file 2010-06-10 15:25:30 -04:00
Zack Rusin 29639932f7 draw: rewrite geometry shader pipeline
done to handle strips correctly as inputs - we need to decompose
the strips
2010-06-10 15:23:01 -04:00
Zack Rusin 226ff53e63 gs: give our test an option of rendering a strip 2010-06-10 13:20:15 -04:00
Zack Rusin 4d0baa73c9 draw: geometry shader fixes
don't overwrite the inputs and make sure the correct primitive
is used on entry
2010-06-10 13:07:27 -04:00
Zack Rusin 9ef6d34f7e draw: make sure that the gs never outputs more data than we allocated for 2010-06-10 05:15:55 -04:00
Vinson Lee 9be40de087 r300g: Fix memory leak on error path. 2010-06-10 00:33:25 -07:00
Eric Anholt 6383428588 i965: Add support for GL_ALPHA framebuffer objects. 2010-06-10 00:40:00 -07:00
Eric Anholt 262cdbd957 mesa: Allow GL_ALPHA FBOs with ARB_framebuffer_object.
Drivers still reject them today, but cairo would like to use these.
2010-06-10 00:22:01 -07:00
Eric Anholt ceba688cb5 swrast: When reading from a 0-bits r,g,b channel, return 0 not 1.
It looks like we were reading a fractional value, multiplying by an
enormous negative value, then stuffing that value into a bitfield
assuming it was already clamped.  This becomes relevant for GL_ALPHA
or R/RG FBOs.
2010-06-10 00:22:00 -07:00
Eric Anholt 94731797c6 intel: Use the blitter to upload TexSubImage data to busy textures.
This avoids many pipeline stalls in cairo-gl.
[ # ]  backend                         test   min(s) median(s) stddev. count
Before:
[  0]       gl            firefox-talos-gfx   36.799   36.851   2.34%    3/3
[  0]       gl            firefox-talos-svg   33.429   35.360   3.46%    3/3
After:
[  0]       gl            firefox-talos-gfx   35.895   36.250   0.48%    3/3
[  0]       gl            firefox-talos-svg   26.669   29.888   5.34%    3/3

This doesn't avoid all the pipeline stalls because the kernel reports
!busy for buffers on the flushing list.  That should be fixed in .36.
2010-06-09 14:23:46 -07:00
Eric Anholt 503eb57a00 i965: Avoid calloc/free in the CURBE upload process.
In exchange we end up with an extra memcpy, but that seems better than
calloc/free.  Each buffer is 4k maximum, and on the i965-streaming
branch this allocation was showing up as the top entry in
brw_validate_state profiling for cairo-gl.
2010-06-09 14:17:52 -07:00
Marek Olšák 45fb47d50c r300g: try harder to create a transfer object
I was told this wouldn't help to fix the FDO bug #28443, but still,
it's a harmless last resort.

Also, linear textures safely fallback to an unpipelined transfer here.
2010-06-09 21:43:31 +02:00
Zack Rusin 1d11eac93f draw: make sure geometry shader correctly iterates the output buffer 2010-06-09 15:02:08 -04:00
Marek Olšák f571a569a0 r300g: debug output texture size 2010-06-09 20:22:52 +02:00
Marek Olšák 950be3fa3c r300g: return NULL texture early if buffer_create fails 2010-06-09 20:17:27 +02:00
Zack Rusin da4185ca77 draw: make sure the buffer is big enough to fit everything emitted by the gs 2010-06-09 14:11:43 -04:00
Roland Scheidegger 26d5d4d995 llvmpipe: fix copy & paste bug in clear logic
fixes bug 28450.
2010-06-09 18:46:52 +02:00
Zack Rusin 04490ad31d draw: fix geometry shader which emit multiplie primitives 2010-06-09 11:59:53 -04:00
Zack Rusin d27d45a2df graw: add a multiple primitive geometry shader test 2010-06-09 11:44:19 -04:00
Zack Rusin db7ed20730 nv: fix compile after the latest gs changes 2010-06-09 11:29:45 -04:00
Zack Rusin d4ef0f6c67 geometry shaders: make gs work with changable primitives and variable number of vertices
lots and lots of fixes for geometry shaders. in particular now we work when the gs
emits a different primitive than the one the pipeline was started with and also
we work when gs emits more vertices than would fit in the original buffer.
2010-06-09 11:13:34 -04:00
Thomas Hellstrom cec9955acc xorg/vmwgfx: Disable 3D by default.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
2010-06-09 07:40:07 +02:00
Thomas Hellstrom 2e27bf8b7c st/xorg: Add a customizable option to disable 3D.
If no customizer is present, 3D will be enabled by default.
Otherwise the option will default to the customizer value.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
2010-06-09 07:40:07 +02:00
Ben Skeggs ebd98b3496 nvfx: fix typo from gallium-msaa merge 2010-06-09 11:59:49 +10:00
Ben Skeggs 851ca2f7f9 nv50: fix typo from gallium-msaa merge 2010-06-09 11:59:01 +10:00
Ben Skeggs 7bf678f7ec nv50: use MARK_RING correctly 2010-06-09 11:59:01 +10:00
Vinson Lee c217d94cca draw: Remove unnecessary headers. 2010-06-08 17:40:23 -07:00