More wasm things, high-dpi browser tests
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
5370e2ad6e
commit
5ed8eb4731
12 changed files with 61 additions and 53 deletions
1
Makefile
1
Makefile
|
@ -64,6 +64,7 @@ DGL_EXTRA_ARGS = \
|
||||||
NVG_DISABLE_SKIPPING_WHITESPACE=true \
|
NVG_DISABLE_SKIPPING_WHITESPACE=true \
|
||||||
NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST \
|
NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST \
|
||||||
USE_NANOVG_FBO=true \
|
USE_NANOVG_FBO=true \
|
||||||
|
ASM_EXCEPTIONS=true \
|
||||||
WINDOWS_ICON_ID=401
|
WINDOWS_ICON_ID=401
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
|
2
carla
2
carla
|
@ -1 +1 @@
|
||||||
Subproject commit ca15445429d7ff872fd40db23e24840cc6b90436
|
Subproject commit 1ee091f4cc42fcf25d5064e6b9ebd569038684fe
|
5
deps/Makefile
vendored
5
deps/Makefile
vendored
|
@ -10,6 +10,7 @@
|
||||||
DISTRHO_NAMESPACE = CardinalDISTRHO
|
DISTRHO_NAMESPACE = CardinalDISTRHO
|
||||||
DGL_NAMESPACE = CardinalDGL
|
DGL_NAMESPACE = CardinalDGL
|
||||||
USE_NANOVG_FBO = true
|
USE_NANOVG_FBO = true
|
||||||
|
WASM_EXCEPTIONS = true
|
||||||
include ../dpf/Makefile.base.mk
|
include ../dpf/Makefile.base.mk
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
@ -62,10 +63,6 @@ BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing
|
||||||
# Rack code is not tested for this flag, unset it
|
# Rack code is not tested for this flag, unset it
|
||||||
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
||||||
|
|
||||||
ifeq ($(WASM),true)
|
|
||||||
BUILD_CXX_FLAGS += -fexceptions
|
|
||||||
endif
|
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# override VCV arch.mk stuff so we can build more architectures
|
# override VCV arch.mk stuff so we can build more architectures
|
||||||
|
|
||||||
|
|
2
dpf
2
dpf
|
@ -1 +1 @@
|
||||||
Subproject commit c2938c02994988bd5dde4c4cbba9951709789ee8
|
Subproject commit b63db742200341b91358c14a7290104cb97d5613
|
|
@ -21,7 +21,6 @@
|
||||||
# include_next <mmintrin.h>
|
# include_next <mmintrin.h>
|
||||||
#elif defined(__EMSCRIPTEN__)
|
#elif defined(__EMSCRIPTEN__)
|
||||||
# include <wasm_simd128.h>
|
# include <wasm_simd128.h>
|
||||||
// # include_next <pmmintrin.h>
|
|
||||||
#else
|
#else
|
||||||
# include "../sse2neon/sse2neon.h"
|
# include "../sse2neon/sse2neon.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,16 +23,6 @@
|
||||||
#elif defined(__EMSCRIPTEN__)
|
#elif defined(__EMSCRIPTEN__)
|
||||||
# include_next <pmmintrin.h>
|
# include_next <pmmintrin.h>
|
||||||
|
|
||||||
// NOTE these have been verified to be unused (included for ValleyAudio builds)
|
|
||||||
// static inline
|
|
||||||
// __m64 _mm_and_si64(__m64 a, __m64 b) { return a; }
|
|
||||||
//
|
|
||||||
// static inline
|
|
||||||
// __m64 _mm_andnot_si64(__m64 a, __m64 b) { return a; }
|
|
||||||
//
|
|
||||||
// static inline
|
|
||||||
// __m64 _mm_or_si64(__m64 a, __m64 b) { return a; }
|
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
__m64 _mm_set1_pi16(short w)
|
__m64 _mm_set1_pi16(short w)
|
||||||
{
|
{
|
||||||
|
@ -48,25 +38,6 @@ void __builtin_ia32_pause()
|
||||||
__asm__ __volatile__("isb\n");
|
__asm__ __volatile__("isb\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
|
||||||
__m64 _mm_and_si64(__m64 a, __m64 b)
|
|
||||||
{
|
|
||||||
return vreinterpret_s64_s32(vand_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
__m64 _mm_andnot_si64(__m64 a, __m64 b)
|
|
||||||
{
|
|
||||||
// *NOTE* argument swap
|
|
||||||
return vreinterpret_s64_s32(vbic_s32(vreinterpret_s32_m64(b), vreinterpret_s32_m64(a)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
__m64 _mm_or_si64(__m64 a, __m64 b)
|
|
||||||
{
|
|
||||||
return vreinterpret_s64_s32(vorr_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
__m64 _mm_set1_pi16(short w)
|
__m64 _mm_set1_pi16(short w)
|
||||||
{
|
{
|
||||||
|
|
|
@ -287,7 +287,7 @@ struct SassyScopeWidget : ImGuiWidget {
|
||||||
do_show_scope_window(module != nullptr ? &module->scope : getFakeScopeInstance(), scaleFactor);
|
do_show_scope_window(module != nullptr ? &module->scope : getFakeScopeInstance(), scaleFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onButton(const ButtonEvent& e)
|
void onButton(const ButtonEvent& e) override
|
||||||
{
|
{
|
||||||
// if mouse press is over draggable areas, do nothing so event can go to Rack
|
// if mouse press is over draggable areas, do nothing so event can go to Rack
|
||||||
if (e.action == GLFW_PRESS)
|
if (e.action == GLFW_PRESS)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
DISTRHO_NAMESPACE = CardinalDISTRHO
|
DISTRHO_NAMESPACE = CardinalDISTRHO
|
||||||
DGL_NAMESPACE = CardinalDGL
|
DGL_NAMESPACE = CardinalDGL
|
||||||
USE_NANOVG_FBO = true
|
USE_NANOVG_FBO = true
|
||||||
|
WASM_EXCEPTIONS = true
|
||||||
include ../dpf/Makefile.base.mk
|
include ../dpf/Makefile.base.mk
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
@ -114,10 +115,6 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
|
||||||
# Rack code is not tested for this flag, unset it
|
# Rack code is not tested for this flag, unset it
|
||||||
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
||||||
|
|
||||||
ifeq ($(WASM),true)
|
|
||||||
BUILD_CXX_FLAGS += -fexceptions
|
|
||||||
endif
|
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# Rack files to build
|
# Rack files to build
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ DGL_NAMESPACE = CardinalDGL
|
||||||
NVG_DISABLE_SKIPPING_WHITESPACE = true
|
NVG_DISABLE_SKIPPING_WHITESPACE = true
|
||||||
NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
|
NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
|
||||||
USE_NANOVG_FBO = true
|
USE_NANOVG_FBO = true
|
||||||
|
WASM_EXCEPTIONS = true
|
||||||
include ../../dpf/Makefile.base.mk
|
include ../../dpf/Makefile.base.mk
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
@ -194,10 +195,6 @@ endif
|
||||||
# Rack code is not tested for this flag, unset it
|
# Rack code is not tested for this flag, unset it
|
||||||
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
|
||||||
|
|
||||||
ifeq ($(WASM),true)
|
|
||||||
BUILD_CXX_FLAGS += -fexceptions
|
|
||||||
endif
|
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# FIXME lots of warnings from VCV side
|
# FIXME lots of warnings from VCV side
|
||||||
|
|
||||||
|
@ -210,9 +207,9 @@ BASE_FLAGS += -Wno-unused-variable
|
||||||
ifeq ($(WASM),true)
|
ifeq ($(WASM),true)
|
||||||
LINK_FLAGS += --preload-file=./resources
|
LINK_FLAGS += --preload-file=./resources
|
||||||
LINK_FLAGS += -sALLOW_MEMORY_GROWTH
|
LINK_FLAGS += -sALLOW_MEMORY_GROWTH
|
||||||
LINK_FLAGS += -sEXPORTED_RUNTIME_METHODS=FS,ccall
|
LINK_FLAGS += -sEXPORTED_RUNTIME_METHODS=FS,cwrap
|
||||||
LINK_FLAGS += -sINITIAL_MEMORY=64Mb
|
LINK_FLAGS += -sINITIAL_MEMORY=64Mb
|
||||||
LINK_FLAGS += -sLZ4=1
|
# LINK_FLAGS += -sLZ4=1
|
||||||
LINK_FLAGS += --shell-file=../emscripten/shell.html
|
LINK_FLAGS += --shell-file=../emscripten/shell.html
|
||||||
else ifeq ($(HAIKU),true)
|
else ifeq ($(HAIKU),true)
|
||||||
LINK_FLAGS += -lpthread
|
LINK_FLAGS += -lpthread
|
||||||
|
|
|
@ -3,10 +3,13 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="description" content="Cardinal" />
|
||||||
|
<meta name="theme-color" content="#111111">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1" user-scalable="no">
|
||||||
<title>Cardinal Synth</title>
|
<title>Cardinal Synth</title>
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
background-color: #111;
|
background-color: #111111;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
}
|
}
|
||||||
body, canvas {
|
body, canvas {
|
||||||
|
@ -14,16 +17,36 @@
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#canvas_file_open,
|
#canvas_file_open {
|
||||||
#canvas_file_save {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#canvas_wrapper {
|
#canvas_wrapper {
|
||||||
display: none;
|
display: none;
|
||||||
|
image-rendering: pixelated;
|
||||||
|
image-rendering: crisp-edges;
|
||||||
|
position: absolute;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
@media (min-resolution: 2dppx) {
|
||||||
|
#canvas_wrapper {
|
||||||
|
scale: calc(1/2);
|
||||||
|
width: 200vw;
|
||||||
|
height: 200vh;
|
||||||
|
left: -50vw;
|
||||||
|
top: -50vh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-resolution: 3dppx) {
|
||||||
|
#canvas_wrapper {
|
||||||
|
scale: calc(1/3);
|
||||||
|
width: 300vw;
|
||||||
|
height: 300vh;
|
||||||
|
left: -100vw;
|
||||||
|
top: -100vh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.emscripten {
|
.emscripten {
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -79,7 +102,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="canvas_wrapper">
|
<div id="canvas_wrapper">
|
||||||
<input type="file" id="canvas_file_open" ></input>
|
<input type="file" id="canvas_file_open" ></input>
|
||||||
<a href="#" id="canvas_file_save"></a>
|
|
||||||
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
|
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,7 @@ struct FileButton : MenuButton {
|
||||||
patchUtils::loadTemplateDialog();
|
patchUtils::loadTemplateDialog();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
#ifndef DISTRHO_OS_WASM
|
||||||
menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() {
|
menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() {
|
||||||
patchUtils::loadDialog();
|
patchUtils::loadDialog();
|
||||||
}));
|
}));
|
||||||
|
@ -126,6 +127,23 @@ struct FileButton : MenuButton {
|
||||||
menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
||||||
patchUtils::saveAsDialog();
|
patchUtils::saveAsDialog();
|
||||||
}));
|
}));
|
||||||
|
#else
|
||||||
|
menu->addChild(createMenuItem("Import patch...", RACK_MOD_CTRL_NAME "+O", []() {
|
||||||
|
patchUtils::loadDialog();
|
||||||
|
}));
|
||||||
|
|
||||||
|
menu->addChild(createMenuItem("Import selection...", "", [=]() {
|
||||||
|
patchUtils::loadSelectionDialog();
|
||||||
|
}, false, true));
|
||||||
|
|
||||||
|
menu->addChild(createMenuItem("Save and download compressed", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
||||||
|
patchUtils::saveAsDialog();
|
||||||
|
}));
|
||||||
|
|
||||||
|
menu->addChild(createMenuItem("Save and download uncompressed", "", []() {
|
||||||
|
patchUtils::saveAsDialogUncompressed();
|
||||||
|
}));
|
||||||
|
#endif
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() {
|
menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() {
|
||||||
patchUtils::revertDialog();
|
patchUtils::revertDialog();
|
||||||
|
@ -151,16 +169,18 @@ struct FileButton : MenuButton {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DISTRHO_OS_WASM
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
||||||
// Load selection
|
// Load selection
|
||||||
menu->addChild(createMenuItem("Import selection", "", [=]() {
|
menu->addChild(createMenuItem("Import selection...", "", [=]() {
|
||||||
patchUtils::loadSelectionDialog();
|
patchUtils::loadSelectionDialog();
|
||||||
}, false, true));
|
}, false, true));
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Export uncompressed json...", "", []() {
|
menu->addChild(createMenuItem("Export uncompressed json...", "", []() {
|
||||||
patchUtils::saveAsDialogUncompressed();
|
patchUtils::saveAsDialogUncompressed();
|
||||||
}));
|
}));
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!demoPatches.empty())
|
if (!demoPatches.empty())
|
||||||
{
|
{
|
||||||
|
@ -182,13 +202,15 @@ struct FileButton : MenuButton {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef DISTRHO_OS_WASM
|
||||||
if (isStandalone) {
|
if (isStandalone) {
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() {
|
menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() {
|
||||||
APP->window->close();
|
APP->window->close();
|
||||||
}));
|
}));
|
||||||
};
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -299,11 +299,13 @@ void Scene::onHoverKey(const HoverKeyEvent& e) {
|
||||||
patchUtils::revertDialog();
|
patchUtils::revertDialog();
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
|
#ifndef DISTRHO_OS_WASM
|
||||||
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
// NOTE: will do nothing if path is empty, intentionally
|
// NOTE: will do nothing if path is empty, intentionally
|
||||||
patchUtils::saveDialog(APP->patch->path);
|
patchUtils::saveDialog(APP->patch->path);
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) {
|
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) {
|
||||||
patchUtils::saveAsDialog();
|
patchUtils::saveAsDialog();
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue