Refactor how we store and use samplers in Ganesh
authoregdaniel <egdaniel@google.com>
Wed, 20 Apr 2016 14:09:46 +0000 (07:09 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 20 Apr 2016 14:09:46 +0000 (07:09 -0700)
commit09aa1fce69b214714171db12c341aebd78dd29ea
tree2c57de3ceaa5ba5303278a3b04623df187ea97a6
parentb0ec9836dbf7f2304a3a29289b818719ca0a39bd
Refactor how we store and use samplers in Ganesh

The main goal of this refactorization is to allow Vulkan to use separate
sampler and texture objects in the shader and descriptor sets and combine
them into a sampler2d in the shader where needed.

A large part of this is separating how we store samplers and uniforms in the
UniformHandler. We no longer need to store handles to samplers besides when
we are initially emitting code. After we emit code all we ever do is loop over
all samplers and do some processor independent work on them, so we have no need
for direct access to individual samplers.

In the GLProgram all we ever do is set the sampler uniforms in the ctor and never
touch them again, so no need to save sampler info there. The texture access on
program reuse just assume that they come in the same order as we set the texture
units for the samplers

For Vulkan, it is a similar story. We create the descriptor set layouts with the samplers,
then when we get new textures, we just assume they come in in the same order as we
set the samplers on the descriptor sets. Thus no need to save direct vulkan info.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1885863004

Committed: https://skia.googlesource.com/skia/+/45b61a1c4c0be896e7b12fd1405abfece799114f

Review URL: https://codereview.chromium.org/1885863004
31 files changed:
gyp/gpu.gypi
include/gpu/GrShaderVar.h
src/effects/SkBlurMaskFilter.cpp
src/effects/gradients/SkGradientShader.cpp
src/effects/gradients/SkGradientShaderPriv.h
src/gpu/effects/GrTextureDomain.cpp
src/gpu/effects/GrTextureDomain.h
src/gpu/gl/GrGLProgram.cpp
src/gpu/gl/GrGLProgram.h
src/gpu/gl/GrGLProgramDataManager.cpp
src/gpu/gl/GrGLProgramDataManager.h
src/gpu/gl/GrGLSampler.h [new file with mode: 0644]
src/gpu/gl/GrGLUniformHandler.cpp
src/gpu/gl/GrGLUniformHandler.h
src/gpu/gl/builders/GrGLProgramBuilder.cpp
src/gpu/glsl/GrGLSLFragmentProcessor.cpp
src/gpu/glsl/GrGLSLFragmentProcessor.h
src/gpu/glsl/GrGLSLPrimitiveProcessor.h
src/gpu/glsl/GrGLSLProgramBuilder.cpp
src/gpu/glsl/GrGLSLProgramBuilder.h
src/gpu/glsl/GrGLSLSampler.h
src/gpu/glsl/GrGLSLShaderBuilder.cpp
src/gpu/glsl/GrGLSLShaderBuilder.h
src/gpu/glsl/GrGLSLUniformHandler.h
src/gpu/glsl/GrGLSLXferProcessor.h
src/gpu/vk/GrVkGLSLSampler.h [new file with mode: 0644]
src/gpu/vk/GrVkPipelineStateBuilder.cpp
src/gpu/vk/GrVkPipelineStateDataManager.cpp
src/gpu/vk/GrVkPipelineStateDataManager.h
src/gpu/vk/GrVkUniformHandler.cpp
src/gpu/vk/GrVkUniformHandler.h