Jan Vesely <jan.ves...@rutgers.edu> writes:

> v2: buffers are created with one reference.
> v3: add pipe_resource reference to mapping object
>
> CC: "17.0 13.0" <mesa-sta...@lists.freedesktop.org>
>
> Signed-off-by: Jan Vesely <jan.ves...@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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to