Marek Olšák [Thu, 15 Apr 2010 07:52:26 +0000 (09:52 +0200)]
r300g: do not use NPOT fallback for CLAMP wrap modes
These work just fine.
Marek Olšák [Thu, 15 Apr 2010 07:26:07 +0000 (09:26 +0200)]
r300g: pick a new fragment shader when either a sampler state or view is changed
Vinson Lee [Thu, 15 Apr 2010 06:49:31 +0000 (23:49 -0700)]
st/mesa: Remove unnecessary headers.
Xavier Chantry [Wed, 14 Apr 2010 21:44:22 +0000 (23:44 +0200)]
nvfx: dont swizzle stuff into GART
swzsurf doesn't support GART
Thanks to Marcin Kościelnicki <koriakin@0x04.net> for spotting that !
This fixes corruption in etracer and the following related errors :
[14381.551927] [drm] nouveau 0000:01:00.0: PGRAPH_ERROR - nSource:
PROTECTION_ERROR, nStatus: INVALID_STATE
[14381.551945] [drm] nouveau 0000:01:00.0: PGRAPH_ERROR - Ch 2/2 Class
0x039e Mthd 0x0184 Data 0x00001cd9:0x00001cd9
Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Adapted by Luca Barbieri for mesa master.
Luca Barbieri [Thu, 15 Apr 2010 04:57:20 +0000 (06:57 +0200)]
nouveau: replace vtxbuf/idxbuf caps with BO_ flags in nouveau_screen and fix uncached reads on nv3x
Faster, simpler and more flexible.
Also, we set those flags properly on nv3x so that we don't allocate buffers in GART.
Since on AGP GART is uncached, OpenGL doesn't distinguish between vertex and index buffers, and we don't support hardware index buffers for now, this caused uncached reads.
Also check bind and not usage for PIPE_BIND_* flags, got broken in the gallium-resources transition.
Vinson Lee [Thu, 15 Apr 2010 05:59:37 +0000 (22:59 -0700)]
i915g: Remove unnecessary header.
Dave Airlie [Thu, 15 Apr 2010 04:56:20 +0000 (14:56 +1000)]
r300g: fix regression in texdepth.
texdepth stopped working when npot went in, this brings it back
to life.
< MostAwesomeDude> That looks like what I was going to do.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Vinson Lee [Thu, 15 Apr 2010 01:06:54 +0000 (18:06 -0700)]
gallium/tests: Add test case for pipe_barrier.
Jakob Bornecrantz [Wed, 14 Apr 2010 20:44:48 +0000 (21:44 +0100)]
swrastg: Fix defines to be able to load more then one sw driver
Brian Paul [Wed, 14 Apr 2010 19:03:26 +0000 (13:03 -0600)]
llvmpipe: comments for fence functions
Brian Paul [Thu, 8 Apr 2010 20:52:02 +0000 (14:52 -0600)]
progs/tests: added stencilreaddraw to SConscript, Makefile
Brian Paul [Thu, 8 Apr 2010 20:51:23 +0000 (14:51 -0600)]
progs/tests: new stencilreaddraw.c test
Based on the zreaddraw.c test.
Brian Paul [Thu, 8 Apr 2010 19:41:50 +0000 (13:41 -0600)]
mesa: add -D__STDC_CONSTANT_MACROS to linux-llvm
This is needed in more places (st_cb_feedback.c) since the new LLVM
code has been added to the gallium/draw module.
Kristian Høgsberg [Wed, 14 Apr 2010 20:22:27 +0000 (16:22 -0400)]
egl_dri2: Enable KHR_gl_texture_2D_image
Forgot to set the enabled bit when I implemented the extension.
Marek Olšák [Wed, 14 Apr 2010 18:23:15 +0000 (20:23 +0200)]
r300g: fix possible crash when shader compilation fails
This hopefully fixes the crash in the FDO bug #27634, not the bug itself.
Michael Schmidt [Wed, 14 Apr 2010 14:12:42 +0000 (10:12 -0400)]
Initialize DRI2 swap interval to 0
https://bugs.freedesktop.org/show_bug.cgi?id=27628
Kristian Høgsberg [Wed, 14 Apr 2010 14:06:01 +0000 (10:06 -0400)]
glxinfo: Print drawable type in verbose mode
Marek Olšák [Wed, 14 Apr 2010 11:25:51 +0000 (13:25 +0200)]
r300g: simplify get_shader_constant to be rc-constant-state specific
Marek Olšák [Wed, 14 Apr 2010 10:49:20 +0000 (12:49 +0200)]
st/mesa: put ATI_texture_mirror_once in the right place
Vinson Lee [Wed, 14 Apr 2010 08:17:24 +0000 (01:17 -0700)]
progs/gallium: Fix relative path in Makefile.
Corbin Simpson [Wed, 14 Apr 2010 06:28:11 +0000 (23:28 -0700)]
u_blitter: Coords are normalized.
Thanks to Luca Barbieri for spotting this one.
Marek Olšák [Wed, 14 Apr 2010 02:44:13 +0000 (04:44 +0200)]
r300g: remove the CS compenstation for non-atomized states
Now there aren't any. If CS overflow occurs, the fix should go directly
before the problematic BEGIN_CS.
Marek Olšák [Wed, 14 Apr 2010 02:23:48 +0000 (04:23 +0200)]
r300g: remove always_dirty flag and correct leftovers
Marek Olšák [Wed, 14 Apr 2010 02:22:22 +0000 (04:22 +0200)]
r300g: atomize beginning occlusion query
Marek Olšák [Wed, 14 Apr 2010 02:12:08 +0000 (04:12 +0200)]
r300g: atomize VS constant buffer
Marek Olšák [Wed, 14 Apr 2010 00:21:06 +0000 (02:21 +0200)]
r300g: emit VS immediates along with VS code
Marek Olšák [Wed, 14 Apr 2010 00:33:17 +0000 (02:33 +0200)]
r300g: make setting up fragment depth output less hackish
Marek Olšák [Tue, 13 Apr 2010 23:22:53 +0000 (01:22 +0200)]
st/mesa: trivially enable ATI_texture_mirror_once
This is a strict subset of already-advertised EXT_texture_mirror_clamp and
shares the same enumerants.
Marek Olšák [Tue, 13 Apr 2010 23:12:49 +0000 (01:12 +0200)]
r300g: kill off r300_fragment_shader::shadow_samplers and friends
José Fonseca [Wed, 14 Apr 2010 01:22:41 +0000 (10:22 +0900)]
retrace: Update for recent interface changes.
José Fonseca [Wed, 14 Apr 2010 01:03:22 +0000 (10:03 +0900)]
trace: Ignore transfer_flush_region too.
Vinson Lee [Wed, 14 Apr 2010 00:17:15 +0000 (17:17 -0700)]
i915g: Fix winsys SCons build.
Jakob Bornecrantz [Mon, 12 Apr 2010 21:06:48 +0000 (22:06 +0100)]
i915g: Whitespace & formating
Jakob Bornecrantz [Mon, 12 Apr 2010 21:06:23 +0000 (22:06 +0100)]
i915g: Mark shared layouts more clearly
Jakob Bornecrantz [Mon, 12 Apr 2010 21:18:58 +0000 (22:18 +0100)]
i915: Fix comments about cube layouts
Jesse Barnes [Tue, 13 Apr 2010 16:40:14 +0000 (09:40 -0700)]
Merge branch '7.8'
Jesse Barnes [Tue, 13 Apr 2010 16:38:41 +0000 (09:38 -0700)]
DRI2: report swap events correctly in direct rendered case
In the direct rendered case, we need to convert DRI2 swap complete
events to GLX events for the client to consume. This path had what
looks like a stray "& 0x75" from some earlier debugging that prevented
clients from seeing the right event code.
Alan Hourihane [Tue, 13 Apr 2010 14:40:29 +0000 (15:40 +0100)]
llvmpipe: disable half float formats
Chia-I Wu [Tue, 13 Apr 2010 10:17:52 +0000 (18:17 +0800)]
gallium: Remove pipe_screen::update_buffer.
It has no user after the removal of st_public. Plus, it has never been
implemented by a pipe driver or winsys.
Alan Hourihane [Tue, 13 Apr 2010 11:54:36 +0000 (12:54 +0100)]
gallium: disable tests when using embedded build
José Fonseca [Tue, 13 Apr 2010 10:40:48 +0000 (19:40 +0900)]
scons: Fix exception when llvm-config is not present.
Michal Krol [Tue, 13 Apr 2010 07:59:49 +0000 (08:59 +0100)]
util: Fix util_dynarray_trim().
Luca Barbieri [Wed, 20 Jan 2010 08:04:37 +0000 (09:04 +0100)]
nvfx: use dynamically sized rotating BO pool for fragment programs
Currently we used a single buffer for each fragment programs, leading to
rendering synchronization. This patch uses a doubly linked list of BOs,
which is dynamically resized if all the BOs are busy.
Note that inline image transfers could be an alternative option: this
will be explored later.
This removes one of the big performance limitations of the current
driver.
We also stop using pipe_resource internally in favor of using nouveau_bo
directly.
Vinson Lee [Tue, 13 Apr 2010 07:49:58 +0000 (00:49 -0700)]
draw llvm: Initialize variable.
Vinson Lee [Tue, 13 Apr 2010 07:35:10 +0000 (00:35 -0700)]
r300g: Silence uninitialized variable warning.
Vinson Lee [Tue, 13 Apr 2010 07:29:33 +0000 (00:29 -0700)]
st/mesa: Remove state_tracker/st_framebuffer.c from SConscript.
This was missed in commit
da8412ec19ad00627ae9139dc02f46f344bbb6ac.
Fixes SCons build.
Chia-I Wu [Mon, 12 Apr 2010 08:13:33 +0000 (16:13 +0800)]
st/mesa: Drop st_public support.
There is no user of st_public now.
Chia-I Wu [Mon, 12 Apr 2010 08:39:18 +0000 (16:39 +0800)]
st/vega: Drop st_public support.
There is no user of st_public now.
Chia-I Wu [Mon, 12 Apr 2010 08:36:24 +0000 (16:36 +0800)]
st/vega: Do not rely on st_resize_framebuffer.
Add vg_context_update_draw_buffer (and helpers) that duplicates the
logic of st_resize_framebuffer. Use the new function instead of
st_resize_framebuffer in vg_manager.c.
Luca Barbieri [Tue, 13 Apr 2010 07:02:42 +0000 (09:02 +0200)]
nvfx: fix for 64-bit systems
Thanks to Patrice Mandin for debugging this.
Luca Barbieri [Tue, 13 Apr 2010 06:24:48 +0000 (08:24 +0200)]
gallium/auxiliary: make util_dynarray_trim do nothing if size == capacity
Luca Barbieri [Tue, 13 Apr 2010 06:23:29 +0000 (08:23 +0200)]
gallium/auxiliary: add util_dynarray_resize
Luca Barbieri [Tue, 13 Apr 2010 06:18:59 +0000 (08:18 +0200)]
gallium/auxiliary: fix util_dynarray_trim to 0 to free the data
This works better and preserves the
data != 0 if and only if capacity != 0 invariant.
Luca Barbieri [Tue, 13 Apr 2010 04:05:12 +0000 (06:05 +0200)]
util: implement Jose Fonseca's suggestions for u_buffer.h -> u_dynarray.h
Also describe invariants explicitly and use char* for arithmetic.
Corbin Simpson [Tue, 13 Apr 2010 01:23:17 +0000 (18:23 -0700)]
r300/compiler: Hax around instructions limits in mirroring code.
Stuff's starting to show up in arbnpot.
Brian Paul [Tue, 13 Apr 2010 00:45:10 +0000 (18:45 -0600)]
docs: update name, link for mesa-dev list
Dave Airlie [Mon, 12 Apr 2010 05:40:29 +0000 (15:40 +1000)]
ffvertex: don't touch tex coords if coord replace is enabled.
The fixed function vertex program shouldn't need to deal or touch tex coords
if stuffing is enabled.
Though I'm not 100% this won't break assumption made elsewhere it seems like
the correct thing to do, and makes r300g point sprites a lot easier to implement.
draw: fix point-sprite when vertex program is used.
This commit regressed draw, so fix it as well to help bisection.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Marek Olšák [Thu, 24 Dec 2009 20:29:41 +0000 (21:29 +0100)]
r300g: add generating texture coordinates for point sprites
[airlied -
Convert sprite coord index to a per-coord enable bit
set the rasteriser block up correctly for point sprites.
The inputs to the RS hw block change for sprite coords, so fix them up
properly - this fixes piglit point-sprite test.
]
Signed-off-by: Dave Airlie <airlied@redhat.com>
José Fonseca [Mon, 12 Apr 2010 22:05:13 +0000 (07:05 +0900)]
progs/gallium: Move into src/gallium/tests
Two reasons:
- progs will eventually have its own repository
- it is just to easy to forget updating the
code for interface changes when it is outside of src
Luca Barbieri [Thu, 25 Feb 2010 12:11:12 +0000 (13:11 +0100)]
gallium/auxiliary: add dynamically sized buffer/array/vector
Luca Barbieri [Thu, 25 Feb 2010 01:52:43 +0000 (02:52 +0100)]
nvfx: add LRP in vertprog
glsl generates these.
Luca Barbieri [Tue, 19 Jan 2010 16:26:20 +0000 (17:26 +0100)]
nvfx: add SIN and COS in vertprog
Luca Barbieri [Mon, 18 Jan 2010 17:20:45 +0000 (18:20 +0100)]
nvfx: add missing vertprog setcond instructions
Trivially adds SEQ, SGT, SLE, SNE, SFL, STR and SSG which were missing.
Luca Barbieri [Mon, 18 Jan 2010 00:13:40 +0000 (01:13 +0100)]
nvfx: allocate a bigger block for queries
This patch allocates a bigger chunk of memory to store queries in,
increasing the (hidden) outstanding query limit.
Luca Barbieri [Mon, 18 Jan 2010 00:02:55 +0000 (01:02 +0100)]
nvfx: support an unlimited number of occlusion queries
Currently on nv30/nv40 an assert will be triggered once 32 queries are
outstanding.
This violates the OpenGL/Gallium interface, which requires support for
an unlimited number of fences.
This patch fixes the problem by putting queries in a linked list and
waiting on the oldest one if allocation fails.
nVidia seems to use a similar strategy, but with 1024 instead of 32 fences.
The next patch will improve this.
Vinson Lee [Mon, 12 Apr 2010 19:50:41 +0000 (12:50 -0700)]
r300g: Move declaration before code.
Fixes SCons build.
Luca Barbieri [Mon, 22 Mar 2010 04:43:56 +0000 (05:43 +0100)]
nvfx: fix TXL opcode value
Was broken during unification
Luca Barbieri [Mon, 11 Jan 2010 00:09:44 +0000 (01:09 +0100)]
nvfx: Add support for two sided color
This patch adds support for two-sided vertex color to nv30/nv40.
When set, the COLOR0/1 fs inputs on back faces will be wired to vs outputs BCOLOR0/1.
This makes OpenGL two sided lighting work, which can be tested with progs/demos/projtex.
Luca Barbieri [Mon, 12 Apr 2010 18:43:08 +0000 (20:43 +0200)]
nvfx: fix compile error
Luca Barbieri [Mon, 12 Apr 2010 18:36:44 +0000 (20:36 +0200)]
nvfx: don't use hw index buffers on nv3x and nv44
They only apparently work on nv40 grclass cards, and this was the
previous behavior of the driver.
This really needs to be investigated more.
Luca Barbieri [Wed, 20 Jan 2010 03:36:58 +0000 (04:36 +0100)]
nvfx: expose PIPE_FORMAT_B8G8R8X8_UNORM support
This is implemented in nvfx_state_fb and fragtex but was missing
in nvfx_screen.
This allows to avoid glCopyTexSubImage CPU fallbacks and makes Doom 3
much faster as a result.
Luca Barbieri [Mon, 18 Jan 2010 16:38:29 +0000 (17:38 +0100)]
nvfx: add support for ARB_half_float_vertex
Luca Barbieri [Mon, 18 Jan 2010 15:42:57 +0000 (16:42 +0100)]
st/mesa: half float vertex support (unexposed)
This was proposed by Marek Olšák and no one objected, so just
pushing it.
The extension is currently not exposed, because the mechanism to
discover if the driver actually supports this is missing.
We probably should change is_format_supported to handle this too.
This will allow to test Gallium drivers anyway in the meantime.
Based on work by Dave Airlie.
Changes by me:
1. Fix assertion in st
2. Change to use unpadded Gallium formats
Luca Barbieri [Mon, 12 Apr 2010 16:53:30 +0000 (18:53 +0200)]
nvfx: allocate buffers in GART if !NOUVEAU_SWTNL
Should improve performance and fix serious regressions on AGP cards.
Luca Barbieri [Mon, 12 Apr 2010 16:06:06 +0000 (18:06 +0200)]
nvfx: move check for NOUVEAU_SWTNL
Luca Barbieri [Tue, 23 Feb 2010 16:33:14 +0000 (17:33 +0100)]
nvfx: remove #include "nouveau_stateobj.h"
No longer used, finally!
Luca Barbieri [Tue, 23 Feb 2010 15:48:22 +0000 (16:48 +0100)]
nvfx: rework validation logic to use code and avoid stateobjs
This makes the code faster due to the lack of indirect calls and also
makes it much easier to understand what is actually going on.
Luca Barbieri [Tue, 23 Feb 2010 15:31:33 +0000 (16:31 +0100)]
nvfx: add NVFX_NEW_{FRAG,VERT}CONST
Luca Barbieri [Tue, 23 Feb 2010 14:52:24 +0000 (15:52 +0100)]
nvfx: so->RING_3D: vertprog
We could use an sb here instead, but there is no obvious performance
advantage, and perhaps there could be a disadvantage.
Luca Barbieri [Tue, 23 Feb 2010 14:45:07 +0000 (15:45 +0100)]
nvfx: so->RING_3D: sr
Luca Barbieri [Tue, 23 Feb 2010 14:34:35 +0000 (15:34 +0100)]
nvfx: so->sb: blend
Luca Barbieri [Tue, 23 Feb 2010 14:26:32 +0000 (15:26 +0100)]
nvfx: so->sb: zsa
Luca Barbieri [Tue, 23 Feb 2010 14:22:07 +0000 (15:22 +0100)]
nvfx: so->sb: rasterizer
Luca Barbieri [Tue, 23 Feb 2010 14:12:30 +0000 (15:12 +0100)]
nvfx: so->RING_3D: screen
Luca Barbieri [Tue, 23 Feb 2010 14:10:05 +0000 (15:10 +0100)]
nvfx: so->RING_3D: viewport
Luca Barbieri [Tue, 23 Feb 2010 14:09:32 +0000 (15:09 +0100)]
nvfx: so->RING_3D: stipple
Luca Barbieri [Tue, 23 Feb 2010 14:05:54 +0000 (15:05 +0100)]
nvfx: so->RING_3D: scissor
Luca Barbieri [Tue, 23 Feb 2010 14:05:36 +0000 (15:05 +0100)]
nvfx: so->RING_3D: blend
Luca Barbieri [Sun, 14 Mar 2010 19:52:18 +0000 (20:52 +0100)]
nvfx: so->RING_3D: fb
Luca Barbieri [Sun, 14 Mar 2010 19:51:42 +0000 (20:51 +0100)]
nvfx: so->RING_3D: fragprog
Luca Barbieri [Sun, 14 Mar 2010 19:50:03 +0000 (20:50 +0100)]
nvfx: so->RING_3D: fragtex
Luca Barbieri [Tue, 23 Feb 2010 10:14:28 +0000 (11:14 +0100)]
nvfx: so->RING_3D: vbo
Luca Barbieri [Sun, 14 Mar 2010 02:09:02 +0000 (03:09 +0100)]
nvfx: stop using flush_notify
Rather than emitting relocations on flush notifications, emit them
in nvfx_state_start.
Luca Barbieri [Tue, 23 Feb 2010 10:11:52 +0000 (11:11 +0100)]
nouveau: add state buffers, lightweight replacement for state objects
Just a dumb buffer, allowed by the RING_3D/fixed subchannel binding and
no support for relocations.
This is *much* faster than state objects.
Luca Barbieri [Tue, 23 Feb 2010 22:16:36 +0000 (23:16 +0100)]
nouveau: don't autobind in state objects relocations
Autobinding creates additional pushbuffer usage which may not be
accounted in callers, and is also slow.
The next relocations patch depends on this for correctness.
Assert instead if the objects are not bound, which should happen at
screen creation time.
Luca Barbieri [Tue, 23 Feb 2010 10:06:31 +0000 (11:06 +0100)]
nouveau: bind the 3D engine to subchannel 7 and add RING_3D
RING_3D creates a method start for subchannel 7.
Bind the 3D engine to a fixed subchannel to make it work
This is much faster than the old BEGIN_RING, since we don't need
to waste cycles trying to "autobind" stuff, when a fast static binding
is perfectly good.
Subchannel 7 is chosen because the kernel takes up the lowest ones.
Luca Barbieri [Mon, 12 Apr 2010 07:36:28 +0000 (09:36 +0200)]
nvfx: avoid flushes in primitives
Currently we miscalculate the space needed to push vertices, causing
flushes where they should not happen.
Use a much more conservative estimate to fix it.
It will be done better in the future (e.g. using the nv50 primitive
splitter).
Corbin Simpson [Mon, 12 Apr 2010 09:40:40 +0000 (02:40 -0700)]
r300/compiler: Comment code, add much better mirror maths.
Luca Barbieri [Mon, 12 Apr 2010 09:45:50 +0000 (11:45 +0200)]
nvfx: fix bind flags
Corbin Simpson [Sun, 11 Apr 2010 23:13:45 +0000 (16:13 -0700)]
r300/compiler: Implement texcoord repeat and mirror for NPOT.