draw: Don't define the last two mipmap levels in aa lines.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 14 Feb 2011 10:36:07 +0000 (10:36 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 14 Feb 2011 10:56:48 +0000 (10:56 +0000)
Some hardware needs to make a seperate copy of all levels to obey
max_lod, so simply do not define the last two levels instead of
clamping.

src/gallium/auxiliary/draw/draw_pipe_aaline.c

index af4cea85948d2e06788962246222264689e0b18b..32af29ae1444f7dffabe509c213274a083c71601 100644 (file)
 #define NUM_NEW_TOKENS 50
 
 
+/**
+ * Size for the alpha texture used for antialiasing
+ */
+#define TEXTURE_SIZE_LOG2  5   /* 32 x 32 */
+
 /**
  * Max texture level for the alpha texture used for antialiasing
+ *
+ * Don't use the 1x1 and 2x2 mipmap levels.
  */
-#define MAX_TEXTURE_LEVEL  5   /* 32 x 32 */
+#define MAX_TEXTURE_LEVEL  (TEXTURE_SIZE_LOG2 - 2)
 
 
 /**
@@ -403,8 +410,8 @@ aaline_create_texture(struct aaline_stage *aaline)
    texTemp.target = PIPE_TEXTURE_2D;
    texTemp.format = PIPE_FORMAT_A8_UNORM; /* XXX verify supported by driver! */
    texTemp.last_level = MAX_TEXTURE_LEVEL;
-   texTemp.width0 = 1 << MAX_TEXTURE_LEVEL;
-   texTemp.height0 = 1 << MAX_TEXTURE_LEVEL;
+   texTemp.width0 = 1 << TEXTURE_SIZE_LOG2;
+   texTemp.height0 = 1 << TEXTURE_SIZE_LOG2;
    texTemp.depth0 = 1;
    texTemp.array_size = 1;
    texTemp.bind = PIPE_BIND_SAMPLER_VIEW;
@@ -498,8 +505,7 @@ aaline_create_sampler(struct aaline_stage *aaline)
    sampler.mag_img_filter = PIPE_TEX_FILTER_LINEAR;
    sampler.normalized_coords = 1;
    sampler.min_lod = 0.0f;
-   /* avoid using the 1x1 and 2x2 mipmap levels */
-   sampler.max_lod = MAX_TEXTURE_LEVEL - 2;
+   sampler.max_lod = MAX_TEXTURE_LEVEL;
 
    aaline->sampler_cso = pipe->create_sampler_state(pipe, &sampler);
    if (aaline->sampler_cso == NULL)