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

Side by Side Diff: src/gpu/GrDrawTarget.cpp

Issue 763593002: Revert of some cleanup around GrGpu/GrDrawTarget copySurface (Closed) Base URL: https://skia.googlesource.com/skia.git@isSameAs
Patch Set: Created 6 years 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
« no previous file with comments | « src/gpu/GrDrawTarget.h ('k') | src/gpu/GrGpu.h » ('j') | 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 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 10
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 914
915 SkIRect clippedSrcRect; 915 SkIRect clippedSrcRect;
916 SkIPoint clippedDstPoint; 916 SkIPoint clippedDstPoint;
917 // If the rect is outside the src or dst then we've already succeeded. 917 // If the rect is outside the src or dst then we've already succeeded.
918 if (!clip_srcrect_and_dstpoint(dst, 918 if (!clip_srcrect_and_dstpoint(dst,
919 src, 919 src,
920 srcRect, 920 srcRect,
921 dstPoint, 921 dstPoint,
922 &clippedSrcRect, 922 &clippedSrcRect,
923 &clippedDstPoint)) { 923 &clippedDstPoint)) {
924 SkASSERT(GrDrawTarget::canCopySurface(dst, src, srcRect, dstPoint));
924 return true; 925 return true;
925 } 926 }
926 927
927 if (this->onCopySurface(dst, src, clippedSrcRect, clippedDstPoint)) { 928 if (!GrDrawTarget::canCopySurface(dst, src, clippedSrcRect, clippedDstPoint) ) {
928 return true; 929 return false;
929 } 930 }
930 931
931 GrRenderTarget* rt = dst->asRenderTarget(); 932 GrRenderTarget* rt = dst->asRenderTarget();
932 GrTexture* tex = src->asTexture(); 933 GrTexture* tex = src->asTexture();
933 934
934 if ((dst != src) && rt && tex) {
935 return false;
936 }
937
938 GrDrawState drawState; 935 GrDrawState drawState;
939 drawState.setRenderTarget(rt); 936 drawState.setRenderTarget(rt);
940 SkMatrix matrix; 937 SkMatrix matrix;
941 matrix.setTranslate(SkIntToScalar(clippedSrcRect.fLeft - clippedDstPoint.fX) , 938 matrix.setTranslate(SkIntToScalar(clippedSrcRect.fLeft - clippedDstPoint.fX) ,
942 SkIntToScalar(clippedSrcRect.fTop - clippedDstPoint.fY)) ; 939 SkIntToScalar(clippedSrcRect.fTop - clippedDstPoint.fY)) ;
943 matrix.postIDiv(tex->width(), tex->height()); 940 matrix.postIDiv(tex->width(), tex->height());
944 drawState.addColorTextureProcessor(tex, matrix); 941 drawState.addColorTextureProcessor(tex, matrix);
945 SkIRect dstRect = SkIRect::MakeXYWH(clippedDstPoint.fX, 942 SkIRect dstRect = SkIRect::MakeXYWH(clippedDstPoint.fX,
946 clippedDstPoint.fY, 943 clippedDstPoint.fY,
947 clippedSrcRect.width(), 944 clippedSrcRect.width(),
(...skipping 13 matching lines...) Expand all
961 SkIPoint clippedDstPoint; 958 SkIPoint clippedDstPoint;
962 // If the rect is outside the src or dst then we're guaranteed success 959 // If the rect is outside the src or dst then we're guaranteed success
963 if (!clip_srcrect_and_dstpoint(dst, 960 if (!clip_srcrect_and_dstpoint(dst,
964 src, 961 src,
965 srcRect, 962 srcRect,
966 dstPoint, 963 dstPoint,
967 &clippedSrcRect, 964 &clippedSrcRect,
968 &clippedDstPoint)) { 965 &clippedDstPoint)) {
969 return true; 966 return true;
970 } 967 }
971 return this->internalCanCopySurface(dst, src, clippedSrcRect, clippedDstPoin t);
972 }
973 968
974 bool GrDrawTarget::internalCanCopySurface(const GrSurface* dst,
975 const GrSurface* src,
976 const SkIRect& clippedSrcRect,
977 const SkIPoint& clippedDstPoint) {
978 // Check that the read/write rects are contained within the src/dst bounds. 969 // Check that the read/write rects are contained within the src/dst bounds.
979 SkASSERT(!clippedSrcRect.isEmpty()); 970 SkASSERT(!clippedSrcRect.isEmpty());
980 SkASSERT(SkIRect::MakeWH(src->width(), src->height()).contains(clippedSrcRec t)); 971 SkASSERT(SkIRect::MakeWH(src->width(), src->height()).contains(clippedSrcRec t));
981 SkASSERT(clippedDstPoint.fX >= 0 && clippedDstPoint.fY >= 0); 972 SkASSERT(clippedDstPoint.fX >= 0 && clippedDstPoint.fY >= 0);
982 SkASSERT(clippedDstPoint.fX + clippedSrcRect.width() <= dst->width() && 973 SkASSERT(clippedDstPoint.fX + clippedSrcRect.width() <= dst->width() &&
983 clippedDstPoint.fY + clippedSrcRect.height() <= dst->height()); 974 clippedDstPoint.fY + clippedSrcRect.height() <= dst->height());
984 975
985 // The base class can do it as a draw or the subclass may be able to handle it. 976 return (dst != src) && dst->asRenderTarget() && src->asTexture();
986 return ((dst != src) && dst->asRenderTarget() && src->asTexture()) || 977 }
987 this->onCanCopySurface(dst, src, clippedSrcRect, clippedDstPoint); 978
979 void GrDrawTarget::initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* d esc) {
980 // Make the dst of the copy be a render target because the default copySurfa ce draws to the dst.
981 desc->fOrigin = kDefault_GrSurfaceOrigin;
982 desc->fFlags = kRenderTarget_GrSurfaceFlag | kNoStencil_GrSurfaceFlag;
983 desc->fConfig = src->config();
988 } 984 }
989 985
990 /////////////////////////////////////////////////////////////////////////////// 986 ///////////////////////////////////////////////////////////////////////////////
991 987
992 void GrDrawTargetCaps::reset() { 988 void GrDrawTargetCaps::reset() {
993 fMipMapSupport = false; 989 fMipMapSupport = false;
994 fNPOTTextureTileSupport = false; 990 fNPOTTextureTileSupport = false;
995 fTwoSidedStencilSupport = false; 991 fTwoSidedStencilSupport = false;
996 fStencilWrapOpsSupport = false; 992 fStencilWrapOpsSupport = false;
997 fHWAALineSupport = false; 993 fHWAALineSupport = false;
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 GrDrawState::AutoRestoreStencil* ars, 1155 GrDrawState::AutoRestoreStencil* ars,
1160 GrDrawState* ds, 1156 GrDrawState* ds,
1161 GrClipMaskManager::ScissorState* scissorState) { 1157 GrClipMaskManager::ScissorState* scissorState) {
1162 return fClipMaskManager.setupClipping(ds, 1158 return fClipMaskManager.setupClipping(ds,
1163 are, 1159 are,
1164 ars, 1160 ars,
1165 scissorState, 1161 scissorState,
1166 this->getClip(), 1162 this->getClip(),
1167 devBounds); 1163 devBounds);
1168 } 1164 }
OLDNEW
« no previous file with comments | « src/gpu/GrDrawTarget.h ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698