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

Unified 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: Removing the concept of a dirty mipmap. It is expected that the texture upload provides the mipmaps. Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrGpu.h
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
index d8e5681de150eca89714c9d9a8a831772f1b5b35..92ee6dadf237ad664f4ee5325c9693366289ec2b 100644
--- a/src/gpu/GrGpu.h
+++ b/src/gpu/GrGpu.h
@@ -12,7 +12,9 @@
#include "GrProgramDesc.h"
#include "GrStencil.h"
#include "GrXferProcessor.h"
+#include "SkMipMapLevel.h"
#include "SkPath.h"
+#include "SkTArray.h"
class GrBatchTracker;
class GrContext;
@@ -79,18 +81,24 @@ public:
*
* @param desc describes the texture to be created.
* @param budgeted does this texture count against the resource cache budget?
- * @param srcData texel data to load texture. Begins with full-size
- * palette data for paletted textures. For compressed
- * formats it contains the compressed pixel data. Otherwise,
- * it contains width*height texels. If nullptr texture data
- * is uninitialized.
- * @param rowBytes the number of bytes between consecutive rows. Zero
- * means rows are tightly packed. This field is ignored
- * for compressed formats.
- *
+ * @param texels array of mipmap levels containing texel data to load.
+ * Begins with full-size palette data for paletted textures.
+ * For compressed formats it contains the compressed pixel data.
+ * Otherwise, it contains width*height texels. If there is only one
+ * element and it contains nullptr fTexels, texture data is
+ * uninitialized.
* @return The texture object if successful, otherwise nullptr.
*/
GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted,
+ const SkTArray<SkMipMapLevel>& texels);
+
+ /**
+ * This function is a shim which creates a SkTArray<SkMipMapLevel> of size 1.
+ * It then calls createTexture() with that SkTArray.
+ * This is so older code which currently uses this function signature will
bsalomon 2015/09/15 13:14:11 -older
+ * continue to work.
+ */
+ GrTexture* createTexture(const GrSurfaceDesc& desc, bool budgeted,
const void* srcData, size_t rowBytes);
/**
@@ -181,7 +189,7 @@ public:
bool getReadPixelsInfo(GrSurface* srcSurface, int readWidth, int readHeight, size_t rowBytes,
GrPixelConfig readConfig, DrawPreference*, ReadPixelTempDrawInfo*);
- /** Info struct returned by getWritePixelsInfo about performing an intermediate draw in order
+ /** Info struct returned by getWritePixelsInfo about performing an intermediate draw in order
to write pixels to a GrSurface for either performance or correctness reasons. */
struct WritePixelTempDrawInfo {
/** If the GrGpu is requesting that the caller upload to an intermediate surface and draw
@@ -203,7 +211,7 @@ public:
* that would allow a successful transfer of the src pixels to the dst. The passed width,
* height, and rowBytes, must be non-zero and already reflect clipping to the dst bounds.
*/
- bool getWritePixelsInfo(GrSurface* dstSurface, int width, int height, size_t rowBytes,
+ bool getWritePixelsInfo(GrSurface* dstSurface, int width, int height,
GrPixelConfig srcConfig, DrawPreference*, WritePixelTempDrawInfo*);
/**
@@ -238,9 +246,18 @@ public:
* @param width width of rectangle to write in pixels.
* @param height height of rectangle to write in pixels.
* @param config the pixel config of the source buffer
- * @param buffer memory to read pixels from
- * @param rowBytes number of bytes between consecutive rows. Zero
- * means rows are tightly packed.
+ * @param texels array of mipmap levels containing texture data
+ */
+ bool writePixels(GrSurface* surface,
+ int left, int top, int width, int height,
+ GrPixelConfig config,
+ const SkTArray<SkMipMapLevel>& texels);
+
+ /**
+ * This function is a shim which creates a SkTArray<SkMipMapLevel> of size 1.
+ * It then calls writePixels() with that SkTArray.
+ * This is so older code which currently uses this function signature will
bsalomon 2015/09/15 13:14:11 -older
+ * continue to work.
*/
bool writePixels(GrSurface* surface,
int left, int top, int width, int height,
@@ -421,10 +438,11 @@ private:
// onCreateTexture/CompressedTexture are called.
virtual GrTexture* onCreateTexture(const GrSurfaceDesc& desc,
GrGpuResource::LifeCycle lifeCycle,
- const void* srcData, size_t rowBytes) = 0;
+ const SkTArray<SkMipMapLevel>& texels) = 0;
virtual GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc,
GrGpuResource::LifeCycle lifeCycle,
- const void* srcData) = 0;
+ const SkTArray<SkMipMapLevel>& texels) = 0;
+
virtual GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&, GrWrapOwnership) = 0;
virtual GrRenderTarget* onWrapBackendRenderTarget(const GrBackendRenderTargetDesc&,
GrWrapOwnership) = 0;
@@ -445,7 +463,7 @@ private:
virtual bool onGetReadPixelsInfo(GrSurface* srcSurface, int readWidth, int readHeight,
size_t rowBytes, GrPixelConfig readConfig, DrawPreference*,
ReadPixelTempDrawInfo*) = 0;
- virtual bool onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height, size_t rowBytes,
+ virtual bool onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height,
GrPixelConfig srcConfig, DrawPreference*,
WritePixelTempDrawInfo*) = 0;
@@ -460,8 +478,8 @@ private:
// overridden by backend-specific derived class to perform the surface write
virtual bool onWritePixels(GrSurface*,
int left, int top, int width, int height,
- GrPixelConfig config, const void* buffer,
- size_t rowBytes) = 0;
+ GrPixelConfig config,
+ const SkTArray<SkMipMapLevel>& texels) = 0;
// overridden by backend-specific derived class to perform the resolve
virtual void onResolveRenderTarget(GrRenderTarget* target) = 0;

Powered by Google App Engine
This is Rietveld 408576698