diff options
Diffstat (limited to 'src/gpu/vk')
-rw-r--r-- | src/gpu/vk/GrVkPipeline.cpp | 49 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.cpp | 16 | ||||
-rw-r--r-- | src/gpu/vk/GrVkVaryingHandler.cpp | 6 |
3 files changed, 49 insertions, 22 deletions
diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp index 40a6cf07a9..7c0aeb4b15 100644 --- a/src/gpu/vk/GrVkPipeline.cpp +++ b/src/gpu/vk/GrVkPipeline.cpp @@ -14,26 +14,35 @@ #include "GrVkRenderTarget.h" #include "GrVkUtil.h" -static inline const VkFormat& attrib_type_to_vkformat(GrVertexAttribType type) { - SkASSERT(type >= 0 && type < kGrVertexAttribTypeCount); - static const VkFormat kFormats[kGrVertexAttribTypeCount] = { - VK_FORMAT_R32_SFLOAT, // kFloat_GrVertexAttribType - VK_FORMAT_R32G32_SFLOAT, // kVec2f_GrVertexAttribType - VK_FORMAT_R32G32B32_SFLOAT, // kVec3f_GrVertexAttribType - VK_FORMAT_R32G32B32A32_SFLOAT, // kVec4f_GrVertexAttribType - VK_FORMAT_R8_UNORM, // kUByte_GrVertexAttribType - VK_FORMAT_R8G8B8A8_UNORM, // kVec4ub_GrVertexAttribType - VK_FORMAT_R16G16_UNORM, // kVec2us_GrVertexAttribType - }; - GR_STATIC_ASSERT(0 == kFloat_GrVertexAttribType); - GR_STATIC_ASSERT(1 == kVec2f_GrVertexAttribType); - GR_STATIC_ASSERT(2 == kVec3f_GrVertexAttribType); - GR_STATIC_ASSERT(3 == kVec4f_GrVertexAttribType); - GR_STATIC_ASSERT(4 == kUByte_GrVertexAttribType); - GR_STATIC_ASSERT(5 == kVec4ub_GrVertexAttribType); - GR_STATIC_ASSERT(6 == kVec2us_GrVertexAttribType); - GR_STATIC_ASSERT(SK_ARRAY_COUNT(kFormats) == kGrVertexAttribTypeCount); - return kFormats[type]; +static inline VkFormat attrib_type_to_vkformat(GrVertexAttribType type) { + switch (type) { + case kFloat_GrVertexAttribType: + return VK_FORMAT_R32_SFLOAT; + case kVec2f_GrVertexAttribType: + return VK_FORMAT_R32G32_SFLOAT; + case kVec3f_GrVertexAttribType: + return VK_FORMAT_R32G32B32_SFLOAT; + case kVec4f_GrVertexAttribType: + return VK_FORMAT_R32G32B32A32_SFLOAT; + case kVec2i_GrVertexAttribType: + return VK_FORMAT_R32G32_SINT; + case kVec3i_GrVertexAttribType: + return VK_FORMAT_R32G32B32_SINT; + case kVec4i_GrVertexAttribType: + return VK_FORMAT_R32G32B32A32_SINT; + case kUByte_GrVertexAttribType: + return VK_FORMAT_R8_UNORM; + case kVec4ub_GrVertexAttribType: + return VK_FORMAT_R8G8B8A8_UNORM; + case kVec2us_GrVertexAttribType: + return VK_FORMAT_R16G16_UNORM; + case kInt_GrVertexAttribType: + return VK_FORMAT_R32_SINT; + case kUint_GrVertexAttribType: + return VK_FORMAT_R32_UINT; + } + SkFAIL("Unknown vertex attrib type"); + return VK_FORMAT_UNDEFINED; } static void setup_vertex_input_state(const GrPrimitiveProcessor& primProc, diff --git a/src/gpu/vk/GrVkUniformHandler.cpp b/src/gpu/vk/GrVkUniformHandler.cpp index f0f0fff7a6..f69c9d16f9 100644 --- a/src/gpu/vk/GrVkUniformHandler.cpp +++ b/src/gpu/vk/GrVkUniformHandler.cpp @@ -28,6 +28,12 @@ uint32_t grsltype_to_alignment_mask(GrSLType type) { return 0xF; case kVec4f_GrSLType: return 0xF; + case kVec2i_GrSLType: + return 0x7; + case kVec3i_GrSLType: + return 0xF; + case kVec4i_GrSLType: + return 0xF; case kMat22f_GrSLType: return 0x7; case kMat33f_GrSLType: @@ -59,9 +65,9 @@ uint32_t grsltype_to_alignment_mask(GrSLType type) { static inline uint32_t grsltype_to_vk_size(GrSLType type) { switch(type) { case kInt_GrSLType: - return 4; + return sizeof(int32_t); case kUint_GrSLType: - return 4; + return sizeof(int32_t); case kFloat_GrSLType: return sizeof(float); case kVec2f_GrSLType: @@ -70,6 +76,12 @@ static inline uint32_t grsltype_to_vk_size(GrSLType type) { return 3 * sizeof(float); case kVec4f_GrSLType: return 4 * sizeof(float); + case kVec2i_GrSLType: + return 2 * sizeof(int32_t); + case kVec3i_GrSLType: + return 3 * sizeof(int32_t); + case kVec4i_GrSLType: + return 4 * sizeof(int32_t); case kMat22f_GrSLType: //TODO: this will be 4 * szof(float) on std430. return 8 * sizeof(float); diff --git a/src/gpu/vk/GrVkVaryingHandler.cpp b/src/gpu/vk/GrVkVaryingHandler.cpp index d7d08c9622..d936e2bd1a 100644 --- a/src/gpu/vk/GrVkVaryingHandler.cpp +++ b/src/gpu/vk/GrVkVaryingHandler.cpp @@ -21,6 +21,12 @@ static inline int grsltype_to_location_size(GrSLType type) { return 1; case kVec4f_GrSLType: return 1; + case kVec2i_GrSLType: + return 1; + case kVec3i_GrSLType: + return 1; + case kVec4i_GrSLType: + return 1; case kMat22f_GrSLType: return 2; case kMat33f_GrSLType: |