Switch MDB GrContextOptions over to Enable style
Change-Id: Id6541c346a13649c89ca3b9ccb13972976f9b973 Reviewed-on: https://skia-review.googlesource.com/105603 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
This commit is contained in:
parent
f8cac79227
commit
a3f70261cc
@ -69,6 +69,9 @@ protected:
|
|||||||
}
|
}
|
||||||
fContext = SkAtlasTextContext::Make(fRenderer);
|
fContext = SkAtlasTextContext::Make(fRenderer);
|
||||||
auto targetHandle = fRenderer->makeTargetHandle(kSize, kSize);
|
auto targetHandle = fRenderer->makeTargetHandle(kSize, kSize);
|
||||||
|
if (!targetHandle) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
fTarget = SkAtlasTextTarget::Make(fContext, kSize, kSize, targetHandle);
|
fTarget = SkAtlasTextTarget::Make(fContext, kSize, kSize, targetHandle);
|
||||||
|
|
||||||
fTypefaces[0] = sk_tool_utils::create_portable_typeface("serif", SkFontStyle::Italic());
|
fTypefaces[0] = sk_tool_utils::create_portable_typeface("serif", SkFontStyle::Italic());
|
||||||
@ -82,7 +85,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onDraw(SkCanvas* canvas) override {
|
void onDraw(SkCanvas* canvas) override {
|
||||||
if (!fRenderer) {
|
if (!fRenderer || !fTarget || !fTarget->handle()) {
|
||||||
canvas->clear(SK_ColorRED);
|
canvas->clear(SK_ColorRED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,7 @@
|
|||||||
# found in the LICENSE file.
|
# found in the LICENSE file.
|
||||||
flutter_defines = [
|
flutter_defines = [
|
||||||
"SK_SUPPORT_LEGACY_IMAGE_ENCODE_API",
|
"SK_SUPPORT_LEGACY_IMAGE_ENCODE_API",
|
||||||
|
"SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION",
|
||||||
|
"SK_DISABLE_RENDER_TARGET_SORTING",
|
||||||
"SK_SUPPORT_LEGACY_RECTMAKELARGEST",
|
"SK_SUPPORT_LEGACY_RECTMAKELARGEST",
|
||||||
]
|
]
|
||||||
|
@ -144,14 +144,14 @@ struct GrContextOptions {
|
|||||||
* Allow Ganesh to explicitly allocate resources at flush time rather than incrementally while
|
* Allow Ganesh to explicitly allocate resources at flush time rather than incrementally while
|
||||||
* drawing. This will eventually just be the way it is but, for now, it is optional.
|
* drawing. This will eventually just be the way it is but, for now, it is optional.
|
||||||
*/
|
*/
|
||||||
bool fExplicitlyAllocateGPUResources = false;
|
Enable fExplicitlyAllocateGPUResources = Enable::kDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow Ganesh to sort the opLists prior to allocating resources. This is an optional
|
* Allow Ganesh to sort the opLists prior to allocating resources. This is an optional
|
||||||
* behavior that is only relevant when 'fExplicitlyAllocateGPUResources' is enabled.
|
* behavior that is only relevant when 'fExplicitlyAllocateGPUResources' is enabled.
|
||||||
* Eventually this will just be what is done and will not be optional.
|
* Eventually this will just be what is done and will not be optional.
|
||||||
*/
|
*/
|
||||||
bool fSortRenderTargets = false;
|
Enable fSortRenderTargets = Enable::kDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers.
|
* Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers.
|
||||||
|
@ -31,6 +31,41 @@
|
|||||||
#include "GrTracing.h"
|
#include "GrTracing.h"
|
||||||
#include "text/GrAtlasTextContext.h"
|
#include "text/GrAtlasTextContext.h"
|
||||||
|
|
||||||
|
// Turn on/off the sorting of opLists at flush time
|
||||||
|
#ifndef SK_DISABLE_RENDER_TARGET_SORTING
|
||||||
|
#define SK_DISABLE_RENDER_TARGET_SORTING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SK_DISABLE_RENDER_TARGET_SORTING
|
||||||
|
static const bool kDefaultSortRenderTargets = false;
|
||||||
|
#else
|
||||||
|
static const bool kDefaultSortRenderTargets = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GrDrawingManager::GrDrawingManager(GrContext* context,
|
||||||
|
const GrPathRendererChain::Options& optionsForPathRendererChain,
|
||||||
|
const GrAtlasTextContext::Options& optionsForAtlasTextContext,
|
||||||
|
GrSingleOwner* singleOwner,
|
||||||
|
GrContextOptions::Enable sortRenderTargets)
|
||||||
|
: fContext(context)
|
||||||
|
, fOptionsForPathRendererChain(optionsForPathRendererChain)
|
||||||
|
, fOptionsForAtlasTextContext(optionsForAtlasTextContext)
|
||||||
|
, fSingleOwner(singleOwner)
|
||||||
|
, fAbandoned(false)
|
||||||
|
, fAtlasTextContext(nullptr)
|
||||||
|
, fPathRendererChain(nullptr)
|
||||||
|
, fSoftwarePathRenderer(nullptr)
|
||||||
|
, fFlushing(false) {
|
||||||
|
|
||||||
|
if (GrContextOptions::Enable::kNo == sortRenderTargets) {
|
||||||
|
fSortRenderTargets = false;
|
||||||
|
} else if (GrContextOptions::Enable::kYes == sortRenderTargets) {
|
||||||
|
fSortRenderTargets = true;
|
||||||
|
} else {
|
||||||
|
fSortRenderTargets = kDefaultSortRenderTargets;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GrDrawingManager::cleanup() {
|
void GrDrawingManager::cleanup() {
|
||||||
for (int i = 0; i < fOpLists.count(); ++i) {
|
for (int i = 0; i < fOpLists.count(); ++i) {
|
||||||
// no opList should receive a new command after this
|
// no opList should receive a new command after this
|
||||||
|
@ -83,22 +83,9 @@ public:
|
|||||||
void copyOpListsFromDDL(const SkDeferredDisplayList*, GrRenderTargetProxy* newDest);
|
void copyOpListsFromDDL(const SkDeferredDisplayList*, GrRenderTargetProxy* newDest);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GrDrawingManager(GrContext* context,
|
GrDrawingManager(GrContext*, const GrPathRendererChain::Options&,
|
||||||
const GrPathRendererChain::Options& optionsForPathRendererChain,
|
const GrAtlasTextContext::Options&, GrSingleOwner*,
|
||||||
const GrAtlasTextContext::Options& optionsForAtlasTextContext,
|
GrContextOptions::Enable sortRenderTargets);
|
||||||
GrSingleOwner* singleOwner,
|
|
||||||
bool sortRenderTargets)
|
|
||||||
: fContext(context)
|
|
||||||
, fOptionsForPathRendererChain(optionsForPathRendererChain)
|
|
||||||
, fOptionsForAtlasTextContext(optionsForAtlasTextContext)
|
|
||||||
, fSingleOwner(singleOwner)
|
|
||||||
, fAbandoned(false)
|
|
||||||
, fAtlasTextContext(nullptr)
|
|
||||||
, fPathRendererChain(nullptr)
|
|
||||||
, fSoftwarePathRenderer(nullptr)
|
|
||||||
, fFlushing(false)
|
|
||||||
, fSortRenderTargets(sortRenderTargets) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void abandon();
|
void abandon();
|
||||||
void cleanup();
|
void cleanup();
|
||||||
|
@ -30,18 +30,36 @@ GR_DECLARE_STATIC_UNIQUE_KEY(gQuadIndexBufferKey);
|
|||||||
|
|
||||||
const uint32_t GrResourceProvider::kMinScratchTextureSize = 16;
|
const uint32_t GrResourceProvider::kMinScratchTextureSize = 16;
|
||||||
|
|
||||||
|
// Turn on/off the explicit distribution of GPU resources at flush time
|
||||||
|
#ifndef SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION
|
||||||
|
#define SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION
|
||||||
|
static const bool kDefaultExplicitlyAllocateGPUResources = false;
|
||||||
|
#else
|
||||||
|
static const bool kDefaultExplicitlyAllocateGPUResources = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ASSERT_SINGLE_OWNER \
|
#define ASSERT_SINGLE_OWNER \
|
||||||
SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(fSingleOwner);)
|
SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(fSingleOwner);)
|
||||||
|
|
||||||
GrResourceProvider::GrResourceProvider(GrGpu* gpu, GrResourceCache* cache, GrSingleOwner* owner,
|
GrResourceProvider::GrResourceProvider(GrGpu* gpu, GrResourceCache* cache, GrSingleOwner* owner,
|
||||||
bool explicitlyAllocateGPUResources)
|
GrContextOptions::Enable explicitlyAllocateGPUResources)
|
||||||
: fCache(cache)
|
: fCache(cache)
|
||||||
, fGpu(gpu)
|
, fGpu(gpu)
|
||||||
, fExplicitlyAllocateGPUResources(explicitlyAllocateGPUResources)
|
|
||||||
#ifdef SK_DEBUG
|
#ifdef SK_DEBUG
|
||||||
, fSingleOwner(owner)
|
, fSingleOwner(owner)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
if (GrContextOptions::Enable::kNo == explicitlyAllocateGPUResources) {
|
||||||
|
fExplicitlyAllocateGPUResources = false;
|
||||||
|
} else if (GrContextOptions::Enable::kYes == explicitlyAllocateGPUResources) {
|
||||||
|
fExplicitlyAllocateGPUResources = true;
|
||||||
|
} else {
|
||||||
|
fExplicitlyAllocateGPUResources = kDefaultExplicitlyAllocateGPUResources;
|
||||||
|
}
|
||||||
|
|
||||||
fCaps = sk_ref_sp(fGpu->caps());
|
fCaps = sk_ref_sp(fGpu->caps());
|
||||||
|
|
||||||
GR_DEFINE_STATIC_UNIQUE_KEY(gQuadIndexBufferKey);
|
GR_DEFINE_STATIC_UNIQUE_KEY(gQuadIndexBufferKey);
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#define GrResourceProvider_DEFINED
|
#define GrResourceProvider_DEFINED
|
||||||
|
|
||||||
#include "GrBuffer.h"
|
#include "GrBuffer.h"
|
||||||
|
#include "GrContextOptions.h"
|
||||||
#include "GrPathRange.h"
|
#include "GrPathRange.h"
|
||||||
#include "GrResourceCache.h"
|
#include "GrResourceCache.h"
|
||||||
#include "SkImageInfo.h"
|
#include "SkImageInfo.h"
|
||||||
@ -39,7 +40,8 @@ class SkTypeface;
|
|||||||
*/
|
*/
|
||||||
class GrResourceProvider {
|
class GrResourceProvider {
|
||||||
public:
|
public:
|
||||||
GrResourceProvider(GrGpu*, GrResourceCache*, GrSingleOwner*, bool explicitlyAllocate);
|
GrResourceProvider(GrGpu*, GrResourceCache*, GrSingleOwner*,
|
||||||
|
GrContextOptions::Enable explicitlyAllocateGPUResources);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a resource in the cache, based on the specified key. Prior to calling this, the caller
|
* Finds a resource in the cache, based on the specified key. Prior to calling this, the caller
|
||||||
|
@ -95,10 +95,8 @@ void GrTextureProxyPriv::setDeferredUploader(std::unique_ptr<GrDeferredProxyUplo
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GrTextureProxyPriv::scheduleUpload(GrOpFlushState* flushState) {
|
void GrTextureProxyPriv::scheduleUpload(GrOpFlushState* flushState) {
|
||||||
SkASSERT(fTextureProxy->fDeferredUploader);
|
// The texture proxy's contents may already have been uploaded or instantiation may have failed
|
||||||
|
if (fTextureProxy->fDeferredUploader && fTextureProxy->fTarget) {
|
||||||
// Instantiate might have failed
|
|
||||||
if (fTextureProxy->fTarget) {
|
|
||||||
fTextureProxy->fDeferredUploader->scheduleUpload(flushState, fTextureProxy);
|
fTextureProxy->fDeferredUploader->scheduleUpload(flushState, fTextureProxy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user