Mesa (main): i915g: Create an i915_surface for our pipe_surfaces.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 22 18:38:53 UTC 2021


Module: Mesa
Branch: main
Commit: f8867b3d989f3d338b0796c028aae7272b20f827
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8867b3d989f3d338b0796c028aae7272b20f827

Author: Emma Anholt <emma at anholt.net>
Date:   Sun Jun 20 08:41:50 2021 -0700

i915g: Create an i915_surface for our pipe_surfaces.

Nothing added in yet, just wrapping the struct.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11512>

---

 src/gallium/drivers/i915/i915_context.h |  9 +++++++++
 src/gallium/drivers/i915/i915_surface.c | 31 +++++++++++++++++--------------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_context.h b/src/gallium/drivers/i915/i915_context.h
index 579cfd8575c..65e24fb56a9 100644
--- a/src/gallium/drivers/i915/i915_context.h
+++ b/src/gallium/drivers/i915/i915_context.h
@@ -211,6 +211,10 @@ struct i915_sampler_state {
    unsigned maxlod;
 };
 
+struct i915_surface {
+   struct pipe_surface templ;
+};
+
 struct i915_velems_state {
    unsigned count;
    struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
@@ -401,5 +405,10 @@ i915_context( struct pipe_context *pipe )
    return (struct i915_context *)pipe;
 }
 
+static inline struct i915_surface *
+i915_surface(struct pipe_surface *pipe)
+{
+   return (struct i915_surface *)pipe;
+}
 
 #endif
diff --git a/src/gallium/drivers/i915/i915_surface.c b/src/gallium/drivers/i915/i915_surface.c
index 4322ff94904..095e978c4e7 100644
--- a/src/gallium/drivers/i915/i915_surface.c
+++ b/src/gallium/drivers/i915/i915_surface.c
@@ -357,26 +357,29 @@ i915_create_surface_custom(struct pipe_context *ctx,
                            unsigned width0,
                            unsigned height0)
 {
-   struct pipe_surface *ps;
+   struct i915_surface *surf;
 
    assert(surf_tmpl->u.tex.first_layer == surf_tmpl->u.tex.last_layer);
    if (pt->target != PIPE_TEXTURE_CUBE &&
        pt->target != PIPE_TEXTURE_3D)
       assert(surf_tmpl->u.tex.first_layer == 0);
 
-   ps = CALLOC_STRUCT(pipe_surface);
-   if (ps) {
-      /* could subclass pipe_surface and store offset as it used to do */
-      pipe_reference_init(&ps->reference, 1);
-      pipe_resource_reference(&ps->texture, pt);
-      ps->format = surf_tmpl->format;
-      ps->width = u_minify(width0, surf_tmpl->u.tex.level);
-      ps->height = u_minify(height0, surf_tmpl->u.tex.level);
-      ps->u.tex.level = surf_tmpl->u.tex.level;
-      ps->u.tex.first_layer = surf_tmpl->u.tex.first_layer;
-      ps->u.tex.last_layer = surf_tmpl->u.tex.last_layer;
-      ps->context = ctx;
-   }
+   surf = CALLOC_STRUCT(i915_surface);
+   if (!surf)
+      return NULL;
+
+   struct pipe_surface *ps = &surf->templ;
+
+   pipe_reference_init(&ps->reference, 1);
+   pipe_resource_reference(&ps->texture, pt);
+   ps->format = surf_tmpl->format;
+   ps->width = u_minify(width0, surf_tmpl->u.tex.level);
+   ps->height = u_minify(height0, surf_tmpl->u.tex.level);
+   ps->u.tex.level = surf_tmpl->u.tex.level;
+   ps->u.tex.first_layer = surf_tmpl->u.tex.first_layer;
+   ps->u.tex.last_layer = surf_tmpl->u.tex.last_layer;
+   ps->context = ctx;
+
    return ps;
 }
 



More information about the mesa-commit mailing list