Lioncash
4d89df8df2
shader_interpreter: use std::inner_product for the dot product
...
Same thing, less code.
2016-03-17 01:00:30 -04:00
Lioncash
c928b04eee
core/video_core: Make NumIds functions constexpr
2016-03-17 00:29:47 -04:00
Lioncash
39baad9926
core/video_core: Don't cast away const in subscript operators
...
Not to say these subscript operators aren't totally ugly as is.
2016-03-17 00:27:15 -04:00
Jannik Vogel
7eef9ebc3b
PICA: Alignment happens locally in vertex
2016-03-17 02:24:20 +01:00
bunnei
55f24e1cf4
Merge pull request #1519 from JayFoxRox/vp-offset-fix
...
PICA: Fix viewport offset
2016-03-16 14:19:53 -04:00
bunnei
96cafbe4cc
Merge pull request #1503 from bunnei/clear-jit-cache
...
Clear JIT cache
2016-03-16 13:18:51 -04:00
Jannik Vogel
9aad2f29bb
PICA: Fix MAD/MADI encoding
2016-03-15 20:01:25 +01:00
Jannik Vogel
964cfaea47
PICA: Fix viewport offset
2016-03-14 18:37:33 +01:00
Jannik Vogel
f746a00964
Respect vs output map
2016-03-14 13:03:34 +01:00
Jannik Vogel
a66c186e81
PICA: Align vertex attributes
2016-03-13 04:54:23 +01:00
bunnei
6efb710b28
shader_jit_x64: Clear cache after code space fills up.
2016-03-12 12:15:49 -05:00
bunnei
c103759cdc
shader_jit_x64: Make assert outputs more useful & cleanup formatting.
2016-03-12 12:06:28 -05:00
bunnei
46f78b7f19
shader: Update log message to use proper log class.
2016-03-12 12:03:32 -05:00
Yuri Kunde Schlesner
305e63d9ea
Merge pull request #1475 from lioncash/align
...
Common: Get rid of alignment macros
2016-03-09 20:08:38 -08:00
bunnei
4a2d1571bc
Merge pull request #1474 from lioncash/renderer
...
renderer_base: Minor changes
2016-03-09 10:57:38 -05:00
Lioncash
88d604383e
Common: Get rid of alignment macros
...
The gl rasterizer already uses alignas,
so we may as well move everything over.
2016-03-09 01:31:14 -05:00
bunnei
8530a2d7df
Merge pull request #1344 from LittleWhite-tb/error-output
...
Output errors in GUI
2016-03-08 23:12:04 -05:00
Lioncash
4b5b32e721
renderer_base: In-class initialize variables
2016-03-08 21:46:47 -05:00
Lioncash
be913040a8
render_base: Clarify/normalize getter functions
2016-03-08 21:45:24 -05:00
Lioncash
bf76afc68d
renderer_base: Don't directly expose the rasterizer unique_ptr
...
There's no reason to allow direct access to the unique_ptr instance. Only
its contained pointer.
2016-03-08 21:31:44 -05:00
LittleWhite
4be68dddfb
Improve error report from Init() functions
...
Add error popup when citra initialization failed
2016-03-08 22:05:25 +01:00
Yuri Kunde Schlesner
c58bc25d5b
Pica: Write depth value even when depth test is disabled
...
This has been confirmed on hardware. Fixes Etrian Odyssey IV.
2016-03-05 20:16:20 -08:00
Dwayne Slater
6b775034dd
Add immediate mode vertex submission
2016-03-02 22:16:38 -05:00
bunnei
2b00bdec1f
Merge pull request #1424 from MerryMage/lut_init
...
renderer_opengl: Initalise fragment shader LUT textures
2016-02-25 19:36:27 -05:00
MerryMage
0801363840
renderer_opengl: Initalise fragment shader LUT textures
2016-02-26 00:12:38 +00:00
bunnei
e04e6aabbc
Merge pull request #1395 from ds84182/padding-attributes
...
Add support for padding vertex attributes
2016-02-24 18:15:16 -08:00
Dwayne Slater
ed8072b48b
Fix out of bounds array access when loading a component >= 12
2016-02-20 19:03:14 -05:00
Dwayne Slater
82fc075ff6
Add support for padding vertex attributes
2016-02-20 19:00:31 -05:00
MerryMage
6c71858c5c
BitField: Make trivially copyable and remove assignment operator
2016-02-12 19:51:16 +00:00
bunnei
19557aaab3
pica: Cleanup lighting register definitions and documentation.
2016-02-05 17:20:25 -05:00
bunnei
c4d318f691
gl_rasterizer: Use alignas(16) instead of explicit padding.
2016-02-05 17:20:24 -05:00
bunnei
aaa7beeda8
renderer_opengl: Use GLvec3/GLvec4 aliases for commonly used types.
2016-02-05 17:20:23 -05:00
bunnei
8e9318f20a
gl_rasterizer: Fix issue with interpolation of opposite quaternions.
2016-02-05 17:20:23 -05:00
bunnei
b694423d09
pica_types: Fix typo in docstring.
2016-02-05 17:20:22 -05:00
bunnei
a949fd5f25
pica_types: Replace float24/20/16 with a template class.
2016-02-05 17:20:22 -05:00
bunnei
d171822dce
command_processor: Add an assertion to ensure LUTs are not written past their boundaries.
2016-02-05 17:20:20 -05:00
bunnei
310a1c30ca
gl_rasterizer: Remove unnecessary casts.
2016-02-05 17:20:19 -05:00
bunnei
c229503f4a
gl_rasterizer: Fix PicaShaderConfig on GCC.
2016-02-05 17:20:19 -05:00
bunnei
9dfb223d26
gl_rasterizer: Initial implementation of bump mapping.
2016-02-05 17:20:19 -05:00
bunnei
449902b558
gl_shader_gen: Fix bug in LUT range (should within range [0, 255] not [0, 256]).
2016-02-05 17:20:17 -05:00
bunnei
348c9c9ff3
gl_shader_gen: Implement lighting red, green, and blue reflection.
2016-02-05 17:20:16 -05:00
bunnei
01b407638c
gl_shader_gen: View should be normalized.
2016-02-05 17:20:15 -05:00
bunnei
c37de30cfc
gl_shader_gen: Implement fragment lighting fresnel effect.
2016-02-05 17:20:13 -05:00
bunnei
0e67c21c9e
gl_shader_gen: Implement fragment lighting specular 1 component.
2016-02-05 17:19:16 -05:00
bunnei
781b046579
gl_shader_gen: Add support for D0 LUT scaling.
2016-02-05 17:18:36 -05:00
bunnei
3d89dacd56
gl_shader_gen: Refactor lighting config to match Pica register naming.
...
- Also implement D0 LUT enable.
2016-02-05 17:17:35 -05:00
bunnei
6307999116
pica: Cleanup and add some comments to lighting registers.
2016-02-05 17:17:34 -05:00
bunnei
6878ba7608
gl_rasterizer: Minor naming refactor on Pica register naming.
2016-02-05 17:17:33 -05:00
bunnei
76f303538b
gl_shader_gen: Reorganize and cleanup lighting code.
...
- No functional difference.
2016-02-05 17:17:33 -05:00
bunnei
5f3bad8fb1
gl_shader_gen: Fix directional lights.
2016-02-05 17:17:32 -05:00
bunnei
bdc72d0904
gl_shader_gen: Fix bug with lighting where clamp highlights was only applied to last light.
2016-02-05 17:17:32 -05:00
bunnei
603b619cbe
gl_shader_gen: View vector needs to be normalized when computing half angle vector.
2016-02-05 17:17:31 -05:00
bunnei
021cb0bced
renderer_opengl: Use textures for fragment shader LUTs instead of UBOs.
...
- Gets us LUT interpolation for free.
- Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs.
2016-02-05 17:17:31 -05:00
bunnei
bf89870437
renderer_opengl: Initial implementation of basic specular lighting.
2016-02-05 17:17:30 -05:00
bunnei
e34fa6365f
renderer_opengl: Implement HW fragment lighting distance attenuation.
2016-02-05 17:17:30 -05:00
bunnei
e9af70eaf3
renderer_opengl: Implement HW fragment lighting LUTs within our default UBO.
2016-02-05 17:17:29 -05:00
bunnei
afbef52516
renderer_opengl: Implement diffuse component of HW fragment lighting.
2016-02-05 17:17:29 -05:00
bunnei
b003075570
pica: Implement decoding of basic fragment lighting components.
...
- Diffuse
- Distance attenuation
- float16/float20 types
- Vertex Shader 'view' output
2016-02-05 17:17:28 -05:00
bunnei
281bc90ad2
pica: Implement fragment lighting LUTs.
2016-02-05 17:17:27 -05:00
bunnei
4369767c72
pica: Add decodings for distance attenuation and LUT registers.
2016-02-05 17:17:26 -05:00
bunnei
38c7b20475
pica: Add pica_types module and move float24 definition.
2016-02-05 17:17:26 -05:00
tfarley
a15f4d1590
hwrasterizer: Use proper cached fb addr/size
2016-02-03 15:52:34 -05:00
Yuri Kunde Schlesner
05356543d9
OpenGL: Downgrade GL_DEBUG_SEVERITY_NOTIFICATION to Debug logging level
...
The nVidia driver is *extremely* spammy on this category, sending a
message on every buffer or texture upload, slowing down the emulator and
making the log useless.
2016-02-02 22:44:13 -08:00
bunnei
a43f8d2fb7
Merge pull request #1367 from yuriks/jit-jmp
...
Shader JIT: Fix off-by-one error when compiling JMPs
2016-01-27 09:19:28 -05:00
bunnei
c407b6ce2f
Merge pull request #1369 from yuriks/jmpu-inverted
...
Shader: Implement "invert condition" feature of IFU instruction
2016-01-26 09:58:16 -05:00
Yuri Kunde Schlesner
d01d1f7e01
Debugger: Use 3dbrew names for GPU registers
...
This list was imported from the 3dbrew wiki page and is pretty much
complete.
2016-01-24 20:29:44 -08:00
Yuri Kunde Schlesner
083d2d89a5
Shader: Implement "invert condition" feature of IFU instruction
...
If the bit 0 of the JMPU instruction is set, then the jump condition
will be inverted. That is, a jump will happen when the boolean is false
instead of when it is true.
2016-01-24 20:29:06 -08:00
Yuri Kunde Schlesner
c1071c1ff7
Shader JIT: Fix off-by-one error when compiling JMPs
...
There was a mistake in the JMP code which meant that one instruction at
the destination would be skipped when the jump was taken. This commit
also changes the meaning of the culprit parameter to make it less
confusing and avoid similar mistakes in the future.
2016-01-24 02:15:56 -08:00
bunnei
0b6cc0592d
Merge pull request #1334 from tfarley/hw-depth-modifiers
...
hwrasterizer: Use depth offset
2016-01-20 22:27:33 -05:00
tfarley
f53dbafdae
hwrasterizer: Use depth offset
2016-01-20 21:57:59 -05:00
Lioncash
4966568076
command_processor: Get rid of variable shadowing
2016-01-17 02:22:51 -05:00
bunnei
6a261e825c
Merge pull request #1196 from linkmauve/khr_debug
...
Add optional GL_KHR_debug support
2016-01-12 22:54:52 -05:00
Lioncash
5e17a586da
video_core: Make the renderer global a unique_ptr
2015-12-30 08:52:01 -05:00
Lioncash
97dc9634a2
swrasterizer: Add missing override specifier
2015-12-29 18:35:38 -05:00
Yuri Kunde Schlesner
015d7b9779
VideoCore: Sync state after changing rasterizers
...
This fixes various bugs that appear in the HW rasterizer after switching
between it and the SW one during emulation.
2015-12-20 17:37:15 -08:00
Yuri Kunde Schlesner
402692c08d
Merge pull request #1267 from yuriks/flipped-framebuffer
...
OpenGL: Flip framebuffers during transfer rather than when rendering
2015-12-09 20:35:15 -08:00
bunnei
3013f26d70
Merge pull request #1269 from Subv/triangle_fan
...
GPU/PrimitiveAssembler: Fixed drawing triangle fans.
2015-12-08 10:27:40 -05:00
Yuri Kunde Schlesner
195fedccf0
VideoCore: Unify interface to OpenGL and SW rasterizers
...
This removes explicit checks sprinkled all over the codebase to instead
just have the SW rasterizer expose an implementation with no-ops for
most operations.
2015-12-07 20:20:38 -08:00
Yuri Kunde Schlesner
03835d04f4
VideoCore: Rename HWRasterizer methods to be less confusing
2015-12-06 19:08:37 -08:00
Yuri Kunde Schlesner
da80ece8b9
OpenGL: Rename cache functions to better match what they actually do
2015-12-06 17:02:52 -08:00
Subv
7b33e163b9
GPU/PrimitiveAssembler: Fixed drawing triangle fans.
...
It was skipping the second vertex assignment and using uninitialized garbage when assembling the corresponding triangle.
2015-12-06 10:48:05 -05:00
Yuri Kunde Schlesner
cf81e08389
OpenGL: Flip framebuffers during transfer rather than when rendering
2015-12-04 22:23:39 -08:00
Yuri Kunde Schlesner
95dbc6eb0e
OpenGL: Add support for glFrontFace in the state tracker
2015-12-04 21:58:26 -08:00
Yuri Kunde Schlesner
e9c209ccc8
PICA: Properly emulate 1-stage delay in the combiner buffer
...
This was discovered and verified by @fincs. The tev combiner buffer
actually lags behind by one stage, meaning stage 1 reads the initial
color, stage 2 reads stage 0's output, and so on.
Fixes character portraits in Fire Emblem: Awakening and world textures
in Zelda: ALBW. Closes #1140 .
2015-11-30 22:45:18 -08:00
bunnei
f008dfbaca
renderer_opengl: Fix uniform issues introduced with kemenaran/avoid-explicit-uniform-location.
2015-11-25 22:33:24 -05:00
Pierre de La Morinerie
0735630744
Use regular uniform location
...
The support for GL_ARB_explicit_uniform_location is not that good
(53% according to http://feedback.wildfiregames.com/report/opengl/feature/GL_ARB_explicit_uniform_location ).
This fix the shader compilation on Intel HD 4000 (#1222 ).
2015-11-25 11:56:11 +01:00
Subv
823ce62f2f
FragShader: Use an UBO instead of several individual uniforms
2015-11-18 21:03:56 -05:00
Subv
7a37dba75b
GPU/Loaders: Log an error when a loader tries to load from a component beyond the available ones (12).
...
Related to #1170
2015-11-09 21:16:11 -05:00
Emmanuel Gil Peyrot
53df67376d
OpenGL: Log GL_KHR_debug messages we receive
...
This allows the driver to communicate errors, warnings and improvement
suggestions about our usage of the API.
2015-10-24 02:30:51 +01:00
bunnei
74186a5f01
gl_shader_gen: Use explicit locations for vertex shader attributes.
2015-10-21 22:29:56 -04:00
bunnei
e663f5c914
gl_shader_gen: Optimize code for AppendAlphaTestCondition.
...
- Also add a comment to AppendColorCombiner.
2015-10-21 22:29:56 -04:00
bunnei
e7b1f2ae0a
gl_rasterizer: Define enum types for each vertex texcoord attribute.
2015-10-21 21:59:47 -04:00
bunnei
0ebcff710e
gl_shader_gen: Various cleanups to shader generation.
2015-10-21 21:59:44 -04:00
bunnei
240a3b80d9
gl_rasterizer: Use MMH3 hash for shader cache hey.
...
- Includes a check to confirm no hash collisions.
2015-10-21 21:58:59 -04:00
bunnei
71edb55114
gl_shader_gen: Require explicit uniform locations.
...
- Fixes uniform issue on AMD.
2015-10-21 21:54:56 -04:00
bunnei
5ef2df056d
gl_shader_gen: Rename 'o' to 'attr' in vertex/fragment shaders.
2015-10-21 21:53:19 -04:00
bunnei
c2c4faef4c
gl_shader_gen: AppendAlphaModifier default should be 0.0, not vec4(0.0).
2015-10-21 21:53:18 -04:00
bunnei
bd833b8dd8
gl_shader_gen: Fix bug where TEV stage outputs should be clamped.
2015-10-21 21:53:18 -04:00
bunnei
f2e7f7e101
gl_rasterizer: Add documentation to ShaderCacheKey.
2015-10-21 21:53:17 -04:00
bunnei
4b5141954e
gl_shader_gen: Add additional function documentation.
2015-10-21 21:53:17 -04:00
bunnei
2a0a86f629
gl_shader_util: Cleanup header file + add docstring.
2015-10-21 21:53:16 -04:00
bunnei
a74774257e
gl_shader_gen: Various cleanups + moved TEV stage generation to its own function.
2015-10-21 21:53:16 -04:00
bunnei
c86b9d4242
renderer_opengl: Refactor shader generation/caching to be more organized + various cleanups.
2015-10-21 21:53:14 -04:00
bunnei
3c057bd3d8
gl_rasterizer: Move logic for creating ShaderCacheKey to a static function.
2015-10-21 21:53:05 -04:00
bunnei
b02a533d94
gl_shader_util: Use vec3 constants for AppendColorCombiner.
2015-10-21 21:51:24 -04:00
bunnei
37b0aa5af7
gl_rasterizer: Fix typo in uploading TEV const color uniforms.
2015-10-21 21:51:24 -04:00
bunnei
82f3e6dc69
gl_shader_util: Fix precision bug with alpha testing.
...
- Alpha testing is not done with float32 precision, this makes the HW renderer match the SW renderer.
2015-10-21 21:51:23 -04:00
Subv
e3f4233cef
Initial implementation of fragment shader generation with caching.
2015-10-21 21:51:23 -04:00
Emmanuel Gil Peyrot
14af5919ba
CitraQt, SkyEye, Loader, VideoCore: Remove newlines in LOG_* calls.
...
The LOG_* function itself already appends one.
2015-10-09 22:14:56 +01:00
Rohit Nirmal
32391cffdd
Silence -Wsign-compare warnings.
2015-10-06 22:16:15 -05:00
Martin Lindhe
bafb7afba2
fix some xcode 7.0 warnings
2015-09-29 23:11:09 +02:00
Lioncash
751fbfdcc3
general: Silence some warnings when using clang
2015-09-16 08:51:53 -04:00
Lioncash
aec28ed91e
video_core: Reorganize headers
2015-09-11 07:31:15 -04:00
Lioncash
1fa772393b
video_core: Remove unnecessary includes from headers
2015-09-11 00:10:03 -04:00
bunnei
a008b28659
Merge pull request #1133 from lioncash/emplace-back
...
gl_rasterizer: Replace push_back calls with emplace_back in AddTriangle
2015-09-10 15:07:06 -04:00
bunnei
0d5604fdcb
Merge pull request #1136 from lioncash/proto
...
renderer_opengl: Remove unimplemented function declaration
2015-09-10 11:29:33 -04:00
Lioncash
8a3428f16c
renderer_opengl: Remove unimplemented function declaration
2015-09-10 10:45:44 -04:00
Lioncash
526eb33d1e
video_core: Remove unused variables
2015-09-10 10:26:21 -04:00
Lioncash
7b72b71605
gl_rasterizer: Replace push_back calls with emplace_back in AddTriangle
2015-09-10 00:20:30 -04:00
aroulin
1484a23530
Shader JIT: Use SCALE constant from emitter
2015-09-07 16:50:28 +02:00
aroulin
87e3b9ffc0
Shader: Fix size_t to int casts of register offsets
2015-09-07 16:50:28 +02:00
Yuri Kunde Schlesner
b044c047c4
OpenGL: Use Sampler Objects to decouple sampler config from textures
...
Fixes #978
2015-09-03 15:09:51 -03:00
Yuri Kunde Schlesner
466e608c19
OpenGL: Remove ugly and endian-unsafe color pointer casts
2015-09-03 15:09:51 -03:00
Yuri Kunde Schlesner
ec28f037e6
OpenGL: Add support for Sampler Objects to state tracker
2015-09-03 15:09:50 -03:00
Yuri Kunde Schlesner
cc19a76656
Merge pull request #1087 from yuriks/opengl-glad
...
Replace the previous OpenGL loader with a glad-generated 3.3 one
2015-09-03 15:07:01 -03:00
bunnei
918ca40c68
Merge pull request #1088 from aroulin/x64-emitter-abi-call
...
x64: Proper stack alignment in shader JIT function calls
2015-09-02 08:46:58 -04:00
aroulin
ba998b85a1
video_core: Fix format specifiers warnings
2015-09-02 08:20:00 +02:00
aroulin
179ad35c2e
x64: Proper stack alignment in shader JIT function calls
...
Import Dolphin stack handling and register saving routines
Also removes the x86 parts from abi files
2015-09-01 23:39:52 +02:00
Tony Wasserka
071510b367
Merge pull request #1092 from Subv/vertex_offset
...
Pica: Add the vertex_offset register to the Pica registers map.
2015-08-31 18:17:59 +02:00
Subv
58a04c0776
Pica: Added the primitive_restart register (0x25f) to the registers map.
2015-08-31 09:14:18 -05:00
Subv
149ea561a6
Pica: Add the vertex_offset register to the Pica registers map.
2015-08-31 07:02:30 -05:00
aroulin
84959be150
Shader JIT: Fix SGE/SGEI NaN behavior
...
SGE was incorrectly emulated w.r.t. NaN behavior as the CMPSS SSE
instruction was used with NLT
2015-08-31 08:16:15 +02:00
bunnei
e77dc4e9d2
Merge pull request #1059 from Subv/vertex_offset
...
GPU: Implemented register 0x22A PICA_REG_DRAW_VERTEX_OFFSET
2015-08-30 17:12:33 -04:00
Subv
12a11472f1
GPU: Implemented register 0x22A.
...
This is the equivalent of the "first" parameter in glDrawArrays, it tells the GPU the vertex index at which to start rendering.
Register 0x22A doesn't affect indexed rendering.
2015-08-30 15:46:22 -05:00
Yuri Kunde Schlesner
a1a5570e97
Replace the previous OpenGL loader with a glad-generated 3.3 one
...
The main advantage of switching to glad from glLoadGen is that, apart
from being actively maintained, it supports a customizable entrypoint
loader function, which makes it possible to also support OpenGL ES.
2015-08-30 08:45:56 -03:00
bunnei
58e9f78844
Merge pull request #1049 from Subv/stencil
...
Rasterizer: Corrected the stencil implementation.
2015-08-29 20:06:25 -04:00
Yuri Kunde Schlesner
c5a4025b65
Merge pull request #1065 from yuriks/shader-fp
...
Shader FP compliance fixes
2015-08-27 16:34:13 -07:00
bunnei
f3cef178e3
gl_rasterizer_cache: Detect and ignore unnecessary texture flushes.
2015-08-27 19:07:53 -04:00
aroulin
f52d8c1a9b
Shader JIT: Fix float to integer rounding in MOVA
...
MOVA converts new address register values from floats to integers using truncation
2015-08-27 15:26:41 +02:00
archshift
dd0e1061ef
Shader JIT: ifdef out reference to ifdef'd out shader_map
...
shader_map was only defined on x86 architectures, but was cleared on shutdown
with no ifdef protection. Ifdef this out so non-x86 architectures can be built.
2015-08-26 22:28:19 +00:00
Yuri Kunde Schlesner
0fcabd2b11
Integrate the MicroProfile profiling library
...
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
2015-08-24 22:16:28 -03:00
bunnei
afd45d1d7f
Merge pull request #1063 from Subv/hw_renderer_debug_fb
...
HWRenderer: Only reload the framebuffer from gpu memory if the hw renderer is in use during a breakpoint
2015-08-24 13:02:44 -04:00
Subv
583d777b1a
HWRenderer: Added a workaround for the Intel Windows driver bug that causes glTexSubImage2D to not change the stencil buffer.
...
Reported here https://communities.intel.com/message/324464
2015-08-24 11:28:28 -05:00
Yuri Kunde Schlesner
eff10959de
fixup! Shaders: Fix multiplications between 0.0 and inf
2015-08-24 02:10:11 -03:00
Yuri Kunde Schlesner
d8ef20c856
Shader JIT: Tiny micro-optimization in DPH
2015-08-24 01:48:37 -03:00
Yuri Kunde Schlesner
630a850d4d
Shaders: Fix multiplications between 0.0 and inf
...
The PICA200 semantics for multiplication are so that when multiplying
inf by exactly 0.0, the result is 0.0, instead of NaN, as defined by
IEEE. This is relied upon by games.
Fixes #1024 (missing OoT interface items)
2015-08-24 01:48:15 -03:00
Yuri Kunde Schlesner
082b74fa24
Shaders: Explicitly conform to PICA semantics in MAX/MIN
2015-08-24 01:46:58 -03:00
Yuri Kunde Schlesner
76247170df
Shader JIT: Add name to second scratch register (XMM4)
2015-08-24 01:46:10 -03:00
Lioncash
fa5076eb9b
shader_jit: Replace two MDisp usages with MatR
2015-08-24 00:39:50 -04:00
Yuri Kunde Schlesner
455147ee95
Shader JIT: Fix CMP NaN behavior to match hardware
2015-08-24 01:29:40 -03:00
bunnei
83c214f6d8
Merge pull request #1062 from aroulin/shader-rcp-rsq
...
Shader: RCP and RSQ computes only the 1st component
2015-08-23 17:56:35 -04:00
Subv
d1b9383d86
HWRenderer: Only reload the framebuffer from gpu memory if the hw renderer is in use during a breakpoint.
2015-08-23 15:26:17 -05:00
aroulin
03c5cfead4
Shader: Use std::sqrt for float instead of sqrt
2015-08-23 22:03:07 +02:00
aroulin
fa552f11ef
Shader: RCP and RSQ computes only the 1st component
2015-08-23 22:01:17 +02:00
aroulin
2f1514b904
Shader: implement DPH/DPHI in JIT
2015-08-22 11:09:53 +02:00
aroulin
2e7cf2f6cf
Shader: implement DPH/DPHI in interpreter
...
Tests revealed that the component with w=1 is
SRC1 and not SRC2, it is now fixed on 3dbrew.
2015-08-22 11:09:53 +02:00
Subv
0c7da9b815
HWRasterizer: Implemented stencil ops 6 and 7.
2015-08-21 11:05:56 -05:00
Subv
7c1f84a92b
SWRasterizer: Implemented stencil ops 6 and 7.
...
IncrementWrap and DecrementWrap, verified with hwtests.
2015-08-21 11:01:42 -05:00
Subv
e43eb130d4
HWRasterizer: Implemented stencil op 1 (GL_ZERO)
2015-08-21 10:59:49 -05:00
Subv
fef1462371
SWRasterizer: Implemented stencil action 1 (GL_ZERO).
...
Verified with hwtests.
2015-08-21 10:35:25 -05:00
Subv
b3e530d005
SWRasterizer: Removed a todo. Verified with hwtests.
2015-08-21 10:09:15 -05:00
Subv
8e6336d96b
SWRenderer: The stencil depth_pass action is executed even if depth testing is disabled.
...
The HW renderer already did this.
2015-08-21 09:48:43 -05:00
Subv
e74825e3d0
Rasterizer: Abstract duplicated stencil code into a lambda.
2015-08-21 09:45:36 -05:00
Subv
46f660a789
GLRasterizer: Implemented stencil testing in the hw renderer.
2015-08-20 10:11:09 -05:00
Subv
186873420f
GPU/Rasterizer: Corrected the stencil implementation.
...
Verified the behavior with hardware tests.
2015-08-20 10:10:35 -05:00
aroulin
f3e8f42718
Shader: implement SGE, SGEI and SLT in JIT
2015-08-19 14:29:39 +02:00
aroulin
863730f6a7
Shader: implement SGE, SGEI in interpreter
2015-08-19 14:29:39 +02:00
bunnei
3c5ff418ca
Merge pull request #1047 from aroulin/shader-ex2-lg2
...
Shader: Save caller-saved registers in JIT before a CALL
2015-08-18 22:02:25 -04:00
aroulin
2f9eb98f03
Shader: Save caller-saved registers in JIT before a CALL
2015-08-19 03:40:07 +02:00
bunnei
026379ed55
Merge pull request #1037 from aroulin/shader-ex2-lg2
...
Shader: Implement EX2 and LG2 in interpreter/JIT
2015-08-18 19:42:32 -04:00
bunnei
1f18c9f8dd
Merge pull request #1034 from yuriks/rg8-textures
...
videocore: Added RG8 texture support
2015-08-16 22:17:12 -04:00
aroulin
7d3a6016d6
Shader: implement EX2 and LG2 in JIT
2015-08-17 01:12:34 +02:00
LittleWhite
9d6748fa94
Fix Linux GCC 4.9 build (complaining about undeclared memset)
2015-08-16 17:21:08 +02:00
aroulin
638e47c04d
Shader: implement EX2 and LG2 in interpreter
2015-08-16 15:54:30 +02:00
Tony Wasserka
96820ae42a
Build fix for Debug configurations.
2015-08-16 15:14:54 +02:00
Tony Wasserka
f5144e6c10
Merge pull request #997 from Lectem/cmdlist_full_debug
...
citra-qt: Improve pica command list widget (add mask, fix some issues)
2015-08-16 13:34:45 +02:00
Tony Wasserka
33ba604fd9
Introduce a shader tracer to allow inspection of input/output values for each processed instruction.
2015-08-16 14:12:11 +02:00
Tony Wasserka
2e3601f415
Pica/DebugUtils: Include uniform information into shader dumps.
2015-08-16 13:22:01 +02:00
Tony Wasserka
4cb302c8ae
citra-qt: Improve shader debugger.
...
Now supports dumping the current shader and recognizes a larger number of output semantics.
2015-08-16 13:22:00 +02:00
Patrick Martin
5b65d95310
videocore: Added RG8 texture support
2015-08-16 02:21:50 -03:00
bunnei
db97090cad
Shader: Use a POD struct for registers.
2015-08-15 18:03:27 -04:00
bunnei
b39c053785
Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64.
2015-08-15 18:03:27 -04:00
bunnei
0ee00861f6
Common: Cleanup CPU capability detection code.
2015-08-15 18:03:26 -04:00
bunnei
a1942238f5
Common: Move cpu_detect to x64 directory.
2015-08-15 18:03:26 -04:00
bunnei
bd7e691f78
x64: Refactor to remove fake interfaces and general cleanups.
2015-08-15 18:03:25 -04:00
bunnei
cfb354f11f
JIT: Support negative address offsets.
2015-08-15 18:01:22 -04:00
bunnei
094ae6fadb
Shader: Initial implementation of x86_x64 JIT compiler for Pica vertex shaders.
...
- Config: Add an option for selecting to use shader JIT or interpreter.
- Qt: Add a menu option for enabling/disabling the shader JIT.
2015-08-15 18:01:07 -04:00
bunnei
d67e2f78b7
Common: Added MurmurHash3 hash function for general-purpose use.
2015-08-15 17:33:46 -04:00
bunnei
3f69c2039d
Shader: Define a common interface for running vertex shader programs.
2015-08-15 17:33:44 -04:00
bunnei
18527b9e21
Shader: Move shader code to its own subdirectory, "shader".
2015-08-15 17:33:42 -04:00
bunnei
642b9b5030
GPU: Refactor "VertexShader" namespace to "Shader".
...
- Also renames "vertex_shader.*" to "shader_interpreter.*"
2015-08-15 17:33:41 -04:00
bunnei
35f3360663
Merge pull request #893 from linkmauve/remove-uint._t-int._t
...
Replace standard uint*_t and int*_t with CommonTypes’ u* and s* types
2015-08-11 17:55:24 -04:00
Emmanuel Gil Peyrot
5115d0177e
ARM Core, Video Core, CitraQt, Citrace: Use CommonTypes types instead of the standard u?int*_t types.
2015-08-11 22:38:44 +01:00
Yuri Kunde Schlesner
254582aa35
OpenGL: Fix state tracking in situations with reused object handles
...
If an OpenGL object is created, bound to a binding using the state
tracker, and then destroyed, a newly created object can be assigned the
same numeric handle by OpenGL. However, even though it is a new object,
and thus needs to be bound to the binding again, the state tracker
compared the current and previous handles and concluded that no change
needed to be made, leading to failure to bind objects in certain cases.
This manifested as broken text in VVVVVV, which this commit fixes along
with similar texturing problems in other games.
2015-08-06 00:59:37 -03:00
Yuri Kunde Schlesner
ff68db61bc
OpenGL: Remove redundant texture.enable_2d field from OpenGLState
...
All uses of this field where it's false can just set the texture id to 0
instead.
2015-08-05 22:55:22 -03:00
Yuri Kunde Schlesner
a96502edd3
Videocore: Implement simple vertex caching
...
This gives a ~2/3 reduction in the amount of vertices that need to be
processed through the vertex loaders and the vertex shader, yielding a
good speedup.
2015-08-04 23:41:47 -03:00
bunnei
bb7eb5c574
Merge pull request #1006 from yuriks/fb-commit-profile
...
OpenGL: Add a profiler category measuring framebuffer readback
2015-07-30 10:39:38 -04:00
bunnei
31c1bb901b
Merge pull request #963 from yuriks/gpu-fixes
...
Misc. GPU vertex loading fixes
2015-07-29 16:45:17 -04:00
Yuri Kunde Schlesner
428154da45
OpenGL: Add a profiler category measuring framebuffer readback
2015-07-28 17:37:46 -03:00
bunnei
e1a3fed6ff
Merge pull request #991 from yuriks/globjects
...
OpenGL: Make OpenGL object resource wrappers fully inline
2015-07-26 16:37:33 -04:00
bunnei
cb76453ec4
Merge pull request #992 from yuriks/hot-path-debug
...
VideoCore: #ifdef out some debugging routines
2015-07-26 11:45:51 -04:00
Lectem
facb2555a9
citra-qt/debug_utils: Use lock_guard everywhere
...
unique_lock were being used as lock_guards.
Also replaced manual lock/unlock by lock_guard for harmonization.
2015-07-26 16:28:44 +02:00
Lectem
e663751f8b
citra-qt/command list: Add mask column
2015-07-26 16:23:12 +02:00
Yuri Kunde Schlesner
1762267de4
OpenGL: Make OpenGL object resource wrappers fully inline
...
The functions are so simple that having them separate only bloats the
code and hinders optimization.
2015-07-26 10:58:58 -03:00
Tony Wasserka
72237a9305
Merge pull request #987 from yuriks/regnames
...
Videocore: Don't reinitialize register name map on every query.
2015-07-26 15:56:56 +02:00
Yuri Kunde Schlesner
e130dac7de
Videocore: Don't reinitialize register name map on every query
...
This greatly speeds up the command list debug widget.
2015-07-26 10:10:10 -03:00
Yuri Kunde Schlesner
4909a1486e
Videocore: Simplify variables in vertex shader interpreter
...
Simplifies the code and gives a tiny speed-up.
2015-07-26 08:49:35 -03:00
Yuri Kunde Schlesner
877d2a0e48
Videocore: Replace std::stack in shader interpreter with static_vector
...
Shaves off 1/3rd of the vertex shader time in Fire Emblem
2015-07-26 08:49:35 -03:00
Yuri Kunde Schlesner
13347997ba
VideoCore: #ifdef out some debugging routines
...
Some disabled debugging functionality was being called from rendering
routines in VideoCore. Although disabled, many of them still allocated
memory or did some extra work that was enough to show up in a profiler.
Gives a slight (~2ms) speedup.
2015-07-26 06:55:47 -03:00
Yuri Kunde Schlesner
00529c71d4
Address error that remained in last merge
2015-07-25 16:54:51 -03:00
Yuri Kunde Schlesner
9a0f9f12cd
Merge pull request #892 from zawata/another-warning-fixes
...
Yet More Warning Fixes
2015-07-25 12:50:32 -07:00
Tony Wasserka
1760eb5ca6
Merge pull request #980 from Subv/more_breakpoints
...
Qt/GPU Breakpoints: Added three more breakpoint types.
2015-07-24 01:58:11 +02:00
Yuri Kunde Schlesner
1fe9b0b82e
VideoCore: Fix values of unset components in input attribute arrays
...
If an input attribute array had a field with less than 4 components, the
remaining components were left unset if not specified by a default
vertex attribute. If neither mechanism would set a component, it would
assume a garbage value.
It has been verified that the hardware behavior is to instead to set the
missing components from the fixed default of (0 0 0 1). The default
vertex attribute values aren't used at all if a vertex array is
specified for that attribute.
Fixes UI graphics on Fire Emblem: Awakening, a small texturing glitch
when selecting a character in Cubic Ninja, as well as eliminating the
unset-W hack which was required for Ocarina of Time to not have
garbled triangles.
This change has been tested against hardware.
2015-07-23 16:51:25 -03:00
Yuri Kunde Schlesner
4e09202226
VideoCore: Saturate vertex colors before interpolating
...
During testing, it was discovered that hardware does not interpolate
colors output by the vertex shader as-is. Rather, it drops the sign and
saturates the value to 1.0. This is done before interpolation, such that
(e.g.) interpolating outputs 1.5 and -0.5 is equivalent to as if the
shader had output the values 1.0 and 0.5 instead, with the interpolated
value never crossing 0.0.
This change has been tested against hardware.
2015-07-23 16:51:24 -03:00
Subv
6c0ea5f5e8
Qt/GPU Breakpoints: Added three more breakpoint types:
...
* IncomingDisplayTransfer: Triggered just before a display transfer is performed.
* GSPCommandProcessed: Triggered right after a GSP command is processed.
* BufferSwapped: Triggered when the frames flip
2015-07-23 11:47:34 -05:00
bunnei
cea45af64d
Merge pull request #977 from yuriks/glenable-tex2d
...
GL Renderer: Remove erroneous glEnable(GL_TEXTURE_2D) calls
2015-07-23 10:07:35 -04:00
Subv
7b4961e968
Rasterizer/GL: Set the border color when binding a texture.
2015-07-22 18:41:37 -05:00
Yuri Kunde Schlesner
e5c4fe0098
GL Renderer: Remove erroneous glEnable(GL_TEXTURE_2D) calls
...
In OpenGL 3, texturing is always enabled, and this call is invalid.
While it produced no effect in the rest of the execution, it wouldn't
have the intended effect of disabling texturing for that unit. Instead
bind a null texture to the unit.
2015-07-22 01:22:09 -03:00
bunnei
3a5352baf8
Merge pull request #968 from Subv/texture_filtering
...
GPU: Added registers for min and mag texture filters
2015-07-21 18:27:50 -04:00
Subv
009e34f08a
GPU: Added registers for min and mag texture filters and implemented them in the hw renderer.
2015-07-21 16:26:09 -05:00
Tony Wasserka
aa6dfdb827
Merge pull request #929 from neobrain/geoshader_definitions
...
Pica/Shader: Add geometry shader definitions.
2015-07-21 15:24:48 +02:00
bunnei
9a3b21bcf9
Merge pull request #944 from Subv/spam
...
GLRasterizer: Don't try to get a pointer to the depth buffer if it doesn't exist.
2015-07-19 22:40:57 -04:00
Yuri Kunde Schlesner
ae985bf500
Pica: Correct switched S/T texture wrapping registers
...
This was found and hwtested by Lectem
2015-07-19 19:27:23 -03:00
Yuri Kunde Schlesner
5a75cf8fd2
Pica: Fix DP3 instruction, which wasn't assigning to the w component
2015-07-19 19:01:59 -03:00
Subv
a694caeee0
GLRasterizer: Don't try to get a pointer to the depth buffer if it doesn't exist.
2015-07-19 14:09:23 -05:00
Subv
3600c32483
Rasterizer/Textures: Fixed a bug where the I4 format would get twice the real stride.
...
Also added its name to the texture viewer widget
2015-07-19 13:15:23 -05:00
zawata
6933a50aeb
Vertex Shader : Undo casting
2015-07-19 04:12:42 -07:00
zawata
04756bdaf6
Video_Core : Type fixes
2015-07-19 04:12:40 -07:00
zawata
f7050021de
Video_Core: Finally fix pesky warning
2015-07-19 04:08:44 -07:00
zawata
017437e8d7
Video_Core : Change Tabs to Spaces
...
This really should be universalized, I keep getting errors creating
commits because lines I've edited use tabs instead of spaces(and yes I
did read the contributing guide and i know they are supposed to be
spaces)
2015-07-19 03:59:50 -07:00
zawata
716120da3d
Video_Core : Fix Conversion Warnings
2015-07-19 03:59:49 -07:00
Tony Wasserka
33568494af
Pica/Shader: Add geometry shader definitions.
2015-07-15 17:31:57 +02:00
Tony Wasserka
0ea2319f3c
Merge pull request #931 from neobrain/move_default_attr_handler
...
Pica/CommandProcessor: Move default attribute setup to the proper position.
2015-07-15 17:22:50 +02:00
Tony Wasserka
aeec12dc33
Pica/CommandProcessor: Move default attribute setup to the proper position.
2015-07-15 17:56:38 +02:00
Tony Wasserka
d2c3ecc8d8
Pica/Clipper: Output proper number of triangles in debugging logs.
2015-07-15 18:01:43 +02:00
Lectem
d08e9b29e2
VideoCore: Implement the DOT3_RGB combiner
2015-07-14 02:16:10 -03:00
Tony Wasserka
5e79706db2
Pica: Implement stencil testing.
2015-07-13 23:54:39 +02:00
Tony Wasserka
0799b40caa
Clean up command_processor.cpp.
2015-07-13 22:27:21 +02:00
Tony Wasserka
902fa4da52
Add CiTrace recording support.
...
This is exposed in the GUI as a new "CiTrace Recording" widget.
Playback is implemented by a standalone 3DS homebrew application (which only runs reliably within Citra currently; on an actual 3DS it will often crash still).
2015-07-13 22:27:20 +02:00
Tony Wasserka
ae7120f5d9
Merge pull request #907 from Lectem/clamp_to_border
...
Add GL_CLAMP_TO_BORDER support.
2015-07-12 03:19:46 +02:00
Lectem
58d1c6398e
Added GL_CLAMP_TO_BORDER support
2015-07-09 22:23:26 +02:00
Emmanuel Gil Peyrot
4964a359e1
Core: Cleanup hw includes.
2015-06-28 00:46:39 +01:00
Emmanuel Gil Peyrot
f48b28ad27
Core, VideoCore: Replace or fix exit() calls.
2015-06-28 00:36:55 +01:00
Emmanuel Gil Peyrot
45c4781544
CitraQt: Cleanup includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
22ae87530b
Common: Cleanup emu_window includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
596b7c4f63
Common: Cleanup key_map includes.
2015-06-28 00:36:54 +01:00
zawata
92bfec0566
VideoCore: Fix floating point warning
2015-06-26 21:38:04 -07:00
Emmanuel Gil Peyrot
94fc644430
VideoCore: Log the GL driver’s vendor and renderer.
2015-06-16 00:02:23 +01:00
Yuri Kunde Schlesner
9b7d85a4f5
video_core: add extra braces around initializer
...
Trivial change and fixes several warnings in the clang build.
2015-06-14 00:33:08 -03:00
tfarley
26bc816d7a
Renderer formatting edits
2015-06-08 19:19:15 -04:00