nvfx: set magic bit to round NPOT mipmap sizes down and not up
authorLuca Barbieri <luca@luca-barbieri.com>
Sat, 4 Sep 2010 00:05:14 +0000 (02:05 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Sat, 4 Sep 2010 00:08:02 +0000 (02:08 +0200)
Does any API even use rounding-up?

src/gallium/drivers/nouveau/nouveau_class.h
src/gallium/drivers/nvfx/nvfx_screen.c

index 20941f379c770de2a0a9130e2606cb59873b522b..3c2248b6249dbee4155aeefb4a063868e2933d04 100644 (file)
@@ -6877,6 +6877,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define   NV40TCL_COLOR_LOGIC_OP_SET                                                   0x0000150f
 #define  NV40TCL_DEPTH_RANGE_NEAR                                                      0x00000394
 #define  NV40TCL_DEPTH_RANGE_FAR                                                       0x00000398
+#define  NV40TCL_MIPMAP_ROUNDING                                                       0x000003b0
+#define  NV40TCL_MIPMAP_ROUNDING_UP                                                    0x00000000
+#define  NV40TCL_MIPMAP_ROUNDING_DOWN                                                  0x00100000
 #define  NV40TCL_LINE_WIDTH                                                            0x000003b8
 #define  NV40TCL_LINE_SMOOTH_ENABLE                                                    0x000003bc
 #define  NV40TCL_UNK03C0(x)                                                            (0x000003c0+((x)*4))
index e6ba7bc87a055af8160fab74cbba407966839fd5..b5b7a3408198c36e066fd352f6c271b87e37fd3a 100644 (file)
@@ -328,6 +328,9 @@ static void nv40_screen_init(struct nvfx_screen *screen)
        OUT_RING(chan, 0x00d30000);
        OUT_RING(chan, RING_3D(0x1e94, 1));
        OUT_RING(chan, 0x00000001);
+
+       OUT_RING(chan, RING_3D(NV40TCL_MIPMAP_ROUNDING, 1));
+       OUT_RING(chan, NV40TCL_MIPMAP_ROUNDING_DOWN);
 }
 
 static unsigned