2016-08-23

Decaf Git (2016/08/23)

EmuCR: WiiUDecaf Git (2016/08/23) is compiled. Decaf (originally called WiiU-EMU) is a researching Wii U emulation. The Wii U is a home video game console created by Nintendo and the successor to the Wii.

Decaf Git Changelog:
* opengl: Perform EVENT_WRITE_EOP immediately instead of saving it.
The "end of pipeline" referred to by this command is the internal
hardware pipeline, not the entire command stream. The current
OpenGL driver has no pipeline, so the command should be executed
immediately.
* Added logging for thread starting/stopping.
* Implement stub for MIXUpdateSettings.
A lot of games SPAM this call making it hard to debug...
* Use an assertion rather than blank if for thread deallocators.
This will allow us to catch cases where we are not giving
notifications back to PPC code when they expect it.
* Reimplement OSExitThread to be more CafeOS accurate.
* Correct issue with interrupt handling across thread switches.
True coreinit.rpl behaviour is that interrupt are disabled whenever
there is a scheduler lock active. We have elided this due to our
C++ code being uninteruptible, but this causes issues when games
already have interrupts disabled and then do a rescheduling
operation. We have to force-enable them for the switch instead.
* Cleanup GHS exception initialisation.
* Fix alignment issue with teenyheap.
This caused allocations that fit exactly to fail to be
allocated due to adjSize being increased to allow alignment
as a pre-step. This modifies it to check for the ability
to do alignment on a per-block basis instead.
* Fix bug with DCZeroRange rounding in wrong the direction.
* Merge pull request #347 from achurch/shader-endian
opengl: Use pack/unpack instructions for endian conversion in shaders.
* opengl: Use pack/unpack instructions for endian conversion in shaders.
* Merge pull request #346 from achurch/shader-updates
opengl: Detect changes to shader memory and recreate as appropriate.
* opengl: Detect changes to shader memory and recreate as appropriate.
* Merge pull request #344 from achurch/uniform-upload
opengl: Only upload uniform registers which have been recently written.
* opengl: Only upload uniform registers which have been recently written.
"Recently" is defined by an update generation counter; the counter is
stored with each uniform(*) when one of its component registers is
written, and is incremented and saved with a shader after uploading
changed uniforms, where "changed" is detected as a uniform whose last
write generation is not less than the shader's last upload generation.
(*) To be precise, uniform change state is tracked in groups of 16
uniform vectors (64 registers), as a balance between the cost of
uploading too much unchanged data to the host GPU and the cost of
checking the changed status of each uniform individually.
In addition to reducing the amount of data uploaded to the host GPU,
this typically reduces the number of GL calls per frame by 5-10% (due
to cases where no uniforms have changed at all), and as a bonus it
significantly improves the replay speed of GL trace files.
* Merge pull request #345 from achurch/alpha-test-early-z
opengl: Disable early-Z when alpha tests are enabled.
* opengl: Disable early-Z when alpha tests are enabled.
Hardware alpha test is implemented with OpenGL discard instructions,
so we need to disable early-Z even if KILL_ENABLE is not set.
* gx2: Handle GX2Invalidate on aperture addresses.
* opengl: Fix transform feedback buffer offset update for non-points.
The meaning of the OpenGL query TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
is not well-defined by the specification, and the API reference
documentation claims that it returns a vertex count, but in fact it
returns a primitive count as the name suggests, so we need to
calculate the vertex count ourselves when updating buffer offsets.
* opengl: Fix failure to sync with driver before reading data buffers.
Since safely reading from a persistently mapped buffer requires a
glFinish() call, we instead avoid maps entirely for output buffers
and call glGetNamedBufferSubData() to let the driver sync for us
(with potentially finer granularity).
* opengl: Reduce frequency of transform feedback queries.
If the program performs several draw operations in a row before calling
GX2SaveStreamOutContext(), we don't need to update our copy of the
current offset on every draw.
Also move transform-feedback code to its own source file to make it
easier to locate.
* opengl: Don't abort on overlapping occlusion queries.
We could potentially see a query started without the previous query
having ended, if the program decides to reset the GPU (on a timeout,
for example) in the middle of the previous query.
* coreinit: Signal a store to the graphics driver for LCStoreDMABlocks().
This operates outside the normal data cache behavior and is effectively
an uncached write to the destination buffer.
* opengl: Use DCFlush()/DCStore() as the dirty-resource signal.
* Fix OSUnlockMutex allowing cancel while still holding lock.
This also removes an unneccessary reschedule. Since if the
thread still owns the mutex and only decremented its recursive
count, then no other thread can take it yet anyways.
* Merge pull request #343 from achurch/blend-color-fix
opengl: Don't divide blend color components by 255.
* opengl: Don't divide blend color components by 255.
The register values are already floats, so they should be used as is.

Download: Decaf Git (2016/08/23)
Source: Here

0 Comments

Post a Comment