mesa.git
14 years agor300/compiler: fix dumping r5xx vertex shaders
Marek Olšák [Wed, 26 May 2010 02:20:18 +0000 (04:20 +0200)]
r300/compiler: fix dumping r5xx vertex shaders

14 years agor300/compiler: move hardware caps to the radeon_compiler base struct
Marek Olšák [Wed, 26 May 2010 02:18:27 +0000 (04:18 +0200)]
r300/compiler: move hardware caps to the radeon_compiler base struct

Needed for vertex shaders too.

14 years agor300/compiler: shorten swizzle expressions
Marek Olšák [Wed, 26 May 2010 01:24:00 +0000 (03:24 +0200)]
r300/compiler: shorten swizzle expressions

14 years agorbug: add set sample mask passthrough.
Dave Airlie [Wed, 26 May 2010 01:45:32 +0000 (11:45 +1000)]
rbug: add set sample mask passthrough.

This at least stops rbug segfaulting at startup.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agor300g: more efficient finish + fix comments
Marek Olšák [Tue, 25 May 2010 23:41:22 +0000 (01:41 +0200)]
r300g: more efficient finish + fix comments

14 years agor300g: implement fake but compliant fences
Marek Olšák [Tue, 25 May 2010 23:23:07 +0000 (01:23 +0200)]
r300g: implement fake but compliant fences

14 years agor300g: add r300_init_render_functions, remove r300_render.h
Marek Olšák [Tue, 25 May 2010 21:29:39 +0000 (23:29 +0200)]
r300g: add r300_init_render_functions, remove r300_render.h

14 years agor300g: remove r300_query.h
Marek Olšák [Tue, 25 May 2010 21:23:41 +0000 (23:23 +0200)]
r300g: remove r300_query.h

14 years agor300g: remove r300_flush.h
Marek Olšák [Tue, 25 May 2010 21:21:41 +0000 (23:21 +0200)]
r300g: remove r300_flush.h

14 years agor300g: add r300_init_blit_functions, remove r300_blit.h
Marek Olšák [Tue, 25 May 2010 21:19:50 +0000 (23:19 +0200)]
r300g: add r300_init_blit_functions, remove r300_blit.h

14 years agoutil: update comments at blitter
Marek Olšák [Tue, 25 May 2010 21:10:49 +0000 (23:10 +0200)]
util: update comments at blitter

14 years agoutil: fix indentation in blitter
Marek Olšák [Tue, 25 May 2010 21:06:33 +0000 (23:06 +0200)]
util: fix indentation in blitter

14 years agor300g,util: remove pipe_surface from the util_blitter_copy interface and clean up
Marek Olšák [Tue, 25 May 2010 21:05:29 +0000 (23:05 +0200)]
r300g,util: remove pipe_surface from the util_blitter_copy interface and clean up

14 years agor300g,util: remove pipe_surface from the util_blitter_fill interface and clean up
Marek Olšák [Tue, 25 May 2010 19:28:19 +0000 (21:28 +0200)]
r300g,util: remove pipe_surface from the util_blitter_fill interface and clean up

14 years agoutil: remove unused util_blitter_copy_surface
Marek Olšák [Tue, 25 May 2010 18:59:13 +0000 (20:59 +0200)]
util: remove unused util_blitter_copy_surface

14 years agodrm_api: Remove type argument from create screen callback
Jakob Bornecrantz [Tue, 25 May 2010 17:58:33 +0000 (18:58 +0100)]
drm_api: Remove type argument from create screen callback

With the removal of DRI1 support there where no use of this argument,
some drivers didn't even properly check it.

14 years agogallium: Remove dri1_api.h and winsys support for DRI1
Jakob Bornecrantz [Tue, 25 May 2010 17:47:21 +0000 (18:47 +0100)]
gallium: Remove dri1_api.h and winsys support for DRI1

Since DRI1 support was dropped from st/dri it
makes no sense to keep this code around.

14 years agost/dri: Remove DRI1 support
Jakob Bornecrantz [Tue, 25 May 2010 17:43:52 +0000 (18:43 +0100)]
st/dri: Remove DRI1 support

Nobody used it and the current code had been trough so many
changes yet never once being tested.

14 years agollvmpipe: Stop relying on PIPE_FLUSH_TEXTURE_CACHE/PIPE_FLUSH_RENDER_CACHE magic.
José Fonseca [Tue, 25 May 2010 13:39:25 +0000 (14:39 +0100)]
llvmpipe: Stop relying on PIPE_FLUSH_TEXTURE_CACHE/PIPE_FLUSH_RENDER_CACHE magic.

Flush means flush, i.e., all previous operations should be visible from
other contexts.

This does not imply unswizzling tiles, since unswizzling should be done on
a needed basis for any context.

14 years agogallivm: Choose an appropriate code generation optimization level.
José Fonseca [Tue, 25 May 2010 10:46:40 +0000 (11:46 +0100)]
gallivm: Choose an appropriate code generation optimization level.

'Default' unless GALLIVM_DEBUG=nopt option is set.

14 years agosw/xlib: NULL-out pointers after freeing image data
Brian Paul [Mon, 24 May 2010 22:20:30 +0000 (16:20 -0600)]
sw/xlib: NULL-out pointers after freeing image data

This fixes a double-free() error when not using a shared memory XImage.
The XDestroyImage() function frees the ximage->data buffer if non-NULL.
If we free it ourselves, we also need to NULL-out the pointer.

14 years agost/glx: check if deleting head of buffer list
Brian Paul [Mon, 24 May 2010 22:19:21 +0000 (16:19 -0600)]
st/glx: check if deleting head of buffer list

14 years agometa: Convert Z value from normalized to object-space in meta code
Brian Paul [Mon, 24 May 2010 21:21:30 +0000 (17:21 -0400)]
meta: Convert Z value from normalized to object-space in meta code

Convert Z from a normalized value in the range [0, 1] to an
object-space Z coordinate in [-1, +1] so that drawing at the new Z
position with the default/identity ortho projection results in the
original Z value.  Used by the meta-Clear, Draw/CopyPixels and Bitmap
functions where the Z value comes from the clear value or raster
position.

Fixes piglit tests fdo23670-depth_test, quad-invariance and
glsl-orangebook-ch06-bump as well as oglc zbfunc.c.

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

14 years agomesa: Reenable check for GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
Kristian Høgsberg [Mon, 24 May 2010 20:56:12 +0000 (16:56 -0400)]
mesa: Reenable check for GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT

The check was disabled when FEATURE_OES_framebuffer_object was enabled,
since that used to mean we weren't implementing regular OpenGL semantics.
Now that we can compile in support for multiple APIs, change the #ifdef to
compile the check in when FEATURE_GL is enabled and enable the check for
contexts that implement OpenGL at runtime.

14 years agoglsl: silence unused var warnings
Brian Paul [Mon, 24 May 2010 17:43:55 +0000 (11:43 -0600)]
glsl: silence unused var warnings

14 years agollvmpipe: Also test compressed formats in lp_test_format()
José Fonseca [Mon, 24 May 2010 15:41:28 +0000 (16:41 +0100)]
llvmpipe: Also test compressed formats in lp_test_format()

14 years agollvmpipe: Fix lp_test_format on 32bit OSes.
José Fonseca [Mon, 24 May 2010 15:34:40 +0000 (16:34 +0100)]
llvmpipe: Fix lp_test_format on 32bit OSes.

14 years agoxorg-vmwgfx: Add vmwctrl proto
Jakob Bornecrantz [Thu, 22 Apr 2010 20:21:24 +0000 (21:21 +0100)]
xorg-vmwgfx: Add vmwctrl proto

14 years agomesa: Handle FEATURE_es2_glsl differences at runtime too
Kristian Høgsberg [Mon, 24 May 2010 14:01:38 +0000 (10:01 -0400)]
mesa: Handle FEATURE_es2_glsl differences at runtime too

Now that we can support different APIs at runtime, we need to check the
context for the API we're currently providing as well.

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

14 years agollvmpipe: Delete extraneous arugment too.
José Fonseca [Mon, 24 May 2010 13:24:06 +0000 (14:24 +0100)]
llvmpipe: Delete extraneous arugment too.

14 years agollvmpipe: Remove unused sincos_test_case struct.
José Fonseca [Mon, 24 May 2010 12:56:53 +0000 (13:56 +0100)]
llvmpipe: Remove unused sincos_test_case struct.

14 years agollvmpipe: Unit test for sin/cos that compares against reference implementation.
Qicheng Christopher Li [Mon, 24 May 2010 12:44:13 +0000 (13:44 +0100)]
llvmpipe: Unit test for sin/cos that compares against reference implementation.

Signed-off-by: José Fonseca <jfonseca@vmware.com>
14 years agogallivm: Efficient implementation of sin/cos.
Qicheng Christopher Li [Mon, 24 May 2010 12:41:17 +0000 (13:41 +0100)]
gallivm: Efficient implementation of sin/cos.

Based on Julien Pommier's SSE and SSE2 algorithms.

Signed-off-by: José Fonseca <jfonseca@vmware.com>
14 years agoi965: Add support for all 8 possible ARB_draw_buffers in Mesa.
Eric Anholt [Sun, 23 May 2010 20:39:42 +0000 (13:39 -0700)]
i965: Add support for all 8 possible ARB_draw_buffers in Mesa.

We should be able to do 16, but are limited by Mesa's static buffer
allocations.

14 years agoi965: Fix bit allocation for number of color regions for ARB_draw_buffers.
Eric Anholt [Sun, 23 May 2010 20:35:50 +0000 (13:35 -0700)]
i965: Fix bit allocation for number of color regions for ARB_draw_buffers.

If you used all 4 color targets we currently support, we would see 0
and end up just writing the first output.  Give enough bits that we
can do the maximum of 16.

Fixes piglit fbo-drawbuffers-maxtargets.

14 years agoutil/blitter: allow NULL clear color
Marek Olšák [Sun, 23 May 2010 17:00:56 +0000 (19:00 +0200)]
util/blitter: allow NULL clear color

14 years agor300g: extend compile error message
Marek Olšák [Sun, 23 May 2010 16:34:04 +0000 (18:34 +0200)]
r300g: extend compile error message

14 years agor300g: fix dummy vertex shader compilation
Marek Olšák [Sat, 22 May 2010 11:46:30 +0000 (13:46 +0200)]
r300g: fix dummy vertex shader compilation

14 years agor300g: fix warnings
Marek Olšák [Sat, 22 May 2010 11:45:20 +0000 (13:45 +0200)]
r300g: fix warnings

14 years agollvmpipe: Fill in slice_stride.
José Fonseca [Sat, 22 May 2010 15:14:20 +0000 (16:14 +0100)]
llvmpipe: Fill in slice_stride.

14 years agoprogs: Remove remaining EGL demos.
Chia-I Wu [Sat, 22 May 2010 04:12:32 +0000 (22:12 -0600)]
progs: Remove remaining EGL demos.

They have been moved to git+ssh://git.freedesktop.org/git/mesa/demos.

14 years agoglx: Invalidate drawable in glXBindTexImageEXT() if we don't get events
Kristian Høgsberg [Fri, 21 May 2010 15:51:33 +0000 (11:51 -0400)]
glx: Invalidate drawable in glXBindTexImageEXT() if we don't get events

When we don't get invalidate events, we need to invalidate a drawable
before using it for tfp to make sure we have uptodate buffers.

14 years agoglx: Split tfp functions out to context vtable
Kristian Høgsberg [Fri, 21 May 2010 14:36:56 +0000 (10:36 -0400)]
glx: Split tfp functions out to context vtable

This introduces a new per-context vtable, which lets us clean up all the
#ifdef's a bit and move the DRI2 specific implementation into dri2_glx.c.

14 years agost_api: Give get_egl_image arguments directly to the function
Jakob Borncrantz [Fri, 21 May 2010 22:25:45 +0000 (23:25 +0100)]
st_api: Give get_egl_image arguments directly to the function

14 years agomesa: fix warnings about missing initializers in get.c table
Brian Paul [Fri, 21 May 2010 20:57:29 +0000 (14:57 -0600)]
mesa: fix warnings about missing initializers in get.c table

14 years agost/mesa: remove unused var
Brian Paul [Fri, 21 May 2010 20:57:06 +0000 (14:57 -0600)]
st/mesa: remove unused var

14 years agost/glx: fix incorrect parameter type
Brian Paul [Fri, 21 May 2010 20:51:36 +0000 (14:51 -0600)]
st/glx: fix incorrect parameter type

14 years agogallium: Fix invalidate framebuffer with old libGL libraries
Jakob Bornecrantz [Fri, 21 May 2010 19:37:23 +0000 (20:37 +0100)]
gallium: Fix invalidate framebuffer with old libGL libraries

14 years agost_api: Add get param function to st_manager
Jakob Bornecrantz [Fri, 21 May 2010 19:25:54 +0000 (20:25 +0100)]
st_api: Add get param function to st_manager

14 years agonouveau: Fix build after msaa merge
Jakob Bornecrantz [Fri, 21 May 2010 20:24:10 +0000 (21:24 +0100)]
nouveau: Fix build after msaa merge

14 years agomesa: disable building the removed demos with scons
Brian Paul [Fri, 21 May 2010 20:12:11 +0000 (14:12 -0600)]
mesa: disable building the removed demos with scons

14 years agomesa: disable building the removed demos
Brian Paul [Fri, 21 May 2010 20:11:40 +0000 (14:11 -0600)]
mesa: disable building the removed demos

This is a quick fix.

14 years agoFix test for MESA_LLVM.
Eric Anholt [Fri, 21 May 2010 19:17:24 +0000 (12:17 -0700)]
Fix test for MESA_LLVM.

14 years agoRemove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
Eric Anholt [Fri, 21 May 2010 16:32:38 +0000 (09:32 -0700)]
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.

The remaining programs are ones I've had difficulty finding a build
environment for to make the build system or are unit tests that should
probably live next to their code instead.  Hopefully people can bring
over the build for remaining pieces they care about.

14 years agorbug: fix breakage due to interface changes
Roland Scheidegger [Fri, 21 May 2010 18:52:01 +0000 (20:52 +0200)]
rbug: fix breakage due to interface changes

14 years agoMerge branch 'gallium-msaa'
Roland Scheidegger [Fri, 21 May 2010 18:02:22 +0000 (20:02 +0200)]
Merge branch 'gallium-msaa'

Conflicts:
src/mesa/state_tracker/st_gen_mipmap.c
src/mesa/state_tracker/st_texture.c

14 years agonouveau/nvfx: Fill more PIPE_CAP_MAX_ values
Patrice Mandin [Fri, 21 May 2010 17:09:08 +0000 (19:09 +0200)]
nouveau/nvfx: Fill more PIPE_CAP_MAX_ values

Signed-off-by: Patrice Mandin <patmandin@gmail.com>
14 years agoAdd __DragonFly__ in querymatrix for fpclassify()
David Shao [Fri, 21 May 2010 15:15:01 +0000 (08:15 -0700)]
Add __DragonFly__ in querymatrix for fpclassify()

Signed-off-by: Brian Paul <brianp@vmware.com>
14 years agoprogs/tests: print more info in copypixrate.c
Brian Paul [Wed, 19 May 2010 17:23:26 +0000 (11:23 -0600)]
progs/tests: print more info in copypixrate.c

14 years agodocs: update 7.8.2 relnotes with Cell driver fixes
Brian Paul [Fri, 21 May 2010 15:51:42 +0000 (09:51 -0600)]
docs: update 7.8.2 relnotes with Cell driver fixes

14 years agocell: assorted compilation fixes
Brian Paul [Fri, 21 May 2010 15:47:00 +0000 (09:47 -0600)]
cell: assorted compilation fixes

14 years agocell: fix breakage from earlier draw module changes
Brian Paul [Fri, 21 May 2010 15:28:07 +0000 (09:28 -0600)]
cell: fix breakage from earlier draw module changes

14 years agogallium: remnants of old ccw state
Keith Whitwell [Fri, 21 May 2010 15:05:16 +0000 (16:05 +0100)]
gallium: remnants of old ccw state

14 years agoMerge branch 'gallium-front-ccw'
Keith Whitwell [Fri, 21 May 2010 14:41:06 +0000 (15:41 +0100)]
Merge branch 'gallium-front-ccw'

14 years agodocs: update rasterizer for ccw changes
Keith Whitwell [Fri, 21 May 2010 14:38:48 +0000 (15:38 +0100)]
docs: update rasterizer for ccw changes

Also rearrange some of the fields into point/line/polygon categories.

14 years agoscons: Remove debug print statement.
Vinson Lee [Fri, 21 May 2010 04:03:03 +0000 (21:03 -0700)]
scons: Remove debug print statement.

Fixes Python IndexError exception with default SCons build.

14 years agoMake TLS EGL dri2 driver search path behavior match TLS GLX dri2 behavior.
Eric Anholt [Thu, 20 May 2010 21:44:43 +0000 (14:44 -0700)]
Make TLS EGL dri2 driver search path behavior match TLS GLX dri2 behavior.

14 years agoFix a substitution in glesv1_cm.pc
Eric Anholt [Thu, 20 May 2010 20:55:21 +0000 (13:55 -0700)]
Fix a substitution in glesv1_cm.pc

14 years agoi965: remove disabled code for cycling through MRF registers in clipping.
Eric Anholt [Tue, 18 May 2010 22:27:10 +0000 (15:27 -0700)]
i965: remove disabled code for cycling through MRF registers in clipping.

The idea would be that you could have multiple send messages going on
if nothing depended on the previous message's results and you used a
different send message.  The problem is that the later send requires
the VUE handle returned by the first send's allocate anyway.

14 years agonv50: fixed other void pointer arithmetic errors
Xavier Chantry [Thu, 20 May 2010 17:44:24 +0000 (19:44 +0200)]
nv50: fixed other void pointer arithmetic errors

14 years agonv50: fix too long shader uploads by splitting them
Xavier Chantry [Thu, 20 May 2010 17:36:27 +0000 (19:36 +0200)]
nv50: fix too long shader uploads by splitting them

14 years agonv50: fill in shader limits
Christoph Bumiller [Thu, 20 May 2010 17:47:01 +0000 (19:47 +0200)]
nv50: fill in shader limits

14 years agoscons: add comments and whitespace
Brian Paul [Thu, 20 May 2010 16:26:19 +0000 (10:26 -0600)]
scons: add comments and whitespace

14 years agoscons: fix llvm detection
Brian Paul [Thu, 20 May 2010 16:25:17 +0000 (10:25 -0600)]
scons: fix llvm detection

The test for env['platform'] caused an exception since 'env' is not
defined at that point.  Instead, determine the target platform by
scanning sys.argv[].

14 years agogallivm: rename a var: s/val/array_size/
Brian Paul [Wed, 19 May 2010 19:26:11 +0000 (13:26 -0600)]
gallivm: rename a var: s/val/array_size/

14 years agogallivm: fix spelling in comment
Brian Paul [Wed, 19 May 2010 19:25:39 +0000 (13:25 -0600)]
gallivm: fix spelling in comment

14 years agogallivm: handle pointer types in lp_dump_llvmtype()
Brian Paul [Wed, 19 May 2010 18:46:20 +0000 (12:46 -0600)]
gallivm: handle pointer types in lp_dump_llvmtype()

14 years agollvmpipe: more tweaks to dump_fs_variant_key()
Brian Paul [Wed, 19 May 2010 18:39:52 +0000 (12:39 -0600)]
llvmpipe: more tweaks to dump_fs_variant_key()

14 years agogallium: fix/update tex target dumping
Brian Paul [Wed, 19 May 2010 18:28:16 +0000 (12:28 -0600)]
gallium: fix/update tex target dumping

14 years agollvmpipe: use util_dump_logicop()
Brian Paul [Wed, 19 May 2010 17:37:42 +0000 (11:37 -0600)]
llvmpipe: use util_dump_logicop()

14 years agogallium: added util_dump_logicop()
Brian Paul [Wed, 19 May 2010 17:37:09 +0000 (11:37 -0600)]
gallium: added util_dump_logicop()

14 years agollvmpipe: put variant print/debug code into separate function
Brian Paul [Wed, 19 May 2010 17:28:29 +0000 (11:28 -0600)]
llvmpipe: put variant print/debug code into separate function

14 years agointel: Throttle after doing copyregion/swapbuffers round trip
Kristian Høgsberg [Wed, 19 May 2010 01:50:44 +0000 (21:50 -0400)]
intel: Throttle after doing copyregion/swapbuffers round trip

Before we would throttle in the flush callback prior to round-tripping
to the server to do copyregion or swapbuffer.  Now, instead just note
that we need to throttle and do it in intel_prepare_render(), which
will be called after receiving the response from the server but before
we start rendering the next frame.  Even if the server also throttles
us in swapbuffer, this just makes the throttling a no-op when we hit
intel_prepare_render().  With that we can drop the
using_dri2_swapbuffers hack and just always throttle.

14 years agograw-null: Remove unnecessary header.
Vinson Lee [Thu, 20 May 2010 14:36:53 +0000 (07:36 -0700)]
graw-null: Remove unnecessary header.

14 years agoutil: fix obvious util_blitter_copy bugs...
Roland Scheidegger [Wed, 19 May 2010 16:33:28 +0000 (18:33 +0200)]
util: fix obvious util_blitter_copy bugs...

14 years agonv50: fix typo: s/_/./
Brian Paul [Wed, 19 May 2010 15:30:25 +0000 (09:30 -0600)]
nv50: fix typo: s/_/./

14 years agoutil: util_blitter_fill no longer needs to handle overlap
Roland Scheidegger [Wed, 19 May 2010 15:20:26 +0000 (17:20 +0200)]
util: util_blitter_fill no longer needs to handle overlap

14 years agoi915g: remove unused flip parameter
Roland Scheidegger [Wed, 19 May 2010 15:14:06 +0000 (17:14 +0200)]
i915g: remove unused flip parameter

14 years agodocs: update differences to d3d11
Roland Scheidegger [Tue, 18 May 2010 19:42:09 +0000 (21:42 +0200)]
docs: update differences to d3d11

14 years agoutil: fix some leftover util_surface_fill/copy calls
Roland Scheidegger [Tue, 18 May 2010 19:41:15 +0000 (21:41 +0200)]
util: fix some leftover util_surface_fill/copy calls

14 years agost/mesa: fix wrong argument order
Roland Scheidegger [Tue, 18 May 2010 16:03:37 +0000 (18:03 +0200)]
st/mesa: fix wrong argument order

14 years agogallium: implement set_sample_mask() in all drivers
Roland Scheidegger [Tue, 18 May 2010 14:20:44 +0000 (16:20 +0200)]
gallium: implement set_sample_mask() in all drivers

prevents segfault when state trackers try to set default mask.
Other option would be to make this required only for drivers
supporting multisampling, but this seems more clean.
Only dummy implementations (for normal drivers) provided (no driver
supports multisampling yet neither).

14 years agost/egl: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:34:30 +0000 (21:34 +0200)]
st/egl: adapt to interface changes

14 years agost/dri: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:34:03 +0000 (21:34 +0200)]
st/dri: adapt to interface changes

14 years agost/glx: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:33:53 +0000 (21:33 +0200)]
st/glx: adapt to interface changes

14 years agost/wgl: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:33:45 +0000 (21:33 +0200)]
st/wgl: adapt to interface changes

14 years agost/vega: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:33:37 +0000 (21:33 +0200)]
st/vega: adapt to interface changes

14 years agost/xorg: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:33:27 +0000 (21:33 +0200)]
st/xorg: adapt to interface changes

14 years agost/python: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:32:41 +0000 (21:32 +0200)]
st/python: adapt to interface changes

compile tested only.
Should probably change the python surface_copy/fill functions
also into resource_copy/fill_region functions and adapt the code
using them.

14 years agosvga: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:30:01 +0000 (21:30 +0200)]
svga: adapt to interface changes

might need further cleanup. Using surfaces internally just to be able to use
the existing code might cause unnecessary copies afaict.