Git Product home page Git Product logo

lpp_public's People

Contributors

molecularmatters avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

lpp_public's Issues

Feature request: make unity splitting smarter about large unity files

I love the idea of unity splitting, but it does not work that well on our project, in which a unity file can reference up to 250 compilands - which means that patching or deoptimizing leads to rebuilding 250 files... Per affected unity. The obvious workaround is to disable unity splitting.

It would help if Live++ tried to do the same thing as FASTbuild does when encountering editable files: removing them from the unity they belong to. Would that be an option for Live++ ?

Feature request: filtering/ordering by optimization status in the Broker

Scenario: I would like to keep track of which compilands I have toggled optimizations on for easier batch-reoptimization
Proposed feature: An option to see all deoptimized compilands at a glance would help, whether it is through a checkbox, a column sort or a keyword in the filter box.

Bug report: Presence of Live++ prevents OBS graphics hook from capturing application

Scenario:

I'm developing a game that uses D3D11 and DXGI for rendering, the swap-chain etc. When trying to capture the application via Open Broadcaster Software (OBS) Studio (version 30.0.2) it is not possible to capture the application using the "Game Capture" source. Only a "Window Capture" or full "Display Capture" works.

This problem is not critical, since it's relatively trivial to disable Live++ when I intend to capture game footage, which I'd do on a release build anyway. But it has tripped me up for a while that "Game Capture" wasn't working. I spent a lot of time looking through the setup code for my renderer trying things out until I stumbled upon the debug output below and tried the application without Live++ running.
Ultimately my worry was just that players of the game would eventually run into the same problem trying to capture the game using "Game Capture". I'm no longer worried about that now :)

I don't understand enough about the details to say whether Live++ or OBS is in a position to fix this issue, or whether it's just an inherent limitation related to Microsoft Detours that cannot be solved. So maybe it would be enough to add this in the Documentation or FAQ so it's easier to figure out for other people in the future.

Steps to reproduce:

  1. Open the application and OBS (the order does not matter)
  2. Create a new "Game Capture" source in any scene in OBS
  3. Select the application using the default settings (changing any of them doesn't seem to help anyway) and click OK
  4. The preview window in OBS doesn't show the application

For comparison, creating a "Window Capture" in the same way works.

Thankfully OBS prints to the debug output when it attempts to hook into an application. When it fails the output looks as follows:

[OBS] graphics-hook.dll loaded against process: <application name>.exe
[OBS] (half life scientist) everything..  seems to be in order
[OBS] Failed to attach Detours hook: 8
[OBS] Failed to attach Detours hook: 8
[OBS] Failed to attach Detours hook: 8
.... repeating that last line forever

When it works it looks like this:

[OBS] graphics-hook.dll loaded against process: <application name>.exe
[OBS] (half life scientist) everything..  seems to be in order
[OBS] Hooked IDXGISwapChain::Present
[OBS] Hooked IDXGISwapChain::ResizeBuffers
[OBS] Hooked IDXGISwapChain1::Present1
[OBS] Hooked IDXGISwapChain::Release
[OBS] Hooked DXGI
[OBS] Found D3D11 11.0 device on swap chain
[OBS] DXGI_SWAP_CHAIN_DESC:
    BufferDesc.Width: 1920
    BufferDesc.Height: 1080
    BufferDesc.RefreshRate.Numerator: 0
    BufferDesc.RefreshRate.Denominator: 0
    BufferDesc.Format: 87
    BufferDesc.ScanlineOrdering: 0
    BufferDesc.Scaling: 0
    SampleDesc.Count: 1
    SampleDesc.Quality: 0
    BufferUsage: 32
    BufferCount: 2
    Windowed: 1
    SwapEffect: 4
    Flags: 64
[OBS] d3d11 shared texture capture successful

Diving a little into the OBS source code the failure likely occurs in dxgi-capture.cpp in the function hook_dxgi:
https://github.com/obsproject/obs-studio/blob/master/plugins/win-capture/graphics-hook/dxgi-capture.cpp

DetourTransactionBegin();

RealPresent = (present_t)present_addr;
DetourAttach(&(PVOID &)RealPresent, hook_present);

RealResizeBuffers = (resize_buffers_t)resize_addr;
DetourAttach(&(PVOID &)RealResizeBuffers, hook_resize_buffers);

if (present1_addr) {
    RealPresent1 = (present1_t)present1_addr;
    DetourAttach(&(PVOID &)RealPresent1, hook_present1);
}

const LONG error = DetourTransactionCommit();

That last error receives the value 8 which matches "0x00000008 - ERROR_NOT_ENOUGH_MEMORY" from this table:
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d
Details on DetourAttach:
https://github.com/microsoft/Detours/wiki/DetourAttach

Broken feature request: queuing "toggle optimizations" requests

Scenario: toggling optimizations for multiple compilands in contexts with large amounts of compilands requires using a filter, toggling optimizations on a bunch of compilands, waiting until compilation is done, and then repeating with a different filter

Proposed feature: using a compilation queue, so that I can send a bunch of compilands for deoptimizations. Deoptimization does not have to start straight away, there could be an option for toggling immediately and another for queuing, and then for starting processing the queue.

Does it supports C++ coroutines?

I using LiveCoding in UE and when I recompile specific module, it throws access violation exception when I enter coroutine body. It seems it uses old coroutine body. Maybe some problems with addresses of jump instructions...

Feature request: push a notification when a build is queued

Scenario: I'm doing changes that will trigger a long build, and so the current notification that is pushed on a completed build will sometimes take minutes to appear; I would like to see a notification confirming that a build has been queued, so I know that I'm not waiting in vain for a build that I never queued to complete.

image

It would be great if the Notifications section in the preferences would allow you choose notification on build start and notification on build complete.

Hot-key registration fails the first time

When starting the Broker, registration of the Windows HotKey fails:
Failed to register Windows HotKey. Error: 0x581

Starting the Broker a second time, the registration succeeds. The problem occurs again after restarting the machine.

Feature Request: Hot-Restart global shortcut

Hot-Reload has a setting "shortcut to invoke" that executes from anywhere. It'd be nice if Hot-Restart also had this so we can restart without focusing the live++ broker window.

Feature Request: Exception Handler Keyboard Shortcuts

Feature Request: Exception Handler Keyboard Shortcuts

Firstly and if this is documented on the website, or feature requests of this type are universally binned as "won't fix", then disregard this issue and mark it as closed.

Motivation

My codebase is judiciously littered with assertions. In builds with hot-loading enabled, the most top-level handler is Live++ unless a debugger is attached.
If an assertion fires, I perform logging + UI feedback before crashing the application. At this point, Live++ intercepts the continuable exception and presents the dialog below. So far so good.

A very common workflow for me is to continuously iterate on a top-level, conditionally invoked procedure - think of a in-game command that triggers test code, presents a debug UI, or any other conditional sanity checks. If an assert fires here, I want to very quickly return to the callee. Selecting the 'Leave Function` button can be a large factor of the time in tight iterations; even on my laptop, if I'm re-compiling from scratch, it might take a second to rebuild, link and patch the exe, whereas moving the cursor to the button is slow and clumsy.

In general, I would like to say Live++ really doesn't get in my way when it comes to rapid iteration times except in this instance.

Request

Option 0

In the picture below, offering a shortcut for 'Leave Function' at the very least would be highly useful for me. The others aren't so relevant for me here, just 'Leave Function'.

Exception Handler pop-up window, with buttons highlighted red

However, it's worth noting that if I configure Live++ to always pop-up when intercepting an exception, none of the controls are 'focused', so I can't just fire off the last selected control or what have you.

Option 1

If it were possible to remember the last selected option in the current Broker session whenever the dialog pops up, that may be a clean, orthogonal way to implement what I'm asking, while proving a more accessible interface to boot.

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.