From 782e883a8728a71489535caa5e3a98927e75c1e6 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 19 May 2025 13:53:35 +0200 Subject: [PATCH] Remove all the useless subarrays when using qcms. It reduces the memory use and the newly added function `getRgbHex` is 4 times faster. --- external/qcms/qcms.js | 20 +++++++----- external/qcms/qcms_bg.wasm | Bin 107024 -> 94519 bytes external/qcms/qcms_utils.js | 60 +++++++++++++++++++++++++++--------- src/core/icc_colorspace.js | 38 ++++++++++++++--------- 4 files changed, 82 insertions(+), 36 deletions(-) diff --git a/external/qcms/qcms.js b/external/qcms/qcms.js index 3995a18e3..b19a5da83 100644 --- a/external/qcms/qcms.js +++ b/external/qcms/qcms.js @@ -1,5 +1,5 @@ /* THIS FILE IS GENERATED - DO NOT EDIT */ -import { copy_result, copy_rgb } from './qcms_utils.js'; +import { copy_result, copy_rgb, make_cssRGB } from './qcms_utils.js'; let wasm; @@ -48,9 +48,10 @@ export function qcms_convert_array(transformer, src) { * This function is called directly from JavaScript. * @param {number} transformer * @param {number} src + * @param {boolean} css */ -export function qcms_convert_one(transformer, src) { - wasm.qcms_convert_one(transformer, src); +export function qcms_convert_one(transformer, src, css) { + wasm.qcms_convert_one(transformer, src, css); } /** @@ -61,9 +62,10 @@ export function qcms_convert_one(transformer, src) { * @param {number} src1 * @param {number} src2 * @param {number} src3 + * @param {boolean} css */ -export function qcms_convert_three(transformer, src1, src2, src3) { - wasm.qcms_convert_three(transformer, src1, src2, src3); +export function qcms_convert_three(transformer, src1, src2, src3, css) { + wasm.qcms_convert_three(transformer, src1, src2, src3, css); } /** @@ -75,9 +77,10 @@ export function qcms_convert_three(transformer, src1, src2, src3) { * @param {number} src2 * @param {number} src3 * @param {number} src4 + * @param {boolean} css */ -export function qcms_convert_four(transformer, src1, src2, src3, src4) { - wasm.qcms_convert_four(transformer, src1, src2, src3, src4); +export function qcms_convert_four(transformer, src1, src2, src3, src4, css) { + wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css); } /** @@ -167,6 +170,9 @@ function __wbg_get_imports() { imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function(arg0) { copy_rgb(arg0 >>> 0); }; + imports.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function(arg0) { + make_cssRGB(arg0 >>> 0); + }; imports.wbg.__wbindgen_init_externref_table = function() { const table = wasm.__wbindgen_export_0; const offset = table.grow(4); diff --git a/external/qcms/qcms_bg.wasm b/external/qcms/qcms_bg.wasm index aa8be2c293ab56474065020a64d555c724e308f9..6ed10d7108259d0c47c58b8158b4653efc03555c 100644 GIT binary patch literal 94519 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 literal 107024 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%0D7qmppeP{YNiaJWXb?4rVOB9$^dGn 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 diff --git a/external/qcms/qcms_utils.js b/external/qcms/qcms_utils.js index f0b6e679d..11d35351e 100644 --- a/external/qcms/qcms_utils.js +++ b/external/qcms/qcms_utils.js @@ -14,41 +14,71 @@ */ class QCMS { - static _module = null; + static #memoryArray = null; + + static _memory = null; static _mustAddAlpha = false; static _destBuffer = null; + + static _destOffset = 0; + + static _destLength = 0; + + static _cssColor = ""; + + static _makeHexColor = null; + + static get _memoryArray() { + const array = this.#memoryArray; + if (array?.byteLength) { + return array; + } + return (this.#memoryArray = new Uint8Array(this._memory.buffer)); + } } function copy_result(ptr, len) { // This function is called from the wasm module (it's an external // "C" function). Its goal is to copy the result from the wasm memory // to the destination buffer without any intermediate copies. - const { _module, _mustAddAlpha, _destBuffer } = QCMS; - const result = new Uint8Array(_module.memory.buffer, ptr, len); - if (result.length === _destBuffer.length) { - _destBuffer.set(result); + const { _mustAddAlpha, _destBuffer, _destOffset, _destLength, _memoryArray } = + QCMS; + if (len === _destLength) { + _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset); return; } if (_mustAddAlpha) { - for (let i = 0, j = 0, ii = result.length; i < ii; i += 3, j += 4) { - _destBuffer[j] = result[i]; - _destBuffer[j + 1] = result[i + 1]; - _destBuffer[j + 2] = result[i + 2]; + for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { + _destBuffer[j] = _memoryArray[i]; + _destBuffer[j + 1] = _memoryArray[i + 1]; + _destBuffer[j + 2] = _memoryArray[i + 2]; _destBuffer[j + 3] = 255; } } else { - for (let i = 0, j = 0, ii = result.length; i < ii; i += 3, j += 4) { - _destBuffer[j] = result[i]; - _destBuffer[j + 1] = result[i + 1]; - _destBuffer[j + 2] = result[i + 2]; + for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { + _destBuffer[j] = _memoryArray[i]; + _destBuffer[j + 1] = _memoryArray[i + 1]; + _destBuffer[j + 2] = _memoryArray[i + 2]; } } } function copy_rgb(ptr) { - QCMS._destBuffer.set(new Uint8Array(QCMS._module.memory.buffer, ptr, 3)); + const { _destBuffer, _destOffset, _memoryArray } = QCMS; + _destBuffer[_destOffset] = _memoryArray[ptr]; + _destBuffer[_destOffset + 1] = _memoryArray[ptr + 1]; + _destBuffer[_destOffset + 2] = _memoryArray[ptr + 2]; } -export { copy_result, copy_rgb, QCMS }; +function make_cssRGB(ptr) { + const { _memoryArray } = QCMS; + QCMS._cssColor = QCMS._makeHexColor( + _memoryArray[ptr], + _memoryArray[ptr + 1], + _memoryArray[ptr + 2] + ); +} + +export { copy_result, copy_rgb, make_cssRGB, QCMS }; diff --git a/src/core/icc_colorspace.js b/src/core/icc_colorspace.js index d955e3da0..b8ed91a6f 100644 --- a/src/core/icc_colorspace.js +++ b/src/core/icc_colorspace.js @@ -24,7 +24,7 @@ import { qcms_drop_transformer, qcms_transformer_from_memory, } from "../../external/qcms/qcms.js"; -import { shadow, warn } from "../shared/util.js"; +import { shadow, Util, warn } from "../shared/util.js"; import { ColorSpace } from "./colorspace.js"; import { QCMS } from "../../external/qcms/qcms_utils.js"; @@ -63,28 +63,30 @@ class IccColorSpace extends ColorSpace { switch (numComps) { case 1: inType = DataType.Gray8; - this.#convertPixel = (src, srcOffset) => - qcms_convert_one(this.#transformer, src[srcOffset] * 255); + this.#convertPixel = (src, srcOffset, css) => + qcms_convert_one(this.#transformer, src[srcOffset] * 255, css); break; case 3: inType = DataType.RGB8; - this.#convertPixel = (src, srcOffset) => + this.#convertPixel = (src, srcOffset, css) => qcms_convert_three( this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, - src[srcOffset + 2] * 255 + src[srcOffset + 2] * 255, + css ); break; case 4: inType = DataType.CMYK; - this.#convertPixel = (src, srcOffset) => + this.#convertPixel = (src, srcOffset, css) => qcms_convert_four( this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, - src[srcOffset + 3] * 255 + src[srcOffset + 3] * 255, + css ); break; default: @@ -101,9 +103,16 @@ class IccColorSpace extends ColorSpace { IccColorSpace.#finalizer.register(this, this.#transformer); } + getRgbHex(src, srcOffset) { + this.#convertPixel(src, srcOffset, /* css */ true); + return QCMS._cssColor; + } + getRgbItem(src, srcOffset, dest, destOffset) { - QCMS._destBuffer = dest.subarray(destOffset, destOffset + 3); - this.#convertPixel(src, srcOffset); + QCMS._destBuffer = dest; + QCMS._destOffset = destOffset; + QCMS._destLength = 3; + this.#convertPixel(src, srcOffset, /* css */ false); QCMS._destBuffer = null; } @@ -116,10 +125,9 @@ class IccColorSpace extends ColorSpace { } } QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer; - QCMS._destBuffer = dest.subarray( - destOffset, - destOffset + count * (3 + alpha01) - ); + QCMS._destBuffer = dest; + QCMS._destOffset = destOffset; + QCMS._destLength = count * (3 + alpha01); qcms_convert_array(this.#transformer, src); QCMS._mustAddAlpha = false; QCMS._destBuffer = null; @@ -143,10 +151,12 @@ class IccColorSpace extends ColorSpace { if (this.#useWasm) { if (this.#wasmUrl) { try { - this._module = QCMS._module = initSync({ + this._module = initSync({ module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`), }); isUsable = !!this._module; + QCMS._memory = this._module.memory; + QCMS._makeHexColor = Util.makeHexColor; } catch (e) { warn(`ICCBased color space: "${e}".`); }