Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit ba91f65

Browse files
jvanverthSkia Commit-Bot
authored and
Skia Commit-Bot
committed
Tweaks to Metal pipeline state.
Bug: skia:8243 Change-Id: If2a0d38eedb197175b69d3c3b8422e4dfbfa8e02 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/201610 Reviewed-by: Greg Daniel <[email protected]> Commit-Queue: Jim Van Verth <[email protected]>
1 parent 29aa443 commit ba91f65

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

src/gpu/mtl/GrMtlGpuCommandBuffer.mm

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,16 @@
148148
SkASSERT(fActiveRenderCmdEncoder);
149149
// TODO: can we set this once somewhere at the beginning of the draw?
150150
[fActiveRenderCmdEncoder setFrontFacingWinding:MTLWindingCounterClockwise];
151+
// Strictly speaking we shouldn't have to set this, as the default viewport is the size of
152+
// the drawable used to generate the renderCommandEncoder -- but just in case.
153+
MTLViewport viewport = { 0.0, 0.0,
154+
(double) fRenderTarget->width(), (double) fRenderTarget->height(),
155+
0.0, 1.0 };
156+
[fActiveRenderCmdEncoder setViewport:viewport];
151157

152158
[fActiveRenderCmdEncoder setRenderPipelineState:pipelineState->mtlPipelineState()];
153-
pipelineState->bind(fActiveRenderCmdEncoder);
154-
pipelineState->setBlendConstants(fActiveRenderCmdEncoder, fRenderTarget->config(),
155-
pipeline.getXferProcessor());
156-
pipelineState->setDepthStencilState(fActiveRenderCmdEncoder);
159+
pipelineState->setDrawState(fActiveRenderCmdEncoder, fRenderTarget->config(),
160+
pipeline.getXferProcessor());
157161

158162
bool dynamicScissor =
159163
pipeline.isScissorEnabled() && dynamicStateArrays && dynamicStateArrays->fScissorRects;
@@ -182,10 +186,8 @@
182186
}
183187

184188
[fActiveRenderCmdEncoder setRenderPipelineState:pipelineState->mtlPipelineState()];
185-
pipelineState->bind(fActiveRenderCmdEncoder);
186-
pipelineState->setBlendConstants(fActiveRenderCmdEncoder, fRenderTarget->config(),
187-
pipeline.getXferProcessor());
188-
pipelineState->setDepthStencilState(fActiveRenderCmdEncoder);
189+
pipelineState->setDrawState(fActiveRenderCmdEncoder, fRenderTarget->config(),
190+
pipeline.getXferProcessor());
189191
}
190192

191193
if (dynamicScissor) {

src/gpu/mtl/GrMtlPipelineState.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,7 @@ class GrMtlPipelineState {
5151
const GrPrimitiveProcessor& primPRoc, const GrPipeline& pipeline,
5252
const GrTextureProxy* const primProcTextures[]);
5353

54-
void bind(id<MTLRenderCommandEncoder>);
55-
56-
void setBlendConstants(id<MTLRenderCommandEncoder>, GrPixelConfig, const GrXferProcessor&);
57-
58-
void setDepthStencilState(id<MTLRenderCommandEncoder> renderCmdEncoder);
54+
void setDrawState(id<MTLRenderCommandEncoder>, GrPixelConfig, const GrXferProcessor&);
5955

6056
static void SetDynamicScissorRectState(id<MTLRenderCommandEncoder> renderCmdEncoder,
6157
const GrRenderTarget* renderTarget,
@@ -101,6 +97,12 @@ class GrMtlPipelineState {
10197

10298
void setRenderTargetState(const GrRenderTarget*, GrSurfaceOrigin);
10399

100+
void bind(id<MTLRenderCommandEncoder>);
101+
102+
void setBlendConstants(id<MTLRenderCommandEncoder>, GrPixelConfig, const GrXferProcessor&);
103+
104+
void setDepthStencilState(id<MTLRenderCommandEncoder> renderCmdEncoder);
105+
104106
struct SamplerBindings {
105107
id<MTLSamplerState> fSampler;
106108
id<MTLTexture> fTexture;

src/gpu/mtl/GrMtlPipelineState.mm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@
118118
}
119119
}
120120

121+
void GrMtlPipelineState::setDrawState(id<MTLRenderCommandEncoder> renderCmdEncoder,
122+
GrPixelConfig config, const GrXferProcessor& xferProcessor) {
123+
this->bind(renderCmdEncoder);
124+
this->setBlendConstants(renderCmdEncoder, config, xferProcessor);
125+
this->setDepthStencilState(renderCmdEncoder);
126+
}
127+
121128
void GrMtlPipelineState::bind(id<MTLRenderCommandEncoder> renderCmdEncoder) {
122129
if (fGeometryUniformBuffer) {
123130
[renderCmdEncoder setVertexBuffer: fGeometryUniformBuffer->mtlBuffer()

0 commit comments

Comments
 (0)