Git Product home page Git Product logo

cfillion / reaimgui Goto Github PK

View Code? Open in Web Editor NEW
50.0 4.0 9.0 3.93 MB

ReaScript binding and REAPER backend for the Dear ImGui toolkit.

Home Page: https://forum.cockos.com/showthread.php?t=250419

License: GNU Lesser General Public License v3.0

C++ 86.36% Objective-C++ 7.27% Ruby 3.73% Lua 0.16% HLSL 0.09% Metal 0.13% Shell 0.02% C 0.04% Meson 1.99% PHP 0.21%
reaper reaper-plugin imgui binding dear-imgui reascript

reaimgui's People

Contributors

cfillion avatar daniellumertz avatar frenchy64 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

reaimgui's Issues

Does not work with ui_scale != 1 in reaper.ini

As mentioned here, ReaImGui shows empty windows if the ui_scale is set to something different from 1.0.

Though I can work around this issue by leaving it at 1.0 and set UI scaling in the Reaper preferences, Reaper does not scale the fonts with that and sucks ATM when defining larger font sizes in libSwell.config. The only "good" way to have a properly scaled UI in Reaper appears to be setting ui_scale in reaper.ini.

This is how it looks on my system:
image

So I kindly request ReaImGui to make proper use of the ui_scale value.

Python ImGui_MenuItem SyntaxError

Hi,

First thank you so much for this amazing project.

I was playing around with the Python bindings. I just run the example https://github.com/cfillion/reaimgui/blob/master/examples/track_manager.py and came across this syntax error.

 File "/Applications/Reaper/Scripts/ReaTeam Extensions/API/imgui_python.py", line 3045
    def ImGui_MenuItem(ctx, label, shortcutInOptional = None, p_selectedInOut, enabledInOptional = None):
                                                                               ^
SyntaxError: non-default argument follows default argument

I have been able to fix my local imgui_python.py module and it seems to work. If I knew how that module is generated I'd make a PR but unfortunately I have zero c++ knowledge.

Cheers

"Unsupported HiDPI mode" error with Windows "System (Enhanced)" DPI scaling

Running any ReaImGui script in 0.8.2 or higher, with these two DPI settings, fails with the following ReaImGui backend error message:

Unsupported HiDPI mode: select "Multimonitor aware v2" in Preferences > General > Adavanced UI/system settings.

On my Windows 11 system with two mixed resolution monitors (2160p/1440p), the only settings that scale both REAPERs interface, extensions like HeDa Track Inspector, and VST plugins, is to set the REAPER.exe DPI compatibility to "System (Enhanced)" and REAPERs own HDPI mode in Advanced UI settings to "Multimonitor aware (recommended)". Setting this to "V2 (experimental)" as the error message suggests does cure the ReaImGui issue but reintroduces scaling problems elsewhere in REAPER.

Rolling back to version 0.8.1 solves this issue, so it looks related to this change made in 0.8.2:

  • Windows: temporarily disable usage under non-multimonitor aware HiDPI modes [p=2629558]

I'm not sure if this is blocking the "multi-monitor (recommended)" setting inadvertently or if there is a necessity for v2 to run newer ReaImGui.

Cheers!

Attaching fonts not working from Python

The following Python code fails with the following errors:

  • !ImGui_PushFont: font is not attached to the context
  • !ImGui_PopFont: ImGui assertion failed: Size > 0
sys.path.append(RPR_GetResourcePath() + "/Scripts/ReaTeam Extensions/API")
from imgui_python import *

ctx = ImGui_CreateContext("Font test")
font = ImGui_CreateFont("sans-serif", 15)
ImGui_Attach(ctx, font)

def loop():
  ImGui_PushFont(ctx, font)

  visible, is_open = ImGui_Begin(ctx, "Font test", True)

  if visible:
    ImGui_Text(ctx, "Hello, world!")
    ImGui_End(ctx)

  ImGui_PopFont(ctx)

  if is_open:
    RPR_defer("loop()")

RPR_defer("loop()")

If the PushFont/PopFont calls are commented out, the code succeeds, but without the custom font.

For comparison, the following Lua code works:

ctx = reaper.ImGui_CreateContext("Font test")
font = reaper.ImGui_CreateFont("sans-serif", 15)
reaper.ImGui_Attach(ctx, font)

function loop()
  reaper.ImGui_PushFont(ctx, font)

  visible, is_open = reaper.ImGui_Begin(ctx, "Font test", true)

  if visible then
    reaper.ImGui_Text(ctx, "Hello, world!")
    reaper.ImGui_End(ctx)
  end

  reaper.ImGui_PopFont(ctx)

  if is_open then
    reaper.defer(loop)
  end
end

reaper.defer(loop)

Thanks for this project!
Dave

Several constants (enums) are not loaded from `GetFunc`

I'm working on rust bindings, and, generally, everything works. But several constants are still not loaded, while the most part of the API is.

I can not say, I suffer from this right now, but I'm interested, what can be matter. Loading happens after all user plugins are initialized.

Arch Linux x86-64, ReaImGui 0.8.1 (I just grab the latest release for bindings generation)

Here is the list:

can not load constant: ImGui_ConfigFlags_NavNoCaptureKeyboard
Can not load constant: ImGui_ConfigVar_DockingNoSplit
Can not load constant: ImGui_ConfigVar_DockingTransparentPayload
Can not load constant: ImGui_ConfigVar_DockingWithShift
Can not load constant: ImGui_ConfigVar_DragClickToInputText
Can not load constant: ImGui_ConfigVar_Flags
Can not load constant: ImGui_ConfigVar_HoverDelayNormal
Can not load constant: ImGui_ConfigVar_HoverDelayShort
Can not load constant: ImGui_ConfigVar_InputTextCursorBlink
Can not load constant: ImGui_ConfigVar_InputTextEnterKeepActive
Can not load constant: ImGui_ConfigVar_InputTrickleEventQueue
Can not load constant: ImGui_ConfigVar_KeyRepeatDelay
Can not load constant: ImGui_ConfigVar_KeyRepeatRate
Can not load constant: ImGui_ConfigVar_MacOSXBehaviors
Can not load constant: ImGui_ConfigVar_MouseDoubleClickMaxDist
Can not load constant: ImGui_ConfigVar_MouseDoubleClickTime
Can not load constant: ImGui_ConfigVar_MouseDragThreshold
Can not load constant: ImGui_ConfigVar_ViewportsNoDecoration
Can not load constant: ImGui_ConfigVar_WindowsMoveFromTitleBarOnly
Can not load constant: ImGui_ConfigVar_WindowsResizeFromEdges
Can not load constant: ImGui_HoveredFlags_DelayNormal
Can not load constant: ImGui_HoveredFlags_DelayShort
Can not load constant: ImGui_HoveredFlags_NoNavOverride
Can not load constant: ImGui_HoveredFlags_NoSharedDelay
Can not load constant: ImGui_Key_0
Can not load constant: ImGui_Key_1
Can not load constant: ImGui_Key_2
Can not load constant: ImGui_Key_3
Can not load constant: ImGui_Key_4
Can not load constant: ImGui_Key_5
Can not load constant: ImGui_Key_6
Can not load constant: ImGui_Key_7
Can not load constant: ImGui_Key_8
Can not load constant: ImGui_Key_9
Can not load constant: ImGui_Key_A
Can not load constant: ImGui_Key_Apostrophe
Can not load constant: ImGui_Key_B
Can not load constant: ImGui_Key_Backslash
Can not load constant: ImGui_Key_Backspace
Can not load constant: ImGui_Key_C
Can not load constant: ImGui_Key_CapsLock
Can not load constant: ImGui_Key_Comma
Can not load constant: ImGui_Key_D
Can not load constant: ImGui_Key_Delete
Can not load constant: ImGui_Key_DownArrow
Can not load constant: ImGui_Key_E
Can not load constant: ImGui_Key_End
Can not load constant: ImGui_Key_Enter
Can not load constant: ImGui_Key_Equal
Can not load constant: ImGui_Key_Escape
Can not load constant: ImGui_Key_F
Can not load constant: ImGui_Key_F1
Can not load constant: ImGui_Key_F10
Can not load constant: ImGui_Key_F11
Can not load constant: ImGui_Key_F12
Can not load constant: ImGui_Key_F2
Can not load constant: ImGui_Key_F3
Can not load constant: ImGui_Key_F4
Can not load constant: ImGui_Key_F5
Can not load constant: ImGui_Key_F6
Can not load constant: ImGui_Key_F7
Can not load constant: ImGui_Key_F8
Can not load constant: ImGui_Key_F9
Can not load constant: ImGui_Key_G
Can not load constant: ImGui_Key_GraveAccent
Can not load constant: ImGui_Key_H
Can not load constant: ImGui_Key_Home
Can not load constant: ImGui_Key_I
Can not load constant: ImGui_Key_Insert
Can not load constant: ImGui_Key_J
Can not load constant: ImGui_Key_K
Can not load constant: ImGui_Key_Keypad0
Can not load constant: ImGui_Key_Keypad1
Can not load constant: ImGui_Key_Keypad2
Can not load constant: ImGui_Key_Keypad3
Can not load constant: ImGui_Key_Keypad4
Can not load constant: ImGui_Key_Keypad5
Can not load constant: ImGui_Key_Keypad6
Can not load constant: ImGui_Key_Keypad7
Can not load constant: ImGui_Key_Keypad8
Can not load constant: ImGui_Key_Keypad9
Can not load constant: ImGui_Key_KeypadAdd
Can not load constant: ImGui_Key_KeypadDecimal
Can not load constant: ImGui_Key_KeypadDivide
Can not load constant: ImGui_Key_KeypadEnter
Can not load constant: ImGui_Key_KeypadEqual
Can not load constant: ImGui_Key_KeypadMultiply
Can not load constant: ImGui_Key_KeypadSubtract
Can not load constant: ImGui_Key_L
Can not load constant: ImGui_Key_LeftAlt
Can not load constant: ImGui_Key_LeftArrow
Can not load constant: ImGui_Key_LeftBracket
Can not load constant: ImGui_Key_LeftCtrl
Can not load constant: ImGui_Key_LeftShift
Can not load constant: ImGui_Key_LeftSuper
Can not load constant: ImGui_Key_M
Can not load constant: ImGui_Key_Menu
Can not load constant: ImGui_Key_Minus
Can not load constant: ImGui_Key_N
Can not load constant: ImGui_Key_NumLock
Can not load constant: ImGui_Key_O
Can not load constant: ImGui_Key_P
Can not load constant: ImGui_Key_PageDown
Can not load constant: ImGui_Key_PageUp
Can not load constant: ImGui_Key_Pause
Can not load constant: ImGui_Key_Period
Can not load constant: ImGui_Key_PrintScreen
Can not load constant: ImGui_Key_Q
Can not load constant: ImGui_Key_R
Can not load constant: ImGui_Key_RightAlt
Can not load constant: ImGui_Key_RightArrow
Can not load constant: ImGui_Key_RightBracket
Can not load constant: ImGui_Key_RightCtrl
Can not load constant: ImGui_Key_RightShift
Can not load constant: ImGui_Key_RightSuper
Can not load constant: ImGui_Key_S
Can not load constant: ImGui_Key_ScrollLock
Can not load constant: ImGui_Key_Semicolon
Can not load constant: ImGui_Key_Slash
Can not load constant: ImGui_Key_Space
Can not load constant: ImGui_Key_T
Can not load constant: ImGui_Key_Tab
Can not load constant: ImGui_Key_U
Can not load constant: ImGui_Key_UpArrow
Can not load constant: ImGui_Key_V
Can not load constant: ImGui_Key_W
Can not load constant: ImGui_Key_X
Can not load constant: ImGui_Key_Y
Can not load constant: ImGui_Key_Z
Can not load constant: ImGui_Mod_Alt
Can not load constant: ImGui_Mod_Ctrl
Can not load constant: ImGui_Mod_None
Can not load constant: ImGui_Mod_Shift
Can not load constant: ImGui_Mod_Shortcut
Can not load constant: ImGui_Mod_Super
Can not load constant: ImGui_Key_MouseLeft
Can not load constant: ImGui_Key_MouseMiddle
Can not load constant: ImGui_Key_MouseRight
Can not load constant: ImGui_Key_MouseWheelX
Can not load constant: ImGui_Key_MouseWheelY
Can not load constant: ImGui_Key_MouseX1
Can not load constant: ImGui_Key_MouseX2
Can not load constant: ImGui_InputTextFlags_EscapeClearsAll

That is how I load them:

Key_MouseRight: unsafe {
    match plugin_context
        .GetFunc(c_str_macro::c_str!("ImGui_Key_MouseRight").as_ptr())
        .is_null()
    {
        true => {
            eprintln!("Can not load constant: {}", "ImGui_Key_MouseRight");
            None
        }
        false => Some((ConstLoader {
            f: std::mem::transmute(
                plugin_context
                    .GetFunc(c_str_macro::c_str!("ImGui_Key_MouseRight").as_ptr()),
            ),
        }
        .f)()),
    }
},

ConstLoader is just a container for C-function type:

struct ConstLoader {
    f: extern "C" fn() -> i32,
}

Reaper colors

Didn't you think of bringing the reaper theme colors to the defaults on imgui load, as you did with docking?

I always feel imgui original colors a bit alien. And also think of implementing a sort of such an option in the wrap around your library now. Just a bit aware of making the same calls twice, if it is in your roadmap.

Use meson wraps for WDL and reaper-sdk

Hey,

I see you include WDL and reaper-sdk as git submodules. Any intentions to convert them into meson wraps? This way it would be very easy for other projects to use these sdks with the meson build system :-).

Non-latin characters are displayed as '?'

Linux 5.11.0-49-lowlatency #55-Ubuntu SMP PREEMPT Wed Jan 12 18:18:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Reaper 6.44, sws-2.12.1.3-Linux-x86_64

изображение

I see some troubles of unicode rendering. At the first glance I thought this is a problem of the selected font, but tests with Cyrillic font (as from python as from lua) showed it is not a matter.

Later I thought it is connected to the way strings has to be packed for the C-interface. In the reapy project, we've made hacks of original reaper_python for correct working of various strings and pointers. But, as far as I tried (not very long) — I didn't succeed with the problem.

As long as I can see it is not a issue of reascript itself, as Russian characters in the track name are visible as from ReaConsole as from the print statements (in the track manager example), but not in ImGui window.

So, at the moment, I think the problem is on the ReaImGui side. Later I'll try to make a minimal working unicode text example with JS_* API to test whether some characters can be drawn or not.

I'll carefully say Reaper and SWELL leaks some points of unicode support, generally, in Chinese symbols. But Russian works well.


The code below uses wrap I'm preparing, but It does exactly the same as original python port.

import reapy as reaper

ctx = reaper.ImGui.CreateContext('My script')
size = 25
font = reaper.ImGui.CreateFont('/home/levitanus/Загрузки/fonts/Montserrat/Montserrat-Light.ttf', size)
reaper.ImGui.AttachFont(ctx, font)

click_count, text = 0, '(例子) - chineeze, (рыба) russian'


def frame():
    global click_count, text

    if reaper.ImGui.Button(ctx, 'Click me!'):
        click_count = click_count + 1
    if click_count % 2 == 1:
        reaper.ImGui.SameLine(ctx)
        reaper.ImGui.Text(ctx, 'hello dear imgui!')

    rv, text = reaper.ImGui.InputText(ctx, 'text input', text, 1024 * 2)


def loop():
    reaper.ImGui.PushFont(ctx, font)
    reaper.ImGui.SetNextWindowSize(
        ctx, 400, 80, reaper.ImGui.Cond_FirstUseEver()
    )
    visible, open = reaper.ImGui.Begin(ctx, 'My script', True)
    if visible:
        frame()
        reaper.ImGui.End(ctx)

    reaper.ImGui.PopFont(ctx)

    if open:
        reaper.defer(loop)
    else:
        reaper.ImGui.DestroyContext(ctx)


reaper.defer(loop)

Mouse pointer misalignment in a multi-display Linux (sway) environment

In my environment, the mouse pointer target is off as shown here and does not work properly.

Screencast:

20240212-233916_screencast.mp4

This seems to occur in a multi-display environment.
It did not occur in a single display laptop environment.
What should I do?

Environment:

  • multi-display
  • OS: Arch Linux x86_64
  • Kernel: 6.7.4-arch1-1
  • WM: sway

"ImGuiContextUtils.RecoverFromUiContextErrors()"

Found this snippet from the imgui author that is fairly recent + undocumented in source -- seems like it could be useful in the exception handler in context.cpp:

ocornut/imgui#1651 (comment)
ocornut/imgui@9712bff

 catch (const imgui_error& e) {
  char message[1024];
  snprintf(message, sizeof(message), "ImGui assertion failed: %s\n", e.what());
  ShowConsoleMsg(
      message);  // cannot use ReaScriptError unless called by a script

  // no recovery, just destroy the context
  m_window->endFrame();
  m_fontAtlas->Locked = false;  // don't assert again when destroying the atlas
  m_inFrame = false;            // don't call endFrame again from the destructor
  delete this;
}

With the calls translated for ReaScript's console, I think it would be something like this?

const void RecoverFromUiContextErrors(bool verbose) {
  ImGuiContext& g = *GImGui;

  while (g.CurrentWindowStack.Size > 0) {
#ifdef IMGUI_HAS_TABLE
    while (g.CurrentTable && (g.CurrentTable->OuterWindow == g.CurrentWindow ||
                              g.CurrentTable->InnerWindow == g.CurrentWindow)) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing EndTable() call.");
      ImGui::EndTable();
    }
#endif

    while (g.CurrentTabBar != NULL) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing EndTabBar() call.");
      ImGui::EndTabBar();
    }

    while (g.CurrentWindow->DC.TreeDepth > 0) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing TreePop() call.");
      ImGui::TreePop();
    }

    while (g.GroupStack.Size >
           g.CurrentWindow->DC.StackSizesOnBegin.SizeOfGroupStack) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing EndGroup() call.");
      ImGui::EndGroup();
    }

    while (g.CurrentWindow->IDStack.Size > 1) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing PopID() call.");
      ImGui::PopID();
    }

    while (g.ColorStack.Size >
           g.CurrentWindow->DC.StackSizesOnBegin.SizeOfColorStack) {
      if (verbose) {
        ShowConsoleMsg(
            strcat((char*)"Recovered from missing PopStyleColor() for ",
                   ImGui::GetStyleColorName(g.ColorStack.back().Col)));
      }
      ImGui::PopStyleColor();
    }

    while (g.StyleVarStack.Size >
           g.CurrentWindow->DC.StackSizesOnBegin.SizeOfStyleVarStack) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing PopStyleVar().");
      ImGui::PopStyleVar();
    }
    while (g.FocusScopeStack.Size >
           g.CurrentWindow->DC.StackSizesOnBegin.SizeOfFocusScopeStack) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing PopFocusScope().");
      ImGui::PopFocusScope();
    }

    if (g.CurrentWindowStack.Size == 1) {
      IM_ASSERT(g.CurrentWindow->IsFallbackWindow);
      break;
    }

    if (g.CurrentWindow->Flags & ImGuiWindowFlags_ChildWindow) {
      if (verbose)
        ShowConsoleMsg("Recovered from missing EndChild() call.");
      ImGui::EndChild();
    } else {
      if (verbose)
        ShowConsoleMsg("Recovered from missing End() call.");
      ImGui::End();
    }
  }
}
}  // namespace ImGuiContextUtils

Add support of different SliderN value format.

image
I noticed, that there are more use-cases, when I need different field format, rather the same. The example above demostrates the exact use-case for such things: the fields in color picker are differentely named.


And, also, somehow connected question on string arrays separators: I made a lot of attempts of constructing `CStr` with null-terminators between items, but all of them were ended or by errors on compilation, or by crashing of the Reaper. Did you succeed to implement them from the Python side, for example?

I don't suffer from this now, but in the context of the issue, i feel it also important…

Blackscreen with docking (radeon driver, Linux)

I'm not sure what the matter, but it looks like some mesa capability leak: at least I've faces the same troubles with several modern OpenGL games. When ReaImGui is opened and docked — Reaper window starts to flicker and within any action it starts to be completely black.

Sometimes I see the same glitches on the main workstation with GTX970 on the board, but they are quite rare.

As I understand, the bug independent of the script language: I've faced issue with my own script and demo.lua. Then I've started from working hello_world.eel, by porting it to python and adding more and more complex widgets. Finally, I've found that the docker is an issue.

P.S. I've also tried to use some gaming tricks like overriding MESA_GL_VERSION_OVERRIDE=\d.\d without success.

System info:
Reaper 6.47, SWS 2.12.1.3, ImGui 0.5.10

uname -a
Linux levitanus-laptop 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

levitanus@levitanus-laptop:~$ lspci -k                                           00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Complex
        Subsystem: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Complex
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Richland [Radeon HD 8550G]
        Subsystem: Acer Incorporated [ALI] Richland [Radeon HD 8550G]
        Kernel driver in use: radeon
        Kernel modules: radeon
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Port
        Kernel driver in use: pcieport
00:10.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 09)
        Subsystem: Acer Incorporated [ALI] FCH USB XHCI Controller
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
        Subsystem: Acer Incorporated [ALI] FCH SATA Controller [AHCI mode]
        Kernel driver in use: ahci
        Kernel modules: ahci
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
        Subsystem: Acer Incorporated [ALI] FCH USB OHCI Controller
        Kernel driver in use: ohci-pci
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
        Subsystem: Acer Incorporated [ALI] FCH USB EHCI Controller
        Kernel driver in use: ehci-pci
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
        Subsystem: Acer Incorporated [ALI] FCH USB OHCI Controller
        Kernel driver in use: ohci-pci
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
        Subsystem: Acer Incorporated [ALI] FCH USB EHCI Controller
        Kernel driver in use: ehci-pci
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 16)
        Subsystem: Acer Incorporated [ALI] FCH SMBus Controller
        Kernel modules: i2c_piix4, sp5100_tco
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
        Subsystem: Acer Incorporated [ALI] FCH Azalia Controller
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 11)
        Subsystem: Acer Incorporated [ALI] FCH LPC Bridge
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] FCH PCI Bridge (rev 40)
00:14.7 SD Host controller: Advanced Micro Devices, Inc. [AMD] FCH SD Flash Controller
        Subsystem: Acer Incorporated [ALI] FCH SD Flash Controller
        Kernel driver in use: sdhci-pci
        Kernel modules: sdhci_pci
00:15.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Hudson PCI to PCI bridge (PCIE port 0)
        Kernel driver in use: pcieport
00:15.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Hudson PCI to PCI bridge (PCIE port 1)
        Kernel driver in use: pcieport
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 3
        Kernel driver in use: k10temp
        Kernel modules: k10temp
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 5
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Mars [Radeon HD 8670A/8670M/8750M / R7 M370]
        Subsystem: Acer Incorporated [ALI] Mars [Radeon HD 8670A/8670M/8750M]
        Kernel driver in use: radeon
        Kernel modules: radeon, amdgpu
03:00.0 Ethernet controller: Qualcomm Atheros QCA8171 Gigabit Ethernet (rev 13)
        Subsystem: Acer Incorporated [ALI] QCA8171 Gigabit Ethernet
        Kernel driver in use: alx
        Kernel modules: alx
03:00.1 SD Host controller: Qualcomm Atheros Device 3010 (rev 13)
        Subsystem: Acer Incorporated [ALI] Device 080f
        Kernel driver in use: sdhci-pci
        Kernel modules: sdhci_pci
04:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
        Subsystem: Foxconn International, Inc. AR9462 Wireless Network Adapter
        Kernel driver in use: ath9k
        Kernel modules: ath9k

Add note about configuring CMake in $PROJECT/.vscode/settings.json (if CMake extension installed)

Configuring my VS Code settings like this was the only way I could manage to get it compiled (though that's probably something on my end) 😅

Might be useful for other folks? When you configure like this, you can just click the "build" button from the CMake extension inside of VS Code 👍

Requires ms-vscode.cmake-tools: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools

{
  "cmake.sourceDirectory": "${workspaceFolder}",
  "cmake.generator": "Ninja",
  "cmake.environment": {
    "VCPKG_ROOT": "C:\\Users\\rayga\\projects\\vcpkg",
    "VCPKG_DEFAULT_TRIPLET": "x64-windows-static"
  },
  // Values passed here are equivalent to "-DCMAKE_" flags
  "cmake.configureSettings": {
    "CMAKE_BUILD_TYPE": "Debug",
    "CMAKE_EXPORT_COMPILE_COMMANDS": 1,
    "CMAKE_TOOLCHAIN_FILE": "C:\\Users\\rayga\\Projects\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
  }
}

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.