30 static std::unique_ptr<GrMtlRenderCommandEncoder>
Make(id<MTLRenderCommandEncoder>
encoder) {
49 if (fCurrentRenderPipelineState != pso) {
51 fCurrentRenderPipelineState = pso;
56 if (fCurrentTriangleFillMode != fillMode) {
58 fCurrentTriangleFillMode = fillMode;
71 if (@available(macOS 10.11, iOS 8.3, tvOS 9.0, *)) {
72 if (fCurrentVertexBuffer[index] ==
buffer) {
77 if (fCurrentVertexBuffer[index] !=
buffer || fCurrentVertexOffset[index] !=
offset) {
81 fCurrentVertexBuffer[index] =
buffer;
82 fCurrentVertexOffset[index] =
offset;
87 if (fCurrentVertexOffset[index] !=
offset) {
90 fCurrentVertexOffset[index] =
offset;
95 if (@available(macOS 10.11, iOS 8.3, tvOS 9.0, *)) {
96 if (fCurrentFragmentBuffer[index] ==
buffer) {
101 if (fCurrentFragmentBuffer[index] !=
buffer || fCurrentFragmentOffset[index] !=
offset) {
105 fCurrentFragmentBuffer[index] =
buffer;
106 fCurrentFragmentOffset[index] =
offset;
111 if (fCurrentFragmentOffset[index] !=
offset) {
114 fCurrentFragmentOffset[index] =
offset;
133 if (fCurrentTexture[index] !=
texture) {
136 fCurrentTexture[index] =
texture;
141 if (fCurrentSampler[index] != sampler) {
144 fCurrentSampler[index] = sampler;
149 [fCommandEncoder setBlendColorRed: blendConst.
fR
152 alpha: blendConst.
fA];
156 uint32_t backReferenceValue)
159 setStencilFrontReferenceValue:frontReferenceValue
160 backReferenceValue:backReferenceValue];
166 if (depthStencilState != fCurrentDepthStencilState) {
168 fCurrentDepthStencilState = depthStencilState;
173 if (fCurrentScissorRect.x != scissorRect.x ||
174 fCurrentScissorRect.y != scissorRect.y ||
175 fCurrentScissorRect.width != scissorRect.width ||
176 fCurrentScissorRect.height != scissorRect.height) {
178 fCurrentScissorRect = scissorRect;
183 NSUInteger vertexCount) {
185 vertexStart:vertexStart
186 vertexCount:vertexCount];
189 NSUInteger vertexCount, NSUInteger instanceCount,
190 NSUInteger baseInstance)
193 vertexStart:vertexStart
194 vertexCount:vertexCount
195 instanceCount:instanceCount
196 baseInstance:baseInstance];
198 void drawPrimitives(MTLPrimitiveType primitiveType, id<MTLBuffer> indirectBuffer,
199 NSUInteger indirectBufferOffset)
202 indirectBuffer:indirectBuffer
203 indirectBufferOffset:indirectBufferOffset];
207 MTLIndexType indexType, id<MTLBuffer> indexBuffer,
208 NSUInteger indexBufferOffset) {
210 indexCount:indexCount
212 indexBuffer:indexBuffer
213 indexBufferOffset:indexBufferOffset];
216 MTLIndexType indexType, id<MTLBuffer> indexBuffer,
217 NSUInteger indexBufferOffset,
218 NSUInteger instanceCount,
219 NSInteger baseVertex,
220 NSUInteger baseInstance)
223 indexCount:indexCount
225 indexBuffer:indexBuffer
226 indexBufferOffset:indexBufferOffset
227 instanceCount:instanceCount
228 baseVertex:baseVertex
229 baseInstance:baseInstance];
232 MTLIndexType indexType, id<MTLBuffer> indexBuffer,
233 NSUInteger indexBufferOffset, id<MTLBuffer> indirectBuffer,
234 NSUInteger indirectBufferOffset)
238 indexBuffer:indexBuffer
239 indexBufferOffset:indexBufferOffset
240 indirectBuffer:indirectBuffer
241 indirectBufferOffset:indirectBufferOffset];
252 id<MTLRenderCommandEncoder> fCommandEncoder = nil;
256 static const int kMaxSamplers = 16;
260 static const int kMaxTextures = kMaxSamplers;
262 __weak id<MTLRenderPipelineState> fCurrentRenderPipelineState = nil;
263 __weak id<MTLDepthStencilState> fCurrentDepthStencilState = nil;
268 __weak id<MTLTexture> fCurrentTexture[kMaxTextures];
270 MTLScissorRect fCurrentScissorRect = { 0, 0, 0, 0 };
271 MTLTriangleFillMode fCurrentTriangleFillMode = (MTLTriangleFillMode)-1;
void drawIndexedPrimitives(MTLPrimitiveType primitiveType, NSUInteger indexCount, MTLIndexType indexType, id< MTLBuffer > indexBuffer, NSUInteger indexBufferOffset, NSUInteger instanceCount, NSInteger baseVertex, NSUInteger baseInstance) SK_API_AVAILABLE(macos(10.11)
void drawIndexedPrimitives(MTLPrimitiveType primitiveType, MTLIndexType indexType, id< MTLBuffer > indexBuffer, NSUInteger indexBufferOffset, id< MTLBuffer > indirectBuffer, NSUInteger indirectBufferOffset) SK_API_AVAILABLE(macos(10.11)
static const uint8_t buffer[]