mesa.git
15 years agoutil: Fix surface usage
Jakob Bornecrantz [Wed, 15 Apr 2009 21:33:07 +0000 (23:33 +0200)]
util: Fix surface usage

15 years agost: remove XXX comment
Brian Paul [Wed, 15 Apr 2009 15:54:04 +0000 (09:54 -0600)]
st: remove XXX comment

15 years agost: check for fast memcpy path in decompress_with_blit()
Brian Paul [Wed, 15 Apr 2009 15:52:04 +0000 (09:52 -0600)]
st: check for fast memcpy path in decompress_with_blit()

15 years agost: st_equal_formats() function to compare gallium/GL pixel formats
Brian Paul [Wed, 15 Apr 2009 15:51:38 +0000 (09:51 -0600)]
st: st_equal_formats() function to compare gallium/GL pixel formats

15 years agost: decompress_with_blit() path for glGetTexImage().
Brian Paul [Wed, 15 Apr 2009 15:37:22 +0000 (09:37 -0600)]
st: decompress_with_blit() path for glGetTexImage().

Decompress a texture by rendering a textured quad.

15 years agogallium: new, simple RGBA surface create/destroy helpers
Brian Paul [Wed, 15 Apr 2009 15:36:03 +0000 (09:36 -0600)]
gallium: new, simple RGBA surface create/destroy helpers

Use these for quickly creating an RGBA drawing surface.

15 years agomesa: Report name for missing s3tc functions
Jakob Bornecrantz [Wed, 8 Apr 2009 22:12:17 +0000 (00:12 +0200)]
mesa: Report name for missing s3tc functions

15 years agost: If the hw supports it do hw conversion of texture uploads
Jakob Bornecrantz [Wed, 8 Apr 2009 21:29:18 +0000 (23:29 +0200)]
st: If the hw supports it do hw conversion of texture uploads

15 years agoi965: checkpoint commit: VS constant buffers
Brian Paul [Tue, 14 Apr 2009 17:08:42 +0000 (11:08 -0600)]
i965: checkpoint commit: VS constant buffers

Hook up a constant buffer, binding table, etc for the VS unit.
This will allow using large constant buffers with vertex shaders.
The new code is disabled at this time (use_const_buffer=FALSE).

15 years agodri glx: Swap before checking for cliprects.
Younes Manton [Tue, 14 Apr 2009 01:24:44 +0000 (21:24 -0400)]
dri glx: Swap before checking for cliprects.

We don't update drawables anymore unless they are completely
uninitialized, so we need to swap even if we don't have
cliprects yet, otherwise we never end up calling the driver's
SwapBuffers(). The driver should update the drawable in its
SwapBuffers() anyway.

See 8e753d04045a82062ac34d3b2622eb9dba8af374,
"dri glx: Fix dri_util::driBindContext" for the change that
exposed it.

15 years agonv50: fix mrt clear
Ben Skeggs [Mon, 13 Apr 2009 04:41:06 +0000 (14:41 +1000)]
nv50: fix mrt clear

15 years agor300-gallium: Split up vertex format tallying for HW and SW TCL.
Corbin Simpson [Sat, 11 Apr 2009 01:34:55 +0000 (18:34 -0700)]
r300-gallium: Split up vertex format tallying for HW and SW TCL.

This makes things draw (again) with HW TCL. Yay?

15 years agor300-gallium: Finish up cleanup of vertex format state.
Corbin Simpson [Sat, 11 Apr 2009 01:15:46 +0000 (18:15 -0700)]
r300-gallium: Finish up cleanup of vertex format state.

This makes texcoords route properly, and also fixes a few asserts.

15 years agor300-gallium: Clean up vertex format setup.
Corbin Simpson [Fri, 10 Apr 2009 23:14:12 +0000 (16:14 -0700)]
r300-gallium: Clean up vertex format setup.

15 years agoi965: remove unused var
Brian Paul [Fri, 10 Apr 2009 19:32:04 +0000 (13:32 -0600)]
i965: remove unused var

15 years agoi965: clean-up in prepare_wm_surfaces()
Brian Paul [Fri, 10 Apr 2009 19:21:27 +0000 (13:21 -0600)]
i965: clean-up in prepare_wm_surfaces()

15 years agomesa: reduce makefile output
Brian Paul [Fri, 10 Apr 2009 17:17:35 +0000 (11:17 -0600)]
mesa: reduce makefile output

15 years agowgl: Protect the framebuffer with a lock.
José Fonseca [Fri, 10 Apr 2009 18:48:59 +0000 (19:48 +0100)]
wgl: Protect the framebuffer with a lock.

Unfortunately this doesn't catch all the cases, as the mesa state tracker
can still use the framebuffer without giving the wgl state tracker
the chance to lock it.

15 years agowgl: Note down the gallium pixel formats, instead of re-guessing them.
José Fonseca [Fri, 10 Apr 2009 17:43:51 +0000 (18:43 +0100)]
wgl: Note down the gallium pixel formats, instead of re-guessing them.

15 years agowgl: Query the screen for supported formats.
José Fonseca [Fri, 10 Apr 2009 17:14:22 +0000 (18:14 +0100)]
wgl: Query the screen for supported formats.

15 years agowgl: Walk through the pixel formats combinations.
José Fonseca [Fri, 10 Apr 2009 16:22:21 +0000 (17:22 +0100)]
wgl: Walk through the pixel formats combinations.

15 years agowgl: Keep copies of the PIXELFORMATDESCRIPTOR structures.
José Fonseca [Fri, 10 Apr 2009 15:37:15 +0000 (16:37 +0100)]
wgl: Keep copies of the PIXELFORMATDESCRIPTOR structures.

15 years agoBuild dri drivers for powerpc and sparc on FreeBSD.
Robert Noland [Fri, 10 Apr 2009 16:41:27 +0000 (11:41 -0500)]
Build dri drivers for powerpc and sparc on FreeBSD.

15 years agomesa: asst. progs/test/Makefile files
Brian Paul [Fri, 10 Apr 2009 14:56:03 +0000 (08:56 -0600)]
mesa: asst. progs/test/Makefile files

15 years agoi965: added null const_buffer pointer check in update_constant_buffer()
Brian Paul [Fri, 10 Apr 2009 14:36:04 +0000 (08:36 -0600)]
i965: added null const_buffer pointer check in update_constant_buffer()

15 years agointel: added screen->dri2.loader null pointer check in intel_flush()
Brian Paul [Fri, 10 Apr 2009 14:35:21 +0000 (08:35 -0600)]
intel: added screen->dri2.loader null pointer check in intel_flush()

Fixes segfaults when rendering to front buffer.

15 years agogallium: remove pipe_texture::compressed field
Brian Paul [Fri, 10 Apr 2009 14:05:10 +0000 (08:05 -0600)]
gallium: remove pipe_texture::compressed field

The format field encodes compressed vs. uncompressed already.  We can easily
check if a texture is compressed with pf_is_compressed(texture->format).

15 years agowgl: Slightly simplify pixelformat creation.
José Fonseca [Fri, 10 Apr 2009 12:18:14 +0000 (13:18 +0100)]
wgl: Slightly simplify pixelformat creation.

15 years agoprogs: Port glxinfo to wgl.
José Fonseca [Fri, 10 Apr 2009 12:08:57 +0000 (13:08 +0100)]
progs: Port glxinfo to wgl.

15 years agomesa: Don't define WGL_ARB_extensions_string in mesa_wgl.h.
José Fonseca [Fri, 10 Apr 2009 11:58:05 +0000 (12:58 +0100)]
mesa: Don't define WGL_ARB_extensions_string in mesa_wgl.h.

It breaks wglext.h as it doesn't define PFNWGLGETEXTENSIONSSTRINGARBPROC.

15 years agowgl: Move pixel format information into device structure.
José Fonseca [Fri, 10 Apr 2009 09:30:14 +0000 (10:30 +0100)]
wgl: Move pixel format information into device structure.

15 years agowgl: Combine alpha pixelformat info in color.
José Fonseca [Fri, 10 Apr 2009 09:14:13 +0000 (10:14 +0100)]
wgl: Combine alpha pixelformat info in color.

15 years agostw: Reorder the pixelformats, so that no alpha pixelformats get chosen before alpha.
José Fonseca [Fri, 10 Apr 2009 09:04:31 +0000 (10:04 +0100)]
stw: Reorder the pixelformats, so that no alpha pixelformats get chosen before alpha.

Some applications might not handle a alpha visual when when they did not
request for one.

15 years agostw: Don't make assumptions about integer size.
José Fonseca [Fri, 10 Apr 2009 09:02:58 +0000 (10:02 +0100)]
stw: Don't make assumptions about integer size.

15 years agostw: Free the mesa framebuffer.
José Fonseca [Fri, 10 Apr 2009 09:02:29 +0000 (10:02 +0100)]
stw: Free the mesa framebuffer.

15 years agotgsi/sse2: Cleanup NRM/NRM4 implementation.
Michal Krol [Fri, 10 Apr 2009 09:58:49 +0000 (11:58 +0200)]
tgsi/sse2: Cleanup NRM/NRM4 implementation.

Fix comments.
Make sure .w is set to 1.0 for NRM.
Optimise for non-.xyzw writemasks.

15 years agortasm: Silence `static function not used' warning.
Michal Krol [Fri, 10 Apr 2009 07:00:57 +0000 (09:00 +0200)]
rtasm: Silence `static function not used' warning.

15 years agodraw: Silence pointer-to-integer cast warning.
Michal Krol [Fri, 10 Apr 2009 06:59:20 +0000 (08:59 +0200)]
draw: Silence pointer-to-integer cast warning.

15 years agodraw: Fix vertex_header initialisation.
Michal Krol [Fri, 10 Apr 2009 06:54:47 +0000 (08:54 +0200)]
draw: Fix vertex_header initialisation.

15 years agoswrast: remove some unneeded CHAN_TYPE!=GL_FLOAT code
Brian Paul [Thu, 9 Apr 2009 21:31:48 +0000 (15:31 -0600)]
swrast: remove some unneeded CHAN_TYPE!=GL_FLOAT code

15 years agogallium: comments for surface_copy(), surface_fill() in p_context.h
Brian Paul [Fri, 10 Apr 2009 00:40:24 +0000 (18:40 -0600)]
gallium: comments for surface_copy(), surface_fill() in p_context.h

15 years agoi965: re-org of some of the new constant buffer code
Brian Paul [Fri, 10 Apr 2009 00:37:03 +0000 (18:37 -0600)]
i965: re-org of some of the new constant buffer code

Plus, begin the new code for vertex shader const buffers.

15 years agodemos: fix aspect ratio in Reshape()
Brian Paul [Thu, 9 Apr 2009 23:04:58 +0000 (17:04 -0600)]
demos: fix aspect ratio in Reshape()

15 years agoi965: new SURF_INDEX_ macros
Brian Paul [Thu, 9 Apr 2009 23:04:09 +0000 (17:04 -0600)]
i965: new SURF_INDEX_ macros

Used to map drawables, textures and constant buffers to surface binding
table indexes.

15 years agogallium: change // comment to /* */ style
Brian Paul [Thu, 9 Apr 2009 22:10:43 +0000 (16:10 -0600)]
gallium: change // comment to /* */ style

15 years agogallium: updated comments in p_screen.h
Brian Paul [Thu, 9 Apr 2009 22:02:41 +0000 (16:02 -0600)]
gallium: updated comments in p_screen.h

15 years agoi965simple: remove pipe_texture::compressed reference
Brian Paul [Thu, 9 Apr 2009 21:09:42 +0000 (15:09 -0600)]
i965simple: remove pipe_texture::compressed reference

15 years agotgsi/sse2: Fix build.
Michal Krol [Thu, 9 Apr 2009 21:24:57 +0000 (23:24 +0200)]
tgsi/sse2: Fix build.

15 years agodraw: Fix LIT instruction.
Michal Krol [Thu, 9 Apr 2009 21:17:02 +0000 (23:17 +0200)]
draw: Fix LIT instruction.

15 years agointel / DRI2: Accept fake front-buffer from loader
Ian Romanick [Tue, 7 Apr 2009 18:23:10 +0000 (11:23 -0700)]
intel / DRI2: Accept fake front-buffer from loader

Handle the loader returning a fake front-buffer.  Since the driver
never specifically requests a fake front-buffer, the driver assumes
that it will never receive both a fake and a real front-buffer.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@redhat.com>
15 years agoDRI2: Assume that there is always a front buffer
Ian Romanick [Mon, 6 Apr 2009 22:35:37 +0000 (15:35 -0700)]
DRI2: Assume that there is always a front buffer

Assume that the front-buffer exists even if the server didn't tell the
client that it exists.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@redhat.com>
15 years agointel / DRI2: Track and flush front-buffer rendering
Ian Romanick [Mon, 6 Apr 2009 20:15:54 +0000 (13:15 -0700)]
intel / DRI2: Track and flush front-buffer rendering

Track two flags:  whether or not front-buffer rendering is currently
enabled and whether or not front-buffer rendering has been enabled
since the last glFlush.  If the second flag is set, the front-buffer
is flushed via a loader call back.  If the first flag is cleared, the
second flag is cleared at this time.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@redhat.com>
15 years agoDRI2: Provide an interface for drivers to flush front-buffer rendering
Ian Romanick [Mon, 6 Apr 2009 19:44:18 +0000 (12:44 -0700)]
DRI2: Provide an interface for drivers to flush front-buffer rendering

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@redhat.com>
15 years agopython: Fix bad pointer.
José Fonseca [Thu, 9 Apr 2009 21:10:45 +0000 (22:10 +0100)]
python: Fix bad pointer.

15 years agost: remove another unneeded 'is compressed' comparison
Brian Paul [Thu, 9 Apr 2009 21:00:54 +0000 (15:00 -0600)]
st: remove another unneeded 'is compressed' comparison

15 years agost: remove unneeded "is compressed" check
Brian Paul [Thu, 9 Apr 2009 20:58:40 +0000 (14:58 -0600)]
st: remove unneeded "is compressed" check

The format indicates compressed vs. uncompressed.

15 years agost: rearrange some code to be a little more clear
Brian Paul [Thu, 9 Apr 2009 20:57:41 +0000 (14:57 -0600)]
st: rearrange some code to be a little more clear

15 years agogallium: remove unneeded compressed=0 assignment
Brian Paul [Thu, 9 Apr 2009 20:55:32 +0000 (14:55 -0600)]
gallium: remove unneeded compressed=0 assignment

15 years agogallium: remove unneeded compressed=0 assignment
Brian Paul [Thu, 9 Apr 2009 20:55:19 +0000 (14:55 -0600)]
gallium: remove unneeded compressed=0 assignment

15 years agost: remove comp_byte parameter to st_texture_create()
Brian Paul [Thu, 9 Apr 2009 20:48:21 +0000 (14:48 -0600)]
st: remove comp_byte parameter to st_texture_create()

We can determine if the texture is compressed by checking the format.

15 years agost: consolidate format->usage computation
Brian Paul [Thu, 9 Apr 2009 20:41:49 +0000 (14:41 -0600)]
st: consolidate format->usage computation

15 years agost: add const qualifiers, use GL types
Brian Paul [Thu, 9 Apr 2009 20:35:36 +0000 (14:35 -0600)]
st: add const qualifiers, use GL types

15 years agost: make loops over 3D texture slices a litte more intuitive
Brian Paul [Thu, 9 Apr 2009 20:32:42 +0000 (14:32 -0600)]
st: make loops over 3D texture slices a litte more intuitive

15 years agost: reformatting and clean-ups in texture code
Brian Paul [Thu, 9 Apr 2009 20:27:36 +0000 (14:27 -0600)]
st: reformatting and clean-ups in texture code

15 years agotgsi/sse2: Fix ARL instruction.
Michal Krol [Thu, 9 Apr 2009 20:47:06 +0000 (22:47 +0200)]
tgsi/sse2: Fix ARL instruction.

15 years agotgsi/sse2: Fix LIT instruction.
Michal Krol [Thu, 9 Apr 2009 20:38:07 +0000 (22:38 +0200)]
tgsi/sse2: Fix LIT instruction.

15 years agotrace: Dump the fence, not its pointer.
José Fonseca [Thu, 9 Apr 2009 20:28:31 +0000 (21:28 +0100)]
trace: Dump the fence, not its pointer.

15 years agowgl: Remove unused member.
José Fonseca [Thu, 9 Apr 2009 20:27:43 +0000 (21:27 +0100)]
wgl: Remove unused member.

15 years agotrace: Use 'flags' name consistently.
José Fonseca [Thu, 9 Apr 2009 20:27:03 +0000 (21:27 +0100)]
trace: Use 'flags' name consistently.

15 years agogallium: Use "flags" consistently.
José Fonseca [Thu, 9 Apr 2009 20:26:15 +0000 (21:26 +0100)]
gallium: Use "flags" consistently.

15 years agogdi: Use stw_* names.
José Fonseca [Thu, 9 Apr 2009 19:42:09 +0000 (20:42 +0100)]
gdi: Use stw_* names.

15 years agowgl: Use more stw_* names.
José Fonseca [Thu, 9 Apr 2009 19:41:59 +0000 (20:41 +0100)]
wgl: Use more stw_* names.

15 years agowgl: Use hooks instead of subclassing the window.
José Fonseca [Thu, 9 Apr 2009 19:35:55 +0000 (20:35 +0100)]
wgl: Use hooks instead of subclassing the window.

Subclassing the window is invasive: we might call an old window proc even
after it was removed. Glut and another bug just in the wrong time was
provoking this. Hooks don't have this problem.

15 years agomesa: fix potential recursive locking deadlock in _mesa_HashWalk()
Brian Paul [Thu, 9 Apr 2009 16:53:01 +0000 (10:53 -0600)]
mesa: fix potential recursive locking deadlock in _mesa_HashWalk()

If the walk callback called _mesa_HashRemove() we'd deadlock.

15 years agoi965: free shader's constant buffer in brwDeleteProgram()
Brian Paul [Thu, 9 Apr 2009 16:33:08 +0000 (10:33 -0600)]
i965: free shader's constant buffer in brwDeleteProgram()

Fixes mem leak observed with texcombine test.

15 years agowgl: Catch the attempt of releasing a context which is not current.
José Fonseca [Thu, 9 Apr 2009 14:15:12 +0000 (15:15 +0100)]
wgl: Catch the attempt of releasing a context which is not current.

15 years agowgl: Move the framebuffer list to the device. Avoid recursive locking.
José Fonseca [Thu, 9 Apr 2009 13:58:17 +0000 (14:58 +0100)]
wgl: Move the framebuffer list to the device. Avoid recursive locking.

15 years agowgl: More symbol naming normalization.
José Fonseca [Thu, 9 Apr 2009 10:44:33 +0000 (11:44 +0100)]
wgl: More symbol naming normalization.

15 years agostw: Use wglext.h's defines and prototypes.
José Fonseca [Thu, 9 Apr 2009 10:28:23 +0000 (11:28 +0100)]
stw: Use wglext.h's defines and prototypes.

15 years agostw: Normalize symbols prefix.
José Fonseca [Thu, 9 Apr 2009 10:09:42 +0000 (11:09 +0100)]
stw: Normalize symbols prefix.

15 years agowgl: Add const qualifier to global constant data.
José Fonseca [Thu, 9 Apr 2009 09:54:00 +0000 (10:54 +0100)]
wgl: Add const qualifier to global constant data.

15 years agoi965: set BRW_MASK_DISABLE flag in "send" instruction in brw_dp_READ_4()
Brian Paul [Thu, 9 Apr 2009 01:35:24 +0000 (19:35 -0600)]
i965: set BRW_MASK_DISABLE flag in "send" instruction in brw_dp_READ_4()

This fixes the random results that were seen when fetching a constant
inside an IF/ELSE clause.  Disabling the execution mask ensures that all
the components of the register are written.

15 years agoi965: clean-ups, debug code in brw_wm_glsl.c
Brian Paul [Thu, 9 Apr 2009 01:31:49 +0000 (19:31 -0600)]
i965: clean-ups, debug code in brw_wm_glsl.c

15 years agoi965: init current_const[i].index = -1
Brian Paul [Thu, 9 Apr 2009 01:29:37 +0000 (19:29 -0600)]
i965: init current_const[i].index = -1

15 years agoi965: move the fetch_constants() call before setting conditional mod state
Brian Paul [Wed, 8 Apr 2009 19:48:34 +0000 (13:48 -0600)]
i965: move the fetch_constants() call before setting conditional mod state

Before, the instruction's CondUpdate field was mistakenly effecting the
constant-fetch operation.

Fixes progs/glsl/bump.c demo.  But there are some other issues related
to condition flags and IF/ELSE that need investigation...

15 years agomesa: minor datatype changes in optimization code
Brian Paul [Tue, 7 Apr 2009 17:15:27 +0000 (11:15 -0600)]
mesa: minor datatype changes in optimization code

15 years agonv50: adapt for new clear interface
Ben Skeggs [Thu, 9 Apr 2009 01:36:28 +0000 (11:36 +1000)]
nv50: adapt for new clear interface

this is so much nicer :)

15 years agor300-gallium: Properly emit indexbufs.
Corbin Simpson [Wed, 8 Apr 2009 21:54:17 +0000 (14:54 -0700)]
r300-gallium: Properly emit indexbufs.

This fixes hardlocks with anything using elts.

15 years agor300-gallium: Add vertex shader constant emit.
Corbin Simpson [Tue, 7 Apr 2009 09:04:07 +0000 (02:04 -0700)]
r300-gallium: Add vertex shader constant emit.

15 years agopython/retrace: Try to cope with failures creating textures.
José Fonseca [Wed, 8 Apr 2009 20:13:57 +0000 (21:13 +0100)]
python/retrace: Try to cope with failures creating textures.

15 years agopython: Don't try to finish a null fence.
José Fonseca [Wed, 8 Apr 2009 20:11:51 +0000 (21:11 +0100)]
python: Don't try to finish a null fence.

15 years agopython/retrace: Use colors on windows console.
José Fonseca [Wed, 8 Apr 2009 20:11:24 +0000 (21:11 +0100)]
python/retrace: Use colors on windows console.

15 years agoMesa: allow suppression of debug messages in a debug build
Robert Ellison [Wed, 8 Apr 2009 16:58:33 +0000 (10:58 -0600)]
Mesa: allow suppression of debug messages in a debug build

For testing, it's very useful to be able to test on a debug build,
while suppressing the debug messages (messages that are by default
suppressed in a release build), in order to see the same behavior
that users of release builds will see.

For example, the "piglit" test suite will flag an error on
programs that produce unexpected output, which means that a
debug build will always fail due to the extra debug messages.

This change introduces a new value to the MESA_DEBUG
environment variable.  In a debug build, explicitly setting MESA_DEBUG
to "0" will suppress all debug messages (both from _mesa_debug() and
from _mesa_warning()).  (The former behavior was that debug
messages were never suppressed in debug builds.)

Behavior of non-debug builds has not changed.  In such a build,
_mesa_debug() messages are always suppressed, and _mesa_warning()
messages will be suppressed unless MESA_DEBUG is set *to any value*.

15 years agogallium: when using gl_PointCoord ensure we use the correct attribute.
Alan Hourihane [Wed, 8 Apr 2009 15:39:17 +0000 (16:39 +0100)]
gallium: when using gl_PointCoord ensure we use the correct attribute.

15 years agopython/retrace: Allow to specify the range of calls of interest.
José Fonseca [Wed, 8 Apr 2009 15:25:29 +0000 (16:25 +0100)]
python/retrace: Allow to specify the range of calls of interest.

15 years agotrace: Make calls dumping threadsafe.
José Fonseca [Wed, 8 Apr 2009 15:24:31 +0000 (16:24 +0100)]
trace: Make calls dumping threadsafe.

15 years agotrace: Make call no global.
José Fonseca [Wed, 8 Apr 2009 14:41:08 +0000 (15:41 +0100)]
trace: Make call no global.

15 years agopython/retrace: Handle recent traces.
José Fonseca [Wed, 8 Apr 2009 14:36:17 +0000 (15:36 +0100)]
python/retrace: Handle recent traces.

Try to keep backwards compatability with old traces as much as possible.

15 years agopython: Fix method renaming.
José Fonseca [Wed, 8 Apr 2009 14:32:08 +0000 (15:32 +0100)]
python: Fix method renaming.

15 years agopython: Cope with null surfaces.
José Fonseca [Wed, 8 Apr 2009 14:30:53 +0000 (15:30 +0100)]
python: Cope with null surfaces.