From e84f77be215ec1fc7a27388819b6c3a711057e4a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 8 Jun 2004 09:19:17 +0000 Subject: * Convert to use t_vertex.c instead of sis_vb.[ch] * Don't dispatch vertices directly to MMIO; queue them up in dma-like buffers first. This makes things more uniform between AGP and MMIO paths, cleans up some locking ugliness, and makes the driver look more like other drivers. * Don't use the AGP Cmd buffer provided by the server. Instead allocate one in the client, which avoids the need for lots of synchronization stuff. * Mark some MMIO accesses volatile that should have been. * Disable the AGP submission path by default (agp_disable=true) due to unresolved issues in the new code. The old code had its own (serious) errors with AGP, so this is not really a step backwards. --- src/mesa/drivers/dri/sis/sis_context.h | 39 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'src/mesa/drivers/dri/sis/sis_context.h') diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index cc35c02872..0ea2e2a59a 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -40,6 +40,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drm.h" #include "drm_sarea.h" #include "xmlconfig.h" +#include "tnl/t_vertex.h" #include "sis_screen.h" #include "sis_common2.h" @@ -237,18 +238,26 @@ struct sis_context /* This must be first in this structure */ GLcontext *glCtx; + /* Vertex state */ + GLuint vertex_size; + struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX]; + GLuint vertex_attr_count; + char *verts; /* points to tnl->clipspace.vertex_buf */ + + /* Vertex buffer (in system memory or AGP) state. */ + unsigned char *vb; /* Beginning of vertex buffer */ + unsigned char *vb_cur; /* Current write location in vertex buffer */ + unsigned char *vb_last; /* Last written location in vertex buffer */ + unsigned char *vb_end; /* End of vertex buffer */ + void *vb_agp_handle; + GLuint vb_agp_offset; + GLboolean using_agp; + GLuint NewGLState; GLuint Fallback; - GLuint SetupIndex; - GLuint SetupNewInputs; GLuint RenderIndex; GLfloat hw_viewport[16]; GLfloat depth_scale; - GLuint vertex_size; - GLuint vertex_stride_shift; - GLuint vertex_format; - GLuint num_verts; - GLubyte *verts; unsigned int virtualX, virtualY; unsigned int bytesPerPixel; @@ -288,15 +297,6 @@ struct sis_context unsigned char *AGPBase; unsigned int AGPAddr; - /* AGP Command Buffer */ - /* TODO: use Global variables */ - - unsigned char *AGPCmdBufBase; - GLint AGPCmdBufAddr; - unsigned int AGPCmdBufSize; - GLint *pAGPCmdBufNext; - GLboolean AGPCmdModeEnabled; - /* register 0x89F4 */ GLint AGPParseSet; @@ -313,6 +313,7 @@ struct sis_context GLboolean blockWrite; GLint GlobalFlag; + GLuint last_tcl_state; /* Stereo */ GLboolean useStereo; @@ -382,7 +383,7 @@ struct sis_context #define MMIO(reg, value) \ {\ - *(GLint *)(GET_IOBase(smesa) + (reg)) = value; \ + *(volatile GLint *)(smesa->IOBase + (reg)) = value; \ } #define MMIO_READ(reg) *(volatile GLint *)(smesa->IOBase + (reg)) @@ -390,8 +391,8 @@ struct sis_context #define mEndPrimitive() \ { \ - *(GET_IOBase(smesa) + REG_3D_EndPrimitiveList) = 0xFF; \ - *(GLint *)(GET_IOBase(smesa) + 0x8b60) = (GLint)(-1); \ + *(volatile char *)(smesa->IOBase + REG_3D_EndPrimitiveList) = 0xFF; \ + *(volatile GLint *)(smesa->IOBase + 0x8b60) = (GLint)(-1); \ } #define sis_fatal_error(msg) \ -- cgit v1.2.3