aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrProcessor.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-01-09 15:30:02 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-09 21:51:05 +0000
commite57194f74d125c7b0ba767ae5357b97d102792ef (patch)
treea286753d831dd0eddd7e22756b2aa92535453a01 /src/gpu/GrProcessor.cpp
parent561c1b07eff3263905b01d6dede359d08aa8f2f3 (diff)
Move resource ref/io manipulation from GrProgramElement to GrProcessor
Change-Id: I783e74107f7d34b57d80b843fe23ce7126b77424 Reviewed-on: https://skia-review.googlesource.com/6816 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/GrProcessor.cpp')
-rw-r--r--src/gpu/GrProcessor.cpp39
1 files changed, 36 insertions, 3 deletions
diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrProcessor.cpp
index 0512aa85fe..f4bead2d08 100644
--- a/src/gpu/GrProcessor.cpp
+++ b/src/gpu/GrProcessor.cpp
@@ -114,17 +114,50 @@ GrProcessor::~GrProcessor() {}
void GrProcessor::addTextureSampler(const TextureSampler* access) {
fTextureSamplers.push_back(access);
- this->addGpuResource(access->programTexture());
}
void GrProcessor::addBufferAccess(const BufferAccess* access) {
fBufferAccesses.push_back(access);
- this->addGpuResource(access->programBuffer());
}
void GrProcessor::addImageStorageAccess(const ImageStorageAccess* access) {
fImageStorageAccesses.push_back(access);
- this->addGpuResource(access->programTexture());
+}
+
+void GrProcessor::addPendingIOs() const {
+ for (const auto& sampler : fTextureSamplers) {
+ sampler->programTexture()->markPendingIO();
+ }
+ for (const auto& buffer : fBufferAccesses) {
+ buffer->programBuffer()->markPendingIO();
+ }
+ for (const auto& imageStorage : fImageStorageAccesses) {
+ imageStorage->programTexture()->markPendingIO();
+ }
+}
+
+void GrProcessor::removeRefs() const {
+ for (const auto& sampler : fTextureSamplers) {
+ sampler->programTexture()->removeRef();
+ }
+ for (const auto& buffer : fBufferAccesses) {
+ buffer->programBuffer()->removeRef();
+ }
+ for (const auto& imageStorage : fImageStorageAccesses) {
+ imageStorage->programTexture()->removeRef();
+ }
+}
+
+void GrProcessor::pendingIOComplete() const {
+ for (const auto& sampler : fTextureSamplers) {
+ sampler->programTexture()->pendingIOComplete();
+ }
+ for (const auto& buffer : fBufferAccesses) {
+ buffer->programBuffer()->pendingIOComplete();
+ }
+ for (const auto& imageStorage : fImageStorageAccesses) {
+ imageStorage->programTexture()->pendingIOComplete();
+ }
}
void* GrProcessor::operator new(size_t size) {