From 587887fc47a7dc1db3aa9368cd299d5b3033bce4 Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 17 Dec 2023 22:03:28 +0800 Subject: [PATCH] feat: run sksl --- .vscode/launch.json | 20 +++++ packages/extension/src/runner.ts | 27 ++++-- packages/extension/src/server.ts | 6 +- packages/float/package.json | 7 ++ packages/{util => float}/src/float.ts | 0 packages/lsp/src/sksl-server.ts | 15 +++- packages/runner-data/package.json | 5 +- packages/runner-data/src/url.ts | 1 + packages/runner-data/src/wasm.ts | 31 +++++++ packages/util/package.json | 5 +- packages/util/src/simple-codec.test.ts | 2 +- packages/util/src/simple-codec.ts | 2 +- packages/wasm/c++/src/CMakeLists.txt | 3 + packages/wasm/c++/src/data.h | 14 ++++ packages/wasm/c++/src/main.cpp | 2 + packages/wasm/c++/src/runner/run.cpp | 84 +++++++++++++++++++ packages/wasm/c++/src/runner/run.h | 31 +++++++ packages/wasm/c++/src/runner/run_test.cpp | 21 +++++ packages/wasm/c++/src/simple_codec.cpp | 14 ++++ packages/wasm/c++/src/simple_codec.h | 2 + .../wasm/c++/third_party/skia/CMakeLists.txt | 53 ++++++++---- packages/wasm/src/sksl-wasm.d.ts | 1 + pnpm-lock.yaml | 14 +++- 23 files changed, 331 insertions(+), 29 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 packages/float/package.json rename packages/{util => float}/src/float.ts (100%) create mode 100644 packages/wasm/c++/src/runner/run.cpp create mode 100644 packages/wasm/c++/src/runner/run.h create mode 100644 packages/wasm/c++/src/runner/run_test.cpp diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..232a039 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Wasm Test", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/packages/wasm/c++/build_test/src/sksl-wasm-lib-test", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}/packages/wasm/c++/build_test/src", + "environment": [], + "externalConsole": false, + "MIMode": "lldb" + } + ] +} diff --git a/packages/extension/src/runner.ts b/packages/extension/src/runner.ts index 76676c4..43260a6 100644 --- a/packages/extension/src/runner.ts +++ b/packages/extension/src/runner.ts @@ -12,6 +12,10 @@ import { GetUniformsResponse, RunSkSLRequest, DebugSkSLRequest, + kRunUrl, + RunResult, + RunParams, + QueryParams, } from '@workspace/runner-data' export class Runner { @@ -71,14 +75,17 @@ export class Runner { panel.webview.postMessage( pipe({ type: MessageType.kSelectSkSL, - path: uri.toString(), + path: uri.fsPath, }), ) const buffer = fs.readFileSync(uri.fsPath) - const result: QueryResult = await this.client.sendRequest(kQueryUrl, { - source: buffer.toString(), - }) + const result: QueryResult = await this.client.sendRequest( + kQueryUrl, + pipe({ + source: buffer.toString(), + }), + ) panel.webview.postMessage( pipe({ type: MessageType.kGetUniforms, @@ -88,8 +95,16 @@ export class Runner { } private async onRunSkSLRequest(panel: vscode.WebviewPanel, request: RunSkSLRequest) { - console.log(panel) - console.log(request) + const buffer = fs.readFileSync(request.path) + const result: RunResult = await this.client.sendRequest( + kRunUrl, + pipe({ + source: buffer.toString(), + values: request.values, + }), + ) + // TODO: + console.log(result.color) } private async onDebugSkSLRequest(panel: vscode.WebviewPanel, request: DebugSkSLRequest) { diff --git a/packages/extension/src/server.ts b/packages/extension/src/server.ts index ba1e298..d49a20e 100644 --- a/packages/extension/src/server.ts +++ b/packages/extension/src/server.ts @@ -1,7 +1,7 @@ import * as ls from 'vscode-languageserver/node' import * as lstd from 'vscode-languageserver-textdocument' import { SkSLServer } from '@workspace/lsp' -import { QueryParams, kQueryUrl } from '@workspace/runner-data' +import { QueryParams, RunParams, kQueryUrl, kRunUrl } from '@workspace/runner-data' const connection = ls.createConnection(ls.ProposedFeatures.all) const documents = new ls.TextDocuments(lstd.TextDocument) @@ -95,5 +95,9 @@ connection.onRequest(kQueryUrl, (params: QueryParams) => { return server?.query(params) }) +connection.onRequest(kRunUrl, (params: RunParams) => { + return server?.run(params) +}) + documents.listen(connection) connection.listen() diff --git a/packages/float/package.json b/packages/float/package.json new file mode 100644 index 0000000..4dd919a --- /dev/null +++ b/packages/float/package.json @@ -0,0 +1,7 @@ +{ + "name": "@workspace/float", + "version": "1.0.0", + "author": "seven332", + "license": "MIT", + "main": "src/float.ts" +} diff --git a/packages/util/src/float.ts b/packages/float/src/float.ts similarity index 100% rename from packages/util/src/float.ts rename to packages/float/src/float.ts diff --git a/packages/lsp/src/sksl-server.ts b/packages/lsp/src/sksl-server.ts index 67c7b25..bb21958 100644 --- a/packages/lsp/src/sksl-server.ts +++ b/packages/lsp/src/sksl-server.ts @@ -4,7 +4,14 @@ import * as ls from 'vscode-languageserver/node' import { FilePosition } from './file-position' import { UTFOffset, dummyUTFOffset } from './utf-offset-converter' import { decode, encode } from '@workspace/util' -import { QueryParams, QueryResult, dummyQueryResult } from '@workspace/runner-data' +import { + QueryParams, + QueryResult, + RunParams, + RunResult, + dummyQueryResult, + dummyRunResult, +} from '@workspace/runner-data' export const kTokenTypes = [ 'class', @@ -266,6 +273,12 @@ export class SkSLServer { return this.getResult(dummyQueryResult) } + public run(params: RunParams): RunResult { + this.setParams(params) + this.wasm._Run() + return this.getResult(dummyRunResult) + } + private files = new Map>() private documents = new Map() diff --git a/packages/runner-data/package.json b/packages/runner-data/package.json index b785d8b..a3e2699 100644 --- a/packages/runner-data/package.json +++ b/packages/runner-data/package.json @@ -3,5 +3,8 @@ "version": "1.0.0", "author": "seven332", "license": "MIT", - "main": "src/index.ts" + "main": "src/index.ts", + "dependencies": { + "@workspace/float": "workspace:*" + } } diff --git a/packages/runner-data/src/url.ts b/packages/runner-data/src/url.ts index a183dad..7cd3d86 100644 --- a/packages/runner-data/src/url.ts +++ b/packages/runner-data/src/url.ts @@ -1 +1,2 @@ export const kQueryUrl = 'sksl/query' +export const kRunUrl = 'sksl/run' diff --git a/packages/runner-data/src/wasm.ts b/packages/runner-data/src/wasm.ts index eb0a5db..c692aab 100644 --- a/packages/runner-data/src/wasm.ts +++ b/packages/runner-data/src/wasm.ts @@ -1,3 +1,5 @@ +import { Float } from '@workspace/float' + export interface QueryParams { source: string } @@ -23,3 +25,32 @@ export const dummyQueryResult: QueryResult = { kind: '', uniforms: [dummySkSLUniform], } + +export interface RunParams { + source: string + values: string[] +} + +export interface SkSLColor { + r: Float + g: Float + b: Float + a: Float +} + +export const dummySkSLColor: SkSLColor = { + r: Float.kZero, + g: Float.kZero, + b: Float.kZero, + a: Float.kZero, +} + +export interface RunResult { + succeed: boolean + color: SkSLColor +} + +export const dummyRunResult: RunResult = { + succeed: false, + color: dummySkSLColor, +} diff --git a/packages/util/package.json b/packages/util/package.json index 062f9af..481e961 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -3,5 +3,8 @@ "version": "1.0.0", "author": "seven332", "license": "MIT", - "main": "src/index.ts" + "main": "src/index.ts", + "dependencies": { + "@workspace/float": "workspace:*" + } } diff --git a/packages/util/src/simple-codec.test.ts b/packages/util/src/simple-codec.test.ts index 13e8edf..468e0ec 100644 --- a/packages/util/src/simple-codec.test.ts +++ b/packages/util/src/simple-codec.test.ts @@ -1,4 +1,4 @@ -import { Float } from './float' +import { Float } from '@workspace/float' import { encode, decode } from './simple-codec' interface TestObject { diff --git a/packages/util/src/simple-codec.ts b/packages/util/src/simple-codec.ts index a095234..3bd093f 100644 --- a/packages/util/src/simple-codec.ts +++ b/packages/util/src/simple-codec.ts @@ -1,5 +1,5 @@ import { DynamicBuffer } from './dynamic-buffer' -import { Float } from './float' +import { Float } from '@workspace/float' export function encode(value: unknown): Uint8Array { const buffer = new DynamicBuffer() diff --git a/packages/wasm/c++/src/CMakeLists.txt b/packages/wasm/c++/src/CMakeLists.txt index c853167..71c99c5 100644 --- a/packages/wasm/c++/src/CMakeLists.txt +++ b/packages/wasm/c++/src/CMakeLists.txt @@ -16,6 +16,7 @@ add_library(sksl-wasm-lib STATIC action/definition.cpp action/completion.cpp runner/query.cpp + runner/run.cpp ) target_include_directories(sksl-wasm-lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(sksl-wasm-lib PUBLIC skia_sksl) @@ -36,6 +37,7 @@ set(EXPORTED_FUNCTIONS _Definition _Completion _Query + _Run ) list(JOIN EXPORTED_FUNCTIONS "," EXPORTED_FUNCTIONS_JOINED) @@ -57,6 +59,7 @@ add_executable(sksl-wasm-lib-test formatter_test.cpp simple_codec_test.cpp utf_offset_test.cpp + runner/run_test.cpp ) target_link_libraries(sksl-wasm-lib-test PRIVATE sksl-wasm-lib gmock_main) enable_testing() diff --git a/packages/wasm/c++/src/data.h b/packages/wasm/c++/src/data.h index 019d3c4..d099107 100644 --- a/packages/wasm/c++/src/data.h +++ b/packages/wasm/c++/src/data.h @@ -140,3 +140,17 @@ struct SkSLUniform { Write(bytes, value.name); } }; + +struct SkSLColor { + float r; + float g; + float b; + float a; + + friend void Write(std::vector* bytes, const SkSLColor& value) { + Write(bytes, value.r); + Write(bytes, value.g); + Write(bytes, value.b); + Write(bytes, value.a); + } +}; diff --git a/packages/wasm/c++/src/main.cpp b/packages/wasm/c++/src/main.cpp index 2cdefc4..22e715c 100644 --- a/packages/wasm/c++/src/main.cpp +++ b/packages/wasm/c++/src/main.cpp @@ -15,6 +15,7 @@ #include "action/update.h" #include "module.h" #include "runner/query.h" +#include "runner/run.h" #include "utf_offset.h" static Modules modules; @@ -85,6 +86,7 @@ ACTION(Completion, "completion") } RUNNER(Query, "query") +RUNNER(Run, "run") #undef RUNNER } diff --git a/packages/wasm/c++/src/runner/run.cpp b/packages/wasm/c++/src/runner/run.cpp new file mode 100644 index 0000000..cf62bc1 --- /dev/null +++ b/packages/wasm/c++/src/runner/run.cpp @@ -0,0 +1,84 @@ +#include "runner/run.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "data.h" +#include "kind.h" + +static std::unique_ptr CompileProgram(std::string source) { + auto kind_result = GetKind(source); + if (!kind_result) { + return nullptr; + } + + auto kind = ToSkSLProgramKind(kind_result->str); + if (!kind) { + return nullptr; + } + + SkSL::Compiler compiler(SkSL::ShaderCapsFactory::Standalone()); + SkSL::ProgramSettings settings; + settings.fUseMemoryPool = false; + settings.fOptimize = false; + settings.fForceNoInline = true; + if (SkSL::ProgramConfig::IsRuntimeEffect(*kind)) { + settings.fAllowNarrowingConversions = true; + } + SkSL::Parser parser(&compiler, settings, *kind, std::move(source)); + return parser.program(); +} + +RunResult Run(RunParams params) { + RunResult result; + + auto program = CompileProgram(std::move(params.source)); + if (!program) { + return result; + } + + const auto* function = program->getFunction("main"); + if (!function) { + return result; + } + + auto trace = sk_make_sp(); + std::unique_ptr raster_program = + SkSL::MakeRasterPipelineProgram(*program, *function->definition(), trace.get(), true); + if (!raster_program) { + return result; + } + + static constexpr auto kFirstHeapAllocation = 4096; + SkArenaAlloc alloc(kFirstHeapAllocation); + SkRasterPipeline pipeline(&alloc); + // TODO: values + raster_program->appendStages(&pipeline, &alloc, nullptr, {}); + + SkRGBA4f out {}; + SkRasterPipeline_MemoryCtx out_ctx = {&out, 0}; + pipeline.append(SkRasterPipelineOp::store_f32, &out_ctx); + pipeline.run(0, 0, 1, 1); + + result.succeed = true; + auto unpremul = out.unpremul(); + result.color = SkSLColor { + .r = unpremul.fR, + .g = unpremul.fG, + .b = unpremul.fB, + .a = unpremul.fA, + }; + return result; +} diff --git a/packages/wasm/c++/src/runner/run.h b/packages/wasm/c++/src/runner/run.h new file mode 100644 index 0000000..7eaa5ef --- /dev/null +++ b/packages/wasm/c++/src/runner/run.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include + +#include "data.h" +#include "simple_codec.h" + +struct RunParams { + std::string source; + std::vector values; + + friend std::size_t Read(std::span bytes, std::size_t offset, RunParams* value) { + std::size_t read = 0; + read += Read(bytes, offset + read, &value->source); + read += Read(bytes, offset + read, &value->values); + return read; + } +}; + +struct RunResult { + bool succeed = false; + SkSLColor color {}; + + friend void Write(std::vector* bytes, const RunResult& value) { + Write(bytes, value.succeed); + Write(bytes, value.color); + } +}; + +RunResult Run(RunParams params); diff --git a/packages/wasm/c++/src/runner/run_test.cpp b/packages/wasm/c++/src/runner/run_test.cpp new file mode 100644 index 0000000..f3b13e1 --- /dev/null +++ b/packages/wasm/c++/src/runner/run_test.cpp @@ -0,0 +1,21 @@ + +#include "runner/run.h" + +#include + +TEST(RunTest, Run) { + auto result = ::Run(RunParams { + .source = "" + "// kind=shader\n" + "half4 main(float2 coord) {\n" + " coord.x = 0.2;" + " coord.y = 0.3;" + " return float4(coord.x, coord.y, 0, 1);\n" + "}\n", + }); + EXPECT_TRUE(result.succeed); + EXPECT_EQ(result.color.r, 0.2F); + EXPECT_EQ(result.color.g, 0.3F); + EXPECT_EQ(result.color.b, 0.F); + EXPECT_EQ(result.color.a, 1.F); +} diff --git a/packages/wasm/c++/src/simple_codec.cpp b/packages/wasm/c++/src/simple_codec.cpp index 0f96b17..f39cdba 100644 --- a/packages/wasm/c++/src/simple_codec.cpp +++ b/packages/wasm/c++/src/simple_codec.cpp @@ -18,6 +18,14 @@ void Write(std::vector* bytes, int value) { bytes->push_back(*(ptr + 3)); } +void Write(std::vector* bytes, float value) { + const auto* ptr = reinterpret_cast(&value); + bytes->push_back(*ptr); + bytes->push_back(*(ptr + 1)); + bytes->push_back(*(ptr + 2)); + bytes->push_back(*(ptr + 3)); +} + void Write(std::vector* bytes, const std::string& value) { Write(bytes, static_cast(value.size())); for (auto c : value) { @@ -46,6 +54,12 @@ std::size_t Read(std::span bytes, std::size_t offset, int* valu return 4; } +std::size_t Read(std::span bytes, std::size_t offset, float* value) { + CheckSize(bytes, offset + 4); + std::memcpy(value, bytes.data() + offset, 4); + return 4; +} + std::size_t Read(std::span bytes, std::size_t offset, std::string* value) { int size = 0; Read(bytes, offset, &size); diff --git a/packages/wasm/c++/src/simple_codec.h b/packages/wasm/c++/src/simple_codec.h index a0045bb..9ee1323 100644 --- a/packages/wasm/c++/src/simple_codec.h +++ b/packages/wasm/c++/src/simple_codec.h @@ -9,6 +9,7 @@ void Write(std::vector* bytes, bool value); void Write(std::vector* bytes, int value); +void Write(std::vector* bytes, float value); void Write(std::vector* bytes, const std::string& value); template @@ -23,6 +24,7 @@ void Write(std::vector* bytes, const std::vector& value) { std::size_t Read(std::span bytes, std::size_t offset, bool* value); std::size_t Read(std::span bytes, std::size_t offset, int* value); +std::size_t Read(std::span bytes, std::size_t offset, float* value); std::size_t Read(std::span bytes, std::size_t offset, std::string* value); template diff --git a/packages/wasm/c++/third_party/skia/CMakeLists.txt b/packages/wasm/c++/third_party/skia/CMakeLists.txt index d8f7db7..1c42e45 100644 --- a/packages/wasm/c++/third_party/skia/CMakeLists.txt +++ b/packages/wasm/c++/third_party/skia/CMakeLists.txt @@ -5,8 +5,6 @@ cmake_path(SET SKIA_SOURCE_DIR NORMALIZE ${CMAKE_CURRENT_SOURCE_DIR}/../external cmake_path(SET SKIA_CMAKE_DIR NORMALIZE ${CMAKE_CURRENT_BINARY_DIR}/cmake) add_library(skia_sksl STATIC - ${SKIA_SOURCE_DIR}/src/core/SkRasterPipeline.cpp - ${SKIA_SOURCE_DIR}/src/sksl/SkSLAnalysis.cpp ${SKIA_SOURCE_DIR}/src/sksl/SkSLBuiltinTypes.cpp ${SKIA_SOURCE_DIR}/src/sksl/SkSLCompiler.cpp @@ -30,12 +28,12 @@ add_library(skia_sksl STATIC ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLCanExitWithoutReturningValue.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLCheckProgramStructure.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLFinalizationChecks.cpp - # ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLGetLoopControlFlowInfo.cpp + ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLGetLoopControlFlowInfo.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLGetLoopUnrollInfo.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLGetReturnComplexity.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLHasSideEffects.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLIsConstantExpression.cpp - # ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLIsDynamicallyUniformExpression.cpp + ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLIsDynamicallyUniformExpression.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLIsSameExpressionTree.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLIsTrivialExpression.cpp ${SKIA_SOURCE_DIR}/src/sksl/analysis/SkSLProgramUsage.cpp @@ -89,8 +87,9 @@ add_library(skia_sksl STATIC ${SKIA_SOURCE_DIR}/src/sksl/ir/SkSLVarDeclarations.cpp ${SKIA_SOURCE_DIR}/src/sksl/ir/SkSLVariable.cpp ${SKIA_SOURCE_DIR}/src/sksl/ir/SkSLVariableReference.cpp - # ${SKIA_SOURCE_DIR}/src/sksl/tracing/SkSLDebugTracePriv.cpp - # ${SKIA_SOURCE_DIR}/src/sksl/tracing/SkSLTraceHook.cpp + ${SKIA_SOURCE_DIR}/src/sksl/tracing/SkSLDebugTracePlayer.cpp + ${SKIA_SOURCE_DIR}/src/sksl/tracing/SkSLDebugTracePriv.cpp + ${SKIA_SOURCE_DIR}/src/sksl/tracing/SkSLTraceHook.cpp ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLAddConstToVarModifiers.cpp ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLEliminateDeadFunctions.cpp ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLEliminateDeadGlobalVariables.cpp @@ -102,40 +101,64 @@ add_library(skia_sksl STATIC ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLHoistSwitchVarDeclarationsAtTopLevel.cpp ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLRenamePrivateSymbols.cpp ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLReplaceConstVarsWithLiterals.cpp - # ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLRewriteIndexedSwizzle.cpp + ${SKIA_SOURCE_DIR}/src/sksl/transform/SkSLRewriteIndexedSwizzle.cpp ${SKIA_SOURCE_DIR}/src/base/SkArenaAlloc.cpp # ${SKIA_SOURCE_DIR}/src/base/SkBlockAllocator.cpp + ${SKIA_SOURCE_DIR}/src/base/SkBezierCurves.cpp + ${SKIA_SOURCE_DIR}/src/base/SkBuffer.cpp ${SKIA_SOURCE_DIR}/src/base/SkContainers.cpp + ${SKIA_SOURCE_DIR}/src/base/SkCubics.cpp + ${SKIA_SOURCE_DIR}/src/base/SkFloatingPoint.cpp ${SKIA_SOURCE_DIR}/src/base/SkHalf.cpp - # ${SKIA_SOURCE_DIR}/src/base/SkMalloc.cpp + ${SKIA_SOURCE_DIR}/src/base/SkMalloc.cpp # ${SKIA_SOURCE_DIR}/src/base/SkMathPriv.cpp + ${SKIA_SOURCE_DIR}/src/base/SkQuads.cpp ${SKIA_SOURCE_DIR}/src/base/SkSafeMath.cpp ${SKIA_SOURCE_DIR}/src/base/SkSemaphore.cpp + ${SKIA_SOURCE_DIR}/src/base/SkTDArray.cpp ${SKIA_SOURCE_DIR}/src/base/SkThreadID.cpp ${SKIA_SOURCE_DIR}/src/base/SkUTF.cpp ${SKIA_SOURCE_DIR}/src/base/SkUtils.cpp ${SKIA_SOURCE_DIR}/src/core/SkChecksum.cpp - # ${SKIA_SOURCE_DIR}/src/core/SkCpu.cpp + ${SKIA_SOURCE_DIR}/src/core/SkColor.cpp + ${SKIA_SOURCE_DIR}/src/core/SkCpu.cpp + ${SKIA_SOURCE_DIR}/src/core/SkCubicClipper.cpp ${SKIA_SOURCE_DIR}/src/core/SkData.cpp + ${SKIA_SOURCE_DIR}/src/core/SkEdgeClipper.cpp + ${SKIA_SOURCE_DIR}/src/core/SkGeometry.cpp + ${SKIA_SOURCE_DIR}/src/core/SkIDChangeListener.cpp + ${SKIA_SOURCE_DIR}/src/core/SkLineClipper.cpp + ${SKIA_SOURCE_DIR}/src/core/SkMatrix.cpp ${SKIA_SOURCE_DIR}/src/core/SkMatrixInvert.cpp + ${SKIA_SOURCE_DIR}/src/core/SkM44.cpp + ${SKIA_SOURCE_DIR}/src/core/SkOpts.cpp + ${SKIA_SOURCE_DIR}/src/core/SkPath.cpp + ${SKIA_SOURCE_DIR}/src/core/SkPathBuilder.cpp + ${SKIA_SOURCE_DIR}/src/core/SkPathRef.cpp + ${SKIA_SOURCE_DIR}/src/core/SkPoint.cpp + ${SKIA_SOURCE_DIR}/src/core/SkRasterPipeline.cpp + ${SKIA_SOURCE_DIR}/src/core/SkRect.cpp + ${SKIA_SOURCE_DIR}/src/core/SkRRect.cpp ${SKIA_SOURCE_DIR}/src/core/SkStream.cpp ${SKIA_SOURCE_DIR}/src/core/SkString.cpp - # ${SKIA_SOURCE_DIR}/src/core/SkStringUtils.cpp + ${SKIA_SOURCE_DIR}/src/core/SkStringUtils.cpp # ${SKIA_SOURCE_DIR}/src/gpu/ganesh/GrMemoryPool.cpp + ${SKIA_SOURCE_DIR}/src/opts/SkOpts_hsw.cpp ${SKIA_SOURCE_DIR}/src/ports/SkMemory_malloc.cpp ${SKIA_SOURCE_DIR}/src/ports/SkDebug_stdio.cpp ${SKIA_SOURCE_DIR}/src/ports/SkOSFile_stdio.cpp ${SKIA_SOURCE_DIR}/src/ports/SkOSFile_posix.cpp - # ${SKIA_SOURCE_DIR}/src/utils/SkJSON.cpp - # ${SKIA_SOURCE_DIR}/src/utils/SkJSONWriter.cpp + ${SKIA_SOURCE_DIR}/src/utils/SkJSON.cpp + ${SKIA_SOURCE_DIR}/src/utils/SkJSONWriter.cpp # ${SKIA_SOURCE_DIR}/src/utils/SkOSPath.cpp - # ${SKIA_SOURCE_DIR}/src/utils/SkParse.cpp + ${SKIA_SOURCE_DIR}/src/utils/SkParse.cpp # ${SKIA_SOURCE_DIR}/src/utils/SkShaderUtils.cpp ${SKIA_SOURCE_DIR}/src/utils/SkEventTracer.cpp + ${SKIA_SOURCE_DIR}/modules/skcms/skcms.cc ) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_compile_definitions(skia_sksl PUBLIC SK_BUILD_FOR_UNIX) + target_compile_definitions(skia_sksl PUBLIC SK_BUILD_FOR_UNIX SKSL_ENABLE_TRACING) elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - target_compile_definitions(skia_sksl PUBLIC SK_BUILD_FOR_MAC) + target_compile_definitions(skia_sksl PUBLIC SK_BUILD_FOR_MAC SKSL_ENABLE_TRACING) endif() target_include_directories(skia_sksl PUBLIC ${SKIA_SOURCE_DIR}) diff --git a/packages/wasm/src/sksl-wasm.d.ts b/packages/wasm/src/sksl-wasm.d.ts index daf0a27..d648945 100644 --- a/packages/wasm/src/sksl-wasm.d.ts +++ b/packages/wasm/src/sksl-wasm.d.ts @@ -16,6 +16,7 @@ export interface SkSLWasm extends EmscriptenModule { _Definition(): void _Completion(): void _Query(): void + _Run(): void } export default function createSkSLWasm(moduleOverrides?: Partial): Promise diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d322f5..54ffe64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,8 @@ importers: specifier: ^2.6.2 version: 2.6.2 + packages/float: {} + packages/integration-test: devDependencies: '@rollup/plugin-commonjs': @@ -133,7 +135,11 @@ importers: specifier: ^3.0.8 version: 3.0.8 - packages/runner-data: {} + packages/runner-data: + dependencies: + '@workspace/float': + specifier: workspace:* + version: link:../float packages/runner-ui: dependencies: @@ -169,7 +175,11 @@ importers: specifier: ^1.8.19 version: 1.8.24(typescript@5.3.2) - packages/util: {} + packages/util: + dependencies: + '@workspace/float': + specifier: workspace:* + version: link:../float packages/wasm: dependencies: