Markus Wick
62036bdea8
gl_rasterizer_cache: Add profiles for Copy and Blit
...
They were missed, and Copy is very high in profile here. It doesn't block the GPU,
but it stalls the driver thread. So with our bad GL instructions, this might block quite a while.
2018-11-17 15:11:56 +01:00
Markus Wick
2b793797e0
gl_resource_manager: Profile creation and deletion
2018-11-17 15:07:30 +01:00
Markus Wick
79696a1a43
gl_stream_buffer: Profile orphaning of stream buffer.
...
This serialize to the driver thread and so it may block for a while.
So if it is in the benchmark, we get noticed if it happens too often.
2018-11-17 15:03:20 +01:00
Markus Wick
392547a97c
gl_resource_manager: Split implementations in .cpp file
...
Those implementations are quite costly, so there is no need to inline them to the caller.
Ressource deletion is often a performance bug, so in this way, we support to add breakpoints to them.
2018-11-17 15:01:40 +01:00
Tobias
46e8237e7e
Port yuzu-emu/yuzu#1137: "renderer_opengl: Namespace OpenGL code" ( #4423 )
...
* renderer_opengl: Namespace OpenGL code
Namespaces all OpenGL code under the OpenGL namespace.
Prevents polluting the global namespace and allows clear distinction
between other renderers' code in the future.
* Also namespace TextureCubeConfig
2018-11-16 23:29:10 -08:00
Weiyi Wang
9458e4d8ec
CoreTiming: wrap into class
2018-11-04 10:26:38 -05:00
B3n30
2306af3600
Handle cases when std::optional does not contain a value
2018-10-05 16:51:33 +02:00
B3n30
d37a2270d6
Replace boost::optional with std::optional where possible
2018-10-05 13:51:09 +02:00
Lioncash
333b6a556a
gl_stream_buffer: Fix use of bitwise OR instead of logical OR in Map()
...
This was very likely intended to be a logical OR based off the
conditioning and testing of inversion in one case.
Even if this was intentional, this is the kind of non-obvious thing one
should be clarifying with a comment.
2018-09-21 17:20:42 -05:00
Weiyi Wang
7d8f115185
Prefix all size_t with std::
...
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
2018-09-06 16:03:28 -04:00
Weiyi Wang
12bba80d48
Merge pull request #4174 from wwylele/proctex-round-fix
...
gl_rasiterzer/proctex: revert back to round() for Nearest sampling
2018-09-04 01:36:16 +03:00
fearlessTobi
488694d01f
Replace ToBool() with static_cast()
2018-09-01 15:50:57 +02:00
Weiyi Wang
99f4ea999c
gl_rasiterzer/proctex: revert back to round() for Nearest sampling
...
This change to floor() was made in 2927c88
, which was a result of doing some hwtest. It turned out that it was buggy edge cases in PICA, and for most cases round() still applies
2018-09-01 09:11:15 -04:00
Weiyi Wang
ffd78b635e
Merge pull request #4163 from FearlessTobi/port-1097
...
Port #1097 from yuzu: "renderer_opengl: Treat OpenGL errors as critical."
2018-08-31 21:43:52 +03:00
bunnei
ffdc27351a
renderer_opengl: Treat OpenGL errors as critical.
2018-08-31 01:56:38 +02:00
Lioncash
6d280cb49a
gl_stream_buffer: Add missing header guard
...
Prevents potential compilation errors from occuring due to multiple
inclusions
2018-08-31 01:45:44 +02:00
fearlessTobi
f61c9c3eb7
video_core: Make global EmuWindow instance part of the base renderer …
...
…class
Makes the global a member of the RendererBase class. We also change this
to be a reference. Passing any form of null pointer to these functions
is incorrect entirely, especially given the code itself assumes that the
pointer would always be in a valid state.
This also makes it easier to follow the lifecycle of instances being
used, as we explicitly interact the renderer with the rasterizer, rather
than it just operating on a global pointer.
2018-08-25 15:20:40 +02:00
Merry
0a5621fafc
Merge pull request #3970 from FearlessTobi/more-popup-madness
...
citra_qt: Add more verbose popups for video_core errors
2018-08-24 19:21:35 +01:00
Lioncash
d944d1120f
video_core: Remove unimplemented Start() function prototype
...
Given this has no definition, we can just remove it entirely.
2018-08-23 16:58:30 +02:00
fearlessTobi
d1c5f01afe
Add more verbose popups for video_core errors
2018-08-19 15:48:40 +02:00
zhupengfei
0c37140690
video_core: Allow changing background color while emulation is running
...
As @jroweboy stated, this is just one more atomic in VideoCore.
2018-08-04 15:11:51 +08:00
James Rowe
14b0435df2
Merge pull request #3994 from FearlessTobi/replace-clamp-functions
...
Remove MathUtil::Clamp and replace it with its std:: counterpart
2018-08-02 11:08:07 -06:00
James Rowe
4b59c1b601
Merge pull request #4042 from wwylele/i-love-drivers
...
gl_rasterizer: apply AMD hack only when the vendor is AMD
2018-08-02 11:01:25 -06:00
wwylele
266f2b6242
gl_rasterizer: only apply AMD hack when the vendor is AMD
2018-07-31 22:58:17 +03:00
Valentin Vanelslande
b2ad88dac1
swrasterizer/lighting: remove newline in logging macro
...
Software rasterizer version of #3904
2018-07-30 16:09:16 -05:00
fearlessTobi
15abf35889
Address feedback by wwylele
2018-07-30 14:46:13 +02:00
fearlessTobi
71e1d6e25d
Fix compile errors
2018-07-26 13:23:25 +02:00
fearlessTobi
7a3e126a4f
Replace MathUtil::Clamp with its std counterpart
2018-07-24 19:08:17 +02:00
Weiyi Wang
78685065cf
Merge pull request #3916 from wwylele/mipmap-proctex
...
gl_rasterizer: implement mipmap for procedural texture
2018-07-19 11:51:57 +03:00
wwylele
431fe444a9
gl_rasterizer: call glTextureBarrier when an image is bound to both texture and framebuffer
2018-07-09 23:11:29 +03:00
Weiyi Wang
7c7adc64fd
Merge pull request #3898 from wwylele/shut-up-texture5
...
swrasterizer, gl_shader_gen: return 0.0 for Disabled texture unit 0
2018-07-07 18:45:13 +03:00
wwylele
2927c88fd3
gl_rasterizer: implement mipmap for proctex
2018-07-06 01:13:02 +03:00
Valentin Vanelslande
b12942a231
gl_shader_gen: remove newline in logging macro
2018-06-30 19:15:15 -05:00
Valentin Vanelslande
fef231dc5b
gl_shader_manager: fix macro
2018-06-30 11:24:38 -05:00
wwylele
4d4b833a00
swrasterizer, gl_shader_gen: return 0.0 for Disabled texture unit 0
2018-06-30 11:36:39 +03:00
wwylele
0eab948728
reformat all files with clang-format
2018-06-29 16:56:12 +03:00
wwylele
7c5a76e58b
log: replace all NGLOG with LOG
2018-06-29 14:18:07 +03:00
NarcolepticK
9ae70e733f
video-core: Migrate logging macros ( #3878 )
...
* video-core: Migrate logging macros
* video-core: Fixed missed clang format
* video-core: Migrated LOG_GENERIC macro
2018-06-29 00:13:30 +03:00
Weiyi Wang
80f6510355
Merge pull request #3851 from wwylele/shut-up-texture3
...
gl_shader_gen: lower log level of using disabled proctex
2018-06-28 18:03:05 +03:00
Markus Wick
c4ff0ba137
renderer_opengl: Renumber all texture units.
...
We spend lots of texture units for our texture buffers. As they are now feed from
one buffer, there is no need to have the big gap in the list of IDs.
2018-06-22 17:21:28 +02:00
Markus Wick
46f18d6800
gl_shader_gen: Inline now constant texture buffer.
2018-06-22 17:20:55 +02:00
Markus Wick
0838c87dac
gl_stream_buffer: Only flush the host buffer if anything was written.
...
This might happen in the new TBO upload path.
2018-06-22 17:20:55 +02:00
Markus Wick
831d4f9aeb
gl_rasterizer: Use the shared texture buffer for the proctex lut.
2018-06-22 17:20:55 +02:00
Markus Wick
1ca6d2ea8d
gl_rasterizer: Use the shared texture buffer for the noise, color and alpha map.
2018-06-22 17:20:55 +02:00
Markus Wick
63fb7dcc1b
gl_rasterizer: Use the shared texture buffer for the fog lut.
2018-06-22 17:20:55 +02:00
Markus Wick
4679487640
gl_rasterizer: Use the shared texture buffer for the lighting lut.
2018-06-22 17:20:54 +02:00
Markus Wick
5a9cde138d
gl_rasterizer: Add a new dirty flag for any lighting lut.
2018-06-22 17:17:48 +02:00
Markus Wick
a8396cdbed
renderer_opengl: Create shared texture buffer.
2018-06-22 17:05:40 +02:00
Markus Wick
298ebe3752
gl_rasterizer: Inline texture buffer uploads.
2018-06-22 17:04:47 +02:00
Markus Wick
8a8c6f059f
gl_rasterizer: Move TBO syncing helper to one function.
2018-06-22 17:04:47 +02:00
Markus Wick
10fba63b94
gl_rasterizer: Provide texture buffer offsets.
...
This allows us to move all data into one TBO.
2018-06-22 17:03:38 +02:00
Weiyi Wang
f50e505a5a
Merge pull request #3778 from wwylele/shadow-hw-image-load-store
...
gl_rasterizer: implement shadow map 2D/Cube - Image load/store version
2018-06-22 17:47:09 +03:00
wwylele
2f9b7bdfa9
gl_shader_gen: lower log level of using disabled proctex
2018-06-20 18:34:01 +03:00
James Rowe
574824a26c
Merge pull request #3632 from N00byKing/3dtv_botenable
...
Add Support for Stereoscopic 3D
2018-06-17 21:05:15 -06:00
James Rowe
cf9bfe0690
Merge pull request #3787 from wwylele/shader-jit-state
...
shader/jit: preserve integer & condition register across invocation
2018-06-09 18:38:05 -06:00
James Rowe
2dac1a9590
Merge pull request #3788 from wwylele/shader-jit-breakc
...
shader/jit: implement breakc
2018-06-09 18:36:46 -06:00
N00byKing
523c52c708
renderer_opengl: Add Universal 3D Layout Adaption
2018-06-01 18:24:26 +02:00
jmorriz124
8c0ede544f
3dtv botenable improved ( #1 )
...
* Fixed crash when right eye isn't available
* Enabled swap screens in stereo views. Fixed window alignment in stereo
views to handle all screen aspect ratios.
* Minor code cleanup and clang fomat updates.
* Minor cleanup of swapped and aspect ratio code
2018-06-01 17:05:29 +02:00
N00byKing
2814bbc3da
renderer_opengl: Allow usage of Stereoscopic 3D
2018-06-01 17:01:06 +02:00
wwylele
781912e854
gl_rasterize: implement shadow mapping using image load/store
2018-06-01 14:26:44 +03:00
Weiyi Wang
08b119153d
Merge pull request #3799 from wwylele/sigh
...
gl_rasterizer: reset texture state context after every draw
2018-06-01 14:24:28 +03:00
wwylele
9060e08e49
shader/jit: implement breakc
2018-06-01 13:04:39 +03:00
wwylele
f0ee4c0595
gl_rasterizer: reset texture state context after every draw
2018-06-01 12:05:30 +03:00
James Rowe
7715fd2c19
Merge pull request #3750 from wwylele/cube-watcher-fix
...
gl_rasterizer_cache: add missing watcher invalidation
2018-05-31 23:11:39 -06:00
James Rowe
f7f5a54bc3
Merge pull request #3751 from wwylele/shader-warning-shutup
...
gl_shader_gen: rearrange function definition to avoid suprious warnings
2018-05-31 23:10:42 -06:00
James Rowe
e63c374ff0
Merge pull request #3714 from wwylele/primitive-restart-guard
...
video_core/command_processor: correctly handles 0xFFFF index as a normal index
2018-05-29 23:22:00 -06:00
Markus Wick
caba02d42a
gl_rasterizer: Don't flip the texture bindings.
...
The state object isn't used anywhere else, so there
is no need to revert the state.
And the comment is just wrong: It doesn't matter
which textures are bound on framebuffer binding, it
only matters at draw time. And we reset all bindings
before the draw call. So let's use gl_state as it is
designed to avoid flipping states.
2018-05-28 21:04:59 +02:00
wwylele
874cb42e70
shader/jit: preserve integer & condition register across invocation
2018-05-28 14:41:47 +03:00
wwylele
92a1252835
gl_shader_gen: rearrange function definition to avoid suprious warnings
2018-05-19 00:36:33 +03:00
wwylele
8b4e832c5f
gl_rasterizer_cache: add missing watcher invalidation
2018-05-18 23:58:43 +03:00
Markus Wick
8e1e52cad9
gl_rasterizer_cache: Use clean state for glBlitFramebuffer.
...
Framebuffer blits depends on pixel tests:
Ownership (is fine)
Scissor (is broken on the last commit)
Masking (is broken on master for a while)
So let's be honest and start with a clean state in
those helper functions.
2018-05-18 21:13:56 +02:00
Markus Wick
301073334a
gl_rasterizer: Remove redundant scissor state change.
...
There is no need to disable this state after the draw call,
gl_state will handle this for us if needed. This kind of
redundant state changes are bad for the driver overhead,
as flipping bits will invalidate the driver state.
2018-05-18 21:13:56 +02:00
wwylele
129b893509
gl_stream_buffer: update the information about the AMD hack
2018-05-18 14:08:12 +03:00
wwylele
dd6252a676
gl_rasterizer: fallback to software shader path if buffer overflow happens on hardware shader path
2018-05-18 13:55:19 +03:00
wwylele
6985b13439
[HACK] AMD workaround
2018-05-14 10:17:36 +03:00
wwylele
ede0d15fec
video_core/command_processor: attempt accelerate draw in draw trigger
2018-05-14 10:17:36 +03:00
wwylele
9b448a0739
gl_rasterizer: implement AccelerateDrawBatch to emulate PICA shader on hardware
2018-05-14 10:17:36 +03:00
MerryMage
15d14be3cc
primitive_assembly: Add getters for internal state
2018-05-14 10:17:35 +03:00
wwylele
06815ec905
video_core: receive hardware shader settings
2018-05-14 10:17:35 +03:00
wwylele
68b0a3e19e
regs_pipeline: use proper unsigned type where applicable
2018-05-06 15:57:48 +03:00
Weiyi Wang
f85e71c37c
Merge pull request #3715 from wwylele/hardware-vertex-vector
...
gl_rasterizer: Use GLvec* instead of C arrays
2018-05-06 07:19:06 +03:00
Weiyi Wang
0da3b75c9e
Merge pull request #3700 from wwylele/texcache-watcher
...
gl_rasterizer_cache: cache texture cube
2018-05-05 16:30:39 +03:00
Markus Wick
5960282303
gl_rasterizer: Use buffer_storage for uniform data.
...
This replaces the glBufferData logic with the shared stream buffer code.
The new code doesn't need a temporary staging buffer any more, so the
performance should imrpove quite a bit.
2018-05-05 09:22:02 +02:00
MerryMage
d6cd1a8712
gl_rasterizer: Use GLvec* instead of C arrays
2018-05-05 04:37:04 +03:00
wwylele
08a38370b0
video_core/command_processor: correctly handles 0xFFFF index as a normal index
2018-05-05 04:24:31 +03:00
Weiyi Wang
be5777f3de
Merge pull request #3686 from wwylele/glvtx-shader-gen
...
gl_shader_gen: generate programmable vs/gs and fixed gs
2018-05-01 21:27:48 +03:00
wwylele
1762ad2dcc
gl_rasterizer_cache: cache texture cube
2018-05-01 21:26:43 +03:00
bunnei
ed42b4b0d2
Merge pull request #3678 from wwylele/b15-fallback
...
gl_shader_decompiler: fallback to CPU shader on GS b15 access
2018-04-25 00:03:11 -04:00
wwylele
191b29e402
gl_shader_gen: generate programmable vs/gs and fixed gs
2018-04-24 20:39:10 +03:00
MerryMage
8186820d16
pica_to_gl: Add GLuvec{2,3,4} aliases
...
To allow for transfer for integers into shaders.
2018-04-23 20:21:24 +03:00
wwylele
e56128683c
gl_shader_decompiler: fallback to CPU shader on GS b15 access
2018-04-23 12:45:56 +03:00
Markus Wick
c4010e3f93
renderer_opengl: Drop GLSync, unused.
2018-04-21 16:12:30 +02:00
Markus Wick
5d1dd205c4
renderer_opengl: Rewrite stream buffer.
2018-04-21 16:12:30 +02:00
wwylele
d52ddd0ec4
shader: avoid recomputing hash for the same program
2018-04-17 09:47:59 +03:00
wwylele
3cc460ab34
shader_jit: change passing ShaderSetup to passing uniforms struct into the program
...
We are going to add private memebers to ShaderSetup, which forbids the usage of offsetof. The JIT program only use the uniform part of the setup, so we can just isolate it.
2018-04-17 09:35:43 +03:00
Weiyi Wang
cb36f9fad2
Merge pull request #3645 from wwylele/shader-manager
...
renderer_opengl: refactor shader & program objects and add shader manager for rasterizer
2018-04-16 16:38:38 +03:00
Weiyi Wang
bfd1d963ba
Merge pull request #3638 from ds84182/we-need-more-rounds
...
Round TEV outputs and the final fragment output in GLSL
2018-04-12 23:32:27 +03:00
Weiyi Wang
9772513141
Merge pull request #3639 from wwylele/texture-cude-fix
...
gl_rasterizer_cache: exit FillTextureCube when address is invalid
2018-04-12 22:54:14 +03:00
wwylele
8dc75598a4
gl_rasterizer: isolate shader management into its own class
2018-04-11 14:52:37 +03:00
wwylele
36bc92273b
gl_shader_gen: accept an option to generate separable shaders
2018-04-11 14:52:37 +03:00