mesa.git
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.

14 years agor300g: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:29:17 +0000 (21:29 +0200)]
r300g: adapt to interface changes

might need further cleanup. Using surfaces internally for the u_blitter code
seems nonoptimal.

14 years agonouveau: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:28:14 +0000 (21:28 +0200)]
nouveau: adapt to interface changes

this probably needs further cleanup (just getting a surface for the resource
seems quite nonoptimal and potentially cause unnecessary copies I think)

14 years agofo: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:25:27 +0000 (21:25 +0200)]
fo: adapt to interface changes

14 years agoidentity: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:25:16 +0000 (21:25 +0200)]
identity: adapt to interface changes

14 years agotrace: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:25:07 +0000 (21:25 +0200)]
trace: adapt to interface changes

14 years agoi965g: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:24:50 +0000 (21:24 +0200)]
i965g: adapt to interface changes

14 years agoi915g: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:24:04 +0000 (21:24 +0200)]
i915g: adapt to interface changes

14 years agosoftpipe: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:23:46 +0000 (21:23 +0200)]
softpipe: adapt to interface changes

14 years agollvmpipe: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:23:31 +0000 (21:23 +0200)]
llvmpipe: adapt to interface changes

14 years agocell: adapt to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:22:23 +0000 (21:22 +0200)]
cell: adapt to interface changes

not even compile tested but fairly trivial

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

adapt to blit changes, and also handle a bit more msaa state in theory
(incomplete, doesn't handle resolves in any way for now).

14 years agogallium/util: adapt util code to interface changes
Roland Scheidegger [Mon, 17 May 2010 19:15:20 +0000 (21:15 +0200)]
gallium/util: adapt util code to interface changes

The util blit functions change their interface (apart from some rename) too
(in particular util_blit_pixels now also takes a pipe_resource as the src blit
argument instead of a surface, as it might just call resource_copy_region).
Maybe the blit util code might need a bit more cleanup, it still doesn't feel
very clean. In particular it seems that util_blit_pixels_tex should probably
disappear, and I think it would be great if the code called by drivers for
blitting (u_blitter.c, which isn't really touched by this change) could somehow
be merged with the u_blit code.

14 years agogallium: clean up resource_copy_region function
Roland Scheidegger [Mon, 17 May 2010 19:02:24 +0000 (21:02 +0200)]
gallium: clean up resource_copy_region function

Previously, surface_copy was said to allow overlapping blits, and it was
"optional". However, some state trackers actually assumed it is always present,
and quite some code (like in u_blit) assumed overlapping isn't allowed.
Hence, resource_copy_region (and in the same spirit, resource_fill_region) is
now mandatory, but overlapping blits are no longer allowed. A driver can plug
in the cpu fallback util_resource_copy_region if it does not want to provide its
own implementation, though this is not optimal.

14 years agogallium: another interface change for multisampling
Roland Scheidegger [Mon, 17 May 2010 18:52:08 +0000 (20:52 +0200)]
gallium: another interface change for multisampling

due to popular request, use nr_samples parameter in is_format_supported()
instead of new is_msaa_supported() query.
This makes it easily possible to query if a format with a given sample count
is also supported not only as render target, but for sampler views (note that
texture sampling from multisampled resources isn't supported yet).
It is not quite how dx10 format msaa queries work, but we might need to revisit
format queries completely in the future anyway.

14 years agollvmpipe: fix front/back tri culling mix-up
Brian Paul [Mon, 17 May 2010 17:43:43 +0000 (11:43 -0600)]
llvmpipe: fix front/back tri culling mix-up

14 years agodraw: fix front/back error in unfilled pipeline stage
Keith Whitwell [Fri, 14 May 2010 22:47:05 +0000 (23:47 +0100)]
draw: fix front/back error in unfilled pipeline stage

14 years agodraw: fix typo checking for unfilled polygons
Keith Whitwell [Fri, 14 May 2010 22:46:43 +0000 (23:46 +0100)]
draw: fix typo checking for unfilled polygons

14 years agosoftpipe: restore culling code
Keith Whitwell [Fri, 14 May 2010 19:36:08 +0000 (20:36 +0100)]
softpipe: restore culling code

14 years agogallium: more work on ccw flag removal
Keith Whitwell [Fri, 14 May 2010 18:20:25 +0000 (19:20 +0100)]
gallium: more work on ccw flag removal

The linux-debug target builds...

14 years agogallium: convert rasterizer state to use gl-style front/back concepts
Keith Whitwell [Fri, 14 May 2010 12:04:42 +0000 (13:04 +0100)]
gallium: convert rasterizer state to use gl-style front/back concepts

Use front/back instead of cw/ccw throughout.
Also, use offset_point/line/fill instead of offset_cw/ccw.

Brings gallium representation of this state into line with its main
user, and also what turns out to be the most common hardware
representation.

This fixes a long-standing bias in the interface towards the
architecture of the software rasterizer.

14 years agoutil: fix copy_rect stride in default transfer_inline_write
Keith Whitwell [Sat, 8 May 2010 13:16:46 +0000 (14:16 +0100)]
util: fix copy_rect stride in default transfer_inline_write

14 years agoegl: Implement EGL_NOK_swap_region
Kristian Høgsberg [Fri, 7 May 2010 02:01:35 +0000 (22:01 -0400)]
egl: Implement EGL_NOK_swap_region

This extension adds a new function which provides an alternative to
eglSwapBuffers. eglSwapBuffersRegionNOK accepts two new parameters in
addition to those in eglSwapBuffers. The new parameters consist of a
pointer to a list of 4-integer blocks defining rectangles (x, y,
width, height) and an integer specifying the number of rectangles in
the list.

14 years agor300g: fix for piglit/fp-indirections2
Marek Olšák [Thu, 13 May 2010 22:20:58 +0000 (00:20 +0200)]
r300g: fix for piglit/fp-indirections2

14 years agortasm: fix void * / func * casting warnings
Brian Paul [Thu, 13 May 2010 19:41:49 +0000 (13:41 -0600)]
rtasm: fix void * / func * casting warnings

14 years agodraw: silence casting warnings
Brian Paul [Thu, 13 May 2010 19:35:17 +0000 (13:35 -0600)]
draw: silence casting warnings

14 years agogallivm: silence uninitialized var warning
Brian Paul [Thu, 13 May 2010 19:34:24 +0000 (13:34 -0600)]
gallivm: silence uninitialized var warning

14 years agollvmpipe: silence casting warnings
Brian Paul [Thu, 13 May 2010 19:26:21 +0000 (13:26 -0600)]
llvmpipe: silence casting warnings

14 years agogallivm: silence casting warning
Brian Paul [Thu, 13 May 2010 19:25:29 +0000 (13:25 -0600)]
gallivm: silence casting warning

14 years agogallivm: silence uninitialized var warning
Brian Paul [Thu, 13 May 2010 19:24:21 +0000 (13:24 -0600)]
gallivm: silence uninitialized var warning

14 years agollvmpipe: silence uninitialized var warnings
Brian Paul [Thu, 13 May 2010 19:21:37 +0000 (13:21 -0600)]
llvmpipe: silence uninitialized var warnings

14 years agollvmpipe: silence cast warnings in test programs
Brian Paul [Thu, 13 May 2010 19:21:19 +0000 (13:21 -0600)]
llvmpipe: silence cast warnings in test programs

14 years agogallivm: added lp_dump_llvmtype() debug helper
Brian Paul [Thu, 13 May 2010 16:24:10 +0000 (10:24 -0600)]
gallivm: added lp_dump_llvmtype() debug helper

14 years agollvmpipe: additional comments
Brian Paul [Thu, 13 May 2010 15:26:17 +0000 (09:26 -0600)]
llvmpipe: additional comments

14 years agogallivm: rename a var
Brian Paul [Wed, 12 May 2010 21:32:04 +0000 (15:32 -0600)]
gallivm: rename a var

14 years agoegl: Allow a prioritized list of default drivers
Kristian Høgsberg [Thu, 13 May 2010 20:06:29 +0000 (16:06 -0400)]
egl: Allow a prioritized list of default drivers

When there is no user driver or any matching display drivers we fall
back to the default driver.  This patch lets us have a list of default
drivers instead of just one.  The drivers are loaded in turn and we
attempt to initialize the display.  If it fails we unload the driver
and move on to the next one.

Compared to the display driver mechanism, this avoids loading a number
of drivers and then only using one.  Also, we call Initialize to see
if the driver will work instead of relying on Probe.  To know for sure
that a driver will work, Probe really have to do a full Initialize, so
we will just use Initialize directly.

14 years agoegl_dri2: Downgrade initialization errors to warnings
Kristian Høgsberg [Thu, 13 May 2010 19:42:51 +0000 (15:42 -0400)]
egl_dri2: Downgrade initialization errors to warnings

Don't want to shutdown everything if egl_dri2 fails to initialize.

14 years agoutil: Fix ptr -> int conversion.
José Fonseca [Thu, 13 May 2010 20:14:07 +0000 (21:14 +0100)]
util: Fix ptr -> int conversion.

14 years agoConditionally revert "gallivm: Use a more compact approach for lp_build_broadcast_sca...
José Fonseca [Thu, 13 May 2010 20:03:08 +0000 (21:03 +0100)]
Conditionally revert "gallivm: Use a more compact approach for lp_build_broadcast_scalar()."

This reverts commit a09e46c72461183c879d8472b44fe740ecc79b9f.

14 years agoi965: Reduce a single GL_QUADS to GL_TRIANGLE_FAN.
Eric Anholt [Thu, 13 May 2010 18:31:56 +0000 (11:31 -0700)]
i965: Reduce a single GL_QUADS to GL_TRIANGLE_FAN.

This is similar to the GL_QUAD_STRIP -> TRIANGLE_STRIP optimization --
the GS usage to split the quads into tris is a huge bottleneck, so a
quick check improves glean blendFunc time massively (width * height of
the window of single-pixel GL_QUADS, many many times).  This may also
end up helping with cairo performance, which sometimes ends up drawing
a single quad.