rpms/xorg-x11-drv-ati/devel radeon-modeset.patch, 1.25, 1.26 xorg-x11-drv-ati.spec, 1.132, 1.133

Dave Airlie airlied at fedoraproject.org
Mon Oct 27 21:00:49 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/xorg-x11-drv-ati/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17520

Modified Files:
	radeon-modeset.patch xorg-x11-drv-ati.spec 
Log Message:
- add support for wait for rendering


radeon-modeset.patch:

Index: radeon-modeset.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/devel/radeon-modeset.patch,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- radeon-modeset.patch	27 Oct 2008 06:56:03 -0000	1.25
+++ radeon-modeset.patch	27 Oct 2008 21:00:49 -0000	1.26
@@ -1,3 +1,9 @@
+commit 17b7b76a702640462a3878ae745fd1f5ddd32f19
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Tue Oct 28 06:40:31 2008 +1000
+
+    radeon: enable gem wait rendering.
+
 commit 2171a9d834be69e002a93fe440450ff532758e93
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Oct 27 16:51:00 2008 +1000
@@ -2447,10 +2453,10 @@
 +#endif
 diff --git a/src/radeon_bufmgr_gem.c b/src/radeon_bufmgr_gem.c
 new file mode 100644
-index 0000000..1e29981
+index 0000000..7ad911d
 --- /dev/null
 +++ b/src/radeon_bufmgr_gem.c
-@@ -0,0 +1,532 @@
+@@ -0,0 +1,533 @@
 +/**************************************************************************
 + *
 + * Copyright © 2007-2008 Red Hat Inc.
@@ -2652,7 +2658,7 @@
 +	if (gem_bo->map_count++ != 0)
 +		return 0;
 +
-+	gem_bo->touched = 1;
++	gem_bo->touched = 1; /* workaround */
 +	args.handle = gem_bo->gem_handle;
 +	args.offset = 0;
 +	args.size = gem_bo->bo.size;
@@ -2690,15 +2696,16 @@
 +void radeon_bufmgr_gem_wait_rendering(dri_bo *buf)
 +{
 +	dri_bufmgr_gem *bufmgr_gem = (dri_bufmgr_gem *)buf->bufmgr;
-+	struct drm_radeon_gem_set_domain dom_args;
++	struct drm_radeon_gem_wait_rendering args;
 +	dri_bo_gem *gem_bo = (dri_bo_gem *)buf;
 +	int ret;
 +
-+	dom_args.handle = gem_bo->gem_handle;
-+	dom_args.read_domains = RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM;
-+	dom_args.write_domain = 0;
-+	ret = drmCommandWriteRead(bufmgr_gem->fd, DRM_RADEON_GEM_SET_DOMAIN,
-+				  &dom_args, sizeof(dom_args));
++	args.handle = gem_bo->gem_handle;
++
++	do {
++	ret = drmCommandWriteRead(bufmgr_gem->fd, DRM_RADEON_GEM_WAIT_RENDERING,
++				  &args, sizeof(args));
++	} while (ret == -EAGAIN);
 +	return;
 +}
 +
@@ -5510,7 +5517,7 @@
  
      pScrn->vtSema = FALSE;
 diff --git a/src/radeon_drm.h b/src/radeon_drm.h
-index 66cefb7..18bad6b 100644
+index 66cefb7..af7d382 100644
 --- a/src/radeon_drm.h
 +++ b/src/radeon_drm.h
 @@ -303,7 +303,6 @@ typedef union {
@@ -5549,7 +5556,7 @@
 +#define DRM_RADEON_GEM_PREAD  0x21
 +#define DRM_RADEON_GEM_PWRITE 0x22
 +#define DRM_RADEON_GEM_SET_DOMAIN 0x23
-+#define DRM_RADEON_GEM_INDIRECT 0x24 // temporary for X server
++#define DRM_RADEON_GEM_WAIT_RENDERING 0x24
 +
 +#define DRM_RADEON_CS           0x25
 +#define DRM_RADEON_CS2       0x26
@@ -5557,7 +5564,7 @@
  #define DRM_IOCTL_RADEON_CP_INIT    DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
  #define DRM_IOCTL_RADEON_CP_START   DRM_IO(  DRM_COMMAND_BASE + DRM_RADEON_CP_START)
  #define DRM_IOCTL_RADEON_CP_STOP    DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
-@@ -522,16 +543,29 @@ typedef struct {
+@@ -522,16 +543,28 @@ typedef struct {
  #define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
  #define DRM_IOCTL_RADEON_SURF_FREE  DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
  
@@ -5569,8 +5576,7 @@
 +#define DRM_IOCTL_RADEON_GEM_PREAD   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
 +#define DRM_IOCTL_RADEON_GEM_PWRITE   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
 +#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN  DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
-+#define DRM_IOCTL_RADEON_GEM_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INDIRECT, struct drm_radeon_gem_indirect)
-+
++#define DRM_IOCTL_RADEON_GEM_WAIT_RENDERING DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_RENDERING, struct drm_radeon_gem_wait_rendering) 
 +#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
 +#define DRM_IOCTL_RADEON_CS2 DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS2, struct drm_radeon_cs2)
 +
@@ -5590,7 +5596,7 @@
  	int cp_mode;
  	int gart_size;
  	int ring_size;
-@@ -543,9 +577,8 @@ typedef struct drm_radeon_init {
+@@ -543,9 +576,8 @@ typedef struct drm_radeon_init {
  	unsigned int depth_bpp;
  	unsigned int depth_offset, depth_pitch;
  
@@ -5602,7 +5608,7 @@
  	unsigned long ring_offset;
  	unsigned long ring_rptr_offset;
  	unsigned long buffers_offset;
-@@ -581,7 +614,7 @@ typedef struct drm_radeon_clear {
+@@ -581,7 +613,7 @@ typedef struct drm_radeon_clear {
  	unsigned int clear_depth;
  	unsigned int color_mask;
  	unsigned int depth_mask;	/* misnamed field:  should be stencil */
@@ -5611,7 +5617,7 @@
  } drm_radeon_clear_t;
  
  typedef struct drm_radeon_vertex {
-@@ -607,9 +640,9 @@ typedef struct drm_radeon_vertex2 {
+@@ -607,9 +639,9 @@ typedef struct drm_radeon_vertex2 {
  	int idx;		/* Index of vertex buffer */
  	int discard;		/* Client finished with buffer? */
  	int nr_states;
@@ -5623,7 +5629,7 @@
  } drm_radeon_vertex2_t;
  
  /* v1.3 - obsoletes drm_radeon_vertex2
-@@ -624,15 +657,15 @@ typedef struct drm_radeon_vertex2 {
+@@ -624,15 +656,15 @@ typedef struct drm_radeon_vertex2 {
   */
  typedef struct drm_radeon_cmd_buffer {
  	int bufsz;
@@ -5642,7 +5648,7 @@
  } drm_radeon_tex_image_t;
  
  typedef struct drm_radeon_texture {
-@@ -641,11 +674,11 @@ typedef struct drm_radeon_texture {
+@@ -641,11 +673,11 @@ typedef struct drm_radeon_texture {
  	int format;
  	int width;		/* Texture image coordinates */
  	int height;
@@ -5656,7 +5662,7 @@
  } drm_radeon_stipple_t;
  
  typedef struct drm_radeon_indirect {
-@@ -655,9 +688,6 @@ typedef struct drm_radeon_indirect {
+@@ -655,9 +687,6 @@ typedef struct drm_radeon_indirect {
  	int discard;
  } drm_radeon_indirect_t;
  
@@ -5666,7 +5672,7 @@
  /* enum for card type parameters */
  #define RADEON_CARD_PCI 0
  #define RADEON_CARD_AGP 1
-@@ -683,10 +713,11 @@ typedef struct drm_radeon_indirect {
+@@ -683,10 +712,11 @@ typedef struct drm_radeon_indirect {
  #define RADEON_PARAM_VBLANK_CRTC           13   /* VBLANK CRTC */
  #define RADEON_PARAM_FB_LOCATION           14   /* FB location */
  #define RADEON_PARAM_NUM_GB_PIPES          15   /* num GB pipes */
@@ -5679,7 +5685,7 @@
  } drm_radeon_getparam_t;
  
  /* 1.6: Set up a memory manager for regions of shared memory:
-@@ -698,7 +729,7 @@ typedef struct drm_radeon_mem_alloc {
+@@ -698,7 +728,7 @@ typedef struct drm_radeon_mem_alloc {
  	int region;
  	int alignment;
  	int size;
@@ -5688,7 +5694,7 @@
  } drm_radeon_mem_alloc_t;
  
  typedef struct drm_radeon_mem_free {
-@@ -715,7 +746,7 @@ typedef struct drm_radeon_mem_init_heap {
+@@ -715,7 +745,7 @@ typedef struct drm_radeon_mem_init_heap {
  /* 1.6: Userspace can request & wait on irq's:
   */
  typedef struct drm_radeon_irq_emit {
@@ -5697,7 +5703,7 @@
  } drm_radeon_irq_emit_t;
  
  typedef struct drm_radeon_irq_wait {
-@@ -734,10 +765,10 @@ typedef struct drm_radeon_setparam {
+@@ -734,10 +764,10 @@ typedef struct drm_radeon_setparam {
  #define RADEON_SETPARAM_FB_LOCATION    1	/* determined framebuffer location */
  #define RADEON_SETPARAM_SWITCH_TILING  2	/* enable/disable color tiling */
  #define RADEON_SETPARAM_PCIGART_LOCATION 3	/* PCI Gart Location */
@@ -5709,7 +5715,7 @@
  /* 1.14: Clients can allocate/free a surface
   */
  typedef struct drm_radeon_surface_alloc {
-@@ -753,4 +784,117 @@ typedef struct drm_radeon_surface_free {
+@@ -753,4 +783,114 @@ typedef struct drm_radeon_surface_free {
  #define	DRM_RADEON_VBLANK_CRTC1		1
  #define	DRM_RADEON_VBLANK_CRTC2		2
  
@@ -5749,7 +5755,8 @@
 +	uint32_t write_domain;
 +};
 +
-+struct drm_radeon_gem_exec_buffer {
++struct drm_radeon_gem_wait_rendering {
++	uint32_t handle;
 +};
 +
 +struct drm_radeon_gem_pin {
@@ -5793,10 +5800,6 @@
 +	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */
 +};
 +
-+struct drm_radeon_gem_indirect {
-+	uint32_t handle;
-+	uint32_t used;
-+};
 +
 +/* New interface which obsolete all previous interface.
 + */
@@ -5828,7 +5831,7 @@
 +
  #endif
 diff --git a/src/radeon_exa.c b/src/radeon_exa.c
-index 0f86fdd..77a15c9 100644
+index 0f86fdd..4736c27 100644
 --- a/src/radeon_exa.c
 +++ b/src/radeon_exa.c
 @@ -43,7 +43,11 @@
@@ -5893,7 +5896,7 @@
 +	    if (radeon_bufmgr_gem_has_references(driver_priv->bo))
 +		RADEONCPFlushIndirect(pScrn, 0);
 +
-+	    //radeon_bufmgr_gem_wait_rendering(driver_priv->bo);
++	    radeon_bufmgr_gem_wait_rendering(driver_priv->bo);
 +
 +	    /* flush IB */
 +	    ret = dri_bo_map(driver_priv->bo, 1);


Index: xorg-x11-drv-ati.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/devel/xorg-x11-drv-ati.spec,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -r1.132 -r1.133
--- xorg-x11-drv-ati.spec	27 Oct 2008 06:56:03 -0000	1.132
+++ xorg-x11-drv-ati.spec	27 Oct 2008 21:00:49 -0000	1.133
@@ -5,7 +5,7 @@
 Summary:   Xorg X11 ati video driver
 Name:      xorg-x11-drv-ati
 Version:   6.9.0
-Release:   32%{?dist}
+Release:   33%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X Hardware Support
@@ -32,7 +32,7 @@
 Requires:  xorg-x11-server-Xorg >= 1.4.99.1
 Requires:  libdrm >= 2.4.0-0.21
 # new CS method needs newer kernel
-Requires:  kernel >= 2.6.27.4-52
+Requires:  kernel >= 2.6.27.4-58
 
 %description 
 X.Org X11 ati video driver.
@@ -74,6 +74,9 @@
 %{_mandir}/man4/radeon.4*
 
 %changelog
+* Tue Oct 28 2008 Dave Airlie <airlied at redhat.com> 6.9.0-33
+- add support for wait for rendering
+
 * Mon Oct 27 2008 Dave Airlie <airlied at redhat.com> 6.9.0-32
 - move to CS2 mechanism - using chunks to avoid multiple relocations
 - add kernel requires about 2.6.27.4-52 for new CS mechanism




More information about the fedora-extras-commits mailing list