From fa82ad84fbe2be2bbfe9de7cda3e901a069ae16c Mon Sep 17 00:00:00 2001 From: Luca Barbieri Date: Sat, 4 Sep 2010 02:05:14 +0200 Subject: nvfx: set magic bit to round NPOT mipmap sizes down and not up Does any API even use rounding-up? --- src/gallium/drivers/nouveau/nouveau_class.h | 3 +++ src/gallium/drivers/nvfx/nvfx_screen.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/gallium/drivers/nouveau/nouveau_class.h b/src/gallium/drivers/nouveau/nouveau_class.h index 20941f379c..3c2248b624 100644 --- a/src/gallium/drivers/nouveau/nouveau_class.h +++ b/src/gallium/drivers/nouveau/nouveau_class.h @@ -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)) diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index e6ba7bc87a..b5b7a34081 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -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 -- cgit v1.2.3