Zack Rusin [Mon, 14 Jun 2010 14:48:40 +0000 (10:48 -0400)]
graw: small fixups for the gs examples
Marek Olšák [Mon, 14 Jun 2010 11:03:13 +0000 (13:03 +0200)]
r300g: fix uploading RC state shader constants on r3xx
I've messed this up in one of my previous commits.
Reported-by: Igor Murzov
Marek Olšák [Sun, 13 Jun 2010 23:20:14 +0000 (01:20 +0200)]
r300g: drop begin_cs/end_cs
I have had a look at the libdrm sources and they just contain more or less
the same checking we do in macros, and begin_cs may realloc the CS buffer
if we overflow it, which never happens with r300g. So these are pretty
much useless.
There is a small but measurable performance increase by dropping the two
functions.
Marek Olšák [Mon, 14 Jun 2010 03:18:47 +0000 (05:18 +0200)]
r300g: rewrite occlusion queries
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.
Marek Olšák [Mon, 14 Jun 2010 00:51:29 +0000 (02:51 +0200)]
r300g: emit viewport state as a dword table
Marek Olšák [Mon, 14 Jun 2010 00:28:44 +0000 (02:28 +0200)]
r300g: subclass pipe_surface
Marek Olšák [Mon, 14 Jun 2010 00:26:02 +0000 (02:26 +0200)]
r300g: simplify reloc macros
Marek Olšák [Sun, 13 Jun 2010 19:16:00 +0000 (21:16 +0200)]
r300g: count CS dwords on debug builds only
Marek Olšák [Sun, 13 Jun 2010 04:39:58 +0000 (06:39 +0200)]
r300g: optimize emission of fragment shader constants
Marek Olšák [Sun, 13 Jun 2010 04:11:54 +0000 (06:11 +0200)]
r300g: turn fragment shader into a CB
Marek Olšák [Sun, 13 Jun 2010 03:31:48 +0000 (05:31 +0200)]
r300g: turn depth stencil state into a CB
Marek Olšák [Sun, 13 Jun 2010 02:37:45 +0000 (04:37 +0200)]
r300g: turn clip state into a CB
Marek Olšák [Sun, 13 Jun 2010 01:25:39 +0000 (03:25 +0200)]
r300g: turn blend color into a CB
Marek Olšák [Sun, 13 Jun 2010 00:36:08 +0000 (02:36 +0200)]
r300g: turn blend state into a CB
Marek Olšák [Sat, 12 Jun 2010 22:31:04 +0000 (00:31 +0200)]
r300g: add API for building command buffers
The idea is to build a hardware command buffer for every CSO and memcpy
the buffer to a command stream at bind time (or dirty-state-emission time,
to be precise).
Marek Olšák [Sat, 12 Jun 2010 21:45:02 +0000 (23:45 +0200)]
r300g: inline FLUSH_CS
The fewer macros, the better.
Marek Olšák [Sat, 12 Jun 2010 21:39:23 +0000 (23:39 +0200)]
r300g: reorder CS macros and document them a little
Marek Olšák [Sat, 12 Jun 2010 21:22:48 +0000 (23:22 +0200)]
r300g: drop DBG_CS
I'd like the CS macros to be as lightweight as possible for performance
reasons.
Marek Olšák [Sat, 12 Jun 2010 21:01:57 +0000 (23:01 +0200)]
r300g: inline CHECK_CS
Marek Olšák [Sat, 12 Jun 2010 20:07:41 +0000 (22:07 +0200)]
r300g: replace r300_cs_info with simplier get_cs_free_dwords
Marek Olšák [Sat, 12 Jun 2010 19:56:37 +0000 (21:56 +0200)]
r300g: fix multiple render targets
This fixes tests/drawbuffers.
Marek Olšák [Sat, 12 Jun 2010 19:35:30 +0000 (21:35 +0200)]
r300g: remove r300_state.h
Marek Olšák [Sat, 12 Jun 2010 19:30:37 +0000 (21:30 +0200)]
r300g: move two-sided stencilref fallback to its own file
Marek Olšák [Sat, 12 Jun 2010 19:16:41 +0000 (21:16 +0200)]
r300g: move index buffer translate functions to their new home
Marek Olšák [Tue, 8 Jun 2010 21:46:40 +0000 (23:46 +0200)]
r300g: add fallback for unaligned/unsupported vertex stride/offset/format
There is a problem though, the translate module cannot emit half float
vertices.
Marek Olšák [Sat, 12 Jun 2010 18:34:50 +0000 (20:34 +0200)]
r300g: upload only vertex buffers referenced by vertex elements
Eric Anholt [Fri, 11 Jun 2010 22:14:22 +0000 (15:14 -0700)]
i965: Fix gen6 front cull mode.
Zhenyu Wang [Sun, 13 Jun 2010 04:37:14 +0000 (21:37 -0700)]
i965: Use the new message header format for FF_SYNC on gen6.
Zhenyu Wang [Sun, 13 Jun 2010 04:30:20 +0000 (21:30 -0700)]
i965: Add support for math instructions in the gen6 WM.
Zhenyu Wang [Sun, 13 Jun 2010 04:19:38 +0000 (21:19 -0700)]
i965: Set the correct WM GRF start reg on gen6.
Eric Anholt [Fri, 11 Jun 2010 22:35:52 +0000 (15:35 -0700)]
i965: Update gen6 paths for the streaming rework.
Eric Anholt [Fri, 11 Jun 2010 20:21:59 +0000 (13:21 -0700)]
i965: Stream out CC unit state.
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] gl firefox-talos-gfx 31.791 32.287 1.11% 6/6
after:
[ 0] gl firefox-talos-gfx 31.198 31.675 0.96% 6/6
Zack Rusin [Sat, 12 Jun 2010 14:44:31 +0000 (10:44 -0400)]
draw/gs: copy the outputs only if we emitted something
Zack Rusin [Sat, 12 Jun 2010 14:40:39 +0000 (10:40 -0400)]
softpipe: small cleanup
Joakim Sindholt [Sat, 12 Jun 2010 13:39:13 +0000 (15:39 +0200)]
r300/compiler: fix scons build
Vinson Lee [Sat, 12 Jun 2010 08:44:43 +0000 (01:44 -0700)]
i965: Remove unnecessary header.
Vinson Lee [Sat, 12 Jun 2010 01:43:58 +0000 (18:43 -0700)]
scons: Disable i965g build if using MSVC.
i965g uses C99 constructs that are not supported by MSVC.
Vinson Lee [Sat, 12 Jun 2010 01:42:08 +0000 (18:42 -0700)]
scons: Disable i915g build if using MSVC.
i915g uses C99 constructs that are not supported by MSVC.
Tom Stellard [Fri, 11 Jun 2010 02:18:20 +0000 (19:18 -0700)]
r300/compiler: Handle more complex conditionals in loops.
Tom Stellard [Tue, 8 Jun 2010 07:19:37 +0000 (00:19 -0700)]
r300/compiler: Fix warning.
Tom Stellard [Tue, 8 Jun 2010 07:16:38 +0000 (00:16 -0700)]
r300/compiler: Handle SGT and SLE at the beginning of loops.
Tom Stellard [Tue, 8 Jun 2010 06:52:25 +0000 (23:52 -0700)]
r300/compiler: Verify assumptions about opcode types.
Tom Stellard [Sat, 5 Jun 2010 19:59:02 +0000 (12:59 -0700)]
r300/compiler: Unroll loops that decrement the counter.
e.g. for(i=10; i>0; i--)
Tom Stellard [Mon, 31 May 2010 18:53:23 +0000 (11:53 -0700)]
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++)
Tom Stellard [Fri, 28 May 2010 00:14:51 +0000 (17:14 -0700)]
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.
Eric Anholt [Fri, 11 Jun 2010 19:21:23 +0000 (12:21 -0700)]
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.
Eric Anholt [Fri, 11 Jun 2010 07:53:05 +0000 (00:53 -0700)]
i965: Warning fixes from the i965-streaming merge.
Zack Rusin [Fri, 11 Jun 2010 17:31:52 +0000 (13:31 -0400)]
gallium/softpipe/draw: support samplers in geometry shaders
Zack Rusin [Fri, 11 Jun 2010 14:35:24 +0000 (10:35 -0400)]
tgsi: support 2d indirect addressing
Eric Anholt [Fri, 11 Jun 2010 07:09:14 +0000 (00:09 -0700)]
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.
Eric Anholt [Thu, 10 Jun 2010 00:19:40 +0000 (17:19 -0700)]
i965: GC the last two arguments to brw_cache_data.
Now that the binding table is streamed indirect state, they were
always NULL/0.
Eric Anholt [Tue, 8 Jun 2010 06:04:09 +0000 (23:04 -0700)]
i965: Remove brw_state_cache_bo_delete now that it's unused again.
Eric Anholt [Fri, 11 Jun 2010 06:45:51 +0000 (23:45 -0700)]
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
Eric Anholt [Mon, 7 Jun 2010 16:25:10 +0000 (09:25 -0700)]
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)
Eric Anholt [Fri, 11 Jun 2010 00:09:21 +0000 (17:09 -0700)]
i965: Split constant buffer setup from its surface state/binding state.
This was bothering me when redoing the binding tables.
Eric Anholt [Thu, 11 Mar 2010 22:33:00 +0000 (14:33 -0800)]
i965: Add support for streaming indirect state rather than caching objects.
Eric Anholt [Thu, 10 Jun 2010 05:24:14 +0000 (22:24 -0700)]
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().
Eric Anholt [Thu, 10 Jun 2010 00:16:05 +0000 (17:16 -0700)]
i965: Update old comment about state cache sizing.
Eric Anholt [Thu, 10 Jun 2010 00:48:15 +0000 (17:48 -0700)]
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.
Brian Paul [Sat, 5 Jun 2010 13:30:01 +0000 (07:30 -0600)]
i965: remove UseProgram driver callback
It just duplicated the default/core Mesa behaviour.
Chia-I Wu [Fri, 11 Jun 2010 04:47:14 +0000 (12:47 +0800)]
docs: Update EGL doc.
Update for recent removal of demos and additions of new displays and
functions.
Chia-I Wu [Fri, 11 Jun 2010 04:29:01 +0000 (12:29 +0800)]
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.
Chia-I Wu [Thu, 3 Jun 2010 11:52:15 +0000 (19:52 +0800)]
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.
Chia-I Wu [Thu, 3 Jun 2010 10:08:48 +0000 (18:08 +0800)]
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.
Vinson Lee [Thu, 10 Jun 2010 22:52:04 +0000 (15:52 -0700)]
st/egl: Remove unnecessary header.
Vinson Lee [Thu, 10 Jun 2010 22:47:37 +0000 (15:47 -0700)]
intel: Remove unnecessary header.
Zack Rusin [Thu, 10 Jun 2010 19:25:30 +0000 (15:25 -0400)]
draw: forgot to add a file
Zack Rusin [Thu, 10 Jun 2010 19:23:01 +0000 (15:23 -0400)]
draw: rewrite geometry shader pipeline
done to handle strips correctly as inputs - we need to decompose
the strips
Zack Rusin [Thu, 10 Jun 2010 17:20:15 +0000 (13:20 -0400)]
gs: give our test an option of rendering a strip
Zack Rusin [Thu, 10 Jun 2010 17:07:27 +0000 (13:07 -0400)]
draw: geometry shader fixes
don't overwrite the inputs and make sure the correct primitive
is used on entry
Zack Rusin [Thu, 10 Jun 2010 09:15:55 +0000 (05:15 -0400)]
draw: make sure that the gs never outputs more data than we allocated for
Vinson Lee [Thu, 10 Jun 2010 07:33:25 +0000 (00:33 -0700)]
r300g: Fix memory leak on error path.
Eric Anholt [Tue, 25 May 2010 18:45:05 +0000 (11:45 -0700)]
i965: Add support for GL_ALPHA framebuffer objects.
Eric Anholt [Tue, 25 May 2010 15:00:51 +0000 (08:00 -0700)]
mesa: Allow GL_ALPHA FBOs with ARB_framebuffer_object.
Drivers still reject them today, but cairo would like to use these.
Eric Anholt [Thu, 10 Jun 2010 07:15:48 +0000 (00:15 -0700)]
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.
Eric Anholt [Wed, 9 Jun 2010 20:54:24 +0000 (13:54 -0700)]
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.
Eric Anholt [Tue, 8 Jun 2010 20:55:53 +0000 (13:55 -0700)]
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.
Marek Olšák [Wed, 9 Jun 2010 19:29:26 +0000 (21:29 +0200)]
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.
Zack Rusin [Wed, 9 Jun 2010 19:01:36 +0000 (15:01 -0400)]
draw: make sure geometry shader correctly iterates the output buffer
Marek Olšák [Wed, 9 Jun 2010 18:22:27 +0000 (20:22 +0200)]
r300g: debug output texture size
Marek Olšák [Wed, 9 Jun 2010 18:16:00 +0000 (20:16 +0200)]
r300g: return NULL texture early if buffer_create fails
Zack Rusin [Wed, 9 Jun 2010 18:11:43 +0000 (14:11 -0400)]
draw: make sure the buffer is big enough to fit everything emitted by the gs
Roland Scheidegger [Wed, 9 Jun 2010 16:46:48 +0000 (18:46 +0200)]
llvmpipe: fix copy & paste bug in clear logic
fixes bug 28450.
Zack Rusin [Wed, 9 Jun 2010 15:59:53 +0000 (11:59 -0400)]
draw: fix geometry shader which emit multiplie primitives
Zack Rusin [Wed, 9 Jun 2010 15:44:19 +0000 (11:44 -0400)]
graw: add a multiple primitive geometry shader test
Zack Rusin [Wed, 9 Jun 2010 15:29:45 +0000 (11:29 -0400)]
nv: fix compile after the latest gs changes
Zack Rusin [Wed, 9 Jun 2010 15:13:34 +0000 (11:13 -0400)]
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.
Thomas Hellstrom [Tue, 8 Jun 2010 01:33:18 +0000 (03:33 +0200)]
xorg/vmwgfx: Disable 3D by default.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Thomas Hellstrom [Tue, 8 Jun 2010 01:28:37 +0000 (03:28 +0200)]
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>
Ben Skeggs [Wed, 9 Jun 2010 01:58:07 +0000 (11:58 +1000)]
nvfx: fix typo from gallium-msaa merge
Ben Skeggs [Wed, 9 Jun 2010 01:57:31 +0000 (11:57 +1000)]
nv50: fix typo from gallium-msaa merge
Ben Skeggs [Wed, 9 Jun 2010 01:26:46 +0000 (11:26 +1000)]
nv50: use MARK_RING correctly
Vinson Lee [Wed, 9 Jun 2010 00:39:51 +0000 (17:39 -0700)]
draw: Remove unnecessary headers.
Marek Olšák [Wed, 9 Jun 2010 00:19:59 +0000 (02:19 +0200)]
r600g: save vertex buffers in blitter
Marek Olšák [Wed, 9 Jun 2010 00:19:33 +0000 (02:19 +0200)]
r300g: save vertex buffers in blitter
Marek Olšák [Wed, 9 Jun 2010 00:13:10 +0000 (02:13 +0200)]
util: reference vertex buffers in blitter
Marek Olšák [Tue, 8 Jun 2010 22:26:28 +0000 (00:26 +0200)]
r300g: report that transfers are always supported
Marek Olšák [Tue, 8 Jun 2010 22:18:02 +0000 (00:18 +0200)]
r300g: fix loading compressed textures
Marek Olšák [Tue, 8 Jun 2010 21:45:11 +0000 (23:45 +0200)]
r300g: skip rendering for unsupported vertex formats instead of aborting
The next step is to replace skipping by an actual fallback.
Eric Anholt [Tue, 8 Jun 2010 00:42:03 +0000 (17:42 -0700)]
intel: Flag NEW_BUFFERS when changing draw buffers.
There were entries to this function (most imporantly, prepare_render
-> update_renderbuffers) that wouldn't have had NEW_BUFFERS set, but
brw_wm_surface_state (the i965 state tracking the drawing regions)
expected this to change.