On Mit, 2013-04-03 at 17:22 -0400, j.glisse@xxxxxxxxx wrote: > From: Jerome Glisse <jglisse@xxxxxxxxxx> > > Signed-off-by: Jerome Glisse <jglisse@xxxxxxxxxx> > --- > include/drm/radeon_drm.h | 61 +++++ > radeon/radeon_surface.c | 663 +++++++++++++++++++++++++++++++++++++++++++---- > radeon/radeon_surface.h | 30 +++ > 3 files changed, 709 insertions(+), 45 deletions(-) > > diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h > index 00d66b3..ff3ce3a 100644 > --- a/include/drm/radeon_drm.h > +++ b/include/drm/radeon_drm.h > @@ -509,6 +509,7 @@ typedef struct { > #define DRM_RADEON_GEM_SET_TILING 0x28 > #define DRM_RADEON_GEM_GET_TILING 0x29 > #define DRM_RADEON_GEM_BUSY 0x2a > +#define DRM_RADEON_GEM_VA 0x2b > > #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) Changes which aren't related to SI tiling should go in separate patches. > diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c > index 5935c23..dfdcbbc 100644 > --- a/radeon/radeon_surface.c > +++ b/radeon/radeon_surface.c > [...] > @@ -1198,6 +1742,33 @@ static int si_surface_init(struct radeon_surface_manager *surf_man, > return r; > } > > +/* > + * depending on surface > + */ > +static int si_surface_best(struct radeon_surface_manager *surf_man, > + struct radeon_surface *surf) > +{ > + unsigned mode, tile_mode, stencil_tile_mode; > + > + /* tiling mode */ > + mode = (surf->flags >> RADEON_SURF_MODE_SHIFT) & RADEON_SURF_MODE_MASK; > + > + if (surf->flags & RADEON_SURF_SBUFFER) { > + /* stencil force 2d tiling */ > + surf->flags = RADEON_SURF_CLR(surf->flags, MODE); > + surf->flags |= RADEON_SURF_SET(RADEON_SURF_MODE_1D, MODE); > + } > + > + if (surf->flags & (RADEON_SURF_ZBUFFER | RADEON_SURF_SBUFFER)) { > + /* depth force 2d tiling */ > + surf->flags = RADEON_SURF_CLR(surf->flags, MODE); > + surf->flags |= RADEON_SURF_SET(RADEON_SURF_MODE_1D, MODE); > + } The comments say 2D, but the code says 1D. > @@ -104,6 +132,8 @@ struct radeon_surface { > uint64_t stencil_offset; > struct radeon_surface_level level[RADEON_SURF_MAX_LEVEL]; > struct radeon_surface_level stencil_level[RADEON_SURF_MAX_LEVEL]; > + uint32_t tiling_index[RADEON_SURF_MAX_LEVEL]; > + uint32_t > stencil_tiling_index[RADEON_SURF_MAX_LEVEL]; > }; Either these new fields need to be guarded the same way stencil_level is guarded by RADEON_SURF_SBUFFER, or the libdrm_radeon SONAME needs to be bumped. Otherwise, radeonsi built against libdrm_radeon without this patch will probably crash when running against libdrm_radeon with it. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel