diff --git a/src/gpu/GrBitmapTextureMaker.cpp b/src/gpu/GrBitmapTextureMaker.cpp
index 0fb2e05..67a3281 100644
--- a/src/gpu/GrBitmapTextureMaker.cpp
+++ b/src/gpu/GrBitmapTextureMaker.cpp
@@ -81,7 +81,6 @@
             swizzle = this->context()->priv().caps()->getReadSwizzle(proxy->backendFormat(),
                                                                      this->colorType());
             SkASSERT(!willBeMipped || GrMipMapped::kYes == proxy->mipMapped());
-            SkASSERT(proxy->origin() == kTopLeft_GrSurfaceOrigin);
             if (fOriginalKey.isValid()) {
                 proxyProvider->assignUniqueKeyToProxy(fOriginalKey, proxy.get());
                 GrInstallBitmapUniqueKeyInvalidator(
diff --git a/src/gpu/GrPathRendering.h b/src/gpu/GrPathRendering.h
index 3e143e4..839cb3d 100644
--- a/src/gpu/GrPathRendering.h
+++ b/src/gpu/GrPathRendering.h
@@ -94,17 +94,20 @@
     struct StencilPathArgs {
         StencilPathArgs(bool useHWAA,
                         GrRenderTargetProxy* proxy,
+                        GrSurfaceOrigin origin,
                         const SkMatrix* viewMatrix,
                         const GrScissorState* scissor,
                         const GrStencilSettings* stencil)
             : fUseHWAA(useHWAA)
             , fProxy(proxy)
+            , fOrigin(origin)
             , fViewMatrix(viewMatrix)
             , fScissor(scissor)
             , fStencil(stencil) {
         }
         bool                     fUseHWAA;
         GrRenderTargetProxy*     fProxy;
+        GrSurfaceOrigin          fOrigin;
         const SkMatrix*          fViewMatrix;
         const GrScissorState*    fScissor;
         const GrStencilSettings* fStencil;
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index ee301f9..a2c896c 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -105,7 +105,6 @@
 
     GrTextureProxy* proxy = fUniquelyKeyedProxies.find(key);
     if (proxy) {
-        SkASSERT(proxy->origin() == origin);
         return sk_ref_sp(proxy);
     }
     return nullptr;
diff --git a/src/gpu/GrProxyProvider.h b/src/gpu/GrProxyProvider.h
index 3ff5471..e89a373 100644
--- a/src/gpu/GrProxyProvider.h
+++ b/src/gpu/GrProxyProvider.h
@@ -65,6 +65,7 @@
 
     /*
      * Creates a new texture proxy for the bitmap, optionally with mip levels generated by the cpu.
+     * The bitmap is uploaded to the texture proxy assuming a kTopLeft_GrSurfaceOrigin.
      */
     sk_sp<GrTextureProxy> createProxyFromBitmap(const SkBitmap& bitmap, GrMipMapped,
                                                 SkBackingFit fit);
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 6a08e46..720e770 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -336,7 +336,6 @@
         return nullptr;
     }
 
-    SkASSERT(proxy->origin() == kTopLeft_GrSurfaceOrigin);
     return GrRenderTargetContext::Make(context, SkColorTypeToGrColorType(imageInfo.colorType()),
                                        imageInfo.refColorSpace(), std::move(proxy),
                                        kTopLeft_GrSurfaceOrigin, props);
diff --git a/src/gpu/GrSurfaceContext.cpp b/src/gpu/GrSurfaceContext.cpp
index 5c4e04a..e5a1143 100644
--- a/src/gpu/GrSurfaceContext.cpp
+++ b/src/gpu/GrSurfaceContext.cpp
@@ -240,7 +240,7 @@
         return tempCtx->readPixels(dstInfo, dst, rowBytes, {0, 0}, direct);
     }
 
-    bool flip = srcProxy->origin() == kBottomLeft_GrSurfaceOrigin;
+    bool flip = this->origin() == kBottomLeft_GrSurfaceOrigin;
 
     auto supportedRead = caps->supportedReadPixelsColorType(
             this->colorInfo().colorType(), srcProxy->backendFormat(), dstInfo.colorType());
@@ -378,7 +378,7 @@
         // we can use a draw instead which doesn't have this origin restriction. Thus for render
         // targets we will use top left and otherwise we will make the origins match.
         GrSurfaceOrigin tempOrigin =
-                this->asRenderTargetContext() ? kTopLeft_GrSurfaceOrigin : dstProxy->origin();
+                this->asRenderTargetContext() ? kTopLeft_GrSurfaceOrigin : this->origin();
         auto tempProxy = direct->priv().proxyProvider()->createProxy(
                 format, srcInfo.dimensions(), tempReadSwizzle, GrRenderable::kNo, 1, tempOrigin,
                 GrMipMapped::kNo, SkBackingFit::kApprox, SkBudgeted::kYes, GrProtected::kNo);
@@ -436,7 +436,7 @@
             caps->supportedWritePixelsColorType(this->colorInfo().colorType(),
                                                 dstProxy->backendFormat(),
                                                 srcInfo.colorType()).fColorType;
-    bool flip = dstProxy->origin() == kBottomLeft_GrSurfaceOrigin;
+    bool flip = this->origin() == kBottomLeft_GrSurfaceOrigin;
     bool makeTight = !caps->writePixelsRowBytesSupport() && rowBytes != tightRowBytes;
     bool convert = premul || unpremul || needColorConversion || makeTight ||
                    (srcInfo.colorType() != allowedColorType) || flip;
@@ -709,7 +709,7 @@
         return {};
     }
     auto srcRect = rect;
-    bool flip = proxy->origin() == kBottomLeft_GrSurfaceOrigin;
+    bool flip = this->origin() == kBottomLeft_GrSurfaceOrigin;
     if (flip) {
         srcRect = SkIRect::MakeLTRB(rect.fLeft, this->height() - rect.fBottom, rect.fRight,
                                     this->height() - rect.fTop);
diff --git a/src/gpu/GrSurfaceProxy.h b/src/gpu/GrSurfaceProxy.h
index 5ee5ba8..495e3e8 100644
--- a/src/gpu/GrSurfaceProxy.h
+++ b/src/gpu/GrSurfaceProxy.h
@@ -133,11 +133,6 @@
         return SkRect::Make(this->backingStoreDimensions());
     }
 
-    GrSurfaceOrigin origin() const {
-        SkASSERT(kTopLeft_GrSurfaceOrigin == fOrigin || kBottomLeft_GrSurfaceOrigin == fOrigin);
-        return fOrigin;
-    }
-
     // Do not call this. It will shortly be removed and is just needed for a couple cases where we
     // are getting a proxy from the cache and cannot be certain what the GrColorType of the proxy.
     const GrSwizzle& textureSwizzleDoNotUse() const { return fTextureSwizzle; }
diff --git a/src/gpu/ccpr/GrCCClipPath.cpp b/src/gpu/ccpr/GrCCClipPath.cpp
index fc4f1f3..b01bda1 100644
--- a/src/gpu/ccpr/GrCCClipPath.cpp
+++ b/src/gpu/ccpr/GrCCClipPath.cpp
@@ -36,7 +36,6 @@
                 SkASSERT(texture);
                 SkASSERT(texture->backendFormat() == format);
                 SkASSERT(texture->asRenderTarget()->numSamples() == sampleCount);
-                SkASSERT(textureProxy->origin() == kTopLeft_GrSurfaceOrigin);
 
                 fAtlasScale = {1.f / texture->width(), 1.f / texture->height()};
                 fAtlasTranslate.set(fDevToAtlasOffset.fX * fAtlasScale.x(),
diff --git a/src/gpu/gl/GrGLPathRendering.cpp b/src/gpu/gl/GrGLPathRendering.cpp
index af5e215..7d93a11 100644
--- a/src/gpu/gl/GrGLPathRendering.cpp
+++ b/src/gpu/gl/GrGLPathRendering.cpp
@@ -90,8 +90,8 @@
 
     GrGLRenderTarget* rt = static_cast<GrGLRenderTarget*>(args.fProxy->peekRenderTarget());
     SkISize dimensions = rt->dimensions();
-    this->setProjectionMatrix(*args.fViewMatrix, dimensions, args.fProxy->origin());
-    gpu->flushScissor(*args.fScissor, rt->width(), rt->height(), args.fProxy->origin());
+    this->setProjectionMatrix(*args.fViewMatrix, dimensions, args.fOrigin);
+    gpu->flushScissor(*args.fScissor, rt->width(), rt->height(), args.fOrigin);
     gpu->flushHWAAState(rt, args.fUseHWAA);
     gpu->flushRenderTarget(rt);
 
diff --git a/src/gpu/ops/GrStencilPathOp.cpp b/src/gpu/ops/GrStencilPathOp.cpp
index 18fb37c..50baf5d 100644
--- a/src/gpu/ops/GrStencilPathOp.cpp
+++ b/src/gpu/ops/GrStencilPathOp.cpp
@@ -35,6 +35,7 @@
                               fHasStencilClip, numStencilBits);
 
     GrPathRendering::StencilPathArgs args(fUseHWAA, state->drawOpArgs().proxy(),
+                                          state->drawOpArgs().origin(),
                                           &fViewMatrix, &fScissor, &stencil);
     state->gpu()->pathRendering()->stencilPath(args, fPath.get());
 }
diff --git a/src/gpu/tessellate/GrDrawAtlasPathOp.cpp b/src/gpu/tessellate/GrDrawAtlasPathOp.cpp
index 5f6e88a..1b2aa8a 100644
--- a/src/gpu/tessellate/GrDrawAtlasPathOp.cpp
+++ b/src/gpu/tessellate/GrDrawAtlasPathOp.cpp
@@ -180,7 +180,7 @@
     SkASSERT(shader.instanceStride() == Instance::Stride(fUsesLocalCoords));
 
     GrProgramInfo programInfo(state->proxy()->numSamples(), state->proxy()->numStencilSamples(),
-                              state->proxy()->backendFormat(), state->proxy()->origin(), &pipeline,
+                              state->proxy()->backendFormat(), state->view()->origin(), &pipeline,
                               &shader, &fixedDynamicState, nullptr, 0,
                               GrPrimitiveType::kTriangleStrip);
 
diff --git a/src/gpu/tessellate/GrDrawAtlasPathOp.h b/src/gpu/tessellate/GrDrawAtlasPathOp.h
index ab4e7cb..bb37cf7 100644
--- a/src/gpu/tessellate/GrDrawAtlasPathOp.h
+++ b/src/gpu/tessellate/GrDrawAtlasPathOp.h
@@ -22,7 +22,6 @@
             , fAtlasProxy(std::move(atlasProxy))
             , fInstanceList(devIBounds, devToAtlasOffset, paint.getColor4f(), viewMatrix)
             , fProcessors(std::move(paint)) {
-        SkASSERT(kTopLeft_GrSurfaceOrigin == fAtlasProxy->origin());
         this->setBounds(SkRect::Make(devIBounds), HasAABloat::kYes, IsHairline::kNo);
     }
 
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 18728a4..aae109cb 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -248,8 +248,6 @@
     if (!proxy) {
         return nullptr;
     }
-    // TODO: remove asserts when proxy doesn't hold origin or swizzle
-    SkASSERT(proxy->origin() == kTopLeft_GrSurfaceOrigin);
     GrSurfaceProxyView view(std::move(proxy));
 
     SkColorType colorType = GrCompressionTypeToSkColorType(type);
diff --git a/src/image/SkImage_GpuBase.cpp b/src/image/SkImage_GpuBase.cpp
index 563d290..d757a64 100644
--- a/src/image/SkImage_GpuBase.cpp
+++ b/src/image/SkImage_GpuBase.cpp
@@ -224,7 +224,7 @@
             direct->priv().flushSurface(proxy);
         }
         if (origin) {
-            *origin = proxy->origin();
+            *origin = view->origin();
         }
         return texture->getBackendTexture();
     }
diff --git a/tests/GrSurfaceTest.cpp b/tests/GrSurfaceTest.cpp
index 462b6d0..29b7c29 100644
--- a/tests/GrSurfaceTest.cpp
+++ b/tests/GrSurfaceTest.cpp
@@ -813,9 +813,9 @@
         auto rt = SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info, 0, nullptr);
         auto rtc = rt->getCanvas()->internal_private_accessTopLayerRenderTargetContext();
         auto proxy = context->priv().proxyProvider()->testingOnly_createWrapped(
-                std::move(idleTexture), GrColorType::kRGBA_8888, rtc->asSurfaceProxy()->origin());
+                std::move(idleTexture), GrColorType::kRGBA_8888, rtc->origin());
         context->flush();
-        SkAssertResult(rtc->testCopy(proxy.get(), rtc->asSurfaceProxy()->origin()));
+        SkAssertResult(rtc->testCopy(proxy.get(), rtc->origin()));
         proxy.reset();
         REPORTER_ASSERT(reporter, flags == 0);
 
diff --git a/tests/ProxyTest.cpp b/tests/ProxyTest.cpp
index 4d3e663..368961c 100644
--- a/tests/ProxyTest.cpp
+++ b/tests/ProxyTest.cpp
@@ -28,10 +28,8 @@
 // Check that the surface proxy's member vars are set as expected
 static void check_surface(skiatest::Reporter* reporter,
                           GrSurfaceProxy* proxy,
-                          GrSurfaceOrigin origin,
                           int width, int height,
                           SkBudgeted budgeted) {
-    REPORTER_ASSERT(reporter, proxy->origin() == origin);
     REPORTER_ASSERT(reporter, proxy->width() == width);
     REPORTER_ASSERT(reporter, proxy->height() == height);
     REPORTER_ASSERT(reporter, !proxy->uniqueID().isInvalid());
@@ -156,8 +154,8 @@
                                     // pre-instantiation size then the check is skipped.
                                     proxy->gpuMemorySize(caps);
 
-                                    check_surface(reporter, proxy.get(), origin,
-                                                  widthHeight, widthHeight, budgeted);
+                                    check_surface(reporter, proxy.get(), widthHeight, widthHeight,
+                                                  budgeted);
                                     int supportedSamples =
                                             caps.getRenderTargetSampleCount(numSamples, format);
                                     check_rendertarget(reporter, caps, resourceProvider,
@@ -192,8 +190,8 @@
                                     // pre-instantiation size then the check is skipped.
                                     proxy->gpuMemorySize(caps);
 
-                                    check_surface(reporter, proxy.get(), origin,
-                                                  widthHeight, widthHeight, budgeted);
+                                    check_surface(reporter, proxy.get(), widthHeight, widthHeight,
+                                                  budgeted);
                                     check_texture(reporter, resourceProvider,
                                                   proxy->asTextureProxy(), fit);
                                 }
@@ -232,8 +230,7 @@
                 sk_sp<GrSurfaceProxy> sProxy(
                         proxyProvider->wrapBackendRenderTarget(backendRT, grColorType,
                                                                origin, nullptr, nullptr));
-                check_surface(reporter, sProxy.get(), origin, kWidthHeight, kWidthHeight,
-                              SkBudgeted::kNo);
+                check_surface(reporter, sProxy.get(), kWidthHeight, kWidthHeight, SkBudgeted::kNo);
                 static constexpr int kExpectedNumSamples = 1;
                 check_rendertarget(reporter, caps, resourceProvider, sProxy->asRenderTargetProxy(),
                                    kExpectedNumSamples, SkBackingFit::kExact,
@@ -262,8 +259,8 @@
                     sk_sp<GrSurfaceProxy> sProxy(
                             proxyProvider->wrapBackendRenderTarget(backendRT, grColorType,
                                                                    origin, nullptr, nullptr));
-                    check_surface(reporter, sProxy.get(), origin,
-                                  kWidthHeight, kWidthHeight, SkBudgeted::kNo);
+                    check_surface(reporter, sProxy.get(), kWidthHeight, kWidthHeight,
+                                  SkBudgeted::kNo);
                     check_rendertarget(reporter, caps, resourceProvider,
                                        sProxy->asRenderTargetProxy(),
                                        supportedNumSamples, SkBackingFit::kExact, 0);
@@ -286,8 +283,8 @@
                         continue;  // This can fail on Mesa
                     }
 
-                    check_surface(reporter, sProxy.get(), origin,
-                                  kWidthHeight, kWidthHeight, SkBudgeted::kNo);
+                    check_surface(reporter, sProxy.get(), kWidthHeight, kWidthHeight,
+                                  SkBudgeted::kNo);
                     check_rendertarget(reporter, caps, resourceProvider,
                                        sProxy->asRenderTargetProxy(),
                                        supportedNumSamples, SkBackingFit::kExact,
@@ -315,8 +312,8 @@
                         continue;  // This can fail on Mesa
                     }
 
-                    check_surface(reporter, sProxy.get(), origin,
-                                  kWidthHeight, kWidthHeight, SkBudgeted::kNo);
+                    check_surface(reporter, sProxy.get(), kWidthHeight, kWidthHeight,
+                                  SkBudgeted::kNo);
                     check_rendertarget(reporter, caps, resourceProvider,
                                        sProxy->asRenderTargetProxy(),
                                        supportedNumSamples, SkBackingFit::kExact,
@@ -344,8 +341,8 @@
                         continue;
                     }
 
-                    check_surface(reporter, sProxy.get(), origin,
-                                  kWidthHeight, kWidthHeight, SkBudgeted::kNo);
+                    check_surface(reporter, sProxy.get(), kWidthHeight, kWidthHeight,
+                                  SkBudgeted::kNo);
                     check_texture(reporter, resourceProvider, sProxy->asTextureProxy(),
                                   SkBackingFit::kExact);
 
diff --git a/tests/RectangleTextureTest.cpp b/tests/RectangleTextureTest.cpp
index 845bee8..2070d53 100644
--- a/tests/RectangleTextureTest.cpp
+++ b/tests/RectangleTextureTest.cpp
@@ -108,7 +108,7 @@
     }
 
     for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) {
-        auto origin = dstContext->asSurfaceProxy()->origin();
+        auto origin = dstContext->origin();
         auto src = sk_gpu_test::MakeTextureProxyFromData(
                 context, renderable, origin,
                 {GrColorType::kRGBA_8888, kPremul_SkAlphaType, nullptr, dstContext->width(),
