[PATCH 1/3] r600: add span support for 2D tiling

Frieder Ferlemann Frieder.Ferlemann at web.de
Thu May 27 00:54:08 PDT 2010


Hi Alex,

not tested (admittedly I haven't compiled it),
and probably not really relevant but these
switch cases could be more compact:

+static inline GLint r600_2d_tile_helper(const struct radeon_renderbuffer * rrb,
+                    GLint x, GLint y, GLint is_depth, GLint is_stencil)

...

+        switch (element_bytes) {
+        case 1:
+            pixel_number |= ((x >> 0) & 1) << 0; // pn[0] = x[0]
+            pixel_number |= ((x >> 1) & 1) << 1; // pn[1] = x[1]
+            pixel_number |= ((x >> 2) & 1) << 2; // pn[2] = x[2]
+            pixel_number |= ((y >> 1) & 1) << 3; // pn[3] = y[1]
+            pixel_number |= ((y >> 0) & 1) << 4; // pn[4] = y[0]
+            pixel_number |= ((y >> 2) & 1) << 5; // pn[5] = y[2]
+            break;
+        case 2:
+            pixel_number |= ((x >> 0) & 1) << 0; // pn[0] = x[0]
+            pixel_number |= ((x >> 1) & 1) << 1; // pn[1] = x[1]
+            pixel_number |= ((x >> 2) & 1) << 2; // pn[2] = x[2]
+            pixel_number |= ((y >> 0) & 1) << 3; // pn[3] = y[0]
+            pixel_number |= ((y >> 1) & 1) << 4; // pn[4] = y[1]
+            pixel_number |= ((y >> 2) & 1) << 5; // pn[5] = y[2]
+            break;
+        case 4:
+            pixel_number |= ((x >> 0) & 1) << 0; // pn[0] = x[0]
+            pixel_number |= ((x >> 1) & 1) << 1; // pn[1] = x[1]
+            pixel_number |= ((y >> 0) & 1) << 2; // pn[2] = y[0]
+            pixel_number |= ((x >> 2) & 1) << 3; // pn[3] = x[2]
+            pixel_number |= ((y >> 1) & 1) << 4; // pn[4] = y[1]
+            pixel_number |= ((y >> 2) & 1) << 5; // pn[5] = y[2]
+            break;
+        }


when using 

+        switch (element_bytes) {
+        case 1:
+            pixel_number |= (x & 0x07) << 0;      // pn[0] = x[0], pn[1] = x[1], pn[2] = x[2]
+            pixel_number |= ((y >> 1) & 1) << 3; // pn[3] = y[1]
+            pixel_number |= ((y >> 0) & 1) << 4; // pn[4] = y[0]
+            pixel_number |= ((y >> 2) & 1) << 5; // pn[5] = y[2]
+            break;
+        case 2:
+            pixel_number |= (x & 0x07) << 0;     // pn[0] = x[0], pn[1] = x[1], pn[2] = x[2]
+            pixel_number |= (y & 0x07) << 3;     // pn[3] = y[0], pn[4] = y[1], pn[5] = y[2]
+            break;
+        case 4:
+            pixel_number |= (x & 0x03) << 0;     // pn[0] = x[0], pn[1] = x[1]
+            pixel_number |= (y & 0x01) << 2;     // pn[2] = y[0]
+            pixel_number |= (x & 0x04) << 1;     // pn[3] = x[2]
+            pixel_number |= (y & 0x06) << 3;     // pn[4] = y[1], pn[5] = y[2]
+            break;
+        }

Greetings,
Frieder
___________________________________________________________
NEU: WEB.DE DSL für 19,99 EUR/mtl. und ohne Mindest-Laufzeit!
http://produkte.web.de/go/02/


More information about the dri-devel mailing list