Mesa (master): freedreno: surfaces can be PIPE_BUFFER

Rob Clark robclark at kemper.freedesktop.org
Mon Mar 5 13:10:48 UTC 2018


Module: Mesa
Branch: master
Commit: 9a62536108514434c22ec189ecf273eb09fc7d77
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a62536108514434c22ec189ecf273eb09fc7d77

Author: Rob Clark <robdclark at gmail.com>
Date:   Tue Feb 27 12:59:57 2018 -0500

freedreno: surfaces can be PIPE_BUFFER

At least for clover.

Signed-off-by: Rob Clark <robdclark at gmail.com>

---

 src/gallium/drivers/freedreno/freedreno_surface.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_surface.c b/src/gallium/drivers/freedreno/freedreno_surface.c
index 5ebc4937ed..1295fc2659 100644
--- a/src/gallium/drivers/freedreno/freedreno_surface.c
+++ b/src/gallium/drivers/freedreno/freedreno_surface.c
@@ -44,7 +44,6 @@ fd_create_surface(struct pipe_context *pctx,
 	if (!surface)
 		return NULL;
 
-	debug_assert(surf_tmpl->u.tex.first_layer == surf_tmpl->u.tex.last_layer);
 
 	struct pipe_surface *psurf = &surface->base;
 	unsigned level = surf_tmpl->u.tex.level;
@@ -56,9 +55,16 @@ fd_create_surface(struct pipe_context *pctx,
 	psurf->format = surf_tmpl->format;
 	psurf->width = u_minify(ptex->width0, level);
 	psurf->height = u_minify(ptex->height0, level);
-	psurf->u.tex.level = level;
-	psurf->u.tex.first_layer = surf_tmpl->u.tex.first_layer;
-	psurf->u.tex.last_layer = surf_tmpl->u.tex.last_layer;
+
+	if (ptex->target == PIPE_BUFFER) {
+		psurf->u.buf.first_element = surf_tmpl->u.buf.first_element;
+		psurf->u.buf.last_element = surf_tmpl->u.buf.last_element;
+	} else {
+		debug_assert(surf_tmpl->u.tex.first_layer == surf_tmpl->u.tex.last_layer);
+		psurf->u.tex.level = level;
+		psurf->u.tex.first_layer = surf_tmpl->u.tex.first_layer;
+		psurf->u.tex.last_layer = surf_tmpl->u.tex.last_layer;
+	}
 
 	// TODO
 	DBG("TODO: %ux%u", psurf->width, psurf->height);




More information about the mesa-commit mailing list