profile/ivi/mesa.git
12 years agomesa texstore: handle signed/unsigned integer clamping
Jordan Justen [Mon, 25 Jun 2012 21:16:11 +0000 (14:16 -0700)]
mesa texstore: handle signed/unsigned integer clamping

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa GetTexImage: handle signed/unsigned integer clamping
Jordan Justen [Mon, 25 Jun 2012 21:15:31 +0000 (14:15 -0700)]
mesa GetTexImage: handle signed/unsigned integer clamping

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa pack: handle uint and int clamping properly
Jordan Justen [Mon, 25 Jun 2012 21:08:37 +0000 (14:08 -0700)]
mesa pack: handle uint and int clamping properly

Rename _mesa_pack_rgba_span_int to _mesa_pack_rgba_span_from_uints.
Add _mesa_pack_rgba_span_from_ints.

These separate routines allow the integer clamping to be handled
properly for signed versus unsigned integers.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agointel: Fix rendering to a multisample front buffer
Chad Versace [Thu, 9 Aug 2012 16:24:29 +0000 (09:24 -0700)]
intel: Fix rendering to a multisample front buffer

We need to downsample before flushing BUFFER_FAKE_FRONT_LEFT to
BUFFER_FRONT_LEFT in intel_flush_front.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agointel: Clean up intel_flush_front
Chad Versace [Thu, 9 Aug 2012 16:21:21 +0000 (09:21 -0700)]
intel: Clean up intel_flush_front

Stop repeating ourselves. Replace the 4 instances of
`driContext->driDrawablePriv` with `driDrawable`.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agointel: Refactor intel_downsample_for_dri2_flush
Chad Versace [Thu, 9 Aug 2012 16:15:36 +0000 (09:15 -0700)]
intel: Refactor intel_downsample_for_dri2_flush

Move it from intel_screen.c to intel_context.c. Redeclare as non-static.
A future commit will use it in multiple files.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agodocs: Add EGL extensions to release notes
Ian Romanick [Tue, 14 Aug 2012 22:45:17 +0000 (15:45 -0700)]
docs: Add EGL extensions to release notes

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agoegl: Allow OpenGL ES 3.0 as a version
Ian Romanick [Thu, 19 Jul 2012 23:12:13 +0000 (16:12 -0700)]
egl: Allow OpenGL ES 3.0 as a version

In the DRI2 back-end this will get the same API as GLES 2.0.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agodri2: Note that __DRI_API_GLES2 is also used for OpenGL ES 3.0
Ian Romanick [Wed, 18 Jul 2012 21:29:29 +0000 (14:29 -0700)]
dri2: Note that __DRI_API_GLES2 is also used for OpenGL ES 3.0

Unlike 1.x to 2.0, OpenGL ES 3.0 is backwards compatible with 2.0.  Use the
same API flag for both.  Applications that specifically want 3.0 will specify
this using the major / minor version attributes.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl_dri2: Add support for EGL_KHR_create_context and EGL_EXT_create_context_robustness
Ian Romanick [Thu, 19 Jul 2012 23:04:01 +0000 (16:04 -0700)]
egl_dri2: Add support for EGL_KHR_create_context and EGL_EXT_create_context_robustness

Just like in GLX, EGL_KHR_create_context requires DRI2 version >= 3, and
EGL_EXT_create_context_robustness requires both DRI2 version >= 3 and the
__DRI2_ROBUSTNESS extension.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl: Implement front-end support for EGL_EXT_create_context_robustness
Ian Romanick [Thu, 19 Jul 2012 22:08:06 +0000 (15:08 -0700)]
egl: Implement front-end support for EGL_EXT_create_context_robustness

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl: Implement front-end support for EGL_KHR_create_context
Ian Romanick [Thu, 19 Jul 2012 18:10:15 +0000 (11:10 -0700)]
egl: Implement front-end support for EGL_KHR_create_context

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl_dri2: Silence warnings about missing initializers
Ian Romanick [Thu, 19 Jul 2012 18:08:02 +0000 (11:08 -0700)]
egl_dri2: Silence warnings about missing initializers

egl_dri2.c: At top level:
egl_dri2.c:325:4: warning: missing initializer [-Wmissing-field-initializers]
egl_dri2.c:325:4: warning: (near initialization for 'swrast_driver_extensions[2].version') [-Wmissing-field-initializers]
egl_dri2.c:330:4: warning: missing initializer [-Wmissing-field-initializers]
egl_dri2.c:330:4: warning: (near initialization for 'swrast_core_extensions[1].version') [-Wmissing-field-initializers]

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl: Rename ClientVersion to ClientMajorVersion, add ClientMinorVersion
Ian Romanick [Wed, 18 Jul 2012 22:59:15 +0000 (15:59 -0700)]
egl: Rename ClientVersion to ClientMajorVersion, add ClientMinorVersion

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl_dri2: Use createContextAttribs if DRI2 version >= 3
Ian Romanick [Wed, 18 Jul 2012 21:41:28 +0000 (14:41 -0700)]
egl_dri2: Use createContextAttribs if DRI2 version >= 3

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoegl_dri2: Require DRI2 version 2
Ian Romanick [Wed, 18 Jul 2012 20:17:50 +0000 (13:17 -0700)]
egl_dri2: Require DRI2 version 2

The extra block in dri2_create_context is to prevent extra white space noise
in the next patch.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agodri_util: Compare against the correct API enums
Ian Romanick [Tue, 7 Aug 2012 16:58:55 +0000 (09:58 -0700)]
dri_util: Compare against the correct API enums

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Enable GL_ARB_invalidate_subdata
Ian Romanick [Mon, 13 Aug 2012 20:17:33 +0000 (13:17 -0700)]
mesa: Enable GL_ARB_invalidate_subdata

v2: Add GL_ARB_invalidate_subdata to release notes at Brian's
suggestion.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa: Add skeleton implementations of glInvalidateTex{Sub,}Image
Ian Romanick [Mon, 13 Aug 2012 20:14:25 +0000 (13:14 -0700)]
mesa: Add skeleton implementations of glInvalidateTex{Sub,}Image

These are part of GL_ARB_invalidate_subdata (but not OpenGL ES 3.0).

v2: Add comment explaining why minimum dimensions are set to 1 for some
texture targets.  Add default case to switch statement to silence
compiler warnings and detect new texture targets.  Both changes
suggested by Brian.  Also use _mesa_is_desktop_gl as suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Add skeleton implementations of glInvalidateBuffer{Sub,}Data
Ian Romanick [Mon, 13 Aug 2012 17:27:33 +0000 (10:27 -0700)]
mesa: Add skeleton implementations of glInvalidateBuffer{Sub,}Data

These are part of GL_ARB_invalidate_subdata (but not OpenGL ES 3.0).

v2: Use _mesa_bufferobj_mapped instead of testing
gl_buffer_object::Pointer as suggested by Brian.  Also use
_mesa_is_desktop_gl as suggested by Ken.

v3: Add a comment by the map subrange / discard range overlap test and
fix an off-by-one error noticed by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa/es: Pass context to _mesa_init_bufferobj_dispatch
Ian Romanick [Mon, 13 Aug 2012 17:23:22 +0000 (10:23 -0700)]
mesa/es: Pass context to _mesa_init_bufferobj_dispatch

With this change _mesa_init_bufferobj_dispatch won't set function
pointers that don't exist in OpenGL ES.

v2: Use _mesa_is_desktop_gl and _mesa_is_gles3 as suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Add skeleton implementations of glInvalidate{Sub,}Framebuffer
Ian Romanick [Mon, 13 Aug 2012 16:27:00 +0000 (09:27 -0700)]
mesa: Add skeleton implementations of glInvalidate{Sub,}Framebuffer

These are part of GL_ARB_invalidate_subdata and OpenGL ES 3.0.

v2: Reject aux buffers in core context, and use _mesa_is_desktop_gl and
_mesa_is_gles3.  Both suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoglapi: Add GL_ARB_invalidate_subdata
Ian Romanick [Mon, 13 Aug 2012 20:15:24 +0000 (13:15 -0700)]
glapi: Add GL_ARB_invalidate_subdata

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa/es3: Add _mesa_is_gles3 predicate
Ian Romanick [Tue, 14 Aug 2012 20:24:00 +0000 (13:24 -0700)]
mesa/es3: Add _mesa_is_gles3 predicate

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agointel: Implement ARB_texture_storage
Ian Romanick [Sat, 11 Aug 2012 04:31:57 +0000 (21:31 -0700)]
intel: Implement ARB_texture_storage

This is basically cut-and-paste from the swrast implementation, and it
could probably be (slightly) more optimal.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: update glext.h to version 83
Ian Romanick [Sat, 11 Aug 2012 04:47:04 +0000 (21:47 -0700)]
mesa: update glext.h to version 83

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agobuild: Use MKDIR_P in src/mesa/Makefile.am
Matt Turner [Wed, 1 Aug 2012 21:26:41 +0000 (14:26 -0700)]
build: Use MKDIR_P in src/mesa/Makefile.am

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Use AM_V_GEN in src/mesa/Makefile.am
Matt Turner [Wed, 1 Aug 2012 21:24:31 +0000 (14:24 -0700)]
build: Use AM_V_GEN in src/mesa/Makefile.am

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Fix autogen.sh to allow out-of-tree builds
Matt Turner [Wed, 1 Aug 2012 21:11:31 +0000 (14:11 -0700)]
build: Fix autogen.sh to allow out-of-tree builds

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Fix out-of-tree generation of builtin_function.cpp
Matt Turner [Wed, 1 Aug 2012 21:09:22 +0000 (14:09 -0700)]
build: Fix out-of-tree generation of builtin_function.cpp

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Fix gtest out-of-tree build
Matt Turner [Wed, 1 Aug 2012 21:07:00 +0000 (14:07 -0700)]
build: Fix gtest out-of-tree build

Introduced by 3d000e7dd.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Fix out-of-tree generation of api_exec_es{1,2}.c
Matt Turner [Wed, 1 Aug 2012 21:05:36 +0000 (14:05 -0700)]
build: Fix out-of-tree generation of api_exec_es{1,2}.c

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild/sources.mak: Add src/glsl/glcpp to INCLUDE_DIRS
Matt Turner [Wed, 1 Aug 2012 21:02:23 +0000 (14:02 -0700)]
build/sources.mak: Add src/glsl/glcpp to INCLUDE_DIRS

Fixes problem where libdricore's of-out-tree build couldn't find
glcpp.h.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild/sources.mak: Remove unused GLSL_LIBS
Matt Turner [Wed, 1 Aug 2012 21:01:12 +0000 (14:01 -0700)]
build/sources.mak: Remove unused GLSL_LIBS

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Kill GL_ARB_shadow_ambient with fire
Ian Romanick [Sat, 11 Aug 2012 02:16:37 +0000 (19:16 -0700)]
mesa: Kill GL_ARB_shadow_ambient with fire

No driver supports this extension, and it seems unlikely than any driver
ever will.  I think r300c may have supported it at one time, but that
driver has already been removed.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
12 years agoradeon/llvm: Inline immediate offset when lowering implicit parameters
Tom Stellard [Wed, 1 Aug 2012 16:20:20 +0000 (16:20 +0000)]
radeon/llvm: Inline immediate offset when lowering implicit parameters

12 years agoradeon/llvm: Use correct opcocde for BREAK_LOGICALNZ_i32
Tom Stellard [Mon, 13 Aug 2012 21:29:46 +0000 (21:29 +0000)]
radeon/llvm: Use correct opcocde for BREAK_LOGICALNZ_i32

12 years agoscons: Populate top_srcdir and top_builddir variables when reading Makefiles.sources.
José Fonseca [Tue, 14 Aug 2012 11:18:45 +0000 (12:18 +0100)]
scons: Populate top_srcdir and top_builddir variables when reading Makefiles.sources.

This is not entirely correct, as scons doesn't put binaries in a
"src" subdirectory, but doesn't seem to be a problem for now.

12 years agomesa: Use GLdouble for depthMax in final unpack conversions.
Kenneth Graunke [Mon, 13 Aug 2012 07:35:41 +0000 (00:35 -0700)]
mesa: Use GLdouble for depthMax in final unpack conversions.

The final step of _mesa_unpack_depth_span is to take the temporary
GLfloat depth values and convert them to the desired format.  When
converting to GL_UNSIGNED_INTEGER with depthMax > 0xffffff, we use
double-precision math to avoid overflow and precision problems.

Or at least that's the idea.  Unfortunately

   GLdouble z = depthValues[i] * (GLfloat) depthMax;

actually causes single-precision multiplication, since both operands are
GLfloats.  Casting depthMax to GLdouble causes the scaling to be done
with double-precision math.

Fixes a regression in oglconform's depth-stencil basic.read.ds test
since c60ac7b17993d28af65b04f9bbbf3ee74c35358c, where the expected and
actual values differed slightly.  For example, 0xcfa7a6 vs. 0xcfa7a4.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49772
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Fix the scaling of seconds to ms in perf debug.
Eric Anholt [Tue, 14 Aug 2012 00:49:06 +0000 (17:49 -0700)]
i965: Fix the scaling of seconds to ms in perf debug.

*headdesk*

12 years agoi965: Validate API and version in brwCreateContext
Ian Romanick [Tue, 7 Aug 2012 19:43:17 +0000 (12:43 -0700)]
i965: Validate API and version in brwCreateContext

v2: Use base-10 for versions like gl_context::Version.  Suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi915: Validate API and version in i915CreateContext
Ian Romanick [Tue, 7 Aug 2012 19:30:14 +0000 (12:30 -0700)]
i915: Validate API and version in i915CreateContext

v2: Use base-10 for versions like gl_context::Version.  Suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi830: Validate API and version before calling i830CreateContext
Ian Romanick [Tue, 7 Aug 2012 19:16:35 +0000 (12:16 -0700)]
i830: Validate API and version before calling i830CreateContext

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agointel: In the i915 driver, the chipset cannot be i965
Ian Romanick [Tue, 7 Aug 2012 19:05:35 +0000 (12:05 -0700)]
intel: In the i915 driver, the chipset cannot be i965

In the i965 dirver, the chipset must be i965.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agodri: Pass API_OPENGL_CORE through to the drivers
Ian Romanick [Tue, 7 Aug 2012 18:26:19 +0000 (11:26 -0700)]
dri: Pass API_OPENGL_CORE through to the drivers

This forces the drivers to do at least some validation of context API
and version before creating the context.  In r100 and r200 drivers, this
means that they don't do any post-hoc validation.

v2: Actually reject compatibility profile 3.2+ contexts.  Thanks Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Filter a bunch more functions based on API
Ian Romanick [Wed, 8 Aug 2012 17:29:11 +0000 (10:29 -0700)]
mesa: Filter a bunch more functions based on API

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Don't advertise extensions that are part of GL 1.5 in a core context
Ian Romanick [Wed, 8 Aug 2012 17:00:32 +0000 (10:00 -0700)]
mesa: Don't advertise extensions that are part of GL 1.5 in a core context

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Don't advertise extensions that are part of GL 1.4 in a core context
Ian Romanick [Wed, 8 Aug 2012 16:59:09 +0000 (09:59 -0700)]
mesa: Don't advertise extensions that are part of GL 1.4 in a core context

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Don't advertise extensions that are part of GL 1.3 in a core context
Ian Romanick [Wed, 8 Aug 2012 16:54:55 +0000 (09:54 -0700)]
mesa: Don't advertise extensions that are part of GL 1.3 in a core context

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Don't advertise extensions that are part of GL 1.2 in a core context
Ian Romanick [Wed, 8 Aug 2012 16:51:38 +0000 (09:51 -0700)]
mesa: Don't advertise extensions that are part of GL 1.2 in a core context

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Don't advertise deprecated extensions in a core context
Ian Romanick [Wed, 8 Aug 2012 16:11:58 +0000 (09:11 -0700)]
mesa: Don't advertise deprecated extensions in a core context

It may be possible to trim the list of extensions futher.  These are
just the obvious extensions that add functionality that the core context
explicitly forbids.  Apple's core-context extension list is *just* the
extensions on top of the core GL version.  I'm not sure we want to go
that far, but removing some things that have been in core since 2.1 may
be okay.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agobuild: Fix libdricore out-of-tree builds (v2)
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:12 +0000 (12:30 +1000)]
build: Fix libdricore out-of-tree builds (v2)

v2: Add both top_srcdir and top_builddir to mesa asm include dirs.
    These require both in-tree and build-time-generated files.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/mapi: More killing of TOP in favour of top_srcdir
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:11 +0000 (12:30 +1000)]
build/mapi: More killing of TOP in favour of top_srcdir

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glsl: fix location of generated files.
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:10 +0000 (12:30 +1000)]
build/glsl: fix location of generated files.

Like in src/mesa, use GLSL_BUILDDIR/GLSL_SRCDIR to unambiguously
distinguish between in-tree and generated files.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glapi: fix includes for generated files
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:09 +0000 (12:30 +1000)]
build/glapi: fix includes for generated files

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild: fix out of tree generation of glapi_mapi_tmp.h
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:08 +0000 (12:30 +1000)]
build: fix out of tree generation of glapi_mapi_tmp.h

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glx: fix include paths for out-of-tree builds
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:07 +0000 (12:30 +1000)]
build/glx: fix include paths for out-of-tree builds

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild: fix location of generated files in src/mesa (v4)
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:06 +0000 (12:30 +1000)]
build: fix location of generated files in src/mesa (v4)

Also fix include paths for the generated headers.

v2: Switch to using self-explanatory BUILDDIR/SRCDIR defined from
    top_builddir/top_srcdir rather than the ambiguous TOP.
v3: Add both top_builddir and top_srcdir to include flags for mesa asm.
    These rely on both in-tree and build-time-generated includes.
v4: Rebased on top of 948c8f502a.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
12 years agointel: Reserve enough space to finish occlusion queries on Gen6.
Kenneth Graunke [Fri, 10 Aug 2012 17:26:04 +0000 (10:26 -0700)]
intel: Reserve enough space to finish occlusion queries on Gen6.

After realizing that brw_finish_batch emitted some final PIPE_CONTROLs
to record occlusion queries, Chris noted that we probably hadn't
reserved enough space to actually emit them.

Reserving a full 60 bytes seems a bit harsh, since we only need that
much if occlusion queries are actually active.  Plus, 28 bytes would be
sufficient for Gen7, and 24 for Gen4-5.

We could optimize this in the future, but it doesn't seem too critical.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53311
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agointel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.
Kenneth Graunke [Fri, 10 Aug 2012 17:26:03 +0000 (10:26 -0700)]
intel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.

On Gen4+, brw_finish_batch() calls brw_emit_query_end(), which emits
some extra PIPE_CONTROLs to capture the current occlusion query data.
Unfortunately, it was being called *after* _intel_batchbuffer_flush
added the MI_BATCH_BUFFER_END, meaning those PIPE_CONTROLs didn't get
inside the batch.

Not only does this likely cause bogus occlusion query values, it can
also cause crashes: with the recent change to use 64-bit depth count
writes on Gen6+, we started emitting an odd-length PIPE_CONTROL, which
happened after the MI_NOOP padding.  This resulted in an odd-length
batch buffer, which resulted in execbuf2 returning -EINVAL and the
application dying with an intel_do_flush_locked failure.

On older generations, finish_batch() doesn't emit any state, so this
change shouldn't have any effect.

Huge thanks to Chris Wilson for helping me figure this out.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53311
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoi965: Add perf debug for stalls during shader compiles.
Eric Anholt [Tue, 7 Aug 2012 17:05:38 +0000 (10:05 -0700)]
i965: Add perf debug for stalls during shader compiles.

v2: fix bad comment from before I gave up and decided to just use doubles.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for when the state cache gets nuked.
Eric Anholt [Thu, 12 Jul 2012 21:05:29 +0000 (14:05 -0700)]
i965: Add performance debug for when the state cache gets nuked.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for shader recompiles.
Eric Anholt [Thu, 12 Jul 2012 20:19:53 +0000 (13:19 -0700)]
i965: Add performance debug for shader recompiles.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for fast clear fallbacks.
Eric Anholt [Thu, 12 Jul 2012 20:14:42 +0000 (13:14 -0700)]
i965: Add performance debug for fast clear fallbacks.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agointel: Add performance debug for some common GPU stalls.
Eric Anholt [Thu, 12 Jul 2012 20:01:49 +0000 (13:01 -0700)]
intel: Add performance debug for some common GPU stalls.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for register spilling.
Eric Anholt [Thu, 12 Jul 2012 20:08:20 +0000 (13:08 -0700)]
i965: Add performance debug for register spilling.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add INTEL_DEBUG=perf for failure to compile 16-wide shaders.
Eric Anholt [Thu, 12 Jul 2012 19:48:58 +0000 (12:48 -0700)]
i965: Add INTEL_DEBUG=perf for failure to compile 16-wide shaders.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agointel: Rename INTEL_DEBUG=fall to INTEL_DEBUG=perf.
Eric Anholt [Thu, 12 Jul 2012 19:35:19 +0000 (12:35 -0700)]
intel: Rename INTEL_DEBUG=fall to INTEL_DEBUG=perf.

I want to introduce some more debug output for performance surprises that
includes fallbacks, but aren't necessarily software rasterization.  Leave
INTEL_DEBUG=fall in place for those that have used that flag before.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agometa: texture rectangle textures may not have mipmaps
Pauli Nieminen [Tue, 12 Jun 2012 18:38:59 +0000 (21:38 +0300)]
meta: texture rectangle textures may not have mipmaps

Avoid INVALID_OPERATION error if decompressing rectangle texture.
Setting mipmap level limits for those textures is error that must not be
hit by meta code to mislead user.

[v3/Kayden]: Resolve conflicts due to Eric picking a subset of Pauli's
original changes.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agometa: Use sampler object for mipmap generation
Pauli Nieminen [Tue, 12 Jun 2012 18:38:58 +0000 (21:38 +0300)]
meta: Use sampler object for mipmap generation

Sampler objects are perfect for meta operations.Sampler object
is separate state object that shadows the sampling state in texture
object. With sampler object mipmap can maintain same sampling state for
all subsequent generation requests.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa/samplerobj: Avoid crash in sampler query if texture unit is disabled
Pauli Nieminen [Tue, 12 Jun 2012 18:38:48 +0000 (21:38 +0300)]
mesa/samplerobj: Avoid crash in sampler query if texture unit is disabled

Sampler queries are so far made only for enabled texture unit. But if
any code would query sampler before checking texture unit state that
would result to NULL deference.

Making the inline helper easier to use with NULL check makes a lot sense
because compiler is likely to combine the checks for the current texture.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters CompressedTexImage
Pauli Nieminen [Tue, 12 Jun 2012 18:38:45 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters CompressedTexImage

In tune with previous patches. Again there is duplication of information
in function parameters that is good to remove.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters from AllocTextureImageBuffer
Pauli Nieminen [Tue, 12 Jun 2012 18:38:44 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters from AllocTextureImageBuffer

Size and format information is always stored in gl_texture_image
structure. That makes it preferable to remove duplicate information from
parameters to make interface easier to understand.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters from TexImage
Pauli Nieminen [Tue, 12 Jun 2012 18:38:43 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters from TexImage

gl_texture_image structure always holds size and internal format before
TexImage driver hook is called. Those passing same information in
function parameters only duplicates information making the interface
harder to understand.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoconfigure: Check xcb version when X11 pkgconfig exists
Tom Stellard [Fri, 13 Jul 2012 13:46:23 +0000 (13:46 +0000)]
configure: Check xcb version when X11 pkgconfig exists

Commit 6882381a2efbdf06b7002d11468c94b9964c2bc8 added a dependency on a
newer version of xcb, but the version check wasn't added in all the
necessary places.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agogbm: Fix build without gallium_drm_loader
Chí-Thanh Christopher Nguyễn [Thu, 9 Aug 2012 15:42:24 +0000 (17:42 +0200)]
gbm: Fix build without gallium_drm_loader

pipe_loader_drm_probe_fd only exists if HAVE_PIPE_LOADER_DRM is defined.
Patch improved as suggested by Vadim A. Misbakh-Soloviov.

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

12 years agoradeonsi: move drawing into new state handling
Christian König [Fri, 3 Aug 2012 08:26:01 +0000 (10:26 +0200)]
radeonsi: move drawing into new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: move sync handling into new state handler
Christian König [Thu, 2 Aug 2012 14:15:40 +0000 (16:15 +0200)]
radeonsi: move sync handling into new state handler

So we can remove all the old atom handling.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: separate and disable streamout for now
Christian König [Thu, 2 Aug 2012 13:21:02 +0000 (15:21 +0200)]
radeonsi: separate and disable streamout for now

I have my doubts that this code still works on SI.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: remove ps_partial_flush
Christian König [Thu, 2 Aug 2012 13:06:59 +0000 (15:06 +0200)]
radeonsi: remove ps_partial_flush

Not needed any more.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: remove r6xx_flush_and_inv atom
Christian König [Thu, 2 Aug 2012 12:52:55 +0000 (14:52 +0200)]
radeonsi: remove r6xx_flush_and_inv atom

It is not used any more.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: move init state to new state handling
Christian König [Thu, 2 Aug 2012 12:43:23 +0000 (14:43 +0200)]
radeonsi: move init state to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: add support for PKT3 cmds to new state handling
Christian König [Thu, 2 Aug 2012 12:30:06 +0000 (14:30 +0200)]
radeonsi: add support for PKT3 cmds to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: cleanup shader headers
Christian König [Thu, 2 Aug 2012 10:14:59 +0000 (12:14 +0200)]
radeonsi: cleanup shader headers

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoRevert "mesa: Remove C++11 narrowing warnings"
Chad Versace [Fri, 10 Aug 2012 21:02:03 +0000 (14:02 -0700)]
Revert "mesa: Remove C++11 narrowing warnings"

This reverts commit 9f5a5d541d5c1ff2e440791ba8ff44d0233daeb4.

Fixes the following build error on GCC 4.2.3:
  cc1plus: error: unrecognized command line option "-Wno-narrowing"
The GCC Manual incorrectly stated that commit 9f5a5d54 woulde be safe for
old versions of GCC.

Reported-by: Andy Furniss <andyqos@ukfsn.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agosoftpipe: fix softpipe_delete_fs_state() failed assertion
Brian Paul [Fri, 10 Aug 2012 18:16:10 +0000 (12:16 -0600)]
softpipe: fix softpipe_delete_fs_state() failed assertion

The var!=softpipe->fs_variant assertion was failing because we weren't
nulling the softpipe->fs_variant pointer when binding a new shader.
Since softpipe->fs_variant depends on the current fs, it's of no use
when a new FS is bound.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53318

Note: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agocso: rearrange some structure fields for consistency
Brian Paul [Fri, 10 Aug 2012 18:14:17 +0000 (12:14 -0600)]
cso: rearrange some structure fields for consistency

12 years agost/mesa: fix renderbuffer validation bug
Brian Paul [Fri, 10 Aug 2012 15:57:05 +0000 (09:57 -0600)]
st/mesa: fix renderbuffer validation bug

After we attach a new renderbuffer in this function we need to make
sure Mesa's update_framebuffer() gets called.

Fixes crash in WebGL conformance/textures/texture-attachment-formats.html,
but the test still fails for other reasons.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53316

Note: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agomesa: Remove C++11 narrowing warnings
Chad Versace [Thu, 9 Aug 2012 19:59:22 +0000 (12:59 -0700)]
mesa: Remove C++11 narrowing warnings

Add -Wno-narrowing to CXXFLAGS for gcc.

It is safe to add this flag even for versions of gcc that don't recognize
it.  From the GCC Manual [1]: "[GCC] allows the use of new -Wno- options
with old compilers".

This removes warnings of the form
    warning: narrowing conversion of X from 'int' to 'float' inside { } is
    ill-formed in C++11 [-Wnarrowing]
in ff_fragment_shader.cpp and gen6_blorp.cpp of the form.  When building
i965, I observed no other difference in the build output.

[1] http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agogallivm: fix crash in lp_sampler_static_state()
Brian Paul [Fri, 10 Aug 2012 15:23:36 +0000 (09:23 -0600)]
gallivm: fix crash in lp_sampler_static_state()

Fixes WebGL conformance/uniforms/uniform-default-values.html crash.

We need to check for the null view pointer before accessing view->texture.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53317

Note: This is a candidate for the 8.0 branch.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
12 years agost/mesa: fix glCopyTexSubImage crash
Brian Paul [Fri, 10 Aug 2012 15:12:50 +0000 (09:12 -0600)]
st/mesa: fix glCopyTexSubImage crash

Fixes a WebGL crash.  The dest texture image is at level 2 and is of
size 1x1 texel.  The st texture image is a stand-alone resource, not
a pointer into a complete mipmap.  So the resource has one level and
trying to write to level 2 blows up.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53314
and http://bugs.freedesktop.org/show_bug.cgi?id=53319

Note: This is a candidate for the 8.0 branch.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
12 years agointel: Always downsample in intel_miptree_map_multisample
Chad Versace [Thu, 9 Aug 2012 20:55:07 +0000 (13:55 -0700)]
intel: Always downsample in intel_miptree_map_multisample

Always downsample before mapping, even if the map mode contains
GL_MAP_INVALIDATE_RANGE_BIT. If we neglect to downsample when only
a subrect is mapped then the upsample in intel_miptree_unmap_multisample
may write garbage to the region outside the subrect.

(Eric gave my patch e88cfbb a conditional reviewed-by with the condition
that it always downsample before mapping. I forgot to make that change
before pushing the patch.)

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agoi965/gen6+: Add support for edge flags.
Eric Anholt [Sat, 28 Jul 2012 04:07:48 +0000 (21:07 -0700)]
i965/gen6+: Add support for edge flags.

Fixes the 3 new piglit edgeflag tests.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40707
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.
Eric Anholt [Fri, 27 Jul 2012 22:57:07 +0000 (15:57 -0700)]
i965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.

Fixes piglit gl-2.0/edgeflag.

NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/vs: Add comment noting copy_edgeflag state dependency.
Eric Anholt [Fri, 27 Jul 2012 22:53:54 +0000 (15:53 -0700)]
i965/vs: Add comment noting copy_edgeflag state dependency.

It's already in the state struct.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/vs: Add support for copying user edge flags.
Eric Anholt [Fri, 27 Jul 2012 19:57:56 +0000 (12:57 -0700)]
i965/vs: Add support for copying user edge flags.

Fixes the glsl skinning demo regression since changing to the new GLSL
compiler, and is part of fixing piglit gl-2.0-edgeflag.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50079
NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/fs: Fix the FS inputs setup when some SF outputs aren't used in the FS.
Olivier Galibert [Thu, 19 Jul 2012 20:00:16 +0000 (22:00 +0200)]
i965/fs: Fix the FS inputs setup when some SF outputs aren't used in the FS.

If there was an edge flag or a two-side-color pair present, we'd end up
mismatched and read values from earlier in the VUE for later FS inputs.

v2: Fix regression in gles2conform shaders generating point size. (change by
    anholt)

Signed-off-by: Olivier Galibert <galibert@pobox.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
NOTE: This is a candidate for the 8.0 branch.

12 years agost/mesa: Initialize tgsi_texture_offset Padding field.
Vinson Lee [Wed, 8 Aug 2012 07:08:43 +0000 (00:08 -0700)]
st/mesa: Initialize tgsi_texture_offset Padding field.

Fixes uninitialized scalar variable defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agoglx/dri: Initialize reset to __DRI_CTX_RESET_NO_NOTIFICATION.
Kenneth Graunke [Mon, 6 Aug 2012 22:12:07 +0000 (15:12 -0700)]
glx/dri: Initialize reset to __DRI_CTX_RESET_NO_NOTIFICATION.

If the application has requested reset notification, then
dri2_convert_glx_attribs will initialize this to the correct value.

Otherwise, it's supposed to initialize this to NO_NOTIFICATION, but
doesn't when num_attribs == 0.  (The consensus seems to be that we
should make it do so, but that's more invasive, so I'm pushing this for
now.)

Fixes a regression since a8724d85f8cb2f0fb73b9c6c1f268f9084c6d473
where trying to run OilRush_x86 or apitrace heaven_x64 would result in:

dri_util.c:221: dri2CreateContextAttribs: Assertion `!"Should not get
here."' failed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53076
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
12 years agointel: use _mesa_meta_Clear with OpenGL ES 1.1 v2
Tapani Pälli [Wed, 8 Aug 2012 17:46:45 +0000 (20:46 +0300)]
intel: use _mesa_meta_Clear with OpenGL ES 1.1 v2

Patch changes i915 and i965 drivers to use fixed function version of
meta clear when running on ES 1.1. This fixes rendering errors seen with
Google Maps, Angry Birds and Gallery3D on Android platform.

Change 88128516d43be5d25288ff5b64db63cda83c04b3 exposes all extensions
internally to be available independent of GL flavour, therefore check
against ARB_fragment_shader does not work.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50333
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>