aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Timothy Liang <timliang@google.com>2018-07-19 09:49:46 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-19 14:25:45 +0000
commite70604ea8b5216621e50f7063edf7d56ee95498d (patch)
tree41c70c589709187c049156918ee793bb70d170f1 /src
parent84364ee71dad9adeb1beb99b19e27d0c32e6c429 (diff)
created stub for metal gpu command buffer
Bug: skia: Change-Id: I11ffb1126ea4665c456c2b74e98d9e9021a5aca2 Reviewed-on: https://skia-review.googlesource.com/141080 Commit-Queue: Timothy Liang <timliang@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu/mtl/GrMtlGpu.h8
-rw-r--r--src/gpu/mtl/GrMtlGpu.mm13
-rw-r--r--src/gpu/mtl/GrMtlGpuCommandBuffer.h93
3 files changed, 108 insertions, 6 deletions
diff --git a/src/gpu/mtl/GrMtlGpu.h b/src/gpu/mtl/GrMtlGpu.h
index 8a68b763eb..1c25dedbac 100644
--- a/src/gpu/mtl/GrMtlGpu.h
+++ b/src/gpu/mtl/GrMtlGpu.h
@@ -65,13 +65,9 @@ public:
GrGpuRTCommandBuffer* createCommandBuffer(
GrRenderTarget*, GrSurfaceOrigin,
const GrGpuRTCommandBuffer::LoadAndStoreInfo&,
- const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo&) override {
- return nullptr;
- }
+ const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo&) override;
- GrGpuTextureCommandBuffer* createCommandBuffer(GrTexture*, GrSurfaceOrigin) override {
- return nullptr;
- }
+ GrGpuTextureCommandBuffer* createCommandBuffer(GrTexture*, GrSurfaceOrigin) override;
GrFence SK_WARN_UNUSED_RESULT insertFence() override { return 0; }
bool waitFence(GrFence, uint64_t) override { return true; }
diff --git a/src/gpu/mtl/GrMtlGpu.mm b/src/gpu/mtl/GrMtlGpu.mm
index 0295659b36..892e4bc5a1 100644
--- a/src/gpu/mtl/GrMtlGpu.mm
+++ b/src/gpu/mtl/GrMtlGpu.mm
@@ -7,6 +7,7 @@
#include "GrMtlGpu.h"
+#include "GrMtlGpuCommandBuffer.h"
#include "GrMtlTexture.h"
#include "GrMtlTextureRenderTarget.h"
#include "GrMtlUtil.h"
@@ -97,6 +98,18 @@ GrMtlGpu::GrMtlGpu(GrContext* context, const GrContextOptions& options,
fCmdBuffer = [fQueue commandBuffer];
}
+GrGpuRTCommandBuffer* GrMtlGpu::createCommandBuffer(
+ GrRenderTarget* renderTarget, GrSurfaceOrigin origin,
+ const GrGpuRTCommandBuffer::LoadAndStoreInfo& colorInfo,
+ const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo& stencilInfo) {
+ return new GrMtlGpuRTCommandBuffer(this, renderTarget, origin, colorInfo, stencilInfo);
+}
+
+GrGpuTextureCommandBuffer* GrMtlGpu::createCommandBuffer(GrTexture* texture,
+ GrSurfaceOrigin origin) {
+ return new GrMtlGpuTextureCommandBuffer(this, texture, origin);
+}
+
void GrMtlGpu::submitCommandBuffer(SyncQueue sync) {
SkASSERT(fCmdBuffer);
[fCmdBuffer commit];
diff --git a/src/gpu/mtl/GrMtlGpuCommandBuffer.h b/src/gpu/mtl/GrMtlGpuCommandBuffer.h
new file mode 100644
index 0000000000..8f1fd20d62
--- /dev/null
+++ b/src/gpu/mtl/GrMtlGpuCommandBuffer.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrMtlGpuCommandBuffer_DEFINED
+#define GrMtlGpuCommandBuffer_DEFINED
+
+#include "GrGpuCommandBuffer.h"
+
+class GrMtlGpu;
+class GrMtlRenderTarget;
+
+class GrMtlGpuTextureCommandBuffer : public GrGpuTextureCommandBuffer {
+public:
+ GrMtlGpuTextureCommandBuffer(GrMtlGpu* gpu, GrTexture* texture, GrSurfaceOrigin origin)
+ : INHERITED(texture, origin)
+ , fGpu(gpu) {
+ // Silence unused var warning
+ (void)fGpu;
+ }
+
+ ~GrMtlGpuTextureCommandBuffer() override {}
+
+ void copy(GrSurface* src, GrSurfaceOrigin srcOrigin, const SkIRect& srcRect,
+ const SkIPoint& dstPoint) override {}
+
+ void insertEventMarker(const char* msg) override {}
+
+private:
+ void submit() override {}
+
+ GrMtlGpu* fGpu;
+
+ typedef GrGpuTextureCommandBuffer INHERITED;
+};
+
+class GrMtlGpuRTCommandBuffer : public GrGpuRTCommandBuffer {
+public:
+ GrMtlGpuRTCommandBuffer(GrMtlGpu* gpu, GrRenderTarget* rt, GrSurfaceOrigin origin,
+ const GrGpuRTCommandBuffer::LoadAndStoreInfo& colorInfo,
+ const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo& stencilInfo)
+ : INHERITED(rt, origin)
+ , fGpu(gpu)
+ , fColorLoadAndStoreInfo(colorInfo)
+ , fStencilLoadAndStoreInfo(stencilInfo) {
+ // Silence unused var warning
+ (void)fColorLoadAndStoreInfo;
+ (void)fStencilLoadAndStoreInfo;
+ }
+
+ ~GrMtlGpuRTCommandBuffer() override {}
+
+ void begin() override {}
+ void end() override {}
+
+ void discard() override {}
+
+ void insertEventMarker(const char* msg) override {}
+
+ void inlineUpload(GrOpFlushState* state, GrDeferredTextureUploadFn& upload) override {}
+
+ void copy(GrSurface* src, GrSurfaceOrigin srcOrigin, const SkIRect& srcRect,
+ const SkIPoint& dstPoint) override {}
+
+ void submit() override {}
+
+private:
+ GrGpu* gpu() override { return fGpu; }
+
+ void onDraw(const GrPrimitiveProcessor& primProc,
+ const GrPipeline& pipeline,
+ const GrPipeline::FixedDynamicState* fixedDynamicState,
+ const GrPipeline::DynamicStateArrays* dynamicStateArrays,
+ const GrMesh mesh[],
+ int meshCount,
+ const SkRect& bounds) override {}
+
+ void onClear(const GrFixedClip& clip, GrColor color) override {}
+
+ void onClearStencilClip(const GrFixedClip& clip, bool insideStencilMask) override {}
+
+ GrMtlGpu* fGpu;
+ GrGpuRTCommandBuffer::LoadAndStoreInfo fColorLoadAndStoreInfo;
+ GrGpuRTCommandBuffer::StencilLoadAndStoreInfo fStencilLoadAndStoreInfo;
+
+ typedef GrGpuRTCommandBuffer INHERITED;
+};
+
+#endif
+