diff options
author | Brian Salomon <bsalomon@google.com> | 2016-11-29 11:59:17 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-29 17:42:53 +0000 |
commit | f9f451213a3951d8a61568998de2ddbd643f6693 (patch) | |
tree | ba11ab458cbe8c654337bc704c52f4ca73f6b44a /src/gpu/glsl/GrGLSLFragmentProcessor.h | |
parent | e18c97b73a0392b2eee57a111122dd5b637e36e6 (diff) |
Reland image storage with fixes.
Revert "Revert "Initial OpenGL Image support.""
This reverts commit 59dc41175d99d0a31c046aec0c26c4d82a3a3574.
BUG=skia:
Change-Id: Ibe3c87ce7f746f065fdbcc5a518388cc291112f5
Reviewed-on: https://skia-review.googlesource.com/5131
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/glsl/GrGLSLFragmentProcessor.h')
-rw-r--r-- | src/gpu/glsl/GrGLSLFragmentProcessor.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/gpu/glsl/GrGLSLFragmentProcessor.h b/src/gpu/glsl/GrGLSLFragmentProcessor.h index aba68b7e05..c8154231b5 100644 --- a/src/gpu/glsl/GrGLSLFragmentProcessor.h +++ b/src/gpu/glsl/GrGLSLFragmentProcessor.h @@ -11,13 +11,13 @@ #include "GrFragmentProcessor.h" #include "GrShaderVar.h" #include "glsl/GrGLSLProgramDataManager.h" +#include "glsl/GrGLSLUniformHandler.h" class GrProcessor; class GrProcessorKeyBuilder; class GrGLSLCaps; class GrGLSLFPBuilder; class GrGLSLFPFragmentBuilder; -class GrGLSLUniformHandler; class GrGLSLFragmentProcessor { public: @@ -29,8 +29,9 @@ public: } } - typedef GrGLSLProgramDataManager::UniformHandle UniformHandle; - typedef GrGLSLProgramDataManager::UniformHandle SamplerHandle; + using UniformHandle = GrGLSLUniformHandler::UniformHandle; + using SamplerHandle = GrGLSLUniformHandler::SamplerHandle; + using ImageStorageHandle = GrGLSLUniformHandler::ImageStorageHandle; private: /** @@ -74,6 +75,8 @@ public: &GrProcessor::numTextureSamplers>; using BufferSamplers = BuilderInputProvider<SamplerHandle, GrProcessor, &GrProcessor::numBuffers>; + using ImageStorages = BuilderInputProvider<ImageStorageHandle, GrProcessor, + &GrProcessor::numImageStorages>; /** Called when the program stage should insert its code into the shaders. The code in each shader will be in its own block ({}) and so locally scoped names will not collide across @@ -99,6 +102,12 @@ public: @param bufferSamplers Contains one entry for each BufferAccess of the GrProcessor. These can be passed to the builder to emit buffer reads in the generated code. + @param imageStorages Contains one entry for each ImageStorageAccess of the GrProcessor. + These can be passed to the builder to emit image loads and stores + in the generated code. + @param gpImplementsDistanceVector + Does the GrGeometryProcessor implement the feature where it + provides a vector to the nearest edge of the shape being rendered. */ struct EmitArgs { EmitArgs(GrGLSLFPFragmentBuilder* fragBuilder, @@ -110,6 +119,7 @@ public: const TransformedCoordVars& transformedCoordVars, const TextureSamplers& textureSamplers, const BufferSamplers& bufferSamplers, + const ImageStorages& imageStorages, bool gpImplementsDistanceVector) : fFragBuilder(fragBuilder) , fUniformHandler(uniformHandler) @@ -120,6 +130,7 @@ public: , fTransformedCoords(transformedCoordVars) , fTexSamplers(textureSamplers) , fBufferSamplers(bufferSamplers) + , fImageStorages(imageStorages) , fGpImplementsDistanceVector(gpImplementsDistanceVector) {} GrGLSLFPFragmentBuilder* fFragBuilder; GrGLSLUniformHandler* fUniformHandler; @@ -130,6 +141,7 @@ public: const TransformedCoordVars& fTransformedCoords; const TextureSamplers& fTexSamplers; const BufferSamplers& fBufferSamplers; + const ImageStorages& fImageStorages; bool fGpImplementsDistanceVector; }; |