| Index: src/gpu/glsl/GrGLSLFragmentProcessor.cpp
|
| diff --git a/src/gpu/glsl/GrGLSLFragmentProcessor.cpp b/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
|
| index c3e57bc314f471965fd8da7e4d0c8597c006cb41..42538eaf0f94efefdf932b046806e1de94ee1a06 100644
|
| --- a/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
|
| +++ b/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
|
| @@ -75,18 +75,25 @@ void GrGLSLFragmentProcessor::internalEmitChild(int childIndex, const char* inpu
|
| * Textures work the same way as transforms.
|
| */
|
| int firstCoordAt = args.fFp.numTransformsExclChildren();
|
| - int firstSamplerAt = args.fFp.numTexturesExclChildren();
|
| + int firstTextureAt = args.fFp.numTexturesExclChildren();
|
| + int firstBufferAt = args.fFp.numBuffersExclChildren();
|
| for (int i = 0; i < childIndex; ++i) {
|
| firstCoordAt += args.fFp.childProcessor(i).numTransforms();
|
| - firstSamplerAt += args.fFp.childProcessor(i).numTextures();
|
| + firstTextureAt += args.fFp.childProcessor(i).numTextures();
|
| + firstBufferAt += args.fFp.childProcessor(i).numBuffers();
|
| }
|
| GrGLSLTransformedCoordsArray childCoords;
|
| SamplerArray childTexSamplers;
|
| + SamplerArray childBufferSamplers;
|
| if (childProc.numTransforms() > 0) {
|
| childCoords.push_back_n(childProc.numTransforms(), &args.fCoords[firstCoordAt]);
|
| }
|
| if (childProc.numTextures() > 0) {
|
| - childTexSamplers.push_back_n(childProc.numTextures(), &args.fTexSamplers[firstSamplerAt]);
|
| + childTexSamplers.push_back_n(childProc.numTextures(), &args.fTexSamplers[firstTextureAt]);
|
| + }
|
| + if (childProc.numBuffers() > 0) {
|
| + childBufferSamplers.push_back_n(childProc.numBuffers(),
|
| + &args.fBufferSamplers[firstBufferAt]);
|
| }
|
|
|
| // emit the code for the child in its own scope
|
| @@ -100,7 +107,8 @@ void GrGLSLFragmentProcessor::internalEmitChild(int childIndex, const char* inpu
|
| outputColor,
|
| inputColor,
|
| childCoords,
|
| - childTexSamplers);
|
| + childTexSamplers,
|
| + childBufferSamplers);
|
| this->childProcessor(childIndex)->emitCode(childArgs);
|
| fragBuilder->codeAppend("}\n");
|
|
|
|
|