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

Side by Side Diff: src/gpu/GrGpu.h

Issue 1249543003: Creating functions for uploading a mipmapped texture. (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: No longer exposing SkMipMap and SkCachedData. Created 5 years, 4 months 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
OLDNEW
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 "GrTraceMarker.h" 14 #include "GrTraceMarker.h"
15 #include "GrXferProcessor.h" 15 #include "GrXferProcessor.h"
16 #include "SkMipMapLevel.h"
16 #include "SkPath.h" 17 #include "SkPath.h"
18 #include "SkTArray.h"
17 19
18 class GrBatchTracker; 20 class GrBatchTracker;
19 class GrContext; 21 class GrContext;
20 class GrGLContext; 22 class GrGLContext;
21 class GrIndexBuffer; 23 class GrIndexBuffer;
22 class GrNonInstancedVertices; 24 class GrNonInstancedVertices;
23 class GrPath; 25 class GrPath;
24 class GrPathRange; 26 class GrPathRange;
25 class GrPathRenderer; 27 class GrPathRenderer;
26 class GrPathRendererChain; 28 class GrPathRendererChain;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 void markContextDirty(uint32_t state = kAll_GrBackendState) { fResetBits |= state; } 75 void markContextDirty(uint32_t state = kAll_GrBackendState) { fResetBits |= state; }
74 76
75 /** 77 /**
76 * Creates a texture object. If kRenderTarget_GrSurfaceFlag the texture can 78 * Creates a texture object. If kRenderTarget_GrSurfaceFlag the texture can
77 * be used as a render target by calling GrTexture::asRenderTarget(). Not al l 79 * be used as a render target by calling GrTexture::asRenderTarget(). Not al l
78 * pixel configs can be used as render targets. Support for configs as textu res 80 * pixel configs can be used as render targets. Support for configs as textu res
79 * or render targets can be checked using GrCaps. 81 * or render targets can be checked using GrCaps.
80 * 82 *
81 * @param desc describes the texture to be created. 83 * @param desc describes the texture to be created.
82 * @param budgeted does this texture count against the resource cache bud get? 84 * @param budgeted does this texture count against the resource cache bud get?
83 * @param srcData texel data to load texture. Begins with full-size 85 * @param texels array of mipmap levels containing texel data to load.
84 * palette data for paletted textures. For compressed 86 * Begins with full-size palette data for paletted textur es.
85 * formats it contains the compressed pixel data. Otherwi se, 87 * For compressed formats it contains the compressed pixe l data.
86 * it contains width*height texels. If NULL texture data 88 * Otherwise, it contains width*height texels. If there i s only one
87 * is uninitialized. 89 * element and it contains NULL fTexels, texture data is
88 * @param rowBytes the number of bytes between consecutive rows. Zero 90 * uninitialized.
89 * means rows are tightly packed. This field is ignored
90 * for compressed formats.
91 * 91 *
92 * @return The texture object if successful, otherwise NULL. 92 * @return The texture object if successful, otherwise NULL.
93 */ 93 */
94 GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted, 94 GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted,
95 SkTArray<SkMipMapLevel>& texels);
96
97 /*
98 * This function is a shim which creates a SkTArray<SkMipMapLevel> of size 1 .
99 * It then calls createTexture() with that SkTArray.
100 * This is so older code which currently uses this function signature will
101 * continue to work.
102 */
103 GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted,
95 const void* srcData, size_t rowBytes); 104 const void* srcData, size_t rowBytes);
96 105
97 /** 106 /**
98 * Implements GrContext::wrapBackendTexture 107 * Implements GrContext::wrapBackendTexture
99 */ 108 */
100 GrTexture* wrapBackendTexture(const GrBackendTextureDesc&, GrWrapOwnership); 109 GrTexture* wrapBackendTexture(const GrBackendTextureDesc&, GrWrapOwnership);
101 110
102 /** 111 /**
103 * Implements GrContext::wrapBackendTexture 112 * Implements GrContext::wrapBackendTexture
104 */ 113 */
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 GrPixelConfig config, void* buffer, size_t rowBytes); 216 GrPixelConfig config, void* buffer, size_t rowBytes);
208 217
209 /** 218 /**
210 * Updates the pixels in a rectangle of a texture. 219 * Updates the pixels in a rectangle of a texture.
211 * 220 *
212 * @param left left edge of the rectangle to write (inclusive) 221 * @param left left edge of the rectangle to write (inclusive)
213 * @param top top edge of the rectangle to write (inclusive) 222 * @param top top edge of the rectangle to write (inclusive)
214 * @param width width of rectangle to write in pixels. 223 * @param width width of rectangle to write in pixels.
215 * @param height height of rectangle to write in pixels. 224 * @param height height of rectangle to write in pixels.
216 * @param config the pixel config of the source buffer 225 * @param config the pixel config of the source buffer
217 * @param buffer memory to read pixels from 226 * @param texels array of mipmap levels containing texture data
218 * @param rowBytes number of bytes between consecutive rows. Zero
219 * means rows are tightly packed.
220 */ 227 */
221 bool writeTexturePixels(GrTexture* texture, 228 bool writeTexturePixels(GrTexture* texture,
222 int left, int top, int width, int height, 229 int left, int top, int width, int height,
230 GrPixelConfig config,
231 SkTArray<SkMipMapLevel>& texels);
232
233 /*
234 * This function is a shim which creates a SkTArray<SkMipMapLEvel> of size 1 .
235 * It then calls writeTexturePixels() with that SkTArray.
236 * This is so older code which currently uses this function signature will
237 * continue to work.
238 */
239 bool writeTexturePixels(GrTexture* texture,
240 int left, int top, int width, int height,
223 GrPixelConfig config, const void* buffer, 241 GrPixelConfig config, const void* buffer,
224 size_t rowBytes); 242 size_t rowBytes);
225 243
226 /** 244 /**
227 * Clear the passed in render target. Ignores the draw state and clip. Clear s the whole thing if 245 * Clear the passed in render target. Ignores the draw state and clip. Clear s the whole thing if
228 * rect is NULL, otherwise just the rect. If canIgnoreRect is set then the e ntire render target 246 * rect is NULL, otherwise just the rect. If canIgnoreRect is set then the e ntire render target
229 * can be optionally cleared. 247 * can be optionally cleared.
230 */ 248 */
231 void clear(const SkIRect* rect, GrColor color, bool canIgnoreRect,GrRenderTa rget* renderTarget); 249 void clear(const SkIRect* rect, GrColor color, bool canIgnoreRect,
250 GrRenderTarget* renderTarget);
232 251
233 252
234 void clearStencilClip(const SkIRect& rect, bool insideClip, GrRenderTarget* renderTarget); 253 void clearStencilClip(const SkIRect& rect, bool insideClip, GrRenderTarget* renderTarget);
235 254
236 /** 255 /**
237 * Discards the contents render target. NULL indicates that the current rend er target should 256 * Discards the contents render target. NULL indicates that the current rend er target should
238 * be discarded. 257 * be discarded.
239 **/ 258 **/
240 virtual void discard(GrRenderTarget* = NULL) = 0; 259 virtual void discard(GrRenderTarget* = NULL) = 0;
241 260
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 private: 416 private:
398 // called when the 3D context state is unknown. Subclass should emit any 417 // called when the 3D context state is unknown. Subclass should emit any
399 // assumed 3D context state and dirty any state cache. 418 // assumed 3D context state and dirty any state cache.
400 virtual void onResetContext(uint32_t resetBits) = 0; 419 virtual void onResetContext(uint32_t resetBits) = 0;
401 420
402 // overridden by backend-specific derived class to create objects. 421 // overridden by backend-specific derived class to create objects.
403 // Texture size and sample size will have already been validated in base cla ss before 422 // Texture size and sample size will have already been validated in base cla ss before
404 // onCreateTexture/CompressedTexture are called. 423 // onCreateTexture/CompressedTexture are called.
405 virtual GrTexture* onCreateTexture(const GrSurfaceDesc& desc, 424 virtual GrTexture* onCreateTexture(const GrSurfaceDesc& desc,
406 GrGpuResource::LifeCycle lifeCycle, 425 GrGpuResource::LifeCycle lifeCycle,
407 const void* srcData, size_t rowBytes) = 0 ; 426 SkTArray<SkMipMapLevel>& texels) = 0;
408 virtual GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc, 427 virtual GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc,
409 GrGpuResource::LifeCycle lifeCy cle, 428 GrGpuResource::LifeCycle lifeCy cle,
410 const void* srcData) = 0; 429 SkTArray<SkMipMapLevel>& texels ) = 0;
430
411 virtual GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&, GrWrapO wnership) = 0; 431 virtual GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&, GrWrapO wnership) = 0;
412 virtual GrRenderTarget* onWrapBackendRenderTarget(const GrBackendRenderTarge tDesc&, 432 virtual GrRenderTarget* onWrapBackendRenderTarget(const GrBackendRenderTarge tDesc&,
413 GrWrapOwnership) = 0; 433 GrWrapOwnership) = 0;
414 virtual GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) = 0; 434 virtual GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) = 0;
415 virtual GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) = 0; 435 virtual GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) = 0;
416 436
417 // overridden by backend-specific derived class to perform the clear. 437 // overridden by backend-specific derived class to perform the clear.
418 virtual void onClear(GrRenderTarget*, const SkIRect* rect, GrColor color, 438 virtual void onClear(GrRenderTarget*, const SkIRect* rect, GrColor color,
419 bool canIgnoreRect) = 0; 439 bool canIgnoreRect) = 0;
420 440
421 441
422 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is 442 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is
423 // ONLY used by the the clip target 443 // ONLY used by the the clip target
424 virtual void onClearStencilClip(GrRenderTarget*, const SkIRect& rect, bool i nsideClip) = 0; 444 virtual void onClearStencilClip(GrRenderTarget*, const SkIRect& rect, bool i nsideClip) = 0;
425 445
426 // overridden by backend-specific derived class to perform the draw call. 446 // overridden by backend-specific derived class to perform the draw call.
427 virtual void onDraw(const DrawArgs&, const GrNonInstancedVertices&) = 0; 447 virtual void onDraw(const DrawArgs&, const GrNonInstancedVertices&) = 0;
428 448
429 virtual bool onReadPixels(GrRenderTarget* target, 449 virtual bool onReadPixels(GrRenderTarget* target,
430 int left, int top, int width, int height, 450 int left, int top, int width, int height,
431 GrPixelConfig, 451 GrPixelConfig,
432 void* buffer, 452 void* buffer,
433 size_t rowBytes) = 0; 453 size_t rowBytes) = 0;
434 454
435 // overridden by backend-specific derived class to perform the texture updat e 455 // overridden by backend-specific derived class to perform the texture updat e
436 virtual bool onWriteTexturePixels(GrTexture* texture, 456 virtual bool onWriteTexturePixels(GrTexture* texture,
437 int left, int top, int width, int height, 457 int left, int top, int width, int height,
438 GrPixelConfig config, const void* buffer, 458 GrPixelConfig config,
439 size_t rowBytes) = 0; 459 SkTArray<SkMipMapLevel>& texel) = 0;
440 460
441 // overridden by backend-specific derived class to perform the resolve 461 // overridden by backend-specific derived class to perform the resolve
442 virtual void onResolveRenderTarget(GrRenderTarget* target) = 0; 462 virtual void onResolveRenderTarget(GrRenderTarget* target) = 0;
443 463
444 // width and height may be larger than rt (if underlying API allows it). 464 // width and height may be larger than rt (if underlying API allows it).
445 // Should attach the SB to the RT. Returns false if compatible sb could 465 // Should attach the SB to the RT. Returns false if compatible sb could
446 // not be created. 466 // not be created.
447 virtual bool createStencilAttachmentForRenderTarget(GrRenderTarget*, int wid th, int height) = 0; 467 virtual bool createStencilAttachmentForRenderTarget(GrRenderTarget*, int wid th, int height) = 0;
448 468
449 // attaches an existing SB to an existing RT. 469 // attaches an existing SB to an existing RT.
(...skipping 24 matching lines...) Expand all
474 GrTraceMarkerSet fActiveT raceMarkers; 494 GrTraceMarkerSet fActiveT raceMarkers;
475 GrTraceMarkerSet fStoredT raceMarkers; 495 GrTraceMarkerSet fStoredT raceMarkers;
476 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. 496 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu.
477 GrContext* fContext ; 497 GrContext* fContext ;
478 498
479 friend class GrPathRendering; 499 friend class GrPathRendering;
480 typedef SkRefCnt INHERITED; 500 typedef SkRefCnt INHERITED;
481 }; 501 };
482 502
483 #endif 503 #endif
OLDNEW
« no previous file with comments | « src/core/SkMipMapLevel.cpp ('k') | src/gpu/GrGpu.cpp » ('j') | src/gpu/GrGpu.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698