summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGareth Hughes <gareth@users.sourceforge.net>2000-10-15 13:57:49 +0000
committerGareth Hughes <gareth@users.sourceforge.net>2000-10-15 13:57:49 +0000
commita553ebcd127325cecb231fd1c8ddcba6f0e320e2 (patch)
treed57bb779d2d876e139892a8d9f4a563ae8c82db0
parent3c8b613ae28fe3ef5c8e82ea0ca6b73480f411a5 (diff)
Add support for indirect buffers. Clean up the way vertex and indirect
buffes are handled. The way buffers are acquired will probably be changed back to what it was originally, using the DRM_DMA-style ioctl. Texture uploads should grab as many buffers as needed in a single ioctl.
-rw-r--r--linux-core/r128_drv.c8
-rw-r--r--linux/r128_bufs.c2
-rw-r--r--linux/r128_cce.c24
-rw-r--r--linux/r128_drm.h7
-rw-r--r--linux/r128_drv.c8
-rw-r--r--linux/r128_drv.h9
-rw-r--r--linux/r128_state.c6
7 files changed, 28 insertions, 36 deletions
diff --git a/linux-core/r128_drv.c b/linux-core/r128_drv.c
index 81909f949..51811d7b0 100644
--- a/linux-core/r128_drv.c
+++ b/linux-core/r128_drv.c
@@ -24,8 +24,10 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Rickard E. (Rik) Faith <faith@valinux.com>
- * Kevin E. Martin <martin@valinux.com>
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@valinux.com>
+ * Kevin E. Martin <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -35,7 +37,7 @@
#define R128_NAME "r128"
#define R128_DESC "ATI Rage 128"
-#define R128_DATE "20001015"
+#define R128_DATE "20001016"
#define R128_MAJOR 1
#define R128_MINOR 1
#define R128_PATCHLEVEL 0
diff --git a/linux/r128_bufs.c b/linux/r128_bufs.c
index bf3dff7fb..86a63a427 100644
--- a/linux/r128_bufs.c
+++ b/linux/r128_bufs.c
@@ -235,7 +235,7 @@ int r128_mapbufs(struct inode *inode, struct file *filp, unsigned int cmd,
if (dma->flags & _DRM_DMA_USE_AGP) {
drm_map_t *map;
- map = dev_priv->vertex_buffers;
+ map = dev_priv->buffers;
if (!map) {
retcode = -EINVAL;
goto done;
diff --git a/linux/r128_cce.c b/linux/r128_cce.c
index e95a84712..1283a0ab2 100644
--- a/linux/r128_cce.c
+++ b/linux/r128_cce.c
@@ -24,7 +24,8 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Kevin E. Martin <martin@valinux.com>
+ * Authors:
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -130,12 +131,6 @@ static void r128_status(drm_device_t *dev)
/* ================================================================
- * GH: Done from here down
- */
-
-
-
-/* ================================================================
* Engine, FIFO control
*/
@@ -458,14 +453,9 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
DO_FIND_MAP( dev_priv->fb, init->fb_offset );
DO_FIND_MAP( dev_priv->mmio, init->mmio_offset );
-
DO_FIND_MAP( dev_priv->cce_ring, init->ring_offset );
DO_FIND_MAP( dev_priv->ring_rptr, init->ring_rptr_offset );
-
- DO_FIND_MAP( dev_priv->vertex_buffers,
- init->vertex_buffers_offset );
- DO_FIND_MAP( dev_priv->indirect_buffers,
- init->indirect_buffers_offset );
+ DO_FIND_MAP( dev_priv->buffers, init->buffers_offset );
if ( !dev_priv->is_pci ) {
DO_FIND_MAP( dev_priv->agp_textures,
@@ -478,8 +468,7 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
DO_REMAP( dev_priv->cce_ring );
DO_REMAP( dev_priv->ring_rptr );
- DO_REMAP( dev_priv->vertex_buffers );
- DO_REMAP( dev_priv->indirect_buffers );
+ DO_REMAP( dev_priv->buffers );
#if 0
if ( !dev_priv->is_pci ) {
DO_REMAP( dev_priv->agp_textures );
@@ -518,8 +507,7 @@ static int r128_do_cleanup_cce( drm_device_t *dev )
DO_REMAPFREE( dev_priv->cce_ring );
DO_REMAPFREE( dev_priv->ring_rptr );
- DO_REMAPFREE( dev_priv->vertex_buffers );
- DO_REMAPFREE( dev_priv->indirect_buffers );
+ DO_REMAPFREE( dev_priv->buffers );
#if 0
if ( !dev_priv->is_pci ) {
DO_REMAPFREE( dev_priv->agp_textures );
@@ -682,7 +670,6 @@ int r128_engine_reset( struct inode *inode, struct file *filp,
/* ================================================================
* Freelist management
*/
-#if 0
#define R128_BUFFER_USED 0xffffffff
#define R128_BUFFER_FREE 0
@@ -731,7 +718,6 @@ static int r128_freelist_init( drm_device_t *dev )
return 0;
}
-#endif
drm_buf_t *r128_freelist_get( drm_device_t *dev )
{
diff --git a/linux/r128_drm.h b/linux/r128_drm.h
index fb7b53b51..b9250a2f3 100644
--- a/linux/r128_drm.h
+++ b/linux/r128_drm.h
@@ -24,7 +24,9 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Kevin E. Martin <martin@valinux.com>
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -179,8 +181,7 @@ typedef struct drm_r128_init {
unsigned int mmio_offset;
unsigned int ring_offset;
unsigned int ring_rptr_offset;
- unsigned int vertex_buffers_offset;
- unsigned int indirect_buffers_offset;
+ unsigned int buffers_offset;
unsigned int agp_textures_offset;
} drm_r128_init_t;
diff --git a/linux/r128_drv.c b/linux/r128_drv.c
index 81909f949..51811d7b0 100644
--- a/linux/r128_drv.c
+++ b/linux/r128_drv.c
@@ -24,8 +24,10 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Rickard E. (Rik) Faith <faith@valinux.com>
- * Kevin E. Martin <martin@valinux.com>
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@valinux.com>
+ * Kevin E. Martin <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -35,7 +37,7 @@
#define R128_NAME "r128"
#define R128_DESC "ATI Rage 128"
-#define R128_DATE "20001015"
+#define R128_DATE "20001016"
#define R128_MAJOR 1
#define R128_MINOR 1
#define R128_PATCHLEVEL 0
diff --git a/linux/r128_drv.h b/linux/r128_drv.h
index a41104422..b531ae54d 100644
--- a/linux/r128_drv.h
+++ b/linux/r128_drv.h
@@ -24,8 +24,10 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Rickard E. (Rik) Faith <faith@valinux.com>
- * Kevin E. Martin <martin@valinux.com>
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@valinux.com>
+ * Kevin E. Martin <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -87,8 +89,7 @@ typedef struct drm_r128_private {
drm_map_t *mmio;
drm_map_t *cce_ring;
drm_map_t *ring_rptr;
- drm_map_t *vertex_buffers;
- drm_map_t *indirect_buffers;
+ drm_map_t *buffers;
drm_map_t *agp_textures;
} drm_r128_private_t;
diff --git a/linux/r128_state.c b/linux/r128_state.c
index 03c2da679..5cf622f6a 100644
--- a/linux/r128_state.c
+++ b/linux/r128_state.c
@@ -23,7 +23,8 @@
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * Authors: Gareth Hughes <gareth@valinux.com>
+ * Authors:
+ * Gareth Hughes <gareth@valinux.com>
*
*/
@@ -504,8 +505,7 @@ static void r128_cce_dispatch_vertex( drm_device_t *dev,
int vertsize = sarea_priv->vertsize;
int format = sarea_priv->vc_format;
int index = buf->idx;
- int offset = dev_priv->vertex_buffers->offset
- + buf->offset - dev->agp->base;
+ int offset = dev_priv->buffers->offset + buf->offset - dev->agp->base;
int size = buf->used / (vertsize * sizeof(u32));
int prim;
int i = 0;