diff options
author | Brian Salomon <bsalomon@google.com> | 2017-01-09 15:30:02 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-09 21:51:05 +0000 |
commit | e57194f74d125c7b0ba767ae5357b97d102792ef (patch) | |
tree | a286753d831dd0eddd7e22756b2aa92535453a01 /src/gpu/GrProcessor.cpp | |
parent | 561c1b07eff3263905b01d6dede359d08aa8f2f3 (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.cpp | 39 |
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) { |