Merge "Add plumbing for HDR WebView" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
890860229b
@@ -38,7 +38,7 @@ namespace android::uirenderer {
|
||||
|
||||
using namespace renderthread;
|
||||
|
||||
static float getTargetHdrSdrRatio(const SkColorSpace* destColorspace) {
|
||||
float getTargetHdrSdrRatio(const SkColorSpace* destColorspace) {
|
||||
// We should always have a known destination colorspace. If we don't we must be in some
|
||||
// legacy mode where we're lost and also definitely not going to HDR
|
||||
if (destColorspace == nullptr) {
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
namespace android::uirenderer {
|
||||
|
||||
float getTargetHdrSdrRatio(const SkColorSpace* destColorspace);
|
||||
|
||||
void DrawGainmapBitmap(SkCanvas* c, const sk_sp<const SkImage>& image, const SkRect& src,
|
||||
const SkRect& dst, const SkSamplingOptions& sampling, const SkPaint* paint,
|
||||
SkCanvas::SrcRectConstraint constraint,
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "SkM44.h"
|
||||
#include "include/gpu/GpuTypes.h" // from Skia
|
||||
#include "utils/GLUtils.h"
|
||||
#include <effects/GainmapRenderer.h>
|
||||
|
||||
namespace android {
|
||||
namespace uirenderer {
|
||||
@@ -129,6 +130,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) {
|
||||
info.height = fboSize.height();
|
||||
mat4.getColMajor(&info.transform[0]);
|
||||
info.color_space_ptr = canvas->imageInfo().colorSpace();
|
||||
info.currentHdrSdrRatio = getTargetHdrSdrRatio(info.color_space_ptr);
|
||||
|
||||
// ensure that the framebuffer that the webview will render into is bound before we clear
|
||||
// the stencil and/or draw the functor.
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "renderthread/VulkanManager.h"
|
||||
#include "thread/ThreadBase.h"
|
||||
#include "utils/TimeUtils.h"
|
||||
#include "effects/GainmapRenderer.h"
|
||||
|
||||
namespace android {
|
||||
namespace uirenderer {
|
||||
@@ -73,6 +74,7 @@ void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) {
|
||||
.clip_right = mClip.fRight,
|
||||
.clip_bottom = mClip.fBottom,
|
||||
.is_layer = !vulkan_info.fFromSwapchainOrAndroidWindow,
|
||||
.currentHdrSdrRatio = getTargetHdrSdrRatio(mImageInfo.colorSpace()),
|
||||
};
|
||||
mat4.getColMajor(¶ms.transform[0]);
|
||||
params.secondary_command_buffer = vulkan_info.fSecondaryCommandBuffer;
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "renderthread/EglManager.h"
|
||||
#include "thread/ThreadBase.h"
|
||||
#include "utils/TimeUtils.h"
|
||||
#include "effects/GainmapRenderer.h"
|
||||
|
||||
#include <SkBlendMode.h>
|
||||
|
||||
@@ -139,6 +140,7 @@ void VkInteropFunctorDrawable::onDraw(SkCanvas* canvas) {
|
||||
info.height = mFBInfo.height();
|
||||
mat4.getColMajor(&info.transform[0]);
|
||||
info.color_space_ptr = canvas->imageInfo().colorSpace();
|
||||
info.currentHdrSdrRatio = getTargetHdrSdrRatio(info.color_space_ptr);
|
||||
|
||||
glViewport(0, 0, info.width, info.height);
|
||||
|
||||
|
||||
@@ -86,6 +86,11 @@ struct DrawGlInfo {
|
||||
// commands are issued.
|
||||
kStatusDrew = 0x4
|
||||
};
|
||||
|
||||
// The current HDR/SDR ratio that we are rendering to. The transform to SDR will already
|
||||
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
||||
// range is available if desired
|
||||
float currentHdrSdrRatio;
|
||||
}; // struct DrawGlInfo
|
||||
|
||||
} // namespace uirenderer
|
||||
|
||||
@@ -71,6 +71,11 @@ struct VkFunctorDrawParams {
|
||||
|
||||
// Input: Whether destination surface is offscreen surface.
|
||||
bool is_layer;
|
||||
|
||||
// The current HDR/SDR ratio that we are rendering to. The transform to SDR will already
|
||||
// be baked into the color_space_ptr, so this is just to indicate the amount of extended
|
||||
// range is available if desired
|
||||
float currentHdrSdrRatio;
|
||||
};
|
||||
|
||||
} // namespace uirenderer
|
||||
|
||||
Reference in New Issue
Block a user