[Mesa-stable] [Mesa-dev][PATCH v3 1/1] clover: use pipe_resource references

Francisco Jerez currojerez at riseup.net
Thu Mar 23 00:03:20 UTC 2017


Jan Vesely <jan.vesely at rutgers.edu> writes:

> v2: buffers are created with one reference.
> v3: add pipe_resource reference to mapping object
>
> CC: "17.0 13.0" <mesa-stable at lists.freedesktop.org>
>
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
>  src/gallium/state_trackers/clover/core/resource.cpp | 11 ++++++++---
>  src/gallium/state_trackers/clover/core/resource.hpp |  7 ++++---
>  2 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/core/resource.cpp b/src/gallium/state_trackers/clover/core/resource.cpp
> index 06fd3f6..83e3c26 100644
> --- a/src/gallium/state_trackers/clover/core/resource.cpp
> +++ b/src/gallium/state_trackers/clover/core/resource.cpp
> @@ -25,6 +25,7 @@
>  #include "pipe/p_screen.h"
>  #include "util/u_sampler.h"
>  #include "util/u_format.h"
> +#include "util/u_inlines.h"
>  
>  using namespace clover;
>  
> @@ -176,7 +177,7 @@ root_resource::root_resource(clover::device &dev, memory_obj &obj,
>  }
>  
>  root_resource::~root_resource() {
> -   device().pipe->resource_destroy(device().pipe, pipe);
> +   pipe_resource_reference(&this->pipe, NULL);
>  }
>  
>  sub_resource::sub_resource(resource &r, const vector &offset) :
> @@ -202,18 +203,21 @@ mapping::mapping(command_queue &q, resource &r,
>        pxfer = NULL;
>        throw error(CL_OUT_OF_RESOURCES);
>     }
> +   pipe_resource_reference(&res, r.pipe);
>  }
>  
>  mapping::mapping(mapping &&m) :
> -   pctx(m.pctx), pxfer(m.pxfer), p(m.p) {
> +   pctx(m.pctx), pxfer(m.pxfer), res(m.res), p(m.p) {
>     m.pctx = NULL;
>     m.pxfer = NULL;
> +   m.res = NULL;
>     m.p = NULL;
>  }
>  
>  mapping::~mapping() {
>     if (pxfer) {
>        pctx->transfer_unmap(pctx, pxfer);
>     }
> +   pipe_resource_reference(&res, NULL);
>  }
>  
> @@ -222,5 +226,6 @@ mapping::operator=(mapping m) {
>     std::swap(pctx, m.pctx);
>     std::swap(pxfer, m.pxfer);
> +   std::swap(res, m.res);
>     std::swap(p, m.p);
>     return *this;
>  }
> diff --git a/src/gallium/state_trackers/clover/core/resource.hpp b/src/gallium/state_trackers/clover/core/resource.hpp
> index 9993dcb..cea9617 100644
> --- a/src/gallium/state_trackers/clover/core/resource.hpp
> +++ b/src/gallium/state_trackers/clover/core/resource.hpp
> @@ -123,9 +123,10 @@ namespace clover {
>        }
>  
>     private:
> -      pipe_context *pctx;
> -      pipe_transfer *pxfer;
> -      void *p;
> +      pipe_context *pctx = NULL;
> +      pipe_transfer *pxfer = NULL;
> +      pipe_resource *res = NULL;

I'd rename this to 'pres' in order to match the naming of other data
members.  I'm generally okay with using inline member initializers but
the existing members are already getting initialized from the
constructor so this change seems kind of redundant and unrelated, you
could just initialize pres from the mapping::mapping constructor.

> +      void *p = NULL;
>     };
>  }
>  
> -- 
> 2.9.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-stable/attachments/20170322/b648f872/attachment.sig>


More information about the mesa-stable mailing list