Skip to content
This repository has been archived by the owner on Jul 21, 2020. It is now read-only.

Obs merge #29

Merged
merged 109 commits into from
Nov 4, 2016
Merged

Obs merge #29

merged 109 commits into from
Nov 4, 2016

Conversation

sslivins
Copy link

@sslivins sslivins commented Nov 4, 2016

No description provided.

RytoEX and others added 30 commits September 24, 2016 14:14
This makes the app much more usable on hidpi screen devices like the
surface.
All of the monitor discovery logic can be implemented with Qt. This
change removes all the x11 implementations in favor of Qt and removes a
fair amount of platform specific code.
UI: Only scale HiDPI on QT 5.6+
When DirectX throws error 0x887A0005 (DXGI_ERROR_DEVICE_REMOVED),
Microsoft recommends calling ID3D11Device::GetDeviceRemovedReason to
retrieve a more precise error code.

Closes obsproject#652
Add 256x256 icon to windows ico for HiDPI displays
rtmp-services: Add Asian Livecoding.tv server and increase video bitrate
libobs/util: Fix get_dll_ver not reporting DLL name
CI: Add irc notifications to travis config
jp9000 and others added 28 commits November 3, 2016 09:23
Instead of letting vertex buffer data be freed immediately, store it so
it can be used for rebuilding later.  Also, separate the buffer building
to a function.
Releases references for each graphics object.
Due to an NVIDIA driver bug with the Windows 10 Anniversary Update,
there are an increasingly large number of reports of "Device Removed"
errors and TDRs.  When this happens, OBS stops outputting all data
because all graphics functions are failing, and it appears to just
"freeze up" for users.

To temporarily alleviate this issue while waiting for it to be fixed,
the D3D subsystem can be rebuilt when that happens, all assets can be
reloaded to ensure that it can continue functioning (with a minor hiccup
in playback).

To allow rebuilding the entire D3D subsystem, all objects that contain
D3D references must be part of a linked list (with a few exceptions) so
we can quickly traverse them all whenever needed, and all data for those
resources (static resources primarily, such as shaders, textures, index
buffers, vertex buffers) must be stored in RAM so they can be recreated
whenever needed.

Then if D3D reports a "device removed" or "device reset" error, all D3D
references must first be fully released with no stray references; the
linked list must be fully traversed until all references are released.
Then, the linked list must once again be traversed again, and all those
D3D objects must be recreated with the same data and descriptors (which
are now saved in each object).  Finally, all states need to be reset.

After that's complete, the device is able to continue functioning almost
as it was before, although the output to recording/stream may get a few
green frames due to texture data being reset.

This will temporarily alleviate the "Device Removed" issue while waiting
for a fix from NVIDIA.
Whenever a cursor is captured and the cursor icon changes, it creates a
new texture.  This isn't particularly optimal, so instead just store a
cache of cursor textures (based on size), and make the textures dynamic.
Doing this will prevent unnecessary texture reallocation.
Using IDXGIResource doesn't work with D3D12.  D3D12 textures are not a
subclass of that class.
Currently only supports shared texture capture, and doesn't support
rescaling.
UI: Fix tab order of Crop fields in Transform Properties
VS2013 doesn't include <memory> by default, this quick update fixes that problem.
enc-amf: Fix VS2013 compiling issue
@sslivins sslivins merged commit fa7c975 into ftl Nov 4, 2016
@sslivins sslivins deleted the obs_merge branch November 7, 2016 04:44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

Successfully merging this pull request may close these issues.