Merge "More WebView HDR plumbing" into udc-dev
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "include/gpu/GpuTypes.h" // from Skia
|
#include "include/gpu/GpuTypes.h" // from Skia
|
||||||
#include "utils/GLUtils.h"
|
#include "utils/GLUtils.h"
|
||||||
#include <effects/GainmapRenderer.h>
|
#include <effects/GainmapRenderer.h>
|
||||||
|
#include "renderthread/CanvasContext.h"
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
namespace uirenderer {
|
namespace uirenderer {
|
||||||
@@ -131,6 +132,8 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) {
|
|||||||
mat4.getColMajor(&info.transform[0]);
|
mat4.getColMajor(&info.transform[0]);
|
||||||
info.color_space_ptr = canvas->imageInfo().colorSpace();
|
info.color_space_ptr = canvas->imageInfo().colorSpace();
|
||||||
info.currentHdrSdrRatio = getTargetHdrSdrRatio(info.color_space_ptr);
|
info.currentHdrSdrRatio = getTargetHdrSdrRatio(info.color_space_ptr);
|
||||||
|
info.fboColorType = canvas->imageInfo().colorType();
|
||||||
|
info.shouldDither = renderthread::CanvasContext::shouldDither();
|
||||||
|
|
||||||
// ensure that the framebuffer that the webview will render into is bound before we clear
|
// ensure that the framebuffer that the webview will render into is bound before we clear
|
||||||
// the stencil and/or draw the functor.
|
// the stencil and/or draw the functor.
|
||||||
|
|||||||
@@ -15,22 +15,25 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "VkFunctorDrawable.h"
|
#include "VkFunctorDrawable.h"
|
||||||
#include <private/hwui/DrawVkInfo.h>
|
|
||||||
|
|
||||||
#include <GrBackendDrawableInfo.h>
|
#include <GrBackendDrawableInfo.h>
|
||||||
#include <SkAndroidFrameworkUtils.h>
|
#include <SkAndroidFrameworkUtils.h>
|
||||||
#include <SkImage.h>
|
#include <SkImage.h>
|
||||||
#include <SkM44.h>
|
#include <SkM44.h>
|
||||||
#include <gui/TraceUtils.h>
|
#include <gui/TraceUtils.h>
|
||||||
|
#include <private/hwui/DrawVkInfo.h>
|
||||||
#include <utils/Color.h>
|
#include <utils/Color.h>
|
||||||
#include <utils/Trace.h>
|
#include <utils/Trace.h>
|
||||||
#include <vk/GrVkTypes.h>
|
#include <vk/GrVkTypes.h>
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
#include "effects/GainmapRenderer.h"
|
||||||
|
#include "renderthread/CanvasContext.h"
|
||||||
#include "renderthread/RenderThread.h"
|
#include "renderthread/RenderThread.h"
|
||||||
#include "renderthread/VulkanManager.h"
|
#include "renderthread/VulkanManager.h"
|
||||||
#include "thread/ThreadBase.h"
|
#include "thread/ThreadBase.h"
|
||||||
#include "utils/TimeUtils.h"
|
#include "utils/TimeUtils.h"
|
||||||
#include "effects/GainmapRenderer.h"
|
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
namespace uirenderer {
|
namespace uirenderer {
|
||||||
@@ -75,6 +78,7 @@ void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) {
|
|||||||
.clip_bottom = mClip.fBottom,
|
.clip_bottom = mClip.fBottom,
|
||||||
.is_layer = !vulkan_info.fFromSwapchainOrAndroidWindow,
|
.is_layer = !vulkan_info.fFromSwapchainOrAndroidWindow,
|
||||||
.currentHdrSdrRatio = getTargetHdrSdrRatio(mImageInfo.colorSpace()),
|
.currentHdrSdrRatio = getTargetHdrSdrRatio(mImageInfo.colorSpace()),
|
||||||
|
.shouldDither = renderthread::CanvasContext::shouldDither(),
|
||||||
};
|
};
|
||||||
mat4.getColMajor(¶ms.transform[0]);
|
mat4.getColMajor(¶ms.transform[0]);
|
||||||
params.secondary_command_buffer = vulkan_info.fSecondaryCommandBuffer;
|
params.secondary_command_buffer = vulkan_info.fSecondaryCommandBuffer;
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#define ANDROID_HWUI_DRAW_GL_INFO_H
|
#define ANDROID_HWUI_DRAW_GL_INFO_H
|
||||||
|
|
||||||
#include <SkColorSpace.h>
|
#include <SkColorSpace.h>
|
||||||
|
#include <SkColorType.h>
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
namespace uirenderer {
|
namespace uirenderer {
|
||||||
@@ -91,6 +92,12 @@ struct DrawGlInfo {
|
|||||||
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
||||||
// range is available if desired
|
// range is available if desired
|
||||||
float currentHdrSdrRatio;
|
float currentHdrSdrRatio;
|
||||||
|
|
||||||
|
// Whether or not dithering is globally enabled
|
||||||
|
bool shouldDither;
|
||||||
|
|
||||||
|
// The color type of the destination framebuffer
|
||||||
|
SkColorType fboColorType;
|
||||||
}; // struct DrawGlInfo
|
}; // struct DrawGlInfo
|
||||||
|
|
||||||
} // namespace uirenderer
|
} // namespace uirenderer
|
||||||
|
|||||||
@@ -76,6 +76,9 @@ struct VkFunctorDrawParams {
|
|||||||
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
||||||
// range is available if desired
|
// range is available if desired
|
||||||
float currentHdrSdrRatio;
|
float currentHdrSdrRatio;
|
||||||
|
|
||||||
|
// Whether or not dithering is globally enabled
|
||||||
|
bool shouldDither;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace uirenderer
|
} // namespace uirenderer
|
||||||
|
|||||||
@@ -1078,6 +1078,12 @@ void CanvasContext::startHintSession() {
|
|||||||
mHintSessionWrapper.init();
|
mHintSessionWrapper.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CanvasContext::shouldDither() {
|
||||||
|
CanvasContext* self = getActiveContext();
|
||||||
|
if (!self) return false;
|
||||||
|
return self->mColorMode != ColorMode::Default;
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace renderthread */
|
} /* namespace renderthread */
|
||||||
} /* namespace uirenderer */
|
} /* namespace uirenderer */
|
||||||
} /* namespace android */
|
} /* namespace android */
|
||||||
|
|||||||
@@ -234,6 +234,8 @@ public:
|
|||||||
|
|
||||||
void startHintSession();
|
void startHintSession();
|
||||||
|
|
||||||
|
static bool shouldDither();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode,
|
CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode,
|
||||||
IContextFactory* contextFactory, std::unique_ptr<IRenderPipeline> renderPipeline,
|
IContextFactory* contextFactory, std::unique_ptr<IRenderPipeline> renderPipeline,
|
||||||
|
|||||||
Reference in New Issue
Block a user