| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrVkPipelineState.h" | 8 #include "GrVkPipelineState.h" |
| 9 | 9 |
| 10 #include "GrPipeline.h" | 10 #include "GrPipeline.h" |
| 11 #include "GrTexturePriv.h" |
| 11 #include "GrVkCommandBuffer.h" | 12 #include "GrVkCommandBuffer.h" |
| 12 #include "GrVkDescriptorPool.h" | 13 #include "GrVkDescriptorPool.h" |
| 13 #include "GrVkGpu.h" | 14 #include "GrVkGpu.h" |
| 14 #include "GrVkImageView.h" | 15 #include "GrVkImageView.h" |
| 15 #include "GrVkMemory.h" | 16 #include "GrVkMemory.h" |
| 16 #include "GrVkPipeline.h" | 17 #include "GrVkPipeline.h" |
| 17 #include "GrVkRenderTarget.h" | 18 #include "GrVkRenderTarget.h" |
| 18 #include "GrVkSampler.h" | 19 #include "GrVkSampler.h" |
| 19 #include "GrVkTexture.h" | 20 #include "GrVkTexture.h" |
| 20 #include "GrVkUniformBuffer.h" | 21 #include "GrVkUniformBuffer.h" |
| 21 #include "glsl/GrGLSLFragmentProcessor.h" | 22 #include "glsl/GrGLSLFragmentProcessor.h" |
| 22 #include "glsl/GrGLSLGeometryProcessor.h" | 23 #include "glsl/GrGLSLGeometryProcessor.h" |
| 23 #include "glsl/GrGLSLXferProcessor.h" | 24 #include "glsl/GrGLSLXferProcessor.h" |
| 25 #include "SkMipmap.h" |
| 24 | 26 |
| 25 GrVkPipelineState::GrVkPipelineState(GrVkGpu* gpu, | 27 GrVkPipelineState::GrVkPipelineState(GrVkGpu* gpu, |
| 26 const GrVkPipelineState::Desc& desc, | 28 const GrVkPipelineState::Desc& desc, |
| 27 GrVkPipeline* pipeline, | 29 GrVkPipeline* pipeline, |
| 28 VkPipelineLayout layout, | 30 VkPipelineLayout layout, |
| 29 VkDescriptorSetLayout dsLayout[2], | 31 VkDescriptorSetLayout dsLayout[2], |
| 30 const BuiltinUniformHandles& builtinUniform
Handles, | 32 const BuiltinUniformHandles& builtinUniform
Handles, |
| 31 const UniformInfoArray& uniforms, | 33 const UniformInfoArray& uniforms, |
| 32 uint32_t vertexUniformSize, | 34 uint32_t vertexUniformSize, |
| 33 uint32_t fragmentUniformSize, | 35 uint32_t fragmentUniformSize, |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 0, nullptr)); | 285 0, nullptr)); |
| 284 } | 286 } |
| 285 } | 287 } |
| 286 | 288 |
| 287 void GrVkPipelineState::writeSamplers(GrVkGpu* gpu, | 289 void GrVkPipelineState::writeSamplers(GrVkGpu* gpu, |
| 288 const SkTArray<const GrTextureAccess*>& te
xtureBindings) { | 290 const SkTArray<const GrTextureAccess*>& te
xtureBindings) { |
| 289 SkASSERT(fNumSamplers == textureBindings.count()); | 291 SkASSERT(fNumSamplers == textureBindings.count()); |
| 290 | 292 |
| 291 for (int i = 0; i < textureBindings.count(); ++i) { | 293 for (int i = 0; i < textureBindings.count(); ++i) { |
| 292 const GrTextureParams& params = textureBindings[i]->getParams(); | 294 const GrTextureParams& params = textureBindings[i]->getParams(); |
| 293 fSamplers.push(gpu->resourceProvider().findOrCreateCompatibleSampler(par
ams)); | |
| 294 | 295 |
| 295 GrVkTexture* texture = static_cast<GrVkTexture*>(textureBindings[i]->get
Texture()); | 296 GrVkTexture* texture = static_cast<GrVkTexture*>(textureBindings[i]->get
Texture()); |
| 297 if (GrTextureParams::kMipMap_FilterMode == params.filterMode()) { |
| 298 if (texture->texturePriv().mipMapsAreDirty()) { |
| 299 gpu->generateMipmap(texture); |
| 300 texture->texturePriv().dirtyMipMaps(false); |
| 301 } |
| 302 } |
| 303 |
| 304 fSamplers.push(gpu->resourceProvider().findOrCreateCompatibleSampler(par
ams, |
| 305 texture->texturePriv()
.maxMipMapLevel())); |
| 296 | 306 |
| 297 const GrVkImage::Resource* textureResource = texture->resource(); | 307 const GrVkImage::Resource* textureResource = texture->resource(); |
| 298 textureResource->ref(); | 308 textureResource->ref(); |
| 299 fTextures.push(textureResource); | 309 fTextures.push(textureResource); |
| 300 | 310 |
| 301 const GrVkImageView* textureView = texture->textureView(); | 311 const GrVkImageView* textureView = texture->textureView(); |
| 302 textureView->ref(); | 312 textureView->ref(); |
| 303 fTextureViews.push(textureView); | 313 fTextureViews.push(textureView); |
| 304 | 314 |
| 305 // Change texture layout so it can be read in shader | 315 // Change texture layout so it can be read in shader |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 | 510 |
| 501 b.add32(get_blend_info_key(pipeline)); | 511 b.add32(get_blend_info_key(pipeline)); |
| 502 | 512 |
| 503 b.add32(primitiveType); | 513 b.add32(primitiveType); |
| 504 | 514 |
| 505 // Set key length | 515 // Set key length |
| 506 int keyLength = key->count(); | 516 int keyLength = key->count(); |
| 507 SkASSERT(0 == (keyLength % 4)); | 517 SkASSERT(0 == (keyLength % 4)); |
| 508 *reinterpret_cast<uint32_t*>(key->begin()) = SkToU32(keyLength); | 518 *reinterpret_cast<uint32_t*>(key->begin()) = SkToU32(keyLength); |
| 509 } | 519 } |
| OLD | NEW |