Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: src/gpu/vk/GrVkUniformHandler.cpp

Issue 2143143002: Add Texture2D and Sampler GrSLTypes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« include/gpu/GrTypesPriv.h ('K') | « src/gpu/glsl/GrGLSL.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "GrVkUniformHandler.h" 8 #include "GrVkUniformHandler.h"
9 #include "glsl/GrGLSLProgramBuilder.h" 9 #include "glsl/GrGLSLProgramBuilder.h"
10 10
(...skipping 14 matching lines...) Expand all
25 0x7, // kMat22f_GrSLType 25 0x7, // kMat22f_GrSLType
26 0xF, // kMat33f_GrSLType 26 0xF, // kMat33f_GrSLType
27 0xF, // kMat44f_GrSLType 27 0xF, // kMat44f_GrSLType
28 0x0, // Sampler2D_GrSLType, should never return this 28 0x0, // Sampler2D_GrSLType, should never return this
29 0x0, // SamplerExternal_GrSLType, should never return this 29 0x0, // SamplerExternal_GrSLType, should never return this
30 0x0, // Sampler2DRect_GrSLType, should never return this 30 0x0, // Sampler2DRect_GrSLType, should never return this
31 0x0, // SamplerBuffer_GrSLType, should never return this 31 0x0, // SamplerBuffer_GrSLType, should never return this
32 0x0, // kBool_GrSLType 32 0x0, // kBool_GrSLType
33 0x7, // kInt_GrSLType 33 0x7, // kInt_GrSLType
34 0x7, // kUint_GrSLType 34 0x7, // kUint_GrSLType
35 0x0, // Texture2D_GrSLType, should never return this
36 0x0, // Sampler_GrSLType, should never return this
35 }; 37 };
36 GR_STATIC_ASSERT(0 == kVoid_GrSLType); 38 GR_STATIC_ASSERT(0 == kVoid_GrSLType);
37 GR_STATIC_ASSERT(1 == kFloat_GrSLType); 39 GR_STATIC_ASSERT(1 == kFloat_GrSLType);
38 GR_STATIC_ASSERT(2 == kVec2f_GrSLType); 40 GR_STATIC_ASSERT(2 == kVec2f_GrSLType);
39 GR_STATIC_ASSERT(3 == kVec3f_GrSLType); 41 GR_STATIC_ASSERT(3 == kVec3f_GrSLType);
40 GR_STATIC_ASSERT(4 == kVec4f_GrSLType); 42 GR_STATIC_ASSERT(4 == kVec4f_GrSLType);
41 GR_STATIC_ASSERT(5 == kMat22f_GrSLType); 43 GR_STATIC_ASSERT(5 == kMat22f_GrSLType);
42 GR_STATIC_ASSERT(6 == kMat33f_GrSLType); 44 GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
43 GR_STATIC_ASSERT(7 == kMat44f_GrSLType); 45 GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
44 GR_STATIC_ASSERT(8 == kSampler2D_GrSLType); 46 GR_STATIC_ASSERT(8 == kSampler2D_GrSLType);
45 GR_STATIC_ASSERT(9 == kSamplerExternal_GrSLType); 47 GR_STATIC_ASSERT(9 == kSamplerExternal_GrSLType);
46 GR_STATIC_ASSERT(10 == kSampler2DRect_GrSLType); 48 GR_STATIC_ASSERT(10 == kSampler2DRect_GrSLType);
47 GR_STATIC_ASSERT(11 == kSamplerBuffer_GrSLType); 49 GR_STATIC_ASSERT(11 == kSamplerBuffer_GrSLType);
48 GR_STATIC_ASSERT(12 == kBool_GrSLType); 50 GR_STATIC_ASSERT(12 == kBool_GrSLType);
49 GR_STATIC_ASSERT(13 == kInt_GrSLType); 51 GR_STATIC_ASSERT(13 == kInt_GrSLType);
50 GR_STATIC_ASSERT(14 == kUint_GrSLType); 52 GR_STATIC_ASSERT(14 == kUint_GrSLType);
53 GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
54 GR_STATIC_ASSERT(16 == kSampler_GrSLType);
51 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kAlignmentMask) == kGrSLTypeCount); 55 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kAlignmentMask) == kGrSLTypeCount);
52 return kAlignmentMask[type]; 56 return kAlignmentMask[type];
53 } 57 }
54 58
55 /** Returns the size in bytes taken up in vulkanbuffers for floating point GrSLT ypes. 59 /** Returns the size in bytes taken up in vulkanbuffers for floating point GrSLT ypes.
56 For non floating point type returns 0. Currently this reflects the std140 al ignment 60 For non floating point type returns 0. Currently this reflects the std140 al ignment
57 so a mat22 takes up 8 floats. */ 61 so a mat22 takes up 8 floats. */
58 static inline uint32_t grsltype_to_vk_size(GrSLType type) { 62 static inline uint32_t grsltype_to_vk_size(GrSLType type) {
59 SkASSERT(GrSLTypeIsFloatType(type)); 63 SkASSERT(GrSLTypeIsFloatType(type));
60 static const uint32_t kSizes[] = { 64 static const uint32_t kSizes[] = {
61 0, // kVoid_GrSLType 65 0, // kVoid_GrSLType
62 sizeof(float), // kFloat_GrSLType 66 sizeof(float), // kFloat_GrSLType
63 2 * sizeof(float), // kVec2f_GrSLType 67 2 * sizeof(float), // kVec2f_GrSLType
64 3 * sizeof(float), // kVec3f_GrSLType 68 3 * sizeof(float), // kVec3f_GrSLType
65 4 * sizeof(float), // kVec4f_GrSLType 69 4 * sizeof(float), // kVec4f_GrSLType
66 8 * sizeof(float), // kMat22f_GrSLType. TODO: this will be 4 * sz of(float) on std430. 70 8 * sizeof(float), // kMat22f_GrSLType. TODO: this will be 4 * sz of(float) on std430.
67 12 * sizeof(float), // kMat33f_GrSLType 71 12 * sizeof(float), // kMat33f_GrSLType
68 16 * sizeof(float), // kMat44f_GrSLType 72 16 * sizeof(float), // kMat44f_GrSLType
69 0, // kSampler2D_GrSLType 73 0, // kSampler2D_GrSLType
70 0, // kSamplerExternal_GrSLType 74 0, // kSamplerExternal_GrSLType
71 0, // kSampler2DRect_GrSLType 75 0, // kSampler2DRect_GrSLType
72 0, // kSamplerBuffer_GrSLType 76 0, // kSamplerBuffer_GrSLType
73 1, // kBool_GrSLType 77 1, // kBool_GrSLType
74 4, // kInt_GrSLType 78 4, // kInt_GrSLType
75 4 // kUint_GrSLType 79 4, // kUint_GrSLType
80 0, // kTexture2D_GrSLType
81 0, // kSampler_GrSLType
76 }; 82 };
77 return kSizes[type]; 83 return kSizes[type];
78 84
79 GR_STATIC_ASSERT(0 == kVoid_GrSLType); 85 GR_STATIC_ASSERT(0 == kVoid_GrSLType);
80 GR_STATIC_ASSERT(1 == kFloat_GrSLType); 86 GR_STATIC_ASSERT(1 == kFloat_GrSLType);
81 GR_STATIC_ASSERT(2 == kVec2f_GrSLType); 87 GR_STATIC_ASSERT(2 == kVec2f_GrSLType);
82 GR_STATIC_ASSERT(3 == kVec3f_GrSLType); 88 GR_STATIC_ASSERT(3 == kVec3f_GrSLType);
83 GR_STATIC_ASSERT(4 == kVec4f_GrSLType); 89 GR_STATIC_ASSERT(4 == kVec4f_GrSLType);
84 GR_STATIC_ASSERT(5 == kMat22f_GrSLType); 90 GR_STATIC_ASSERT(5 == kMat22f_GrSLType);
85 GR_STATIC_ASSERT(6 == kMat33f_GrSLType); 91 GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
86 GR_STATIC_ASSERT(7 == kMat44f_GrSLType); 92 GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
87 GR_STATIC_ASSERT(8 == kSampler2D_GrSLType); 93 GR_STATIC_ASSERT(8 == kSampler2D_GrSLType);
88 GR_STATIC_ASSERT(9 == kSamplerExternal_GrSLType); 94 GR_STATIC_ASSERT(9 == kSamplerExternal_GrSLType);
89 GR_STATIC_ASSERT(10 == kSampler2DRect_GrSLType); 95 GR_STATIC_ASSERT(10 == kSampler2DRect_GrSLType);
90 GR_STATIC_ASSERT(11 == kSamplerBuffer_GrSLType); 96 GR_STATIC_ASSERT(11 == kSamplerBuffer_GrSLType);
91 GR_STATIC_ASSERT(12 == kBool_GrSLType); 97 GR_STATIC_ASSERT(12 == kBool_GrSLType);
92 GR_STATIC_ASSERT(13 == kInt_GrSLType); 98 GR_STATIC_ASSERT(13 == kInt_GrSLType);
93 GR_STATIC_ASSERT(14 == kUint_GrSLType); 99 GR_STATIC_ASSERT(14 == kUint_GrSLType);
100 GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
101 GR_STATIC_ASSERT(16 == kSampler_GrSLType);
94 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kSizes) == kGrSLTypeCount); 102 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kSizes) == kGrSLTypeCount);
95 } 103 }
96 104
97 105
98 // Given the current offset into the ubo, calculate the offset for the uniform w e're trying to add 106 // Given the current offset into the ubo, calculate the offset for the uniform w e're trying to add
99 // taking into consideration all alignment requirements. The uniformOffset is se t to the offset for 107 // taking into consideration all alignment requirements. The uniformOffset is se t to the offset for
100 // the new uniform, and currentOffset is updated to be the offset to the end of the new uniform. 108 // the new uniform, and currentOffset is updated to be the offset to the end of the new uniform.
101 void get_ubo_aligned_offset(uint32_t* uniformOffset, 109 void get_ubo_aligned_offset(uint32_t* uniformOffset,
102 uint32_t* currentOffset, 110 uint32_t* currentOffset,
103 GrSLType type, 111 GrSLType type,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 } 219 }
212 if (!uniformsString.isEmpty()) { 220 if (!uniformsString.isEmpty()) {
213 uint32_t uniformBinding = (visibility == kVertex_GrShaderFlag) ? kVertex Binding 221 uint32_t uniformBinding = (visibility == kVertex_GrShaderFlag) ? kVertex Binding
214 : kFragBi nding; 222 : kFragBi nding;
215 const char* stage = (visibility == kVertex_GrShaderFlag) ? "vertex" : "f ragment"; 223 const char* stage = (visibility == kVertex_GrShaderFlag) ? "vertex" : "f ragment";
216 out->appendf("layout (set=%d, binding=%d) uniform %sUniformBuffer\n{\n", 224 out->appendf("layout (set=%d, binding=%d) uniform %sUniformBuffer\n{\n",
217 kUniformBufferDescSet, uniformBinding, stage); 225 kUniformBufferDescSet, uniformBinding, stage);
218 out->appendf("%s\n};\n", uniformsString.c_str()); 226 out->appendf("%s\n};\n", uniformsString.c_str());
219 } 227 }
220 } 228 }
OLDNEW
« include/gpu/GrTypesPriv.h ('K') | « src/gpu/glsl/GrGLSL.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698