Merge "Update GrContext creation calls to use sk_sp"

This commit is contained in:
Greg Daniel
2017-12-11 18:03:36 +00:00
committed by Android (Google) Code Review
7 changed files with 16 additions and 14 deletions

View File

@@ -45,8 +45,7 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4
if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
sk_sp<const GrGLInterface> glInterface(GrGLCreateNativeInterface());
LOG_ALWAYS_FATAL_IF(!glInterface.get());
grContext.reset(GrContext::Create(GrBackend::kOpenGL_GrBackend,
(GrBackendContext)glInterface.get()));
grContext = GrContext::MakeGL(std::move(glInterface));
} else {
grContext->resetContext();
}

View File

@@ -53,13 +53,13 @@ CacheManager::CacheManager(const DisplayInfo& display) : mMaxSurfaceArea(display
}
}
void CacheManager::reset(GrContext* context) {
if (context != mGrContext.get()) {
void CacheManager::reset(sk_sp<GrContext> context) {
if (context != mGrContext) {
destroy();
}
if (context) {
mGrContext = sk_ref_sp(context);
mGrContext = std::move(context);
mGrContext->getResourceCacheLimits(&mMaxResources, nullptr);
updateContextCacheSizes();
}

View File

@@ -61,7 +61,7 @@ private:
CacheManager(const DisplayInfo& display);
void reset(GrContext* grContext);
void reset(sk_sp<GrContext> grContext);
void destroy();
void updateContextCacheSizes();

View File

@@ -141,8 +141,9 @@ void EglManager::initialize() {
GrContextOptions options;
options.fDisableDistanceFieldPaths = true;
mRenderThread.cacheManager().configureContext(&options);
mRenderThread.setGrContext(GrContext::Create(GrBackend::kOpenGL_GrBackend,
(GrBackendContext)glInterface.get(), options));
sk_sp<GrContext> grContext(GrContext::MakeGL(std::move(glInterface), options));
LOG_ALWAYS_FATAL_IF(!grContext.get());
mRenderThread.setGrContext(grContext);
}
}

View File

@@ -173,12 +173,12 @@ Readback& RenderThread::readback() {
return *mReadback;
}
void RenderThread::setGrContext(GrContext* context) {
void RenderThread::setGrContext(sk_sp<GrContext> context) {
mCacheManager->reset(context);
if (mGrContext.get()) {
if (mGrContext) {
mGrContext->releaseResourcesAndAbandonContext();
}
mGrContext.reset(context);
mGrContext = std::move(context);
}
int RenderThread::displayEventReceiverCallback(int fd, int events, void* data) {

View File

@@ -88,7 +88,7 @@ public:
const DisplayInfo& mainDisplayInfo() { return mDisplayInfo; }
GrContext* getGrContext() const { return mGrContext.get(); }
void setGrContext(GrContext* cxt);
void setGrContext(sk_sp<GrContext> cxt);
CacheManager& cacheManager() { return *mCacheManager; }
VulkanManager& vulkanManager() { return *mVkManager; }

View File

@@ -58,6 +58,7 @@ void VulkanManager::initialize() {
mBackendContext.reset(GrVkBackendContext::Create(vkGetInstanceProcAddr, vkGetDeviceProcAddr,
&mPresentQueueIndex, canPresent));
LOG_ALWAYS_FATAL_IF(!mBackendContext.get());
// Get all the addresses of needed vulkan functions
VkInstance instance = mBackendContext->fInstance;
@@ -110,8 +111,9 @@ void VulkanManager::initialize() {
GrContextOptions options;
options.fDisableDistanceFieldPaths = true;
mRenderThread.cacheManager().configureContext(&options);
mRenderThread.setGrContext(
GrContext::Create(kVulkan_GrBackend, (GrBackendContext)mBackendContext.get(), options));
sk_sp<GrContext> grContext(GrContext::MakeVulkan(mBackendContext, options));
LOG_ALWAYS_FATAL_IF(!grContext.get());
mRenderThread.setGrContext(grContext);
DeviceInfo::initialize(mRenderThread.getGrContext()->caps()->maxRenderTargetSize());
if (Properties::enablePartialUpdates && Properties::useBufferAge) {