diff mbox

radeon: Allow N x 1 x 1 surfaces for evergreen+

Message ID 1348258993-15154-1-git-send-email-tom@stellard.net (mailing list archive)
State New, archived
Headers show

Commit Message

Tom Stellard Sept. 21, 2012, 8:23 p.m. UTC
From: Tom Stellard <thomas.stellard@amd.com>

This makes it possible to create a surface for a buffer.
---
 radeon/radeon_surface.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Marek Olšák Sept. 22, 2012, 1:31 a.m. UTC | #1
I think it would be cleaner to add a new SURF_TYPE for buffers and
only allow large npix_x for that (and adding all the necessary sanity
checks to disallow invalid values).

Also, if you want to use it in Mesa, you or somebody else should:
1) make a libdrm release
2) bump libdrm_radeon version requirement in Mesa's configure.ac

Marek

On Fri, Sep 21, 2012 at 10:23 PM, Tom Stellard <tom@stellard.net> wrote:
> From: Tom Stellard <thomas.stellard@amd.com>
>
> This makes it possible to create a surface for a buffer.
> ---
>  radeon/radeon_surface.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
> index 80b1505..235f4ae 100644
> --- a/radeon/radeon_surface.c
> +++ b/radeon/radeon_surface.c
> @@ -686,7 +686,8 @@ static int eg_surface_sanity(struct radeon_surface_manager *surf_man,
>      unsigned tileb;
>
>      /* check surface dimension */
> -    if (surf->npix_x > 16384 || surf->npix_y > 16384 || surf->npix_z > 16384) {
> +    if ((surf->npix_x > 16384  && (surf->npix_y != 1 || surf->npix_z != 1)) ||
> +        surf->npix_y > 16384 || surf->npix_z > 16384) {
>          return -EINVAL;
>      }
>
> --
> 1.7.11.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index 80b1505..235f4ae 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -686,7 +686,8 @@  static int eg_surface_sanity(struct radeon_surface_manager *surf_man,
     unsigned tileb;
 
     /* check surface dimension */
-    if (surf->npix_x > 16384 || surf->npix_y > 16384 || surf->npix_z > 16384) {
+    if ((surf->npix_x > 16384  && (surf->npix_y != 1 || surf->npix_z != 1)) ||
+        surf->npix_y > 16384 || surf->npix_z > 16384) {
         return -EINVAL;
     }