mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
clover: use pipe_resource references
v2: buffers are created with one reference. v3: add pipe_resource reference to mapping object v4: rename to pres and drop inline initializers CC: "17.0 13.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
parent
0a60ff4d8c
commit
14b543bdc9
2 changed files with 9 additions and 3 deletions
|
|
@ -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) :
|
||||
|
|
@ -189,7 +190,7 @@ mapping::mapping(command_queue &q, resource &r,
|
|||
cl_map_flags flags, bool blocking,
|
||||
const resource::vector &origin,
|
||||
const resource::vector ®ion) :
|
||||
pctx(q.pipe) {
|
||||
pctx(q.pipe), pres(NULL) {
|
||||
unsigned usage = ((flags & CL_MAP_WRITE ? PIPE_TRANSFER_WRITE : 0 ) |
|
||||
(flags & CL_MAP_READ ? PIPE_TRANSFER_READ : 0 ) |
|
||||
(flags & CL_MAP_WRITE_INVALIDATE_REGION ?
|
||||
|
|
@ -202,12 +203,14 @@ mapping::mapping(command_queue &q, resource &r,
|
|||
pxfer = NULL;
|
||||
throw error(CL_OUT_OF_RESOURCES);
|
||||
}
|
||||
pipe_resource_reference(&pres, r.pipe);
|
||||
}
|
||||
|
||||
mapping::mapping(mapping &&m) :
|
||||
pctx(m.pctx), pxfer(m.pxfer), p(m.p) {
|
||||
pctx(m.pctx), pxfer(m.pxfer), pres(m.pres), p(m.p) {
|
||||
m.pctx = NULL;
|
||||
m.pxfer = NULL;
|
||||
m.pres = NULL;
|
||||
m.p = NULL;
|
||||
}
|
||||
|
||||
|
|
@ -215,12 +218,14 @@ mapping::~mapping() {
|
|||
if (pxfer) {
|
||||
pctx->transfer_unmap(pctx, pxfer);
|
||||
}
|
||||
pipe_resource_reference(&pres, NULL);
|
||||
}
|
||||
|
||||
mapping &
|
||||
mapping::operator=(mapping m) {
|
||||
std::swap(pctx, m.pctx);
|
||||
std::swap(pxfer, m.pxfer);
|
||||
std::swap(pres, m.pres);
|
||||
std::swap(p, m.p);
|
||||
return *this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ namespace clover {
|
|||
private:
|
||||
pipe_context *pctx;
|
||||
pipe_transfer *pxfer;
|
||||
pipe_resource *pres;
|
||||
void *p;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue