| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef GrGpu_DEFINED | 8 #ifndef GrGpu_DEFINED |
| 9 #define GrGpu_DEFINED | 9 #define GrGpu_DEFINED |
| 10 | 10 |
| 11 #include "GrPipelineBuilder.h" | 11 #include "GrPipelineBuilder.h" |
| 12 #include "GrProgramDesc.h" | 12 #include "GrProgramDesc.h" |
| 13 #include "GrStencil.h" | 13 #include "GrStencil.h" |
| 14 #include "GrSwizzle.h" |
| 14 #include "GrTextureParamsAdjuster.h" | 15 #include "GrTextureParamsAdjuster.h" |
| 15 #include "GrXferProcessor.h" | 16 #include "GrXferProcessor.h" |
| 16 #include "SkPath.h" | 17 #include "SkPath.h" |
| 17 | 18 |
| 18 class GrBatchTracker; | 19 class GrBatchTracker; |
| 19 class GrContext; | 20 class GrContext; |
| 20 class GrGLContext; | 21 class GrGLContext; |
| 21 class GrIndexBuffer; | 22 class GrIndexBuffer; |
| 22 class GrNonInstancedVertices; | 23 class GrNonInstancedVertices; |
| 23 class GrPath; | 24 class GrPath; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 /** Info struct returned by getReadPixelsInfo about performing intermediate
draws before | 149 /** Info struct returned by getReadPixelsInfo about performing intermediate
draws before |
| 149 reading pixels for performance or correctness. */ | 150 reading pixels for performance or correctness. */ |
| 150 struct ReadPixelTempDrawInfo { | 151 struct ReadPixelTempDrawInfo { |
| 151 /** If the GrGpu is requesting that the caller do a draw to an intermedi
ate surface then | 152 /** If the GrGpu is requesting that the caller do a draw to an intermedi
ate surface then |
| 152 this is descriptor for the temp surface. The draw should always be a
rect with | 153 this is descriptor for the temp surface. The draw should always be a
rect with |
| 153 dst 0,0,w,h. */ | 154 dst 0,0,w,h. */ |
| 154 GrSurfaceDesc fTempSurfaceDesc; | 155 GrSurfaceDesc fTempSurfaceDesc; |
| 155 /** Indicates whether there is a performance advantage to using an exact
match texture | 156 /** Indicates whether there is a performance advantage to using an exact
match texture |
| 156 (in terms of width and height) for the intermediate texture instead
of approximate. */ | 157 (in terms of width and height) for the intermediate texture instead
of approximate. */ |
| 157 bool fUseExactScratch; | 158 bool fUseExactScratch; |
| 158 /** The caller should swap the R and B channel in the temp draw and then
instead of reading | 159 /** Swizzle to apply during the draw. This is used to compensate for eit
her feature or |
| 159 the desired config back it should read GrPixelConfigSwapRAndB(readCo
nfig). The swap | 160 performance limitations in the underlying 3D API. */ |
| 160 during the draw and the swap at readback time cancel and the client
gets the correct | 161 GrSwizzle fSwizzle; |
| 161 data. The swapped read back is either faster for or required by the
underlying backend | 162 /** The config that should be used to read from the temp surface after t
he draw. This may be |
| 162 3D API. */ | 163 different than the original read config in order to compensate for s
wizzling. The |
| 163 bool fSwapRAndB; | 164 read data will effectively be in the original read config. */ |
| 165 GrPixelConfig fReadConfig; |
| 164 }; | 166 }; |
| 167 |
| 165 /** Describes why an intermediate draw must/should be performed before readP
ixels. */ | 168 /** Describes why an intermediate draw must/should be performed before readP
ixels. */ |
| 166 enum DrawPreference { | 169 enum DrawPreference { |
| 167 /** On input means that the caller would proceed without draw if the GrG
pu doesn't request | 170 /** On input means that the caller would proceed without draw if the GrG
pu doesn't request |
| 168 one. | 171 one. |
| 169 On output means that the GrGpu is not requesting a draw. */ | 172 On output means that the GrGpu is not requesting a draw. */ |
| 170 kNoDraw_DrawPreference, | 173 kNoDraw_DrawPreference, |
| 171 /** Means that the client would prefer a draw for performance of the rea
dback but | 174 /** Means that the client would prefer a draw for performance of the rea
dback but |
| 172 can satisfy a straight readPixels call on the inputs without an inte
rmediate draw. | 175 can satisfy a straight readPixels call on the inputs without an inte
rmediate draw. |
| 173 getReadPixelsInfo will never set the draw preference to this value b
ut may leave | 176 getReadPixelsInfo will never set the draw preference to this value b
ut may leave |
| 174 it set. */ | 177 it set. */ |
| (...skipping 20 matching lines...) Expand all Loading... |
| 195 GrPixelConfig readConfig, DrawPreference*, ReadPixelT
empDrawInfo*); | 198 GrPixelConfig readConfig, DrawPreference*, ReadPixelT
empDrawInfo*); |
| 196 | 199 |
| 197 /** Info struct returned by getWritePixelsInfo about performing an intermedi
ate draw in order | 200 /** Info struct returned by getWritePixelsInfo about performing an intermedi
ate draw in order |
| 198 to write pixels to a GrSurface for either performance or correctness rea
sons. */ | 201 to write pixels to a GrSurface for either performance or correctness rea
sons. */ |
| 199 struct WritePixelTempDrawInfo { | 202 struct WritePixelTempDrawInfo { |
| 200 /** If the GrGpu is requesting that the caller upload to an intermediate
surface and draw | 203 /** If the GrGpu is requesting that the caller upload to an intermediate
surface and draw |
| 201 that to the dst then this is the descriptor for the intermediate sur
face. The caller | 204 that to the dst then this is the descriptor for the intermediate sur
face. The caller |
| 202 should upload the pixels such that the upper left pixel of the uploa
d rect is at 0,0 in | 205 should upload the pixels such that the upper left pixel of the uploa
d rect is at 0,0 in |
| 203 the intermediate surface.*/ | 206 the intermediate surface.*/ |
| 204 GrSurfaceDesc fTempSurfaceDesc; | 207 GrSurfaceDesc fTempSurfaceDesc; |
| 205 /** If set, fTempSurfaceDesc's config will be a R/B swap of the src pixe
l config. The caller | 208 /** Swizzle to apply during the draw. This is used to compensate for eit
her feature or |
| 206 should upload the pixels as is such that R and B will be swapped in
the intermediate | 209 performance limitations in the underlying 3D API. */ |
| 207 surface. When the intermediate is drawn to the dst the shader should
swap R/B again | 210 GrSwizzle fSwizzle; |
| 208 such that the correct swizzle results in the dst. This is done to wo
rk around either | 211 /** The config that should be specified when uploading the *original* da
ta to the temp |
| 209 performance or API restrictions in the backend 3D API implementation
. */ | 212 surface before the draw. This may be different than the original src
data config in |
| 210 bool fSwapRAndB; | 213 order to compensate for swizzling that will occur when drawing. */ |
| 214 GrPixelConfig fWriteConfig; |
| 211 }; | 215 }; |
| 212 | 216 |
| 213 /** | 217 /** |
| 214 * Used to negotiate whether and how an intermediate surface should be used
to write pixels to | 218 * Used to negotiate whether and how an intermediate surface should be used
to write pixels to |
| 215 * a GrSurface. If this returns false then GrGpu could not deduce an interme
diate draw | 219 * a GrSurface. If this returns false then GrGpu could not deduce an interme
diate draw |
| 216 * that would allow a successful transfer of the src pixels to the dst. The
passed width, | 220 * that would allow a successful transfer of the src pixels to the dst. The
passed width, |
| 217 * height, and rowBytes, must be non-zero and already reflect clipping to th
e dst bounds. | 221 * height, and rowBytes, must be non-zero and already reflect clipping to th
e dst bounds. |
| 218 */ | 222 */ |
| 219 bool getWritePixelsInfo(GrSurface* dstSurface, int width, int height, size_t
rowBytes, | 223 bool getWritePixelsInfo(GrSurface* dstSurface, int width, int height, size_t
rowBytes, |
| 220 GrPixelConfig srcConfig, DrawPreference*, WritePixel
TempDrawInfo*); | 224 GrPixelConfig srcConfig, DrawPreference*, WritePixel
TempDrawInfo*); |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 ResetTimestamp fResetTi
mestamp; | 571 ResetTimestamp fResetTi
mestamp; |
| 568 uint32_t fResetBi
ts; | 572 uint32_t fResetBi
ts; |
| 569 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. | 573 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. |
| 570 GrContext* fContext
; | 574 GrContext* fContext
; |
| 571 | 575 |
| 572 friend class GrPathRendering; | 576 friend class GrPathRendering; |
| 573 typedef SkRefCnt INHERITED; | 577 typedef SkRefCnt INHERITED; |
| 574 }; | 578 }; |
| 575 | 579 |
| 576 #endif | 580 #endif |
| OLD | NEW |