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

Side by Side Diff: include/gpu/GrTypes.h

Issue 1623653002: skia: Add support for CHROMIUM_image backed textures. (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Add a context parameter to function pointers. Created 4 years, 10 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 2010 Google Inc. 2 * Copyright 2010 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 GrTypes_DEFINED 8 #ifndef GrTypes_DEFINED
9 #define GrTypes_DEFINED 9 #define GrTypes_DEFINED
10 10
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 kZeroCopy_GrSurfaceFlag = 0x2, 402 kZeroCopy_GrSurfaceFlag = 0x2,
403 /** 403 /**
404 * Indicates that all allocations (color buffer, FBO completeness, etc) 404 * Indicates that all allocations (color buffer, FBO completeness, etc)
405 * should be verified. 405 * should be verified.
406 */ 406 */
407 kCheckAllocation_GrSurfaceFlag = 0x4, 407 kCheckAllocation_GrSurfaceFlag = 0x4,
408 }; 408 };
409 409
410 GR_MAKE_BITFIELD_OPS(GrSurfaceFlags) 410 GR_MAKE_BITFIELD_OPS(GrSurfaceFlags)
411 411
412 // opaque type for 3D API object handles
413 typedef intptr_t GrBackendObject;
414
415 /**
416 * An container of function pointers which consumers of Skia can fill in and
417 * pass to Skia. Skia will use these function pointers in place of its backend
418 * API texture creation function. Either all of the function pointers should be
419 * filled in, or they should all be nullptr.
420 */
421 struct GrTextureStorageAllocator {
422 GrTextureStorageAllocator()
423 : fAllocateTextureStorage(nullptr)
424 , fDeallocateTextureStorage(nullptr) {
425 }
426
427 enum class Result {
428 kSucceededAndUploaded,
429 kSucceededWithoutUpload,
430 kFailed
431 };
432 typedef Result (*AllocateTextureStorageProc)(
433 void* ctx, GrBackendObject texture, unsigned width,
434 unsigned height, GrPixelConfig config, const void* srcData);
435 typedef void (*DeallocateTextureStorageProc)(void* ctx, GrBackendObject text ure);
436
437 /*
438 * Generates and binds a texture to |textureStorageTarget()|. Allocates
439 * storage for the texture.
440 *
441 * The MIN and MAX filters for the created texture must be GL_LINEAR. The
bsalomon 2016/02/01 14:54:42 In OpenGL, ...
erikchen 2016/02/01 22:58:32 Done.
442 * WRAP_S and WRAP_T must be GL_CLAMP_TO_EDGE.
443 *
444 * If |srcData| is not nullptr, then the implementation of this function
bsalomon 2016/02/01 14:54:42 I think we need an origin param as well. Also, may
erikchen 2016/02/01 22:58:32 Done and done.
445 * should attempt to upload the data into the texture. On successful upload,
446 * or if |srcData| is nullptr, returns kSucceededAndUploaded.
447 */
448 AllocateTextureStorageProc fAllocateTextureStorage;
449
450 /*
451 * Deallocate the storage for the given texture.
452 *
453 * Skia does not always destroy its outstanding textures. See
454 * GrContext::abandonContext() for more details. The consumer of Skia is
455 * responsible for making sure that all textures are destroyed, even if this
456 * callback is not invoked.
457 */
458 DeallocateTextureStorageProc fDeallocateTextureStorage;
459
460 /*
461 * The context to use when invoking fAllocateTextureStorage and
462 * fDeallocateTextureStorage.
463 */
464 void* fCtx;
465 };
466
412 /** 467 /**
413 * Some textures will be stored such that the upper and left edges of the conten t meet at the 468 * Some textures will be stored such that the upper and left edges of the conten t meet at the
414 * the origin (in texture coord space) and for other textures the lower and left edges meet at 469 * the origin (in texture coord space) and for other textures the lower and left edges meet at
415 * the origin. kDefault_GrSurfaceOrigin sets textures to TopLeft, and render tar gets 470 * the origin. kDefault_GrSurfaceOrigin sets textures to TopLeft, and render tar gets
416 * to BottomLeft. 471 * to BottomLeft.
417 */ 472 */
418 473
419 enum GrSurfaceOrigin { 474 enum GrSurfaceOrigin {
420 kDefault_GrSurfaceOrigin, // DEPRECATED; to be removed 475 kDefault_GrSurfaceOrigin, // DEPRECATED; to be removed
421 kTopLeft_GrSurfaceOrigin, 476 kTopLeft_GrSurfaceOrigin,
(...skipping 25 matching lines...) Expand all
447 GrPixelConfig fConfig; 502 GrPixelConfig fConfig;
448 503
449 /** 504 /**
450 * The number of samples per pixel or 0 to disable full scene AA. This only 505 * The number of samples per pixel or 0 to disable full scene AA. This only
451 * applies if the kRenderTarget_GrSurfaceFlag is set. The actual number 506 * applies if the kRenderTarget_GrSurfaceFlag is set. The actual number
452 * of samples may not exactly match the request. The request will be rounded 507 * of samples may not exactly match the request. The request will be rounded
453 * up to the next supported sample count, or down if it is larger than the 508 * up to the next supported sample count, or down if it is larger than the
454 * max supported count. 509 * max supported count.
455 */ 510 */
456 int fSampleCnt; 511 int fSampleCnt;
512
513 /**
514 * A custom platform-specific allocator to use in place of TexImage2D. All
bsalomon 2016/02/01 14:54:42 ...in place of the backend APIs usual texture crea
erikchen 2016/02/01 22:58:32 Done.
515 * surfaces derived from the original surface will have the same value for
bsalomon 2016/02/01 14:54:42 What exactly is meant here by surfaces derived fro
erikchen 2016/02/01 22:58:32 I was referring to RenderTargets created by copy-o
516 * fTextureStorageAllocator.
517 */
518 GrTextureStorageAllocator fTextureStorageAllocator;
457 }; 519 };
458 520
459 // Legacy alias 521 // Legacy alias
460 typedef GrSurfaceDesc GrTextureDesc; 522 typedef GrSurfaceDesc GrTextureDesc;
461 523
462 /** 524 /**
463 * Clips are composed from these objects. 525 * Clips are composed from these objects.
464 */ 526 */
465 enum GrClipType { 527 enum GrClipType {
466 kRect_ClipType, 528 kRect_ClipType,
467 kPath_ClipType 529 kPath_ClipType
468 }; 530 };
469 531
470 /////////////////////////////////////////////////////////////////////////////// 532 ///////////////////////////////////////////////////////////////////////////////
471 533
472 // opaque type for 3D API object handles
473 typedef intptr_t GrBackendObject;
474
475 534
476 /** Ownership rules for external GPU resources imported into Skia. */ 535 /** Ownership rules for external GPU resources imported into Skia. */
477 enum GrWrapOwnership { 536 enum GrWrapOwnership {
478 /** Skia will assume the client will keep the resource alive and Skia will n ot free it. */ 537 /** Skia will assume the client will keep the resource alive and Skia will n ot free it. */
479 kBorrow_GrWrapOwnership, 538 kBorrow_GrWrapOwnership,
480 539
481 /** Skia will assume ownership of the resource and free it. */ 540 /** Skia will assume ownership of the resource and free it. */
482 kAdopt_GrWrapOwnership, 541 kAdopt_GrWrapOwnership,
483 }; 542 };
484 543
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 return 4 * width * height; 677 return 4 * width * height;
619 } 678 }
620 } 679 }
621 680
622 /** 681 /**
623 * This value translates to reseting all the context state for any backend. 682 * This value translates to reseting all the context state for any backend.
624 */ 683 */
625 static const uint32_t kAll_GrBackendState = 0xffffffff; 684 static const uint32_t kAll_GrBackendState = 0xffffffff;
626 685
627 #endif 686 #endif
OLDNEW
« no previous file with comments | « include/core/SkSurface.h ('k') | src/gpu/SkGpuDevice.h » ('j') | src/gpu/gl/GrGLTexture.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698