shuffle2
0e3f91d88b
Merge pull request #4148 from RisingFog/frame_dump_fixes
...
Fix frame dump issues where frame dumping stops before next drawn frame
2016-10-02 21:10:35 -07:00
Mat M
ccfc081697
Merge pull request #4245 from aldelaro5/logs-levels-changes
...
Lots of Logs levels changes (also enable INFO level in every build)
2016-10-02 16:51:44 -04:00
aldelaro5
f0aa9b3751
Reorganise a ton of logs level
...
Most of this commits changes performance decreasing logs from info to debug and also cleans up innacurate levels.
2016-10-01 15:50:28 -04:00
Lioncash
361c7c9c09
VertexManagerBase: Make class constants constexpr
2016-10-01 03:37:17 -04:00
Lioncash
e61eb34ae6
VertexManagerBase: Get rid of a u16 cast
...
Just using the direct value is more straightforward
2016-10-01 01:05:43 -04:00
Stenzek
bac8c2d441
Vulkan: Work around indexed fragment output bug on AMD drivers
2016-10-01 02:40:02 +10:00
Stenzek
77a128ab87
Implement experimental Vulkan backend
2016-10-01 02:40:01 +10:00
Stenzek
828aac7890
VideoBackends: Make TextureCache::CompileShaders return a bool
2016-10-01 01:09:12 +10:00
Stenzek
6a99cbd9fc
VideoCommon: Call Renderer::SurfaceChanged on render parent resize
...
This is needed because for some reason the WSI for NV Vulkan drivers
doesn't return VK_ERROR_OUT_OF_DATE_KHR, so there is no other way to know
that a resize has occured apart from polling, which is a poor solution for
X11 (since it is blocking).
2016-10-01 01:09:12 +10:00
Stenzek
5346078791
VideoCommon: Add config fields for multithreading and validation layers
2016-10-01 01:09:12 +10:00
Stenzek
09638e714e
VideoCommon: Extend DriverDetails to support both OpenGL and Vulkan
2016-10-01 01:09:12 +10:00
Stenzek
a71381e80a
VideoCommon: Add APIType entry for Vulkan
2016-10-01 01:09:11 +10:00
Stenzek
75e4e42e56
ShaderGen: Work around issue with glslang and dynamic vector subscripts
...
Seems that vec[eye] will select vec.x no matter what the value of eye is.
2016-10-01 01:09:11 +10:00
Stenzek
7f3a876aae
ShaderGen: posmtx should be a 4-component unsigned byte
...
This is a global change across backends, so should be tested for
regressions.
2016-10-01 01:09:11 +10:00
Stenzek
d9c034e8cc
ShaderGen: Specify attribute/output locations/bindings explicitly
...
This also shifts the SSBO index from index 3 to index 0.
2016-10-01 01:09:11 +10:00
Markus Wick
3696c2b022
Merge pull request #4210 from degasus/arm
...
JitArm64: Small cleanup + speedups.
2016-09-27 18:45:14 +02:00
Markus Wick
9525a9e048
Merge pull request #3490 from degasus/singlecore
...
Fifo: Use SyncGPU timings for single core.
2016-09-27 10:33:47 +02:00
degasus
732e0ff03a
VertexLoaderArm64: Mark register allocation as static const.
2016-09-26 22:19:07 +02:00
degasus
258f48572d
VertexLoaderJit: Fix out-of-bounds access for zfreeze.
...
This fixes a GCC6.1 warning.
2016-09-17 16:47:12 +02:00
degasus
735da0ed69
Fifo: Use SyncGPU timings for single core.
2016-09-17 16:25:13 +02:00
Jules Blok
da43f9a156
PixelShaderGen: Always divide the texture coordinates by q.
...
Some games will set q to a different value than 1.0 through
texture matrix manipulations. It seems the console will still
do the division in that case.
2016-09-07 21:13:16 +02:00
Chris Burgener
69eed56256
Fix recursive code
2016-09-06 22:45:50 -04:00
Scott Mansell
0119f1302f
Merge pull request #4177 from phire/useless_cases
...
BPStructs: remove case statements which never match.
2016-09-06 00:56:09 +12:00
Scott Mansell
a665743b70
BPStructs: remove case statments which never match.
...
Visual Studio's code analyzer complains about these.
2016-09-06 00:40:49 +12:00
EmptyChaos
aa16282516
Core: Change CoreTiming event key from int to EventType*
...
Replace 'int' keys with something that carries type information.
Performance is neutral.
2016-09-03 14:55:44 +10:00
Jules Blok
d072d6d336
Merge pull request #4170 from Armada651/float-abs
...
VertexShaderManager: Explicitly use floating-point variant of abs.
2016-09-01 19:03:03 +02:00
Jules Blok
9fb6f93ca1
PixelEngine: Add missing static specifier for `s_token_finish_mutex`.
2016-09-01 17:28:48 +02:00
Jules Blok
376cadb862
VertexShaderManager: Explicitly use floating-point variant of abs.
...
Some compilers don't have an automatic abs() overload for floats.
Doesn't really matter if they use the integer variant here, but
it's better to be explicit about the fact that we're using floats.
2016-09-01 17:23:07 +02:00
Jules Blok
50984d85b0
Merge pull request #4164 from Armada651/sonic-clipping
...
VertexShaderGen: Move the sonic epsilon hack to the vertex shader.
2016-09-01 15:28:09 +02:00
EmptyChaos
e0d4dc6fed
VertexShaderGen: Fix D3D X3014 compile error
...
float2 requires 2 parameters in HLSL apparently.
2016-09-01 14:43:19 +10:00
Jules Blok
debaf63fe8
VertexShaderGen: Move the sonic epsilon hack to the vertex shader.
...
In the vertex shader we have control over the depth clipping planes,
so we don't have to offset every floating point value and lose accuracy.
2016-09-01 01:14:14 +02:00
Preston Smith
94cbe0c12a
Comments
2016-08-31 06:40:50 -05:00
Preston Smith
5a6b876dbd
Hardware renderer fix
2016-08-30 18:33:23 -05:00
Jules Blok
92920c4005
TextureCacheBase: Address 0x0 is valid, don't you dare ignore it.
2016-08-30 16:45:49 +02:00
Chris Burgener
df0f7657d0
Fix frame dump issues where frame dumping stops before next drawn frame
2016-08-24 13:00:25 -04:00
Jules Blok
35a270d2a8
TextureConversionShader: Don't use the float specifier in shader code.
2016-08-24 17:42:32 +02:00
Jules Blok
f7987017a0
PixelShaderManager: Use signed integers for the depth range parameters.
2016-08-23 15:54:05 +02:00
Jules Blok
a8a9348913
OGL: Handle cases where reversed depth is already used.
2016-08-23 15:54:04 +02:00
Markus Wick
52af0770c3
Merge pull request #4141 from lioncash/vtx
...
VertexManagerBase: Get rid of static state
2016-08-23 07:33:25 +02:00
Lioncash
2bf05a544d
VertexManager: Correct variable naming scheme
...
Altered to indicate regular class members
2016-08-22 20:01:00 -04:00
Markus Wick
10d20d47aa
Merge pull request #4132 from lioncash/enum-fifo
...
Fifo: Make SyncGPUReason an enum class
2016-08-22 16:49:40 +02:00
Lioncash
1392efa91d
VertexManagerBase: Get rid of static behavior
2016-08-21 23:30:38 -04:00
JosJuice
31c530c7b3
Merge pull request #3386 from lioncash/memory
...
Common: Namespace MemoryUtil
2016-08-19 11:04:45 +02:00
Lioncash
5635d4b709
Fifo: Make SyncGPUReason an enum class
2016-08-18 22:35:58 -04:00
Jules Blok
e86d7cbc99
OGL: Workaround gl_ClipDistance bug on Mesa i965.
2016-08-18 01:08:39 +02:00
Jules Blok
7078216b61
Improve documentation.
2016-08-16 21:09:58 +02:00
Jules Blok
8c1c7fc2da
Cosmetics.
2016-08-15 13:11:30 +02:00
Jules Blok
959d1879e5
VertexShaderGen: Fix far clipping.
...
We should only check whether z > 0, we don't care about w.
2016-08-15 13:11:29 +02:00
Jules Blok
afa251af42
DriverDetails: Add bug for broken gl_ClipDistance on i965.
2016-08-15 13:11:28 +02:00
Jules Blok
94927f360f
VideoCommon: Add a user-defined far clipping plane.
2016-08-15 13:11:28 +02:00
Jules Blok
9596ec8971
GeometryShaderGen: Pass-through clipping distance.
2016-08-15 13:11:27 +02:00
Jules Blok
a141e91dd2
OGL: Check for GL_DEPTH_CLAMP support.
...
It's not available in OpenGL ES and officially it's not supported on OpenGL 3.0/3.1.
Fallback to old depth range code if there is no method to disable depth clipping.
It's more important to have correct clipping than to have accurate depth values.
Inaccurate depth values can be fixed by slow depth.
2016-08-15 13:11:26 +02:00
Jules Blok
4582853af4
VertexShaderGen: Use reversed depth range.
2016-08-15 13:11:26 +02:00
Jules Blok
e9e81ece65
VideoBackends: Enable depth clamping.
2016-08-15 13:11:25 +02:00
Jules Blok
b1ed7e80fb
VertexShaderGen: Clip z using user-defined clipping planes.
2016-08-15 13:11:25 +02:00
Jules Blok
159247f4ad
VertexShaderGen: Clamp to the console depth range.
...
This fixes the Mii Channel among others.
2016-08-15 13:11:24 +02:00
Jules Blok
92aa7669b5
VertexShaderManager: Use a more accurate depth range.
...
This fixes the gxtest_depth hwtest.
2016-08-15 13:11:24 +02:00
Jules Blok
c223bd47b9
VideoCommon: Implement depth range equation in vertex shader.
2016-08-15 13:11:23 +02:00
Léo Lam
c1184957a5
Run clang-format on missed files
...
`clang-format`s files that lint missed because of the bug. Fortunately,
not much.
2016-08-11 21:14:39 +02:00
JosJuice
3443a10030
CoreTiming: Merge ScheduleEvent variants into one function
...
Now Core::IsCPUThread() only gets called once when using the AnyThread
variant. Also, I think the enum approach makes calling code clearer.
2016-08-11 12:45:57 +02:00
Léo Lam
dca22e08eb
Use Common::Flag and Common::Event when possible
...
Replaces old and simple usages of std::atomic<bool> with Common::Flag
(which was introduced after the initial usage), so it's clear that
the variable is a flag and because Common::Flag is well tested.
This also replaces the ready logic in WiimoteReal with Common::Event
since it was basically just unnecessarily reimplementing Common::Event.
2016-08-10 16:08:15 +02:00
degasus
82bdc4ef86
PixelEngine: Delay token updates by events.
...
To still get a speedup, mark if already an event is queued.
If so, don't raise a new event.
2016-08-10 13:24:57 +02:00
degasus
a051db9792
PixelEngine: Cleanup PE Token.
...
This also affects the behavior a bit, it should now fit better to the one of the commonly more used PE Finish flag.
2016-08-10 10:07:53 +02:00
degasus
367e1b4d4c
PixelEngine: Drop write-only variables.
2016-08-10 10:07:53 +02:00
Lioncash
e01c143379
Common: namespace MemoryUtil
2016-08-07 13:03:07 -04:00
Chris Burgener
222c4ba077
Remove Global Declarations from Movie
2016-08-04 15:24:44 -04:00
Lioncash
8b5e94a102
FifoPlayer: const correctness
2016-08-01 18:33:46 -04:00
Markus Wick
e281273cd7
Merge pull request #4047 from lioncash/enum-fwd
...
VideoCommon: Make API_TYPE an enum class
2016-07-31 10:38:42 +02:00
Lioncash
14e0b48ae4
VideoCommon: Make API_TYPE an enum class
...
Allows for forward declarations in most places, which prevents dumping
unrelated VideoCommon.h contents directly into headers.
2016-07-29 19:20:16 -04:00
Pierre Bourdon
d7de39ebbe
Merge pull request #3588 from Aestek/feature/improve-netplay-dialog
...
Improve netplay UX
2016-07-26 02:12:22 +02:00
Pierre Bourdon
c6924b4d03
Merge pull request #4036 from RisingFog/rtc_osd
...
Display RTC on OSD
2016-07-25 15:36:03 +02:00
Aestek
6a0fc4c438
Improve netplay setup dialog UX
...
* Focus "Hash Code" / "IP address" text box by default in "Connect"
* Focus game list in "Host" tab
* RETURN keypress now host/join depending on selected tab
* Remember last hosted game
* Remove PanicAlertT:
* Simply log message to netplay window
* Remove them when they are useless
* Show some netplay message in OSD
* Chat messages
* Pad buffer changes
* Desync alerts
* Stop the game consistently when another player disconnects / crashes
* Prettify chat textbox
* Log netplay ping to OSD
Join scenario:
* Copy netplay code
* Open netplay
* Paste code
* Press enter
Host scenario:
* Open netplay
* Go to host tab
* Press enter
2016-07-23 20:58:51 +02:00
Chris Burgener
0ef1ee7a83
Display RTC on OSD
2016-07-22 09:58:34 -04:00
Chris Burgener
37a0c9c404
Check for zero height when splitting video dump
2016-07-21 11:28:10 -04:00
EmptyChaos
5adb29b6cb
Fifo: Call AllowSleep instead of Wakeup when pausing.
...
BlockingLoop was being woken when the emulator was being paused
which would cause the loop to busy spin. Issue 9692.
2016-07-19 15:20:17 +10:00
Anthony J. Bentley
de6babb928
Add an OpenBSD driver identifier.
2016-07-17 04:13:06 -06:00
comex
42660292f6
Use newer ffmpeg APIs to avoid deprecation warnings.
2016-07-10 21:36:18 -04:00
Pierre Bourdon
7ee6d08213
Merge pull request #3961 from phire/less_virtual_xfb_lag
...
XFB: Send image to screen at start of field (Reduce VirtualXFB latency)
2016-07-10 03:01:26 +02:00
Chris Burgener
d00c013339
Remove VI count limit on Movie playback
2016-07-09 20:35:01 -04:00
Scott Mansell
35566316ed
XFB: Send image to screen at start of field.
...
This is much more accurate to the hardware, and saves around 16ms
of latency.
2016-06-28 15:12:43 +12:00
Chris Burgener
28a3691e70
Merge pull request #3930 from RisingFog/split_video_dump_resolution
...
Split Video Dumps on Resolution Change
2016-06-27 22:39:19 -04:00
Léo Lam
d9fc1e01b4
LightingShaderGen: Fix formatting
2016-06-26 16:35:44 +02:00
Markus Wick
6b01eca3a0
Merge pull request #3950 from phire/fix-warnings
...
VideoCommon: Fix some warnings.
2016-06-26 13:37:15 +02:00
Scott Mansell
d958388617
VideoCommon: Fix some warnings.
2016-06-26 23:10:31 +12:00
degasus
d79aeaa1e9
VideoCommon: Drop GetConfigName.
...
We're past 5.0 now, so there is no need to look for old inis.
2016-06-26 12:34:59 +02:00
degasus
5f2f462067
VideoBackends: Merge ShowConfig functions.
2016-06-26 12:34:59 +02:00
degasus
7833ff25df
VideoBackends: Merge Initialize and Shutdown functions.
2016-06-26 12:34:59 +02:00
Scott Mansell
b16333a25c
Merge pull request #3716 from degasus/coretiming
...
CoreTiming: Drop ProcessFifoWaitEvents.
2016-06-26 22:13:05 +12:00
degasus
4c5f8f9c91
CoreTiming: Drop ProcessFifoWaitEvents.
...
globalTimer is only written in Advance, so this function has no function.
2016-06-26 11:29:25 +02:00
Scott Mansell
2f134c5c36
Remove the rest of ShaderDebugging.
...
Without UID checking, it's basically a no-op that disables shader cache
and stores the shader source code (without ever reading it back).
2016-06-26 16:25:11 +12:00
Scott Mansell
ebe5fd0b36
Multithreadded Shadergen: Minor fixups.
2016-06-26 16:13:22 +12:00
Scott Mansell
95469ec225
Remove UID Checker.
...
Kind of pointless now that multiple shaders with the same UID are
now fundementally impossible.
2016-06-26 16:13:22 +12:00
Scott Mansell
24e5d21780
Multithreadded Shadergen: Second pass over Pixel Shadergen.
...
Note: It's not 100% perfect, as some of the GPU capablities leak into the
pixel shader UID.
Currently our UIDs don't get exported, so there is no issue. But someone
might want to fix this in the future.
2016-06-26 16:13:21 +12:00
Scott Mansell
1a831cfc7d
Multithreadded Shadergen: Second Pass over vertex/lighting Shadergens
...
As much as possible, the asserts have been moved out of the GetUID
function. But there are some places where asserts depend on variables
that aren't stored in the shader UID.
2016-06-26 16:13:21 +12:00
Scott Mansell
28c7113e41
Multithreadded Shadergen: Second Pass over geometery Shadergen
2016-06-26 16:13:21 +12:00
Scott Mansell
fa02f47729
Multithreadded Shadergen: First pass over geometery Shadergen.
2016-06-26 16:13:20 +12:00
Scott Mansell
4969415f38
Remove global refrences from common code.
...
Bug Fix: Previously vertex shaders and geometery shaders didn't track
antialaising state in their UIDs, which could cause AA bugs
on directx.
2016-06-26 16:13:20 +12:00
Scott Mansell
0d996f512b
Multithreadded Shadergen: First pass over pixel Shadergen
...
Bug Fix: It was theoretically possible for a shader with depth writes
disabled to map to the same UID as a shader with late depth
writes.
No known test cases trigger this.
2016-06-26 16:13:20 +12:00
Scott Mansell
e99364c7c9
UID Change: Fix bug with indirect stage UIDs
...
Bug Fix: The normal stage UIDs were randomly overwriting indirect
stage texture map UID fields. It was possible for multiple
shaders with diffrent indirect texture targets to map to
the same UID.
Once again, it dpesn't look like this bug was ever triggered.
2016-06-26 16:13:19 +12:00
Scott Mansell
03f2c9648d
Shader UID change: Only store the two bits of components we need.
...
This frees up 21 bits and allows us to shorten the UID struct by an entire
32 bits.
It's not strictly needed (as it's encoded into the length) but I added a
bit for per-pixel lighiting to make my life easier in the following
commits.
2016-06-26 16:13:19 +12:00
Scott Mansell
53c402dbc5
Multithreadded Shadergen: First Pass over vertex/lighting Shadergens
...
The only code which touches xfmem is code which writes directly into
uid_data.
All the rest now read their parameters out of uid_data.
I also simplified the lighting code so it always generated seperate
codepaths for alpha and color channels instead of trying to combine
them on the off-chance that the same equation works for all 4 channels.
As modern (post 2008) GPUs generally don't calcualte all 4 channels
in a single vector, this optimisation is pointless. The shader compiler
will undo it during the GLSL/HLSL to IR step.
Bug Fix: The about optimisation was also broken, applying the color light
equation to the alpha light channel instead of the alpha light
euqation. But doesn't look like anything trigged this bug.
2016-06-26 16:13:19 +12:00
degasus
59e4882af3
nullvideo: initial release of null video backend
2016-06-25 22:40:23 +02:00
Chris Burgener
88dbaf1fa5
Split Video Dumps on Resolution Change
2016-06-25 11:39:41 -04:00
Pierre Bourdon
5fcb4bb3ab
Further fixes to the formatting change. WX sucks.
2016-06-24 12:16:10 +02:00
Pierre Bourdon
3570c7f03a
Reformat all the things. Have fun with merge conflicts.
2016-06-24 10:43:46 +02:00
Scott Mansell
d197f489b9
analytics: Report OpenGL's adapter name too.
2016-06-20 23:54:44 +12:00
Pierre Bourdon
c4f5c471bb
Externals: Add libcurl.
2016-06-18 18:31:40 +02:00
Scott Mansell
96ab76f81d
TextureCache: Rename functions and add comments to clear up docs
2016-06-18 04:27:16 +12:00
Scott Mansell
94eaacae30
TextureCache: Track efb copies used in a partially updated texture
...
Fixes a major preformance regression in Skies of Arcadia during
battle transisions.
I had plans for a more advanced version of this code after 5.0,
but here is a minimal implemenation for now.
2016-06-17 23:46:22 +12:00
Stenzek
89e54fbd6c
OGL: Work around slowdown of glMapBufferRange with SSBO on NVIDIA drivers
...
Using glMapBufferRange to read back the contents of the SSBO is extremely
slow on NVIDIA drivers. This is more noticeable at higher internal
resolutions. Using glGetBufferSubData instead does not seem to exhibit
this slowdown.
2016-05-19 21:24:09 +10:00
degasus
bca0e06a95
OGL: Use coherent mapping on Qualcomm devices.
2016-05-11 23:55:28 +02:00
degasus
7517d126c8
DriverDetails: Drop BUG_BROKENALPHATEST.
...
This flag is not in use at all.
2016-05-11 21:22:09 +02:00
degasus
6219c39cf5
OGL: Drop QC ES3.1 workaround.
...
This was never tested well:
HdkR> The tester was most likely trying to load a stale shader cache or something
2016-05-11 20:45:07 +02:00
Stenzek
6f3573dda8
D3D12: Implement XFB encoding/decoding (support Real XFB)
2016-05-08 23:18:51 +10:00
Mathew Maidment
2d7dfa060e
Merge pull request #3796 from endrift/indtev-simplify
...
VideoCommon: Workaround Intel OS X bug again
2016-04-29 19:59:45 -04:00
mimimi085181
8c34463f14
Make integral auto IR(multiple of 640x528) work as expected
...
Right now, it's possible that x and y are scaled differently, if efb and xfb size are not the same.
2016-04-26 23:25:38 +02:00
Jeffrey Pfau
d6517a761c
VideoCommon: Simplify indirect texture lookup code slightly
2016-04-23 22:55:52 -07:00
Jeffrey Pfau
aa736bf258
Revert "VideoBackend: Remove extraneous shifts from indirect texture lookups"
...
This reverts commit 1f1b127b69
.
2016-04-23 22:55:42 -07:00
Pierre Bourdon
2063fc671a
Merge pull request #3748 from mimimi085181/partial-updates-paletted-textures
...
Partial updates for paletted textures
2016-04-11 21:47:24 +02:00
Pierre Bourdon
61ea5328f7
Merge pull request #3774 from phire/Fix_Metroid_Other_M
...
Fix Metroid: Other M
2016-04-11 21:43:20 +02:00
degasus
ef01f234df
PixelShaderGen: Fixes implicit type conversion or PR #3772 .
...
This regression did only happen on OpenGL ES.
2016-04-10 12:49:32 +02:00
Pierre Bourdon
c4af588945
Merge pull request #3772 from degasus/shader_opt
...
PixelShaderGen: Move constant multiplication to constant generation.
2016-04-10 01:20:34 +02:00
mimimi085181
9f625417c0
Partial updates for paletted textures
...
This pr fixes another regression that happened after pr #3165 was merged. The shadows in mario baseball should now work again.
2016-04-09 18:22:36 +02:00
Pierre Bourdon
e98fb0af84
Merge pull request #3752 from mimimi085181/remove-use-only-once-restriction-partial-updates
...
Remove the restriction to use efb copies only once as partial update
2016-04-09 18:10:20 +02:00
Scott Mansell
5e50c37c13
Alternative fix: promote cycleslate to an s64 everywhere.
...
Also changed a few functions to be static.
2016-04-10 02:13:06 +12:00
degasus
10e4f7e7bf
PixelShaderGen: Move constant multiplication to constant generation.
...
No need to do this within the shader per pixel if it can be done once.
2016-04-09 12:25:00 +02:00
mimimi085181
befb2e4809
Partial texture updates: Allow the efb copy to start before the texture
...
This is an oversight from pr https://github.com/dolphin-emu/dolphin/pull/3266 . Thanks to degasus for pointing this out.
It's possible that MAX_TEXTURE_BINARY_SIZE can be optimised, but i wanted to play it safe considering the 5.0 stable release.
2016-04-02 20:34:49 +02:00
Stenzek
e6b2212ec0
ShaderGen: Only specify storage qualifier in interface block when needed
...
Drivers that don't support GL_ARB_shading_language_420pack require that
the storage qualifier be specified even when inside an interface block.
AMD's driver throws a compile error when "centroid in/out" is used within
an interface block.
Our previous behavior was to include the storage qualifier regardless, but
this wasn't working on AMD, therefore we should check for the presence of
the extension and include based on this, instead.
2016-03-30 00:42:50 +10:00
mimimi085181
2dd9e6bfe2
Remove the restriction to apply efb copies only once as partial update
...
I'm not entirely sure what is happening, but this optimisation is causing an issue in Sonic Riders: Zero Gravity. Apparently the issue would also be fixed by PR#3747, but this PR should also fix similar issues.
Games that use partial updates might get slower with this, so some performance regression testing would be nice. Games like New Super Mario Bros, RS2, Zelda TP and Silent Hill. Testing with high graphics settings makes sense, since this would mostly end up in more work for the GPU.
2016-03-27 04:13:20 +02:00
Pierre Bourdon
2fd0884347
Merge pull request #3672 from EmptyChaos/d3d-anisotropy
...
Fix D3D Forced Anisotropy
2016-03-26 03:25:01 +01:00
Pierre Bourdon
ae4cb12033
Merge pull request #3719 from Sonicadvance1/workaround_osx_video_drivers
...
Workaround OS X video driver bug #24983074
2016-03-26 01:43:32 +01:00
EmptyChaos
0b9a72a62d
VideoCommon: Refactor TexMode0 mipmaps disabled test into a helper function
2016-03-24 13:43:29 +11:00
EmptyChaos
902e5cddf7
VideoBackends: Do not use Anisotropy on Point filtered textures.
...
The D3D backend was always forcing Anisotropic filtering when that is enabled regardless of how the game chose to configure the texture filtering registers; this causes the same issues as "Force Filtering" without Anisotropy, such as causing game UI elements to no longer line up adjacent correctly. Historically, OpenGL's Anisotropy support has always worked "better" than D3D's due to seeming to not have this problem; unfortunately, OpenGL's Anisotropy specification only gives GL_LINEAR based filtering modes defined behavior, with only the mipmap setting being required to be considered. Some OpenGL implementations were implicitly disabling Anisotropy when the min/mag filters were set to GL_NEAREST, but this behavior is not required by the spec so cannot be relied on.
2016-03-24 13:43:29 +11:00
Pierre Bourdon
647fec92a0
Merge pull request #3266 from mimimi085181/partial-updates-with-parts-of-efb-copies
...
Partial texture updates with parts of efb copies
2016-03-18 01:11:59 +01:00
Pierre Bourdon
421a67d7cc
Merge pull request #3684 from Sonicadvance1/fix_vertexshadergen_asserts
...
Fix a few asserts in the VertexShaderGen.
2016-03-17 23:33:53 +01:00
mimimi085181
e4f984d5dd
Minor fixes to the partial updates code
...
- remove an outdated comment about the efb to ram and scaled efb restriction
- when upscaling efb copies, mark the new texture as efb copy
- dx12 fixes for the src box, especially the number of layers for 3D
2016-03-16 22:24:11 +01:00
mimimi085181
80250f47e9
Partial texture updates with parts of efb copies new version
2016-03-16 22:24:10 +01:00
Ryan Houdek
95e7c247df
Merge pull request #3700 from degasus/custom_textures
...
CustomTextures: Fix loading of the last mipmaps.
2016-03-14 09:35:40 -04:00
Ryan Houdek
4c4eaaa1d6
Merge pull request #3570 from endrift/indtev-reduce-shifting
...
VideoBackend: Remove extraneous shifts from indirect texture lookups
2016-03-10 13:12:47 -05:00
Ryan Houdek
3ab7806e24
Workaround OS X video driver bug #24983074
...
OS X's shader compiler has a bug with interface blocks where interface block members don't properly inherit the layout qualifier from the interface
block.
Work around this limitation by explicitly stating the layout qualifier on both the interface block and every single member inside of that block.
2016-03-09 09:11:00 -06:00
Pierre Bourdon
c24c278ce9
Merge pull request #3709 from Sonicadvance1/mesa_intel_geometry_shaders
...
Mark Mesa Intel Sandy Bridge geometry shaders not broken in Mesa 11.2
2016-03-04 18:02:26 +01:00
Ryan Houdek
ff0aac82b5
Mark Mesa Intel Sandy Bridge geometry shaders not broken in Mesa 11.2
2016-03-04 10:45:13 -06:00
Ryan Houdek
e60f0b3cf0
Merge pull request #3551 from RisingFog/videodump_proper_delay
...
Properly Handle Video Dumping from Power On
2016-03-03 10:38:36 -05:00
Pierre Bourdon
265c6408d6
Merge pull request #3686 from Armada651/revert-3578
...
Revert "Merge pull request #3578 from Armada651/forced-slow-depth"
2016-03-03 02:03:03 +01:00
degasus
1544e4049d
CustomTextures: Fix loading of the last mipmaps.
...
Non-square textures still have mipmaps down to 1x1.
2016-03-02 23:25:04 +01:00
Mathew Maidment
3a47845226
Merge pull request #3675 from rohit-n/build-pch
...
Fix building with PCH disabled.
2016-03-01 18:22:53 -05:00
Ryan Houdek
a8c37e5d6b
Remove two more asserts in VertexShaderGen.
...
As confirmed by a hardware test if we are using the texgen type of COLOR_STRGBC0/STRGBC1 then it sets the texture coordinates to those values
regardless of what the input form or source row is.
Thanks to Ornox for testing again
2016-02-29 16:45:51 -06:00
Ryan Houdek
92e9382e61
Confirm with hardware test that the high bit of the input form is ignored.
...
Thanks to Ornox for testing
2016-02-29 16:45:51 -06:00
Ryan Houdek
e1d36f91fc
Fix a few asserts in the VertexShaderGen.
...
Removes a couple asserts in the vertex shader gen when dealing with the input form.
Typically input form ABC1 is used, so it'll pull in the first three elements and always set the fourth to 1.0
The other input form available is AB11, which sets the last two components to 1.0 (Theoretically).
No titles actually use this input form that we know of except for Project M, but it can have some fairly drastic visual differences.
Confirmed correct by hardware test
2016-02-29 16:43:44 -06:00
Jules Blok
6d1628eda4
Revert "Merge pull request #3578 from Armada651/forced-slow-depth"
...
This reverts commit e2a1a085b6
, reversing
changes made to 2aea549eef
.
2016-02-29 00:55:51 +01:00
Pierre Bourdon
961901daae
Merge pull request #3355 from mimimi085181/partial-texture-updates-check-dimensions
...
Partial texture updates: Check the dimensions of the efb copy
2016-02-29 00:49:48 +01:00
Rohit Nirmal
14b0a9cf70
Fix building with PCH disabled.
2016-02-26 13:55:34 -06:00
Jules Blok
e2a1a085b6
Merge pull request #3578 from Armada651/forced-slow-depth
...
VideoConfig: Replace FastDepthCalc by ForcedSlowDepth.
2016-02-22 11:29:09 +01:00
Stenzek
1ce38a136d
TextureConversionShader: Invert depth for Z24 encoder with D3D
2016-02-22 00:09:07 +10:00
Lioncash
1d6ee140f0
VideoBackendBase: Store video backends as unique_ptr
2016-02-20 19:07:40 -05:00
Chris Burgener
d39d193c0f
Properly Handle Video Dumping from Power On
2016-02-19 22:53:58 -05:00
Tillmann Karras
4ecd191a7e
VertexShaderGen: turn pseudo-mod into a simple and
...
The type of posmtx has changed over time: half -> float -> int.
I assume this is supposed to be a modulo.
2016-02-20 03:29:08 +00:00
hdcmeta
8cc686b360
D3D12: Initial commit for D3D12 backend implementation.
2016-02-15 09:48:25 -08:00
hdcmeta
a2e2e36745
D3D12: Additions to VideoCommon to support D3D12 backend.
2016-02-15 09:48:23 -08:00
mimimi085181
bb4d636f34
Copy all layers of textures with CopyRectangleFromTexture
2016-02-14 21:17:06 +01:00
mimimi085181
99555a35ca
For partial texture updates check the dimensions of the efb copy and the target texture, not just the binary size.
...
This should get Donkey Kong Country Returns characters to be as broken as they should be. They will be fixed in a later pr.
Expected result is:
efbtex: characters are always flickering or invisible, no matter what scaling or IR setting
efb2ram: characters are always working properly at 1xIR, no matter what scaling or IR setting
2016-02-14 17:13:51 +01:00
Ryan Houdek
b2b0959f23
Geometry shader bug isn't fixed in 11.1.2 for Intel Sandy Bridge
2016-02-12 07:04:09 -06:00
Ryan Houdek
cf6f9de350
Both Intel and Radeon Mesa geometry shader bugs are fixed in 11.1.2
2016-02-11 12:55:55 -06:00
Jens Nyberg
91772492dd
VideoCommon: Remove unused pow functions
2016-02-10 02:57:09 +01:00
Jules Blok
9805f70913
VideoConfig: Replace FastDepthCalc by ForcedSlowDepth.
...
Fast depth is now more accurate than slow depth and should always be used.
The option will be kept in a different form as it is still used as a hack to fix some games.
Also, the slow depth code path will still be relied upon by cards that don't support GL_ARB_clip_control.
2016-02-08 12:26:55 +01:00
Lioncash
1df1ba55bb
VideoCommon: Convert some DataReader includes into forward declarations
...
Gets rid of some indirect inclusions in cpp files.
Also this will reduce the amount of rebuilt files if
changes occur in the DataReader header.
2016-01-31 15:19:20 -05:00
Pierre Bourdon
cf20ff48aa
Merge pull request #3480 from phire/memory_stride_too_small
...
Avoid the "Memory stride too small" assert
2016-01-30 13:11:07 +01:00
Tillmann Karras
bf643c98aa
Fix warnings
2016-01-28 23:54:11 +00:00
Ryan Houdek
e1f21602fd
Merge pull request #3426 from Sonicadvance1/ES_fix_framedump
...
Add support for framedumping to OpenGL ES.
2016-01-28 18:24:32 -05:00
Jeffrey Pfau
1f1b127b69
VideoBackend: Remove extraneous shifts from indirect texture lookups
2016-01-25 19:27:26 -08:00
Lioncash
488e7bd46a
Fifo: Get rid of undefined global
...
This declaration doesn't have a matching implementation
so it can be removed entirely.
2016-01-25 05:24:03 -05:00
Lioncash
32ce2be2bf
Fifo: Make g_use_deterministic_gpu_thread a TU-local variable
2016-01-25 05:24:03 -05:00
Lioncash
5ebd1e215b
Fifo: Make g_bSkipCurrentFrame a TU-local variable
...
This is only ever queried, making it a global isn't necessary.
2016-01-25 05:23:14 -05:00
Pierre Bourdon
0bd649248f
Merge pull request #3530 from degasus/syncgpufix
...
Fifo: Fix SyncGPU.
2016-01-25 10:46:08 +01:00
Mathew Maidment
bad7242c63
Merge pull request #3559 from lioncash/tcache
...
TextureCacheBase: Simplify init/comparison of TCacheEntryConfig
2016-01-24 17:18:08 -05:00
Mathew Maidment
e9713e19d7
Merge pull request #3561 from lioncash/render
...
RenderBase: Get rid of an undefined global extern
2016-01-24 17:17:48 -05:00
Mathew Maidment
b451b722fb
Merge pull request #3562 from lioncash/cpmem
...
CPMemory: Remove unnecessary extern specifiers from functions
2016-01-24 17:17:31 -05:00
degasus
4295751662
Fifo: More comments for SyncGPU functions.
2016-01-24 11:06:01 +01:00
degasus
cf4478dc92
Fifo: Fix SyncGPU.
...
CBoot::BootUp() did call CoreTiming::Advance which itself blocks on the GPU,
but the GPU thread wasn't started already. This commit moves the SyncGPU
initialization into the Fifo.cpp file and call it after BootUp().
2016-01-24 11:06:01 +01:00
Lioncash
e187c55bdd
OpcodeDecoder: Add namespace
2016-01-24 01:31:36 -05:00
Lioncash
758cd796a7
CPMemory: Remove unnecessary extern specifiers from functions
...
These are defined in CPMemory.cpp, as expected. There's no need for
extern
2016-01-24 01:17:43 -05:00
Lioncash
508c521f10
RenderBase: Get rid of an undefined global extern
...
This doesn't have an implementation, so into
the trash it goes.
2016-01-24 01:07:24 -05:00
Lioncash
59d5935067
TextureCacheBase: Simplify init/comparison of TCacheEntryConfig
2016-01-23 22:57:05 -05:00
Lioncash
f45e1bff37
VideoInterface: Change a global into a translation-unit local variable
2016-01-21 00:39:24 -05:00
Pierre Bourdon
f98176f38a
Merge pull request #3528 from Shugyousha/codedframedeprecated
...
AVIDump: coded_frame is deprecated
2016-01-20 19:40:31 +01:00
Pierre Bourdon
be1a9e4231
Merge pull request #3518 from Sonicadvance1/blacklist_sandy
...
Blacklist Sandy Bridge on mesa from using geometry shaders.
2016-01-20 19:32:56 +01:00
Ryan Houdek
3dda36bc5b
Blacklist Sandy Bridge on mesa from using geometry shaders.
2016-01-20 12:13:21 -06:00
Silvan Jegen
59f72d3571
AVIDump: coded_frame is deprecated
...
Setting this is not required anymore as of commit 40cf1bbacc622 of
FFmpeg.
For users of older versions of the libavcodec library we guard the
change with an #if.
2016-01-19 20:38:21 +01:00
Jules Blok
51a36f27e0
Merge pull request #3448 from Armada651/depth-epsilon
...
VertexShaderManager: Add an epsilon hack to the perspective projection.
2016-01-18 20:56:18 +01:00
Pierre Bourdon
24c228c6e9
Merge pull request #3523 from lioncash/video
...
VideoCommon: Header cleanup
2016-01-18 02:24:50 +01:00
Lioncash
d9fec92628
VideoCommon: Header cleanup
...
Also remedies places where the video backends and core rely on things
being indirectly included.
2016-01-17 20:11:45 -05:00
Stenzek
edebadc093
PixelShaderGen: Use bitwise AND for wrapping indirect texture coordinates
...
(x % y) is not defined in GLSL when sign(x) != sign(y).
This also has the added benefit of behaving the same as sampler wrapping modes, in regards to negative inputs.
2016-01-15 19:46:38 +10:00
Jules Blok
d54291f2e8
Merge pull request #3506 from stenzek/odd-mips
...
TextureCacheBase: Change CalculateLevelSize to match D3D/OGL sizes
2016-01-13 23:10:18 +01:00
Jules Blok
a307883069
Merge pull request #3505 from Armada651/invert-conversion
...
TextureConversionShader: Also invert color encoders if they're used to encode depth.
2016-01-13 12:58:44 +01:00
Stenzek
1f3b90d70a
TextureCacheBase: Change CalculateLevelSize to match D3D/OGL sizes
...
This was causing crashes/driver resets when odd-dimension textures were
being loaded, due to the size we were uploading being larger than the size
of the higher-level texture calculated by the runtime.
2016-01-13 12:54:38 +10:00
Jules Blok
daabd88d69
TextureConversionShader: Also invert color encoders if they're used to encode depth.
2016-01-13 01:08:27 +01:00
degasus
aa430c10d5
VideoState: Simplify dummy wrapper.
2016-01-12 23:28:26 +01:00
degasus
5f244abf28
Fifo: Create a "Fifo" namespace.
2016-01-12 23:28:26 +01:00
degasus
c3481a576b
VideoBackend: Remove simple wrapper functions.
2016-01-12 23:28:26 +01:00
degasus
0c92603fd5
Merge VideoBackendHardware into VideoBackend.
...
And rename it to VideoBackendBase because of conflicts within the backends itself.
2016-01-12 23:18:58 +01:00
Ryan Houdek
5a549ef663
[Android] Add support for rotation and minimizing the application
2016-01-10 13:00:32 -06:00
Ryan Houdek
b4eb5d8e3f
Disable geometry shaders on mesa AMD/ATI drivers.
...
Causes misrenderings in games that uses them.
2016-01-09 15:09:37 -06:00
Ryan Houdek
3f15aa4b57
Add support for framedumping to OpenGL ES.
2016-01-09 00:21:20 -06:00
Scott Mansell
74b772c3be
Avoid the "Memory stride too small" assert
...
EFB2Tex still has no idea what to do with these weird textures so we
simply disable EFB2Tex when one is encountered.
2016-01-09 18:30:29 +13:00
Pierre Bourdon
39971ec039
Merge pull request #3472 from phire/TVs_dont_have_pixels
...
Rework the aspect ratio calculation (Fixes 240p mode)
2016-01-09 04:27:16 +01:00
Pierre Bourdon
bf1c53a6e8
Merge pull request #3451 from RisingFog/libav
...
Use ffmpeg for Windows Video Dumping instead of VFW
2016-01-09 01:01:05 +01:00
Chris Burgener
66595b0ac9
Force XVID FourCC for MPEG4 output
2016-01-08 10:22:19 -05:00
Scott Mansell
9c0dae47ca
Normalize aspect ratio calculations to 4:3
...
Video Interface simply isn't aware about widescreen.
Instead, the render class can multiply by 1.3333333 to get
the 16:9 aspect ratio.
2016-01-08 13:31:48 +13:00
Chris Burgener
c34fb3edf0
Use ffmpeg for Windows Video Dumping instead of VFW
2016-01-07 18:37:58 -05:00
Pierre Bourdon
22555312de
Merge pull request #3464 from Armada651/stereo-warnings
...
VideoConfig: Don't give warnings for per-game stereoscopy parameters.
2016-01-07 00:35:14 +01:00
Jules Blok
1e111421e9
VideoConfig: Don't give warnings for per-game stereoscopy parameters.
2016-01-06 22:21:12 +01:00
degasus
efbe5bc4b6
VideoSW: Use more VideoCommon
...
Now we require lots of empty functions, but this removes by far more duplicated code.
2016-01-06 22:10:29 +01:00
JosJuice
03091ce180
HiresTextures: Refactor getting directory
2016-01-06 19:35:16 +01:00
JosJuice
42237dc511
Merge pull request #3456 from JosJuice/custom-texture-all-regions
...
HiresTextures: Also look for directories with 3-character IDs
2016-01-06 14:43:49 +01:00
JosJuice
a2b45a4b82
HiresTextures: Also look for directories with 3-character IDs
...
People who make texture packs usually release them using a specific ID
(for instance SX4E01). Users who have a different version of the game
(like the PAL version SX4P01) then need to rename the custom texture
folder to match. This is a lot simpler than renaming every texture file,
as was required with the old texture format, but it's still something
that users can forget to do. To make that unnecessary, this change makes
it possible to use three-character region-free IDs for custom texture
folders, similarly to how game INIs can use three-character IDs. Once
most people have updated to Dolphin versions that include this change,
those who make texture packs will be able to name them with
three-character IDs, removing the need for users to rename anything.
2016-01-06 14:33:36 +01:00
degasus
3ff4ec275a
Throttler: Rename "framelimiter" to "emulation speed".
...
We don't throttle by frames, we throttle by coretiming speed.
So looking up VI for calculating the speed was just very wrong.
The new ini option is a float, 1.0f for fullspeed.
In the GUI, percentual values are used.
2016-01-05 23:39:05 +01:00
Markus Wick
0da8bd0f61
Merge pull request #3444 from RisingFog/avidumpfixes
...
AVIDump Clean Up and Fixes
2016-01-05 10:38:07 +01:00
Jules Blok
358e458a93
VertexShaderManager: Add an epsilon hack to the perspective projection.
2016-01-05 01:24:54 +01:00
Mathew Maidment
0509292f86
Merge pull request #3431 from stenzek/shadercache
...
ShaderGen: Remove virtual methods and string from ShaderGeneratorInterface.
2016-01-04 19:11:14 -05:00
Markus Wick
ca7160f714
Merge pull request #3434 from lioncash/enum
...
OnScreenDisplay: Make CallbackType an enum class
2016-01-04 13:47:22 +01:00
Chris Burgener
fe4e99d6bf
AVIDump Clean Up and Fixes
2016-01-03 18:39:52 -05:00
Lioncash
01f99a04a2
VideoBackend: Get rid of a boolean global
...
Also gets rid of global headers
2016-01-02 18:03:28 -05:00
Lioncash
edda018d54
OnScreenDisplay: Make CallbackType an enum class
2016-01-02 14:57:55 -05:00
Stenzek
617f9d9532
ShaderGen: Remove virtual methods from ShaderGeneratorInterface, move string buffer to ShaderCode
...
This fixes the crashes occuring at startup with a non-empty shader cache.
Because LinearDiskCache reads/writes to the storage of ShaderUid, ShaderUid must be trivially copyable.
Additionally, adds a static assert to LinearDiskCache to ensure this doesn't happen in the future.
The initialization of ShaderUid data has been moved to the code generation functions, so the above condition holds true.
2016-01-02 17:35:06 +10:00
Ryan Houdek
721d319c7b
Add a comment to DriverDetails about Qualcomm failing our alpha tests.
2015-12-31 10:14:14 -06:00
Markus Wick
330329254c
Merge pull request #3361 from stenzek/d3d-vectored-efb-pokes
...
D3D: Implement vectored efb pokes
2015-12-30 15:27:24 +01:00
Markus Wick
8cf078a1a0
Merge pull request #3407 from phire/fix_assert
...
TextureCache, fix an incorrect assert.
2015-12-29 20:58:24 +01:00
Lioncash
e082ebad1a
HiresTextures: Remove the need to explicitly free SOIL allocated data
2015-12-29 08:40:17 -05:00
Lioncash
1d01fbd217
HiresTextures: Make Load return a unique_ptr
2015-12-29 08:40:15 -05:00
Lioncash
6a9e4511b5
HiresTextures: Remove unnecessary header includes
2015-12-29 08:40:07 -05:00
Scott Mansell
d8e5d8659e
TextureCache, fix an incorrect assert.
2015-12-29 14:25:31 +13:00
Markus Wick
aabcd441d9
Merge pull request #3381 from Armada651/revert-3076
...
Revert "Merge pull request #3076 from void-ghost/stereo3d_presets"
2015-12-28 10:18:32 +01:00
Markus Wick
281860eafa
Merge pull request #3400 from lioncash/shadergen
...
ShaderGen: Get rid of static buffers
2015-12-28 10:09:11 +01:00
Lioncash
c5f123a70b
ShaderGenCommon: Remove unnecessary static keywords
...
Functions defined in a header should be inline only, otherwise program
code is generated for every other file that calls said functions
2015-12-26 18:02:54 -05:00
Lioncash
c151fe582f
ShaderGenerators: Remove unnecessary inline keywords
...
Static by itself is sufficient
2015-12-26 17:57:32 -05:00
Lioncash
8ce3a4aa70
ShaderGeneration: Get rid of static buffers
2015-12-26 17:01:54 -05:00
Scott Mansell
bed102ae89
Revert "ShaderGen: Toggle value of uninitialized color."
2015-12-27 02:28:29 +13:00
Lioncash
a8ab156a29
Fifo: Convert define into constant
...
Also moves it to the cpp file where it's used.
2015-12-25 16:07:04 -05:00
Scott Mansell
0216879d3e
Revert "Config Hotfix: Prevent per-game settings (ie. GameINI) being stored to the global user configuration."
2015-12-24 18:25:22 +13:00
Lioncash
8371c428cd
VertexLoaderBase: Get rid of explicit delete and new
2015-12-22 20:09:54 -05:00
Mathew Maidment
3cf16f8573
Merge pull request #3382 from lioncash/render
...
Render: Get rid of explicit new and delete
2015-12-22 19:26:26 -05:00
Lioncash
da0e647346
Render: Get rid of explicit new and delete
2015-12-22 19:10:05 -05:00
Jules Blok
8bda12bcfd
Revert "Merge pull request #3076 from void-ghost/stereo3d_presets"
...
This reverts commit 81414b4fa2
, reversing
changes made to b926061f64
.
Conflicts:
Source/Core/DolphinWX/Frame.cpp
Source/Core/VideoCommon/VideoConfig.cpp
Source/Core/VideoCommon/VideoConfig.h
2015-12-23 00:35:19 +01:00
Jules Blok
7b4c4bfc5e
VideoConfig: Fix stereoscopy preset settings.
...
PR #3076 looks to be pretty poor quality and should be reverted.
2015-12-22 23:24:05 +01:00
Jules Blok
fa207ef8a0
VideoConfig: Move all stereoscopy options to the stereoscopy section.
2015-12-22 23:16:27 +01:00
Jules Blok
c49bb57e09
VideoConfig: Move all GameINI stereoscopy options to the stereoscopy section.
2015-12-22 23:16:27 +01:00
Scott Mansell
1ce9c33f6c
Merge pull request #3373 from JosJuice/temp-settings-ini-hotfix
...
Config Hotfix: Prevent per-game settings (ie. GameINI) being stored to the global user configuration.
2015-12-22 12:37:22 +13:00
Admiral H. Curtiss
3149140052
Config: Hotfix to prevent per-game settings from ie. GameINIs being stored to the global user configuration.
2015-12-22 00:16:29 +01:00
Lioncash
f448c6e291
FramebufferManagerBase: Get rid of explicit delete and new
2015-12-21 15:57:48 -05:00
Lioncash
f295182833
VideoBackends: Simplify initialization and deinitialization of resources
...
Approximately three or four times now, the issue of pointers being
in an inconsistent state been an issue in the video backend renderers
with regards to tripping up other developers.
Global (ugh) resources are put into a unique_ptr and will always have a
well-defined state of being - null or not null
2015-12-20 22:40:37 -05:00