mesa.git
13 years ago[g3dvl] use a vertex element instead of the instance id
Christian König [Sat, 4 Jun 2011 21:54:46 +0000 (23:54 +0200)]
[g3dvl] use a vertex element instead of the instance id

13 years agoRevert "Merge remote-tracking branch 'mareko/r300g-draw-instanced' into pipe-video"
Christian König [Sat, 4 Jun 2011 10:55:43 +0000 (12:55 +0200)]
Revert "Merge remote-tracking branch 'mareko/r300g-draw-instanced' into pipe-video"

This reverts commit 10370b752cd793665feec9494e6545a3f04c69f9, reversing
changes made to ded2a9a628c58c2c8bfaaf6b8dd213e68de1dd20.

13 years agoMerge remote-tracking branch 'mareko/r300g-draw-instanced' into pipe-video
Christian König [Fri, 3 Jun 2011 08:47:56 +0000 (10:47 +0200)]
Merge remote-tracking branch 'mareko/r300g-draw-instanced' into pipe-video

13 years ago[g3dvl] respect maximum instruction for idct render targets
Christian König [Wed, 1 Jun 2011 18:37:57 +0000 (20:37 +0200)]
[g3dvl] respect maximum instruction for idct render targets

13 years ago[g3dvl] dynamical adjust blocks per line
Christian König [Wed, 1 Jun 2011 17:41:43 +0000 (19:41 +0200)]
[g3dvl] dynamical adjust blocks per line

13 years ago[g3dvl] move quantification into shaders
Christian König [Sun, 29 May 2011 17:53:45 +0000 (19:53 +0200)]
[g3dvl] move quantification into shaders

13 years ago[g3dvl] implement mismatch control inside idct shaders
Christian König [Wed, 25 May 2011 23:50:44 +0000 (01:50 +0200)]
[g3dvl] implement mismatch control inside idct shaders

13 years ago[g3dvl] fix resource type for idct
Christian König [Sun, 22 May 2011 21:15:09 +0000 (23:15 +0200)]
[g3dvl] fix resource type for idct

Only the intermediate resource are 3D textures

13 years agoInitial r300g support
Christian König [Sun, 29 May 2011 10:30:58 +0000 (12:30 +0200)]
Initial r300g support

Based uppon a patch from Pali Rohár <pali.rohar@gmail.com>.
This seems to get at least YUV->RGB conversion working.
So a simple "mplayer -vo vdpau" now seems to work fine.

13 years ago[g3dvl] rework resource format handling
Christian König [Sun, 22 May 2011 16:36:47 +0000 (18:36 +0200)]
[g3dvl] rework resource format handling

13 years agor600g: revert commit 36b322dffd2429130f132f55f68acb1a23ba1658 for now
Christian König [Sun, 22 May 2011 16:28:09 +0000 (18:28 +0200)]
r600g: revert commit 36b322dffd2429130f132f55f68acb1a23ba1658 for now

Disable scaled textures, since they didn't work 100% right now.

13 years agoMerge remote-tracking branch 'origin/master' into pipe-video
Christian König [Sat, 21 May 2011 14:43:12 +0000 (16:43 +0200)]
Merge remote-tracking branch 'origin/master' into pipe-video

13 years agor600g: fix "Fixed-Point Data Conversions"
Christian König [Sat, 21 May 2011 13:37:29 +0000 (15:37 +0200)]
r600g: fix "Fixed-Point Data Conversions"

According to OpenGL 3.1 chapter 2.1.5 the representation without zero
should only be used for vertex attribute values, but not for textures
or frame-buffers.

13 years agor600g: fix "Fixed-Point Data Conversions"
Christian König [Sat, 21 May 2011 13:37:29 +0000 (15:37 +0200)]
r600g: fix "Fixed-Point Data Conversions"

According to OpenGL 3.1 chapter 2.1.5 the representation without zero
should only be used for vertex attribute values, but not for textures
or frame-buffers.

13 years agoi965: Fix sampling on Ivybridge after headerless change.
Kenneth Graunke [Fri, 20 May 2011 23:25:59 +0000 (16:25 -0700)]
i965: Fix sampling on Ivybridge after headerless change.

Fixes a regression since 90e922267a89fa9bef254bb257405531ceff7356.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Remove "TXD" from justification of sampler message headers.
Kenneth Graunke [Fri, 20 May 2011 23:28:29 +0000 (16:28 -0700)]
i965: Remove "TXD" from justification of sampler message headers.

The coordinate offsets set in the m1 header are for textureOffset;
they have nothing to do with textureGrad (TXD).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/gen7: Add support for rendering to depthbuffer mipmap levels > 0.
Kenneth Graunke [Wed, 18 May 2011 23:28:28 +0000 (16:28 -0700)]
i965/gen7: Add support for rendering to depthbuffer mipmap levels > 0.

The same as 3e43adef95ee24dd218279d2de56939b90edcb4c but for Gen7.

This doesn't quite fix GL_ARB_depth_texture/fbo-clear-formats; there's
still a 1 pixel wide black line on the right edge of the smaller squares.

The results were entirely wrong before, and are at least close now.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agost/egl: Add support for EGL_DRM_BUFFER_USE_CURSOR_MESA
Benjamin Franzke [Fri, 13 May 2011 11:03:13 +0000 (13:03 +0200)]
st/egl: Add support for EGL_DRM_BUFFER_USE_CURSOR_MESA

13 years agost/dri: Support dri2 useflags in dri2_create_image
Benjamin Franzke [Fri, 13 May 2011 09:55:15 +0000 (11:55 +0200)]
st/dri: Support dri2 useflags in dri2_create_image

13 years agost/egl/wayland: Deal with wayland visual changes
Benjamin Franzke [Fri, 20 May 2011 07:33:47 +0000 (09:33 +0200)]
st/egl/wayland: Deal with wayland visual changes

Since wayland 4bde293ff8109d55eeaee8732f5a6ee0c8cd4bd9 we cant
lookup visuals, as we dont receive the visual token events.

The format for pixmap-images thus has to default to argb for now.

13 years agomesa: Emit definition of GLAPIENTRYP in es_generator.py.
Thierry Reding [Fri, 20 May 2011 06:26:18 +0000 (08:26 +0200)]
mesa: Emit definition of GLAPIENTRYP in es_generator.py.

GLES uses GL_APIENTRYP instead of GLAPIENTRYP, which breaks with the
latest API table generation code. This fixes the issue by emitting a
definition for GL_APIENTRYP when generating the GLES files.

13 years agoglapi: More type-checking in Get_xxx too.
José Fonseca [Thu, 19 May 2011 16:44:06 +0000 (17:44 +0100)]
glapi: More type-checking in Get_xxx too.

13 years agogallivm: Fix for dynamically linked LLVM 2.8 library.
José Fonseca [Fri, 20 May 2011 10:54:18 +0000 (11:54 +0100)]
gallivm: Fix for dynamically linked LLVM 2.8 library.

This prevents the error

    prog: for the -disable-mmx option: may only occur zero or one times!

when creating a new context after XCloseDisplay with DRI drivers linked
with a shared LLVM 2.8 library.

13 years agor300: move declaration before code
Brian Paul [Fri, 20 May 2011 03:23:39 +0000 (21:23 -0600)]
r300: move declaration before code

13 years agost/glx: define/set new ST_CONTEXT_FLAG_bits
Brian Paul [Fri, 20 May 2011 01:40:32 +0000 (19:40 -0600)]
st/glx: define/set new ST_CONTEXT_FLAG_bits

13 years agost/glx: pass major, minor, context flags, etc to XMesaCreateContext()
Brian Paul [Fri, 20 May 2011 01:31:01 +0000 (19:31 -0600)]
st/glx: pass major, minor, context flags, etc to XMesaCreateContext()

13 years agost/glx: implement glXCreateContextAttribsARB()
Brian Paul [Fri, 20 May 2011 01:27:51 +0000 (19:27 -0600)]
st/glx: implement glXCreateContextAttribsARB()

13 years agost/glx: pass version, context flags, etc to create_context()
Brian Paul [Fri, 20 May 2011 01:25:49 +0000 (19:25 -0600)]
st/glx: pass version, context flags, etc to create_context()

13 years agost/glx: refactor create-context functions
Brian Paul [Fri, 20 May 2011 01:21:21 +0000 (19:21 -0600)]
st/glx: refactor create-context functions

13 years agomesa: fix vertex array enable checking in check_valid_to_render()
Brian Paul [Wed, 18 May 2011 22:19:06 +0000 (16:19 -0600)]
mesa: fix vertex array enable checking in check_valid_to_render()

In particular, this fixes the case where a vertex shader only uses
generic vertex attributes (non-0th).  Before, we were no-op'ing the
glDrawArrays/Elements().

This fixes the new piglit pos-array test.

NOTE: This is a candidate for the 7.10 branch.

13 years agomesa: handle some srgb cases in the fast path in _mesa_get_teximage
Roland Scheidegger [Thu, 14 Apr 2011 21:36:51 +0000 (23:36 +0200)]
mesa: handle some srgb cases in the fast path in _mesa_get_teximage

Previously, always did unorm8->float/nonlinear-to-linear conversion (using
lookup table), then convert back to nonlinear (using the expensive math
func pow among others), and finally convert back to int (assuming caller
wants unorm8), because the float texture fetch function is used for getting
the actual texel values. This should probably all be changed at some point,
but for now simply enable the memcpy path also for srgb formats (but if for
instance swizzling is required, still the whole conversion will be done).

13 years agowayland-drm: Use new generic error event
Kristian Høgsberg [Wed, 11 May 2011 19:28:19 +0000 (15:28 -0400)]
wayland-drm: Use new generic error event

13 years agoglapi: Implement SET_xxx as inline functions instead of macros.
José Fonseca [Thu, 19 May 2011 15:49:49 +0000 (16:49 +0100)]
glapi: Implement SET_xxx as inline functions instead of macros.

In order to have the benefit of type checking, and detect missing
GLAPIENTRY keywords on public entrypoints.

13 years agomesa: add another missing GLAPIENTRY keyword
José Fonseca [Thu, 19 May 2011 15:39:57 +0000 (16:39 +0100)]
mesa: add another missing GLAPIENTRY keyword

NOTE: this is a candidate for the 7.10 branch.

13 years agonv50: add support for user clip planes
Maxim Levitsky [Thu, 19 May 2011 10:50:28 +0000 (12:50 +0200)]
nv50: add support for user clip planes

Clip distance is calculated each time vertex position is written
which is suboptiomal is some cases but very safe.
User clip planes are an obsolete feature anyway.

Every time number of clip planes increases, the vertex program
is recompiled.
That ensures no overhead in normal case (no user clip planes)
and reasonable overhead otherwise.

Fixes 3D windows in compiz, and reflection effect in neverball.
Also fixes compiz expo plugin when windows were dragged and each
window shown 3 times.

13 years agowayland: Fix link order for libwayland-drm.a
Kristian Høgsberg [Mon, 16 May 2011 20:29:53 +0000 (16:29 -0400)]
wayland: Fix link order for libwayland-drm.a

13 years agoi965: Add support for rendering to depthbuffer mipmap levels > 0.
Eric Anholt [Fri, 13 May 2011 19:13:40 +0000 (12:13 -0700)]
i965: Add support for rendering to depthbuffer mipmap levels > 0.

Fixes
GL_ARB_depth_texture/fbo-clear-formats
GL_EXT_packed_depth_stencil/fbo-clear-formats

13 years agoi965: Stop caching the combined depth/stencil region in brw_context.c.
Eric Anholt [Fri, 13 May 2011 18:54:15 +0000 (11:54 -0700)]
i965: Stop caching the combined depth/stencil region in brw_context.c.

This was going to get in the way of separate depth/stencil (which
wants to know about both, and whether they are the same rb), and also
wasn't a sufficient flag for the fix in the following commit.

13 years agoi965/gen6: Add support for point min/max size from ARB_point_parameters.
Eric Anholt [Thu, 12 May 2011 21:19:51 +0000 (14:19 -0700)]
i965/gen6: Add support for point min/max size from ARB_point_parameters.

Fixes glean pointAtten.

13 years agoi965/fs: Don't emit a header on gen5+ sample messages unless required.
Eric Anholt [Thu, 12 May 2011 17:30:23 +0000 (10:30 -0700)]
i965/fs: Don't emit a header on gen5+ sample messages unless required.

Improves glbenchmark egypt performance 0.6% +/- 0.4% (n=6).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/fs: Fix GPU hang on texture2d-bias on pre-Ironlake.
Eric Anholt [Thu, 12 May 2011 15:49:53 +0000 (08:49 -0700)]
i965/fs: Fix GPU hang on texture2d-bias on pre-Ironlake.

In the 16-wide rework, I missed that we were setting some things to be
SIMD16 mode (corresponding to their setup in emit_texture_gen4()).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Add support for correct GL_CLAMP behavior by clamping coordinates.
Eric Anholt [Tue, 2 Nov 2010 16:11:17 +0000 (09:11 -0700)]
i965: Add support for correct GL_CLAMP behavior by clamping coordinates.

This removes the stupid strict-conformance fallback code I broke when
adding ARB_sampler_objects.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36572
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
13 years agoi965/fs: Drop the viewport index/rtai clearing in gen6 fb writes.
Eric Anholt [Wed, 11 May 2011 20:08:03 +0000 (13:08 -0700)]
i965/fs: Drop the viewport index/rtai clearing in gen6 fb writes.

These fields are documented to be in the payload, and though the FB
write docs say they *aren't* in the payload, for all other fields the
payload and header is structured so that no overwriting is required
except for non-default options.

13 years agoi965/fs: Add support for "if" statements in 16-wide mode on gen6+.
Eric Anholt [Tue, 10 May 2011 19:55:12 +0000 (12:55 -0700)]
i965/fs: Add support for "if" statements in 16-wide mode on gen6+.

It turns out there's nothing in the hardware preventing this.  It
appears that it ought to work on pre-gen6 as well, but just produces
GPU hangs.

Improves glbenchmark Egypt framerate 4.4% +/- 0.3% (n=3), and Pro by
2.6% +/- 0.6% (n=3).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/fs: Fix discard and alpha test in 16-wide.
Eric Anholt [Wed, 11 May 2011 19:43:28 +0000 (12:43 -0700)]
i965/fs: Fix discard and alpha test in 16-wide.

As of gen6, alt-mode (which we use) MOVs of floats are not raw --
they'll modify infs/nans.  This broke discard and alpha test in
16-wide, where apparently the upper 8 bits of the pixel enables being
set were causing the whole value to get trashed upon being moved.
Treating the values as UD instead of float makes sure they get
preserved.  While I'm here, replace the two 8-wide moves of the halves
of the header with a single compressed move.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36648
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/gen6: Fix blending state when no color buffer is bound.
Eric Anholt [Wed, 11 May 2011 21:07:44 +0000 (14:07 -0700)]
i965/gen6: Fix blending state when no color buffer is bound.

This is part of fixing fbo-alphatest-nocolor -- a regression in
35e8fe5c99b285f348cb8a1bba2931f120f7c0a1 after the initial regression,
that had us using a garbage BLEND_STATE[0] (in particular, the alpha
test enable) if no color buffer was bound.

13 years agoi965/fs: Cut an instruction and a temporary from gen6 discard statements.
Eric Anholt [Tue, 10 May 2011 22:30:11 +0000 (15:30 -0700)]
i965/fs: Cut an instruction and a temporary from gen6 discard statements.

I thought I was thwarted initially when I couldn't do conditional mod
on a MOV, and couldn't use two immediate constants in one instruction.
But g0 != g0 is also a way to produce a failing comparison.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/fs: Fix compiler warnings about dead code from 963431829055f63ec94d
Eric Anholt [Mon, 9 May 2011 21:58:39 +0000 (14:58 -0700)]
i965/fs: Fix compiler warnings about dead code from 963431829055f63ec94d

13 years agovdpau: rename vdpau driver to r600/softpie
Christian König [Wed, 18 May 2011 19:29:39 +0000 (21:29 +0200)]
vdpau: rename vdpau driver to r600/softpie

13 years agogallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.
José Fonseca [Wed, 18 May 2011 17:00:55 +0000 (18:00 +0100)]
gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.

Fixes fdo 36738.

13 years agoswrast: anisotropic filtering extension
Andreas Faenger [Wed, 18 May 2011 14:14:33 +0000 (08:14 -0600)]
swrast: anisotropic filtering extension

Anisotropic filtering extension for swrast intended to be used by osmesa
to create high quality renderings.
Based on Higher Quality Elliptical Weighted Avarage Filter (EWA).
A 2nd implementation using footprint assembly is also provided.

Signed-off-by: Brian Paul <brianp@vmware.com>
13 years agomesa: simplify error check in _mesa_MapBufferRange()
Brian Paul [Wed, 18 May 2011 14:14:32 +0000 (08:14 -0600)]
mesa: simplify error check in _mesa_MapBufferRange()

13 years agomesa: only update array _MaxElement if array is enabled
Brian Paul [Wed, 18 May 2011 14:14:32 +0000 (08:14 -0600)]
mesa: only update array _MaxElement if array is enabled

Fixes failed assertion when calling _mesa_print_arrays() debug function.

13 years agomesa: check that flex/bison are installed
Brian Paul [Wed, 18 May 2011 13:50:21 +0000 (07:50 -0600)]
mesa: check that flex/bison are installed

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=36651

NOTE: This is a candidate for the 7.10 branch.

13 years agoi965: Rename IS_GT1 and IS_GT2 to IS_SNB_GT1 and IS_SNB_GT2.
Kenneth Graunke [Wed, 18 May 2011 06:53:52 +0000 (23:53 -0700)]
i965: Rename IS_GT1 and IS_GT2 to IS_SNB_GT1 and IS_SNB_GT2.

This should help distinguish Sandybridge GT1/GT2 from Ivybridge GT1/GT2.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoadd $SELINUX_LIBS to EGL and OpenVG lib deps
Tapani Pälli [Mon, 16 May 2011 13:56:43 +0000 (16:56 +0300)]
add $SELINUX_LIBS to EGL and OpenVG lib deps

Correctly links against selinux library when MESA is built with --enable-selinux option.

Fixes bug #36333 in Freedesktop bugzilla

Signed-off-by: Dave Airlie <airlied@redhat.com>
13 years agomesa/st: split updating vertex and fragment shader stages.
Dave Airlie [Wed, 18 May 2011 07:27:39 +0000 (17:27 +1000)]
mesa/st: split updating vertex and fragment shader stages.

this seems like a logical thing to do and sets the correct st flags
for vertex textures.

Signed-off-by: Dave Airlie <airlied@redhat.com>
13 years agost/mesa: only memset sampler when about to use it.
Dave Airlie [Sun, 15 May 2011 23:44:10 +0000 (09:44 +1000)]
st/mesa: only memset sampler when about to use it.

This function was taking a lot more CPU than required due to it memsetting
a bunch of memory that didn't require it from what I can see.

We should only memset here when we are about to fill out the sampler,
otherwise we end up doing a bunch of memsets for everytime this function
is called, basically setting 0 memory to 0.

Signed-off-by: Dave Airlie <airlied@redhat.com>
13 years agor600g: bump domain selection up one layer.
Dave Airlie [Fri, 13 May 2011 04:16:31 +0000 (14:16 +1000)]
r600g: bump domain selection up one layer.

this is taken from a patch from Mathias Froehlich, just going to
stage it in a few pieces.

Signed-off-by: Dave Airlie <airlied@redhat.com>
13 years agoi965: Instead of fallback on missing region, just bind a null renderbuffer.
Eric Anholt [Fri, 13 May 2011 04:05:30 +0000 (21:05 -0700)]
i965: Instead of fallback on missing region, just bind a null renderbuffer.

The change for GPU hanging in 13bab58f04c1ec6d0d52760eab490a0997d9abe2
fell back even when rb == NULL, which is wrong for GLES2 and caused
segfaulting in GLES2 conformance.  For the GPU hang case (where the
broken 2D driver failed to allocate a BO for the window system
renderbuffer), it also would assertion fail/segfault immediately after
the fallback setup when the renderbuffer map failed.

Fixes GLES2 conformance packed_depth_stencil.

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Updated fixed-point sizes in Ivybridge SAMPLER_STATE.
Kenneth Graunke [Tue, 17 May 2011 19:53:55 +0000 (12:53 -0700)]
i965: Updated fixed-point sizes in Ivybridge SAMPLER_STATE.

Texture LOD Bias is now S4.8 instead of S4.6;
Min LOD, and Max LOD are now U4.8 instead of U4.6.

Fixes piglit test tex-miplevel-selection.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Ivybridge uses the Gen4 SAMPLER_BORDER_COLOR_STATE.
Kenneth Graunke [Tue, 17 May 2011 21:17:21 +0000 (14:17 -0700)]
i965: Ivybridge uses the Gen4 SAMPLER_BORDER_COLOR_STATE.

Volume 5c 1.13.7 lists it as [PreDevILK] and [DevIVB+].

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoegl: Recognize Ivybridge PCI IDs.
Kenneth Graunke [Tue, 26 Apr 2011 19:25:56 +0000 (12:25 -0700)]
egl: Recognize Ivybridge PCI IDs.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agointel: Recognize new Ivybridge PCI IDs.
Kenneth Graunke [Tue, 22 Mar 2011 23:45:52 +0000 (16:45 -0700)]
intel: Recognize new Ivybridge PCI IDs.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Disable register spilling on Ivybridge for now.
Kenneth Graunke [Fri, 13 May 2011 16:25:27 +0000 (09:25 -0700)]
i965: Disable register spilling on Ivybridge for now.

The data port messages for this are rather different.  For now, fail to
compile rather than hanging the GPU.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix RNDZ and RNDE on Sandybridge and Ivybridge.
Kenneth Graunke [Wed, 11 May 2011 09:18:24 +0000 (02:18 -0700)]
i965: Fix RNDZ and RNDE on Sandybridge and Ivybridge.

On gen4/5, the RNDZ and RNDE instructions return floor(x), but set special
"round increment bits" in the flag register; a predicated ADD (+1) fixes
the result.

The documentation still lists '.r' as existing, and says that the
predicated add is necessary, but it apparently lies.  According to the
simulator, BRW_CONDITIONAL_R (7) is not a valid conditional modifier
and the RNDZ and RNDE instructions simply produce the correct value.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix data port reads on Ivybridge.
Kenneth Graunke [Wed, 11 May 2011 08:49:10 +0000 (01:49 -0700)]
i965: Fix data port reads on Ivybridge.

These also need to use gen7_dp.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Avoid register coalescing away MATH workarounds on Ivybridge.
Kenneth Graunke [Wed, 11 May 2011 14:54:57 +0000 (07:54 -0700)]
i965: Avoid register coalescing away MATH workarounds on Ivybridge.

The MATH instruction cannot handle source modifiers, even on Gen7.
So, apply this workaround for Sandybridge on Ivybridge as well.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Make the CONT instruction point to the WHILE instruction.
Kenneth Graunke [Sat, 30 Apr 2011 08:30:55 +0000 (01:30 -0700)]
i965: Make the CONT instruction point to the WHILE instruction.

This fixes piglit test glsl-fs-loop-continue.shader_test on Ivybridge.
According to the documentation, the CONT instruction's UIP field should
point to the WHILE instruction on both Sandybridge and Ivybridge.

The previous code made UIP point to the implicit DO instruction, which
seems incorrect.  I'm not sure how it could have worked on Sandybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Add support for loops on Ivybridge.
Kenneth Graunke [Sat, 30 Apr 2011 08:17:52 +0000 (01:17 -0700)]
i965: Add support for loops on Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Add support for IF/ELSE/ENDIF control flow on Ivybridge.
Kenneth Graunke [Wed, 16 Mar 2011 06:53:40 +0000 (23:53 -0700)]
i965: Add support for IF/ELSE/ENDIF control flow on Ivybridge.

Ivybridge's IF instruction doesn't support conditional modifiers.
It also introduces UIP, which must point to the ENDIF instruction.

ELSE and ENDIF remain the same except that JIP moves from dst to src1.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Add support for Ivybridge texturing messages.
Kenneth Graunke [Fri, 29 Apr 2011 21:19:04 +0000 (14:19 -0700)]
i965: Add support for Ivybridge texturing messages.

Ivybridge puts the shadow comparator first, then lod/bias, and finally
the coordinate---unlike previous generations which always reserved four
slots for the coordinate at the beginning.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix sampler message descriptor on Ivybridge.
Kenneth Graunke [Fri, 29 Apr 2011 08:43:10 +0000 (01:43 -0700)]
i965: Fix sampler message descriptor on Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix SAMPLER_STATE on Ivybridge.
Kenneth Graunke [Fri, 29 Apr 2011 05:46:15 +0000 (22:46 -0700)]
i965: Fix SAMPLER_STATE on Ivybridge.

Most of this code copied from brw_wm_sampler_state.c.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Mark some brw_wm_sampler_state.c helper functions as non-static.
Kenneth Graunke [Fri, 29 Apr 2011 08:18:20 +0000 (01:18 -0700)]
i965: Mark some brw_wm_sampler_state.c helper functions as non-static.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Update SURFACE_STATE for Ivybridge.
Kenneth Graunke [Thu, 28 Apr 2011 01:12:20 +0000 (18:12 -0700)]
i965: Update SURFACE_STATE for Ivybridge.

I'm still not happy with the amount of code duplication here, but it
will have to do for now.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Mark a few more brw_wm_surface_state functions as non-static.
Kenneth Graunke [Thu, 28 Apr 2011 01:11:31 +0000 (18:11 -0700)]
i965: Mark a few more brw_wm_surface_state functions as non-static.

I need to reuse them.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Change brw_format_for_mesa_format to a non-static function.
Kenneth Graunke [Thu, 28 Apr 2011 01:03:49 +0000 (18:03 -0700)]
i965: Change brw_format_for_mesa_format to a non-static function.

This will make it easier to share between files.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Set Address Modify Enable in VERTEX_BUFFER on Ivybridge.
Kenneth Graunke [Tue, 19 Apr 2011 22:38:10 +0000 (15:38 -0700)]
i965: Set Address Modify Enable in VERTEX_BUFFER on Ivybridge.

Otherwise, Ivybridge seems to ignore the newly supplied data, giving us
rubbish for vertices.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Enable channel masks in Ivybridge's URB_WRITE_HWORD header.
Kenneth Graunke [Wed, 27 Apr 2011 00:24:38 +0000 (17:24 -0700)]
i965: Enable channel masks in Ivybridge's URB_WRITE_HWORD header.

This shouldn't be done using MRFs, but until I have a proper solution
for dealing with MRFs, this allows my hack to keep working.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix the URB write message descriptor on Ivybridge.
Kenneth Graunke [Tue, 19 Apr 2011 06:59:30 +0000 (23:59 -0700)]
i965: Fix the URB write message descriptor on Ivybridge.

The message header is still incorrect, but this is a start.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix render target writes on Ivybridge.
Kenneth Graunke [Tue, 19 Apr 2011 06:38:21 +0000 (23:38 -0700)]
i965: Fix render target writes on Ivybridge.

Ivybridge shifts the data port messages by one bit.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Mad hacks to avoid using MRFs on Ivybridge.
Kenneth Graunke [Sat, 9 Apr 2011 07:32:46 +0000 (00:32 -0700)]
i965: Mad hacks to avoid using MRFs on Ivybridge.

Ivybridge's SEND instruction uses GRFs instead of MRFs.  Unfortunately,
a lot of our code explicitly uses MRFs, and rewriting it would take a
fair bit of effort.  In the meantime, use a hack:

- Change brw_set_dest, brw_set_src0, and brw_set_src1 to implicitly
  convert any MRFs into the top 16 GRFs.
- Enable gen6_resolve_implied_move on Ivybridge: Moving g0 to m0
  actually moves it to g111 thanks to the previous hack.

It remains to officially reserve these registers so the allocator
doesn't try to reuse them.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Emit 3DPRIMITIVE Ivybridge-style.
Kenneth Graunke [Tue, 12 Apr 2011 18:51:36 +0000 (11:51 -0700)]
i965: Emit 3DPRIMITIVE Ivybridge-style.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Don't use the GS for breaking down quads on Ivybridge.
Kenneth Graunke [Thu, 14 Apr 2011 21:56:19 +0000 (14:56 -0700)]
i965: Don't use the GS for breaking down quads on Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Emit extra 0's in 3DSTATE_MULTISAMPLE on Ivybridge.
Kenneth Graunke [Sat, 9 Apr 2011 07:53:46 +0000 (00:53 -0700)]
i965: Emit extra 0's in 3DSTATE_MULTISAMPLE on Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Add depth buffer support on Ivybridge.
Kenneth Graunke [Sat, 9 Apr 2011 06:51:21 +0000 (23:51 -0700)]
i965: Add depth buffer support on Ivybridge.

This also disables the HiZ and separate stencil buffers.  We still need
to implement stencil.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Upload sampler state pointers on Ivybridge.
Kenneth Graunke [Wed, 9 Feb 2011 01:27:37 +0000 (17:27 -0800)]
i965: Upload sampler state pointers on Ivybridge.

Since we currently only support sampling in the fragment shader, we only
bother to emit the PS variant.  In the future we'll need to emit others.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Disable binding table pointers for unused pipeline stages.
Kenneth Graunke [Thu, 21 Apr 2011 01:23:38 +0000 (18:23 -0700)]
i965: Disable binding table pointers for unused pipeline stages.

This may not be necessary, but it seems like a good idea.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Upload binding table pointers on Ivybridge.
Kenneth Graunke [Tue, 22 Feb 2011 21:30:34 +0000 (13:30 -0800)]
i965: Upload binding table pointers on Ivybridge.

Ivybridge uses per-stage commands to update binding table pointers.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Split BRW_NEW_BINDING_TABLE dirty bit into one per stage.
Kenneth Graunke [Tue, 22 Feb 2011 21:30:02 +0000 (13:30 -0800)]
i965: Split BRW_NEW_BINDING_TABLE dirty bit into one per stage.

Ivybridge can update each stage's binding table pointer independently,
so we want separate dirty bits.  Previous generations can simply
subscribe to all three dirty bits and emit as usual.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Explicitly disable unused pipeline stages on Ivybridge.
Kenneth Graunke [Sat, 9 Apr 2011 09:30:34 +0000 (02:30 -0700)]
i965: Explicitly disable unused pipeline stages on Ivybridge.

This may not be strictly necessary, but seems wise.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge VS state.
Kenneth Graunke [Sat, 9 Apr 2011 08:16:06 +0000 (01:16 -0700)]
i965: Initial Ivybridge VS state.

Copied from gen6_vs_state.c; reuses create_vs_constant_bo from there.

The 3DSTATE_VS command is identical but 3DSTATE_CONSTANT_VS is not.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge Viewport state setup.
Kenneth Graunke [Wed, 9 Feb 2011 08:49:59 +0000 (00:49 -0800)]
i965: Initial Ivybridge Viewport state setup.

SF and CLIP viewport state has been combined into SF_CLIP_VIEWPORT;
SF_CLIP and CC state pointers can now be uploaded independently.

Some portions of the hardware documentation refer to separate upload
commands for SF and CLIP; these are outdated and incorrect.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge Clip state setup.
Kenneth Graunke [Mon, 28 Mar 2011 20:12:21 +0000 (13:12 -0700)]
i965: Initial Ivybridge Clip state setup.

Copied from gen6_clip_state.c.

This enables early culling and sets the necessary fields.  Otherwise, it
is entirely the same, so I doubt this patch is strictly necessary for a
functional driver.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge CC state setup.
Kenneth Graunke [Wed, 9 Feb 2011 09:05:40 +0000 (01:05 -0800)]
i965: Initial Ivybridge CC state setup.

The state itself still seems to be the same; the only change is that
each part (CC, BLEND, DEPTH_STENCIL) can now be uploaded independently.
Thus, we still rely on the code in gen6_cc.c to set up the state.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge WM/PS state setup.
Kenneth Graunke [Thu, 3 Feb 2011 00:00:08 +0000 (16:00 -0800)]
i965: Initial Ivybridge WM/PS state setup.

Copied from gen6_wm_state.c.

The main change from Sandybridge seems to be that 3DSTATE_WM was split
into two separate state packet commands: 3DSTATE_WM and 3DSTATE_PS.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge SF/SBE state setup.
Kenneth Graunke [Wed, 5 Jan 2011 09:21:06 +0000 (01:21 -0800)]
i965: Initial Ivybridge SF/SBE state setup.

Copied from gen6_sf_state.c.

The main change from Sandybridge seems to be that 3DSTATE_SF was split
into two separate state packet commands: 3DSTATE_SF and 3DSTATE_SBE
("setup backend").  The bit-offsets are even the same - only the DWords
numbers have shuffled around a bit.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Make gen6_sf_state.c's get_attr_override non-static.
Kenneth Graunke [Fri, 29 Apr 2011 07:29:02 +0000 (00:29 -0700)]
i965: Make gen6_sf_state.c's get_attr_override non-static.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Initial Ivybridge URB space partitioning, including push constants.
Kenneth Graunke [Sun, 27 Mar 2011 08:18:41 +0000 (01:18 -0700)]
i965: Initial Ivybridge URB space partitioning, including push constants.

Currently this always reserves 16kB for push constants, regardless of
how much space is needed, and partitions it evenly betwen the VS and FS.
This is probably not ideal, but is straightforward.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>