summaryrefslogtreecommitdiff
path: root/native
diff options
context:
space:
mode:
authorBo Liu <boliu@google.com>2019-01-23 20:59:00 -0800
committerBo Liu <boliu@google.com>2019-01-24 14:04:58 -0800
commitb6da7f634f12972dac01a2ebeee2545b4c01dadd (patch)
tree8ea6ea3b73f5a90112e2552ac843fb206f7a400f /native
parent07182c8622947e0407c6cd72fea4f6ab629f4b55 (diff)
Add color space params to webview gl functor
Bug: 111436479 Test: Compiles Change-Id: I6713afbb871a5c7027bac1e0f52ce2a841f38e25
Diffstat (limited to 'native')
-rw-r--r--native/webview/plat_support/draw_fn.h13
-rw-r--r--native/webview/plat_support/draw_functor.cpp14
2 files changed, 26 insertions, 1 deletions
diff --git a/native/webview/plat_support/draw_fn.h b/native/webview/plat_support/draw_fn.h
index 0490e650a7a4..e31ce195214f 100644
--- a/native/webview/plat_support/draw_fn.h
+++ b/native/webview/plat_support/draw_fn.h
@@ -20,7 +20,8 @@ extern "C" {
// android to chromium are versioned.
//
// 1 is Android Q. This matches kAwDrawGLInfoVersion version 3.
-static const int kAwDrawFnVersion = 1;
+// 2 Adds transfer_function_* and color_space_toXYZD50 to AwDrawFn_DrawGLParams.
+static const int kAwDrawFnVersion = 2;
struct AwDrawFn_OnSyncParams {
int version;
@@ -64,6 +65,16 @@ struct AwDrawFn_DrawGLParams {
// Input: current transformation matrix in surface pixels.
// Uses the column-based OpenGL matrix format.
float transform[16];
+
+ // Input: Color space parameters.
+ float transfer_function_g;
+ float transfer_function_a;
+ float transfer_function_b;
+ float transfer_function_c;
+ float transfer_function_d;
+ float transfer_function_e;
+ float transfer_function_f;
+ float color_space_toXYZD50[9];
};
struct AwDrawFn_InitVkParams {
diff --git a/native/webview/plat_support/draw_functor.cpp b/native/webview/plat_support/draw_functor.cpp
index b97bbc311624..afe103a25043 100644
--- a/native/webview/plat_support/draw_functor.cpp
+++ b/native/webview/plat_support/draw_functor.cpp
@@ -55,6 +55,8 @@ void onDestroyed(int functor, void* data) {
void draw_gl(int functor, void* data,
const uirenderer::DrawGlInfo& draw_gl_params) {
+ float gabcdef[7];
+ draw_gl_params.color_space_ptr->transferFn(gabcdef);
AwDrawFn_DrawGLParams params = {
.version = kAwDrawFnVersion,
.clip_left = draw_gl_params.clipLeft,
@@ -64,12 +66,24 @@ void draw_gl(int functor, void* data,
.width = draw_gl_params.width,
.height = draw_gl_params.height,
.is_layer = draw_gl_params.isLayer,
+ .transfer_function_g = gabcdef[0],
+ .transfer_function_a = gabcdef[1],
+ .transfer_function_b = gabcdef[2],
+ .transfer_function_c = gabcdef[3],
+ .transfer_function_d = gabcdef[4],
+ .transfer_function_e = gabcdef[5],
+ .transfer_function_f = gabcdef[6],
};
COMPILE_ASSERT(NELEM(params.transform) == NELEM(draw_gl_params.transform),
mismatched_transform_matrix_sizes);
for (int i = 0; i < NELEM(params.transform); ++i) {
params.transform[i] = draw_gl_params.transform[i];
}
+ COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3),
+ gamut_transform_size_mismatch);
+ draw_gl_params.color_space_ptr->toXYZD50(
+ reinterpret_cast<skcms_Matrix3x3*>(&params.color_space_toXYZD50));
+
SupportData* support = static_cast<SupportData*>(data);
support->callbacks.draw_gl(functor, support->data, &params);
}