gallium: clean up resource_copy_region function
authorRoland Scheidegger <sroland@vmware.com>
Mon, 17 May 2010 19:02:24 +0000 (21:02 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Mon, 17 May 2010 19:02:24 +0000 (21:02 +0200)
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.

src/gallium/docs/source/context.rst
src/gallium/include/pipe/p_context.h

index 374711b..ac3c3c7 100644 (file)
@@ -253,8 +253,7 @@ Resource Busy Queries
 Blitting
 ^^^^^^^^
 
-These methods emulate classic blitter controls. They are not guaranteed to be
-available; if they are set to NULL, then they are not present.
+These methods emulate classic blitter controls.
 
 These methods operate directly on ``pipe_resource`` objects, and stand
 apart from any 3D state in the context.  Blitting functionality may be
@@ -264,8 +263,8 @@ moved to a separate abstraction at some point in the future.
 
 ``resource_copy_region`` blits a region of a subresource of a resource to a
 region of another subresource of a resource, provided that both resources have the
-same format. The source and destination may be the same resource, and overlapping
-blits are permitted.
+same format. The source and destination may be the same resource, but overlapping
+blits are not permitted.
 
 ``resource_resolve`` resolves a multisampled resource into a non-multisampled
 one. Formats and dimensions must match. This function must be present if a driver
index 6ce8ba9..6b72983 100644 (file)
@@ -238,8 +238,6 @@ struct pipe_context {
    /**
     * Resource functions for blit-like functionality
     *
-    * The pipe driver is allowed to set these functions to NULL, and in that
-    * case, they will not be available.
     * If a driver supports multisampling, resource_resolve must be available.
     */
    /*@{*/