diff options
author | 2016-11-29 11:59:17 -0500 | |
---|---|---|
committer | 2016-11-29 17:42:53 +0000 | |
commit | f9f451213a3951d8a61568998de2ddbd643f6693 (patch) | |
tree | ba11ab458cbe8c654337bc704c52f4ca73f6b44a /src/gpu/vk | |
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/vk')
-rw-r--r-- | src/gpu/vk/GrVkCaps.h | 2 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.cpp | 2 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.cpp | 6 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.h | 13 | ||||
-rw-r--r-- | src/gpu/vk/GrVkVaryingHandler.cpp | 4 |
5 files changed, 26 insertions, 1 deletions
diff --git a/src/gpu/vk/GrVkCaps.h b/src/gpu/vk/GrVkCaps.h index abc0dc9a1d..7b40e0d9b2 100644 --- a/src/gpu/vk/GrVkCaps.h +++ b/src/gpu/vk/GrVkCaps.h @@ -37,6 +37,8 @@ public: return SkToBool(ConfigInfo::kRenderable_Flag & fConfigTable[config].fOptimalFlags); } + bool canConfigBeImageStorage(GrPixelConfig) const override { return false; } + bool isConfigTexturableLinearly(GrPixelConfig config) const { return SkToBool(ConfigInfo::kTextureable_Flag & fConfigTable[config].fLinearFlags); } diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp index 2d53cd8c8d..75b8baaa4f 100644 --- a/src/gpu/vk/GrVkPipelineState.cpp +++ b/src/gpu/vk/GrVkPipelineState.cpp @@ -174,6 +174,8 @@ void GrVkPipelineState::abandonGPUResources() { static void append_texture_bindings(const GrProcessor& processor, SkTArray<const GrProcessor::TextureSampler*>* textureBindings) { + // We don't support image storages in VK. + SkASSERT(!processor.numImageStorages()); if (int numTextureSamplers = processor.numTextureSamplers()) { const GrProcessor::TextureSampler** bindings = textureBindings->push_back_n(numTextureSamplers); diff --git a/src/gpu/vk/GrVkUniformHandler.cpp b/src/gpu/vk/GrVkUniformHandler.cpp index 3998c0fd23..8c4f8514b8 100644 --- a/src/gpu/vk/GrVkUniformHandler.cpp +++ b/src/gpu/vk/GrVkUniformHandler.cpp @@ -45,6 +45,8 @@ uint32_t grsltype_to_alignment_mask(GrSLType type) { case kBufferSampler_GrSLType: case kTexture2D_GrSLType: case kSampler_GrSLType: + case kImageStorage2D_GrSLType: + case kIImageStorage2D_GrSLType: break; } SkFAIL("Unexpected type"); @@ -86,6 +88,8 @@ static inline uint32_t grsltype_to_vk_size(GrSLType type) { case kBufferSampler_GrSLType: case kTexture2D_GrSLType: case kSampler_GrSLType: + case kImageStorage2D_GrSLType: + case kIImageStorage2D_GrSLType: break; } SkFAIL("Unexpected type"); @@ -158,7 +162,7 @@ GrGLSLUniformHandler::UniformHandle GrVkUniformHandler::internalAddUniformArray( uni.fVariable.setTypeModifier(GrShaderVar::kNone_TypeModifier); uint32_t* currentOffset = kVertex_GrShaderFlag == visibility ? &fCurrentVertexUBOOffset - : &fCurrentFragmentUBOOffset; + : &fCurrentFragmentUBOOffset; get_ubo_aligned_offset(&uni.fUBOffset, currentOffset, type, arrayCount); if (outName) { diff --git a/src/gpu/vk/GrVkUniformHandler.h b/src/gpu/vk/GrVkUniformHandler.h index e5d4a4cf10..808eed7fb3 100644 --- a/src/gpu/vk/GrVkUniformHandler.h +++ b/src/gpu/vk/GrVkUniformHandler.h @@ -76,6 +76,19 @@ private: return fSamplers[handle.toIndex()].fVisibility; } + ImageStorageHandle addImageStorage(uint32_t visibility, GrSLType, GrImageStorageFormat, + GrSLMemoryModel, GrSLRestrict, GrIOType, + const char* name) override { + SkFAIL("Image storages not implemented for Vulkan."); + return 0; + } + + const GrShaderVar& imageStorageVariable(ImageStorageHandle handle) const override { + SkFAIL("Image storages not implemented for Vulkan."); + static const GrShaderVar* gVar = nullptr; + return *gVar; + } + void appendUniformDecls(GrShaderFlags, SkString*) const override; bool hasVertexUniforms() const { return fCurrentVertexUBOOffset > 0; } diff --git a/src/gpu/vk/GrVkVaryingHandler.cpp b/src/gpu/vk/GrVkVaryingHandler.cpp index 9bab292af8..d7d08c9622 100644 --- a/src/gpu/vk/GrVkVaryingHandler.cpp +++ b/src/gpu/vk/GrVkVaryingHandler.cpp @@ -47,6 +47,10 @@ static inline int grsltype_to_location_size(GrSLType type) { return 0; case kSampler_GrSLType: return 0; + case kImageStorage2D_GrSLType: + return 0; + case kIImageStorage2D_GrSLType: + return 0; } SkFAIL("Unexpected type"); return -1; |