summaryrefslogtreecommitdiffstats
path: root/src/video_core (unfollow)
Commit message (Collapse)AuthorFilesLines
2016-02-05gl_shader_gen: Implement fragment lighting fresnel effect.bunnei3-9/+38
2016-02-05gl_shader_gen: Implement fragment lighting specular 1 component.bunnei3-11/+41
2016-02-05gl_shader_gen: Add support for D0 LUT scaling.bunnei3-3/+71
2016-02-05gl_shader_gen: Refactor lighting config to match Pica register naming.bunnei3-42/+50
- Also implement D0 LUT enable.
2016-02-05pica: Cleanup and add some comments to lighting registers.bunnei2-19/+19
2016-02-05gl_rasterizer: Minor naming refactor on Pica register naming.bunnei2-20/+23
2016-02-05gl_shader_gen: Reorganize and cleanup lighting code.bunnei1-100/+107
- No functional difference.
2016-02-05gl_shader_gen: Fix directional lights.bunnei1-1/+1
2016-02-05gl_shader_gen: Fix bug with lighting where clamp highlights was only applied to last light.bunnei1-6/+6
2016-02-05gl_shader_gen: View vector needs to be normalized when computing half angle vector.bunnei1-3/+4
2016-02-05renderer_opengl: Use textures for fragment shader LUTs instead of UBOs.bunnei5-27/+64
- Gets us LUT interpolation for free. - Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs.
2016-02-05renderer_opengl: Initial implementation of basic specular lighting.bunnei4-13/+165
2016-02-05renderer_opengl: Implement HW fragment lighting distance attenuation.bunnei2-17/+38
2016-02-05renderer_opengl: Implement HW fragment lighting LUTs within our default UBO.bunnei4-16/+67
2016-02-05renderer_opengl: Implement diffuse component of HW fragment lighting.bunnei6-15/+270
2016-02-05pica: Implement decoding of basic fragment lighting components.bunnei5-15/+120
- Diffuse - Distance attenuation - float16/float20 types - Vertex Shader 'view' output
2016-02-05pica: Implement fragment lighting LUTs.bunnei2-0/+34
2016-02-05pica: Add decodings for distance attenuation and LUT registers.bunnei1-1/+104
2016-02-05pica: Add pica_types module and move float24 definition.bunnei3-112/+127
2016-02-03hwrasterizer: Use proper cached fb addr/sizetfarley2-42/+34
2016-02-03OpenGL: Downgrade GL_DEBUG_SEVERITY_NOTIFICATION to Debug logging levelYuri Kunde Schlesner1-2/+0
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-01-25Debugger: Use 3dbrew names for GPU registersYuri Kunde Schlesner1-57/+465
This list was imported from the 3dbrew wiki page and is pretty much complete.
2016-01-25Shader: Implement "invert condition" feature of IFU instructionYuri Kunde Schlesner2-2/+5
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-24Shader JIT: Fix off-by-one error when compiling JMPsYuri Kunde Schlesner2-6/+6
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-21hwrasterizer: Use depth offsettfarley3-2/+24
2016-01-17command_processor: Get rid of variable shadowingLioncash1-2/+1
2015-12-30video_core: Make the renderer global a unique_ptrLioncash2-6/+10
2015-12-30swrasterizer: Add missing override specifierLioncash1-1/+1
2015-12-21VideoCore: Sync state after changing rasterizersYuri Kunde Schlesner1-0/+1
This fixes various bugs that appear in the HW rasterizer after switching between it and the SW one during emulation.
2015-12-08VideoCore: Unify interface to OpenGL and SW rasterizersYuri Kunde Schlesner13-67/+105
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-07VideoCore: Rename HWRasterizer methods to be less confusingYuri Kunde Schlesner4-12/+12
2015-12-07OpenGL: Rename cache functions to better match what they actually doYuri Kunde Schlesner3-12/+11
2015-12-06GPU/PrimitiveAssembler: Fixed drawing triangle fans.Subv1-5/+4
It was skipping the second vertex assignment and using uninitialized garbage when assembling the corresponding triangle.
2015-12-05OpenGL: Flip framebuffers during transfer rather than when renderingYuri Kunde Schlesner2-12/+11
2015-12-05OpenGL: Add support for glFrontFace in the state trackerYuri Kunde Schlesner2-0/+6
2015-12-01PICA: Properly emulate 1-stage delay in the combiner bufferYuri Kunde Schlesner2-12/+19
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-26renderer_opengl: Fix uniform issues introduced with kemenaran/avoid-explicit-uniform-location.bunnei2-6/+8
2015-11-25Use regular uniform locationPierre de La Morinerie3-15/+5
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-19FragShader: Use an UBO instead of several individual uniformsSubv6-13/+67
2015-11-10GPU/Loaders: Log an error when a loader tries to load from a component beyond the available ones (12).Subv1-0/+2
Related to #1170
2015-10-24OpenGL: Log GL_KHR_debug messages we receiveEmmanuel Gil Peyrot1-0/+57
This allows the driver to communicate errors, warnings and improvement suggestions about our usage of the API.
2015-10-22gl_shader_gen: Use explicit locations for vertex shader attributes.bunnei2-15/+9
2015-10-22gl_shader_gen: Optimize code for AppendAlphaTestCondition.bunnei1-16/+11
- Also add a comment to AppendColorCombiner.
2015-10-22gl_rasterizer: Define enum types for each vertex texcoord attribute.bunnei3-12/+14
2015-10-22gl_shader_gen: Various cleanups to shader generation.bunnei3-48/+52
2015-10-22gl_rasterizer: Use MMH3 hash for shader cache hey.bunnei4-83/+63
- Includes a check to confirm no hash collisions.
2015-10-22gl_shader_gen: Require explicit uniform locations.bunnei3-56/+34
- Fixes uniform issue on AMD.
2015-10-22gl_shader_gen: Rename 'o' to 'attr' in vertex/fragment shaders.bunnei1-11/+11
2015-10-22gl_shader_gen: AppendAlphaModifier default should be 0.0, not vec4(0.0).bunnei1-1/+1
2015-10-22gl_shader_gen: Fix bug where TEV stage outputs should be clamped.bunnei1-3/+3
2015-10-22gl_rasterizer: Add documentation to ShaderCacheKey.bunnei1-0/+16
2015-10-22gl_shader_gen: Add additional function documentation.bunnei2-0/+18
2015-10-22gl_shader_util: Cleanup header file + add docstring.bunnei1-1/+7
2015-10-22gl_shader_gen: Various cleanups + moved TEV stage generation to its own function.bunnei1-161/+170
2015-10-22renderer_opengl: Refactor shader generation/caching to be more organized + various cleanups.bunnei10-788/+509
2015-10-22gl_rasterizer: Move logic for creating ShaderCacheKey to a static function.bunnei3-22/+50
2015-10-22gl_shader_util: Use vec3 constants for AppendColorCombiner.bunnei1-6/+6
2015-10-22gl_rasterizer: Fix typo in uploading TEV const color uniforms.bunnei1-5/+5
2015-10-22gl_shader_util: Fix precision bug with alpha testing.bunnei2-9/+9
- Alpha testing is not done with float32 precision, this makes the HW renderer match the SW renderer.
2015-10-22Initial implementation of fragment shader generation with caching.Subv7-261/+568
2015-10-09CitraQt, SkyEye, Loader, VideoCore: Remove newlines in LOG_* calls.Emmanuel Gil Peyrot2-7/+7
The LOG_* function itself already appends one.
2015-10-07Silence -Wsign-compare warnings.Rohit Nirmal1-3/+3
2015-09-29fix some xcode 7.0 warningsMartin Lindhe3-2/+4
2015-09-16general: Silence some warnings when using clangLioncash3-7/+7
2015-09-11video_core: Reorganize headersLioncash19-62/+56
2015-09-11video_core: Remove unnecessary includes from headersLioncash5-13/+3
2015-09-10renderer_opengl: Remove unimplemented function declarationLioncash1-3/+0
2015-09-10video_core: Remove unused variablesLioncash3-4/+0
2015-09-10gl_rasterizer: Replace push_back calls with emplace_back in AddTriangleLioncash1-3/+3
2015-09-07Shader JIT: Use SCALE constant from emitteraroulin1-4/+4
2015-09-07Shader: Fix size_t to int casts of register offsetsaroulin2-15/+21
2015-09-03OpenGL: Use Sampler Objects to decouple sampler config from texturesYuri Kunde Schlesner4-21/+76
Fixes #978
2015-09-03OpenGL: Remove ugly and endian-unsafe color pointer castsYuri Kunde Schlesner4-9/+13
2015-09-03OpenGL: Add support for Sampler Objects to state trackerYuri Kunde Schlesner3-4/+42
2015-09-02video_core: Fix format specifiers warningsaroulin2-2/+3
2015-09-01x64: Proper stack alignment in shader JIT function callsaroulin2-28/+18
Import Dolphin stack handling and register saving routines Also removes the x86 parts from abi files
2015-08-31Pica: Added the primitive_restart register (0x25f) to the registers map.Subv2-1/+5
2015-08-31Pica: Add the vertex_offset register to the Pica registers map.Subv2-0/+2
2015-08-31Shader JIT: Fix SGE/SGEI NaN behavioraroulin1-3/+3
SGE was incorrectly emulated w.r.t. NaN behavior as the CMPSS SSE instruction was used with NLT
2015-08-30GPU: Implemented register 0x22A.Subv2-2/+8
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-30Replace the previous OpenGL loader with a glad-generated 3.3 oneYuri Kunde Schlesner11-2812/+12
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-28gl_rasterizer_cache: Detect and ignore unnecessary texture flushes.bunnei3-8/+18
2015-08-27Shader JIT: Fix float to integer rounding in MOVAaroulin1-2/+2
MOVA converts new address register values from floats to integers using truncation
2015-08-27Shader JIT: ifdef out reference to ifdef'd out shader_maparchshift1-0/+2
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-25Integrate the MicroProfile profiling libraryYuri Kunde Schlesner5-0/+25
This brings goodies such as a configurable user interface and multi-threaded timeline view.
2015-08-24HWRenderer: Added a workaround for the Intel Windows driver bug that causes glTexSubImage2D to not change the stencil buffer.Subv1-2/+9
Reported here https://communities.intel.com/message/324464
2015-08-24fixup! Shaders: Fix multiplications between 0.0 and infYuri Kunde Schlesner1-4/+4
2015-08-24Shader JIT: Tiny micro-optimization in DPHYuri Kunde Schlesner1-4/+4
2015-08-24Shaders: Fix multiplications between 0.0 and infYuri Kunde Schlesner3-40/+58
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-24Shaders: Explicitly conform to PICA semantics in MAX/MINYuri Kunde Schlesner2-2/+10
2015-08-24Shader JIT: Add name to second scratch register (XMM4)Yuri Kunde Schlesner1-3/+5
2015-08-24shader_jit: Replace two MDisp usages with MatRLioncash1-2/+2
2015-08-24Shader JIT: Fix CMP NaN behavior to match hardwareYuri Kunde Schlesner1-8/+23
2015-08-23HWRenderer: Only reload the framebuffer from gpu memory if the hw renderer is in use during a breakpoint.Subv1-2/+6
2015-08-23Shader: Use std::sqrt for float instead of sqrtaroulin1-1/+1
2015-08-23Shader: RCP and RSQ computes only the 1st componentaroulin2-10/+10
2015-08-22Shader: implement DPH/DPHI in JITaroulin2-2/+36
2015-08-22Shader: implement DPH/DPHI in interpreteraroulin1-1/+8
Tests revealed that the component with w=1 is SRC1 and not SRC2, it is now fixed on 3dbrew.
2015-08-21HWRasterizer: Implemented stencil ops 6 and 7.Subv1-1/+3
2015-08-21SWRasterizer: Implemented stencil ops 6 and 7.Subv2-6/+14
IncrementWrap and DecrementWrap, verified with hwtests.
2015-08-21HWRasterizer: Implemented stencil op 1 (GL_ZERO)Subv1-1/+1
2015-08-21SWRasterizer: Implemented stencil action 1 (GL_ZERO).Subv2-1/+4
Verified with hwtests.
2015-08-21SWRasterizer: Removed a todo. Verified with hwtests.Subv1-1/+0
2015-08-21SWRenderer: The stencil depth_pass action is executed even if depth testing is disabled.Subv1-7/+5
The HW renderer already did this.
2015-08-21Rasterizer: Abstract duplicated stencil code into a lambda.Subv1-6/+9
2015-08-20GLRasterizer: Implemented stencil testing in the hw renderer.Subv4-2/+44
2015-08-20GPU/Rasterizer: Corrected the stencil implementation.Subv2-18/+39
Verified the behavior with hardware tests.
2015-08-19Shader: implement SGE, SGEI and SLT in JITaroulin2-15/+36
2015-08-19Shader: implement SGE, SGEI in interpreteraroulin1-0/+14
2015-08-19Shader: Save caller-saved registers in JIT before a CALLaroulin2-0/+33
2015-08-17Shader: implement EX2 and LG2 in JITaroulin2-2/+22
2015-08-16Fix Linux GCC 4.9 build (complaining about undeclared memset)LittleWhite1-1/+2
2015-08-16Shader: implement EX2 and LG2 in interpreteraroulin1-0/+36
2015-08-16Build fix for Debug configurations.Tony Wasserka1-1/+1
2015-08-16Introduce a shader tracer to allow inspection of input/output values for each processed instruction.Tony Wasserka8-41/+326
2015-08-16Pica/DebugUtils: Include uniform information into shader dumps.Tony Wasserka2-11/+51
2015-08-16citra-qt: Improve shader debugger.Tony Wasserka4-13/+28
Now supports dumping the current shader and recognizes a larger number of output semantics.
2015-08-16videocore: Added RG8 texture supportPatrick Martin2-1/+8
2015-08-16Shader: Use a POD struct for registers.bunnei5-40/+43
2015-08-16Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64.bunnei2-7/+6
2015-08-16Common: Cleanup CPU capability detection code.bunnei1-5/+5
2015-08-16Common: Move cpu_detect to x64 directory.bunnei1-2/+1
2015-08-16x64: Refactor to remove fake interfaces and general cleanups.bunnei6-150/+26
2015-08-16JIT: Support negative address offsets.bunnei1-26/+25
2015-08-16Shader: Initial implementation of x86_x64 JIT compiler for Pica vertex shaders.bunnei10-3/+940
- 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-15Common: Added MurmurHash3 hash function for general-purpose use.bunnei1-1/+1
2015-08-15Shader: Define a common interface for running vertex shader programs.bunnei7-186/+289
2015-08-15Shader: Move shader code to its own subdirectory, "shader".bunnei9-12/+12
2015-08-15GPU: Refactor "VertexShader" namespace to "Shader".bunnei13-50/+48
- Also renames "vertex_shader.*" to "shader_interpreter.*"
2015-08-11ARM Core, Video Core, CitraQt, Citrace: Use CommonTypes types instead of the standard u?int*_t types.Emmanuel Gil Peyrot1-1/+2
2015-08-06OpenGL: Fix state tracking in situations with reused object handlesYuri Kunde Schlesner4-0/+45
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-06OpenGL: Remove redundant texture.enable_2d field from OpenGLStateYuri Kunde Schlesner4-26/+3
All uses of this field where it's false can just set the texture id to 0 instead.
2015-08-05Videocore: Implement simple vertex cachingYuri Kunde Schlesner1-62/+89
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-07-28OpenGL: Add a profiler category measuring framebuffer readbackYuri Kunde Schlesner1-0/+7
2015-07-26citra-qt/debug_utils: Use lock_guard everywhereLectem1-6/+5
unique_lock were being used as lock_guards. Also replaced manual lock/unlock by lock_guard for harmonization.
2015-07-26citra-qt/command list: Add mask columnLectem3-25/+24
2015-07-26OpenGL: Make OpenGL object resource wrappers fully inlineYuri Kunde Schlesner3-143/+79
The functions are so simple that having them separate only bloats the code and hinders optimization.
2015-07-26Videocore: Don't reinitialize register name map on every queryYuri Kunde Schlesner2-65/+72
This greatly speeds up the command list debug widget.
2015-07-26Videocore: Simplify variables in vertex shader interpreterYuri Kunde Schlesner1-24/+21
Simplifies the code and gives a tiny speed-up.
2015-07-26Videocore: Replace std::stack in shader interpreter with static_vectorYuri Kunde Schlesner1-6/+6
Shaves off 1/3rd of the vertex shader time in Fire Emblem
2015-07-26VideoCore: #ifdef out some debugging routinesYuri Kunde Schlesner5-13/+18
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-25Address error that remained in last mergeYuri Kunde Schlesner1-1/+1
2015-07-23VideoCore: Fix values of unset components in input attribute arraysYuri Kunde Schlesner1-42/+38
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-23VideoCore: Saturate vertex colors before interpolatingYuri Kunde Schlesner1-0/+6
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-23Qt/GPU Breakpoints: Added three more breakpoint types:Subv2-4/+7
* 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-23Rasterizer/GL: Set the border color when binding a texture.Subv1-2/+9
2015-07-22GL Renderer: Remove erroneous glEnable(GL_TEXTURE_2D) callsYuri Kunde Schlesner1-8/+5
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-21GPU: Added registers for min and mag texture filters and implemented them in the hw renderer.Subv4-3/+37
2015-07-20Pica: Correct switched S/T texture wrapping registersYuri Kunde Schlesner1-2/+2
This was found and hwtested by Lectem
2015-07-20Pica: Fix DP3 instruction, which wasn't assigning to the w componentYuri Kunde Schlesner1-1/+1
2015-07-19GLRasterizer: Don't try to get a pointer to the depth buffer if it doesn't exist.Subv1-3/+7
2015-07-19Rasterizer/Textures: Fixed a bug where the I4 format would get twice the real stride.Subv1-0/+1
Also added its name to the texture viewer widget
2015-07-19Vertex Shader : Undo castingzawata1-1/+1
2015-07-19Video_Core : Type fixeszawata2-2/+2
2015-07-19Video_Core: Finally fix pesky warningzawata1-1/+1
2015-07-19Video_Core : Change Tabs to Spaceszawata1-0/+15
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-19Video_Core : Fix Conversion Warningszawata3-18/+3
2015-07-15Pica/Shader: Add geometry shader definitions.Tony Wasserka5-149/+162
2015-07-15Pica/CommandProcessor: Move default attribute setup to the proper position.Tony Wasserka1-40/+40
2015-07-15Pica/Clipper: Output proper number of triangles in debugging logs.Tony Wasserka1-1/+1
2015-07-14VideoCore: Implement the DOT3_RGB combinerLectem2-1/+13
2015-07-13Pica: Implement stencil testing.Tony Wasserka2-12/+173
2015-07-13Clean up command_processor.cpp.Tony Wasserka1-22/+27
2015-07-13Add CiTrace recording support.Tony Wasserka3-2/+63
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-09Added GL_CLAMP_TO_BORDER supportLectem3-13/+28
2015-06-28Core: Cleanup hw includes.Emmanuel Gil Peyrot5-4/+13
2015-06-28Core, VideoCore: Replace or fix exit() calls.Emmanuel Gil Peyrot1-6/+9
2015-06-28CitraQt: Cleanup includes.Emmanuel Gil Peyrot3-5/+10
2015-06-28Common: Cleanup emu_window includes.Emmanuel Gil Peyrot3-10/+8
2015-06-28Common: Cleanup key_map includes.Emmanuel Gil Peyrot2-3/+9
2015-06-27VideoCore: Fix floating point warningzawata1-1/+1
2015-06-16VideoCore: Log the GL driver’s vendor and renderer.Emmanuel Gil Peyrot1-0/+2
2015-06-14video_core: add extra braces around initializerYuri Kunde Schlesner1-3/+3
Trivial change and fixes several warnings in the clang build.
2015-06-09Renderer formatting editstfarley2-26/+29
2015-06-09Render-to-texture flush, interval math fixtfarley1-1/+13
2015-06-09Liberal texture unbind (clout menu)tfarley2-4/+40
2015-06-09Depth format fix (crush3d intro/black screens)tfarley1-46/+46
2015-06-09Implemented glColorMasktfarley3-0/+24
2015-05-31Pica: Use zero for the SecondaryFragmentColor source.bunnei3-11/+21
- This is a workaround until we support fragment lighting.
2015-05-31rasterizer: Remove unnecessary 'using' for BlendEquation.bunnei1-2/+1
2015-05-31Pica: Implement LogicOp function.bunnei7-8/+135
2015-05-31rasterizer: Implement AddSigned combiner function for alpha channel.bunnei1-0/+7
2015-05-31vertex_shader: Use address offset on src2 in inverted mode.bunnei1-3/+3
2015-05-31Pica: Implement command buffer execution registers.bunnei2-44/+76
2015-05-31vertex_shader: Implement SLT/SLTI instructions.bunnei1-4/+10
2015-05-31vertex_shader: Implement MIN instruction.bunnei1-0/+9
2015-05-30Move video_core/color.h to common/color.harchshift5-218/+4
2015-05-30Move video_core/math.h to common/vector_math.harchshift7-648/+6
The file only contained vector manipulation code, and such widely-useable code doesn't belong in video_core.
2015-05-29Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot11-25/+25
2015-05-23gl_state: Remove unnecessary const specifier on ApplyLioncash2-2/+2
2015-05-23video_core/utils: Remove unused variables in GetMortonOffsetLioncash1-3/+0
2015-05-23Pica: Create 'State' structure and move state memory there.bunnei12-428/+451
2015-05-23gl_state: Fix a condition typo in ApplyLioncash1-1/+1
2015-05-23OpenGL renderertfarley21-44/+2196
2015-05-17GPU/DefaultAttributes: Clear up a comment in command_processorSubv1-2/+2
2015-05-17GPU/DefaultAttributes: Let the attribute data from the loaders overwrite the default attributes, if set.Subv1-21/+23
closes #735
2015-05-15Memmap: Re-organize memory function in two filesYuri Kunde Schlesner4-5/+3
memory.cpp/h contains definitions related to acessing memory and configuring the address space mem_map.cpp/h contains higher-level definitions related to configuring the address space accoording to the kernel and allocating memory.
2015-05-14pica: Add the ULL specifier in IsDefaultAttributeLioncash1-1/+1
This is necessary otherwise there are warnings about a 32-bit result being casted to a 64-bit value.
2015-05-12GPU: Add more fine grained profiling for vertex shader and rasterizationYuri Kunde Schlesner2-0/+10
2015-05-11Implement I4 texture formatarchshift2-1/+12
@neobrain, could you confirm that this is correct? It's been tested with various different games and fixes different textures, including in Animal Crossing, Kirby Triple Deluxe, and SMB3D.
2015-05-10rasterizer: Implemented combiner output scaling.bunnei2-2/+16
2015-05-10rasterizer: Implemented AddSigned combiner op.bunnei1-0/+10
2015-05-10rasterizer: Fixed a depth testing bug.bunnei2-6/+19
2015-05-10rasterizer: Implement combiner buffer input.bunnei2-4/+53
2015-05-10rasterizer: Return zero'd vectors on error conditions.bunnei1-3/+3
2015-05-10vertex_shader: Implement FLR instruction.bunnei1-0/+9
2015-05-10vertex_shader: Implement MADI instruction.bunnei1-4/+7
nihstro: Update submodule to latest upstream/master to support MADI instruction decoding.
2015-05-09Memory: Add GetPhysicalPointer helper functionYuri Kunde Schlesner3-11/+11
2015-05-09Memory: Support more regions in the VAddr-PAddr translation functionsYuri Kunde Schlesner3-18/+7
Also adds better documentation and removes the one-off reimplementation of the function in pica.h.
2015-05-09Memory: Re-organize and rename memory area address constantsYuri Kunde Schlesner1-1/+1
2015-05-07Common: Remove common.hYuri Kunde Schlesner6-3/+8
2015-05-07GPU: Implemented default vertex shader attributes.Subv4-68/+137
Fixes some games crashing.
2015-04-29VideoCore: Remove a superfluous auto variable declaration in debug_utils.Emmanuel Gil Peyrot1-1/+1
2015-04-10Silence some -Wsign-compare warnings.Rohit Nirmal1-2/+2
2015-04-05Changed occurences of colour to color for consistencyGareth Higgins2-4/+4
2015-04-04Allow the user to set the background clear color during emulationarchshift1-1/+2
The background color can be seen at the sides of the bottom screen or when the window is wider than normal.
2015-03-16VideoCore: Add static_cast around expressions where the compiler doesn’t deduce the right type.Emmanuel Gil Peyrot2-4/+4
2015-03-12Pica/VertexShader: Fix a bug caused due to incorrect assumptions of consecutive output register tables.Tony Wasserka1-20/+24
We now write create a temporary buffer for output registers and copy all of them to the actual output vertex structure after the shader has run. This is technically not necessary, but it's easier to vectorize in the future.
2015-03-10GPU: Added the stencil test structure to the Pica Regs struct.Subv3-50/+65
2015-03-10GPU: Implemented more depth buffer formats.Subv3-9/+115
This fixes the horizontal lines in Picross E, Cubic Ninja, Cave Story 3D and possibly others
2015-03-09Added LCD registers, and implementation for color filling in OGL code.archshift2-11/+48
2015-03-09Pica/PrimitiveAssembly: Fix triangle strips and fans being generated with incorrect winding order.Tony Wasserka1-6/+3
2015-03-08Update nihstro submodule to the initial release version.archshift1-37/+38
Includes more opcodes to implement in the future.
2015-03-07Set framebuffer layout from EmuWindow.bunnei3-43/+9
2015-03-07GPU/Textures: Fixed ETC texture decoding.Subv1-1/+1
2015-03-04GPU: Added RGB565/RGB8 framebuffer support and various cleanups.bunnei5-85/+155
- Centralizes color format encode/decode functions. - Fixes endianness issues. - Implements remaining framebuffer formats in the debugger.
2015-03-02Add profiling infrastructure and widgetYuri Kunde Schlesner2-0/+18
2015-02-28Added RGBA5551 compatibility in the rasterizerarchshift3-2/+41
This allows Virtual Console games to display properly.
2015-02-27GPU: Implemented bits 3 and 1 from the display transfer flags.Subv3-54/+91
Bit 3 is used to specify a raw copy, where no processing is done to the data, seems to behave exactly as a DMA. Bit 1 is used to specify whether to convert from a tiled format to a linear format or viceversa.
2015-02-26Video core: Fix A4 texture decodingYuri Kunde Schlesner1-2/+2
It was trying to take the LSB from `coarse_x`, which would always be 0 and thus would always return the same texel from each byte. To add insult to the injury, the conditional was actually the wrong way around too. Fixes blocky text in OoT.
2015-02-26Video core: Fix pixelation/blockiness in textures.Yuri Kunde Schlesner1-3/+3
This was caused during morton decoding by me not masking the bits of each coordinate before merging them, so the bits from x could set bits in y if it was >255.
2015-02-25Rasterizer: Add support for RGBA4 framebuffer format.bunnei1-0/+21
2015-02-22Rasterize with the correct color component order.bunnei1-11/+24
- Fixes a regression with #594.
2015-02-21Pica/VertexShader: Fixed LOOP with more than one iteration.Subv1-1/+4
Previously it wouldn't jump back to the start of the loop code once it reached the end of the block. Fixes the texture problems in a lot of games.
2015-02-20Remove duplication of INSERT_PADDING_WORDS between pica.h and gpu.harchshift1-11/+0
2015-02-19Rasterizer: Fixed a warning in GetWrappedTexCoord.Subv1-4/+4
Redeclaring the variable inside the switch was causing weird behavior.
2015-02-18Pica/Rasterizer: Replace exit() calls with UNIMPLEMENTED().Tony Wasserka1-5/+5
2015-02-18Pica/Rasterizer: Make some local lambdas static.Tony Wasserka1-8/+8
2015-02-18Pica/BlendUnit: Implement separate color/alpha blend equations.Tony Wasserka2-65/+59
2015-02-18Pica/TextureEnvironment: Add a note.Tony Wasserka1-0/+4
2015-02-18Pica/TextureEnvironment: Treat texture combiner source 1 as the PrimaryColor.Tony Wasserka2-0/+4
Not really sure where the difference is, but some applications seem to use this 1:1 the same way...
2015-02-18Pica/TextureEnvironment: Add support for the MAD-like texture combiners and clean up texture environment logic.Tony Wasserka2-0/+28
2015-02-18Pica/OutputMerger: Fix flipped framebuffers.Tony Wasserka1-0/+10
2015-02-18Pica/TextureUnit: Implement mirrored repeating texture wrapping.Tony Wasserka2-3/+12
2015-02-18Pica: Fix a bug in the register definitions, relating to texture wrapping.Tony Wasserka2-2/+2
2015-02-18Pica/OutputMerger: Implement color format checking.Tony Wasserka2-4/+13
2015-02-18Pica/Rasterizer: Rasterize actual pixel centers instead of pixel corners.Tony Wasserka1-2/+3
2015-02-18Pica/Rasterizer: Fix garbage pixels at triangle borders.Tony Wasserka1-1/+3
2015-02-18Pica/Rasterizer: Clean up and fix backface culling.Tony Wasserka1-11/+27
2015-02-18Pica: Cleanup clipping code and change screenspace z to range from -1..0.Tony Wasserka2-53/+42
The change in depth range seems to reflect better to what applications are expecting, and makes for cleaner code overall (hence is more likely to reflect hardware behavior).
2015-02-18Pica/VertexShader: Implement the LOOP instruction.Tony Wasserka1-14/+36
2015-02-18Pica/CommandProcessor: Properly implement shader load destination offset registers.Tony Wasserka2-20/+10
2015-02-18Pica/CommandProcessor: Work around initialized vertex attributes some more.Tony Wasserka1-2/+8
2015-02-17core/video_core: Use in-place construction where possibleLioncash2-4/+4
2015-02-16VideoCore: Fix a typo in Vec4 MakeVec(T, Vec3<T>), where the second argument was Vec2<T> instead.Emmanuel Gil Peyrot1-1/+1
2015-02-15video_core: Implement the remaining framebuffer formats in the OpenGL renderer.Emmanuel Gil Peyrot2-12/+67
2015-02-12Build: Fixed some warningsSubv2-3/+3
2015-02-11Fix Min and Max blend equationsDarius Goad1-6/+8
2015-02-11Asserts: break/crash program, fit to style guide; log.h->assert.harchshift8-23/+18
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time) As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing) Also removed some GEKKO cruft.
2015-02-10Add more blend equations from 3dbrewDarius Goad2-2/+49
2015-02-05Rasterizer: Implement the other color and alpha modifiers.bunnei2-58/+69
2015-02-05VideoCore: Added same-component swizzlers to math utility functions.bunnei1-16/+35
2015-01-31Pica: Implement blend factors.bunnei2-10/+67
2015-01-28Pica: Implement color/alpha channel enable.bunnei2-1/+12
2015-01-27Rasterizer: Implemented alpha testing.bunnei2-7/+52
2015-01-26GPU: Implement the remaining depth testing functions.bunnei2-3/+28
2015-01-14GSP: Update framebuffer info on all interruptsYuri Kunde Schlesner1-3/+1
Hardware testing determined that the GSP processes shared memory framebuffer update info even when no memory transfer or filling GX commands are used. They are now updated on every interrupt, which isn't confirmed correct but matches hardware behaviour more closely. This also reverts the hack introduced in #404. It made a few games behave better, but I believe it's incorrect and also breaks other games.
2015-01-13Pica/Rasterizer: Add ETC1 texture decompression support.Tony Wasserka2-14/+142
2015-01-13Pica/VertexShader: Implement JMPC/JMPU/CALLC/CALLU.Tony Wasserka1-23/+52
2015-01-13Pica/VertexShader: Implement the MAD instruction.Tony Wasserka1-0/+69
2015-01-08GSP: Toggle active framebuffer each framebunnei1-1/+4
2014-12-31Pica/Rasterizer: Remove some redundant casts.Tony Wasserka1-3/+3
2014-12-31Pica/Rasterizer: Make orient2d a free function and rename it to SignedArea.Tony Wasserka1-31/+38
2014-12-31Pica: Cleanup color conversion.Tony Wasserka2-18/+46
2014-12-31VideoCore: Remove some unused functions.Tony Wasserka1-26/+0
2014-12-31Pica/Rasterizer: Fix a bug related to multitexturing and texture wrapping.Tony Wasserka1-2/+2
2014-12-31Pica/Rasterizer: Clean up long code lines.Tony Wasserka1-4/+8
2014-12-31Pica/VertexShader: Coding style fixes.Tony Wasserka1-16/+8
2014-12-31Pica/CommandProcessor: Cleanups.Tony Wasserka1-3/+4
2014-12-31Pica/CommandProcessor: Workaround games not setting the input position's w component.Tony Wasserka1-0/+14
2014-12-31Pica/Rasterizer: Implement backface culling.Tony Wasserka2-10/+36
2014-12-31Pica/Rasterizer: Textures seem to be laid out flipped vertically.Tony Wasserka1-1/+1
Not sure if this is a correct fix. Probably should instead change the decoding logic itself.
2014-12-31Pica/DebugUtils: Fix a bug in RGBA4 texture decoding.Tony Wasserka1-2/+2
2014-12-31Pica/Rasterizer: Implement alpha blending.Tony Wasserka1-0/+84
2014-12-31Pica/Rasterizer: Implement depth testing.Tony Wasserka2-6/+34
2014-12-31Pica/Rasterizer: Further enhance Tev support.Tony Wasserka1-4/+19
2014-12-31Pica: Add output merger definitions.Tony Wasserka1-1/+56
2014-12-31Pica: Fix A4, IA4 and IA8 texture formats.Tony Wasserka1-13/+7
Both IA4 and IA8 had their component order mixed up. Additionally, IA4 used the wrong number of nibbles per texel. A4 skipped every second texel.
2014-12-31Pica/CommandProcessor: Add support for integer uniforms.Tony Wasserka4-1/+30
2014-12-29Rasterizer: Pre-divide vertex attributes by WYuri Kunde Schlesner3-8/+32
Execute the division-by-W for perspective-correct interpolation of values in the clipper, moving them out of the rasterization inner loop.
2014-12-29GPU: Bitwise texture swizzlingYuri Kunde Schlesner1-27/+24
Replace the loop-based texture address swizzling code by a bit-twiddling implementation, providing a very small speed up. Also simplify addressing code.
2014-12-29Rasterizer: Common sub-expression eliminationYuri Kunde Schlesner1-14/+17
Move the computation of some values out of loops so that they're not constantly recalculated even when they don't change.
2014-12-29Clipper: Compact buffers on each clipping passYuri Kunde Schlesner1-28/+27
Use a new buffer management scheme in the clipper that allows using a bounded minimal amount of buffer space. Even though it copies more data it is still slightly faster likely due to using less cache.
2014-12-29Clipper: Avoid dynamic allocationsYuri Kunde Schlesner1-10/+7
The triangle clipper was allocating its temporary input, output and work buffers using a std::vector. Since this is a hot path, it's desirable to use stack allocation instead.
2014-12-29Vertex Shader: Zero OutputVertex to avoid denormalsYuri Kunde Schlesner1-0/+4
Unused OutputVertex attributes were being left un-initialized. The leftover garbage sometimes decoded as floating-point denormalized values, causing fallbacks to microcode and massive slowdowns in the rest of the rasterization pipeline even though the results were unused. By zeroing the structure we ensure these attributes only contain harmless zeros.
2014-12-29GPU: Implement frameskip and remove forced framebuffer swap hack.bunnei1-0/+5
2014-12-21Fix visual studio ambiguous symbol errorApology111-4/+4
2014-12-21More warning cleanupsChin2-7/+7
2014-12-21License changepurpasmart9623-23/+23
2014-12-20Pica/VertexShader: Promote a log message to critical status.Tony Wasserka1-1/+1
2014-12-20Pica/VertexShader: Small optimization.Tony Wasserka1-7/+7
2014-12-20Pica/VertexShader: Be robust against invalid inputs.Tony Wasserka1-2/+9
More specifically, this also fixes crashes by Citra trying to load a src2 register even if the current instruction does not use that.
2014-12-20Pica/VertexShader: Clarify a comment.Tony Wasserka1-1/+3
2014-12-20Pica/DebugUtils: Further cleanups to LookupTexture.Tony Wasserka1-7/+7
2014-12-20Pica/DebugUtils: Fix two warnings.Tony Wasserka1-2/+2
2014-12-20Pica/DebugUtils: Better document LookupTexture.Tony Wasserka2-7/+16
2014-12-20Pica/Rasterizer: Get rid of C-style casts.Tony Wasserka1-4/+4
2014-12-20Pica/DebugUtils: Make a number of variables static.Tony Wasserka1-13/+13
Makes for cleaner and faster code.
2014-12-20Pica/VertexShader: Cleanup flow control logic and implement CMP/IFU instructions.Tony Wasserka1-50/+56
2014-12-20Pica/VertexShader: Run instruction handlers according to the effective opcode.Tony Wasserka1-1/+1
This allows for proper emulation of the different CMP/LRP/MAD instructions.
2014-12-20Pica/VertexShader: Implement MAX instructions.Tony Wasserka1-0/+9
2014-12-20Pica: Add support for boolean uniforms.Tony Wasserka4-2/+21
2014-12-20Pica/VertexShader: Add support for MOVA, CMP and IFC.Tony Wasserka2-7/+138
2014-12-20Pica/VertexShader: Move code around a bit.Tony Wasserka1-42/+58
2014-12-20Pica/VertexShader: Some cleanups using std::array.Tony Wasserka2-5/+19
2014-12-20Pica/VertexShader: Support negating src2.Tony Wasserka2-3/+9
2014-12-20Pica/DebugUtils: Replace duplicated SHBIN structures in favor of nihstro's ones.Tony Wasserka1-61/+8
2014-12-20Pica/VertexShader: Remove (now) duplicated shader bytecode definitions in favor of nihstro's ones.Tony Wasserka2-222/+30
2014-12-20Pica/DebugUtils: Add an event triggered after loading a vertex.Tony Wasserka2-0/+4
2014-12-20Pica/PrimitiveAssembly: Implement triangle strips.Tony Wasserka2-8/+16
2014-12-20Pica/CommandProcessor: Add a safety check for invalid (?) GPU configurations.Tony Wasserka1-0/+7
2014-12-20Pica/CommandProcessor: Fix vertex decoding if multiple memory areas are accessed for different attributes.Tony Wasserka1-7/+8
2014-12-20Add support for a ridiculous number of texture formats.Tony Wasserka2-7/+80
2014-12-20Pica: Unify ugly address translation hacks.Tony Wasserka5-16/+25
2014-12-20Pica: Further improve Tev emulation.Tony Wasserka3-12/+51
2014-12-20Pica: Merge texture lookup logic for DebugUtils and Rasterizer.Tony Wasserka3-55/+41
This effectively adds support for a lot texture formats in the rasterizer.
2014-12-20Pica: Implement texture wrapping.Tony Wasserka2-2/+31
2014-12-20Pica/DebugUtils: Add support for RGBA8, RGBA5551, RGBA4 and A8 texture formats.Tony Wasserka2-3/+48
2014-12-20Pica: Initial support for multitexturing.Tony Wasserka3-24/+83
2014-12-20Clean up some warningsChin1-2/+2
2014-12-19Properly erase/remove an observerchinhodado1-1/+1
2014-12-13Convert old logging calls to new logging macrosYuri Kunde Schlesner10-38/+50
2014-12-12MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP.bunnei1-2/+2
- Linear simply indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices' DMA (such as the GPU).
2014-12-10GSP: Trigger GPU interrupts at more accurate locations.bunnei2-1/+15
2014-12-10GPU: Fixed bug in command list size decoding.bunnei1-1/+2
2014-12-09Pica: Re-enable command names on MSVC.Tony Wasserka1-5/+0
The affected code is no longer limited by compiler support on that platform.
2014-12-09More coding style fixes.Tony Wasserka1-6/+12
2014-12-09Some code cleanup.Tony Wasserka1-3/+1
2014-12-09citra_qt: Add enhanced texture debugging widgets.Tony Wasserka3-1/+30
Double-clicking a texture parameter command in the pica command lists will spawn these as a new tab in the pica command list dock area.
2014-12-09citra-qt: Add texture viewer to Pica command list.Tony Wasserka2-21/+45
The texture viewer is enabled when selecting a write command to one of the texture config registers.
2014-12-09Pica/DebugUtils: Add breakpoint functionality.Tony Wasserka3-0/+189
2014-12-09Build fix for something which shouldn't have compiled successfully to begin with.Tony Wasserka1-1/+1
2014-12-07Integrate Boost into build system and perform a trivial cleanup in vertex_shader.cpp.Tony Wasserka1-6/+10
2014-12-03Change NULLs to nullptrs.Rohit Nirmal2-7/+7
2014-12-01Silence a few -Wsign-compare warnings.Rohit Nirmal3-6/+6
2014-11-30Fixed viewport error caused by roundingvaguilar1-2/+2
2014-11-19Remove tabs in all files except in skyeye imports and in generated GL codeEmmanuel Gil Peyrot4-14/+14
2014-11-19Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot2-3/+3
2014-11-18OpenGL Renderer: Cleanup viewport extent calculation.Tony Wasserka2-44/+29
2014-11-18Fixup EmuWindow interface and implementations thereof.Tony Wasserka1-3/+3
2014-11-18Viewport scaling and display density independenceKevin Hartman2-1/+50
The view is scaled to be as large as possible, without changing the aspect, within the bounds of the window. On "retina" displays, or other displays where window units != pixels, the view should no longer draw incorrectly.
2014-11-16vertex_shader: Fix control reaches end of function warningLioncash1-1/+1
2014-11-14Fix two format strings.Lioncash1-2/+2
2014-10-30Fix some warningsSean2-3/+3
2014-10-29Renamed souce files of services to match port namesGareth Poole1-1/+1
2014-10-26Add `override` keyword through the code.Yuri Kunde Schlesner1-4/+4
This was automated using `clang-modernize`.
2014-10-21Only check OpenGL shader log if size is >1.Yuri Kunde Schlesner1-9/+6
This prevents a crash when the buffer size returned by the driver is 0, in which case no space is allocated to store even the NULL byte and glGetShaderInfoLog errors out. Thanks to @Relys for the bug report.
2014-10-12Rework OpenGL renderer.Yuri Kunde Schlesner4-233/+193
The OpenGL renderer has been revised, with the following changes: - Initialization and rendering have been refactored to reduce the number of redundant objects used. - Framebuffer rotation is now done directly, using texture mapping. - Vertex coordinates are now given in pixels, and the projection matrix isn't hardcoded anymore.
2014-10-12OpenGL renderer: Shuffle initialization code around and rename functions.Yuri Kunde Schlesner2-25/+18
2014-10-12Remove virtual inheritance from RendererOpenGLYuri Kunde Schlesner2-3/+3
Also make destructor virtual so that instances are properly destructed.
2014-10-08Fix warnings in video_coreLioncash7-23/+23
2014-09-17Common: Rename the File namespace to FileUtil, to match the filename and prevent collisions.Emmanuel Gil Peyrot1-1/+1
2014-09-14Core: Fix warnings in gpu.cppLioncash1-1/+1
2014-09-12Added support for multiple input device types for KeyMap and connected Qt.Kevin Hartman1-0/+1
2014-09-09Moved common_types::Rect from common to Common namespacearchshift2-3/+3
2014-09-07renderer_opengl.cpp: improved alignment for readabilityarchshift1-16/+16
2014-09-07Dead code removal: video_core.cpp, load_symbol_map.cpparchshift1-7/+0
2014-09-07utils: cleaned up DumpTGA, removing redundanciesarchshift2-21/+13
2014-09-01Remove hand-crafted Visual Studio solution.Yuri Kunde Schlesner2-217/+0
2014-09-01CMake cleanupYuri Kunde Schlesner1-13/+26
Several cleanups to the buildsystem: - Do better factoring of common libs between platforms. - Add support to building on Windows. - Remove Qt4 support. - Re-sort file lists and add missing headers.
2014-09-01Replace GLEW with a glLoadGen loader.Yuri Kunde Schlesner10-13/+2819
This should fix the GL loading errors that occur in some drivers due to the use of deprecated functions by GLEW. Side benefits are more accurate auto-completion (deprecated function and symbols don't exist) and faster pointer loading (less entrypoints to load). In addition it removes an external library depency, simplifying the build system a bit and eliminating one set of binary libraries for Windows.
2014-08-28Downgrade GLSL version to 1.50 (compatible with GL 3.2)Yuri Kunde Schlesner3-10/+15
2014-08-26VideoCore: Fixes rendering issues on Qt and corrects framebuffer output size.bunnei4-8/+15
2014-08-26Rewrite of OpenGL renderer, including OS X supportKevin Hartman8-211/+340
Screen contents are now displayed using textured quads. This can be updated to expose an FBO once an OpenGL backend for when Pica rendering is being worked on. That FBO's texture can then be applied to the quads. Previously, FBO blitting was used in order to display screen contents, which did not work on OS X. The new textured quad approach is less of a compatibility risk.
2014-08-25Pica/Rasterizer: Clarify a TODO.Tony Wasserka1-1/+3
2014-08-25Pica/VertexShader: Fix a bug in the call stack handling.Tony Wasserka1-2/+3
2014-08-25Math: Warning fixes.Tony Wasserka1-14/+23
2014-08-25Pica: Consolidate the primitive assembly code in PrimitiveAssembly and GeometryDumper.Tony Wasserka5-46/+74
2014-08-25Pica/Rasterizer: Add texturing support.Tony Wasserka3-18/+69
2014-08-25Pica/DebugUtils: Add convenient tev setup printer.Tony Wasserka3-0/+101
2014-08-25Pica/Rasterizer: Add initial implementation of texture combiners.Tony Wasserka2-2/+225
2014-08-25Pica: Add support for dumping textures.Tony Wasserka3-1/+177
2014-08-25Pica/Math: Improved the design of the Vec2/Vec3/Vec4 classes and simplified rasterizer code accordingly.Tony Wasserka3-98/+133
- Swizzlers now return const objects so that things like "first_vec4.xyz() = some_vec3" now will fail to compile (ideally we should support some vector holding references to make this actually work). - The methods "InsertBeforeX/Y/Z" and "Append" have been replaced by more versions of MakeVec, which now also supports building new vectors from vectors. - Vector library now follows C++ type promotion rules (hence, the result of Vec2<u8> with another Vec2<u8> is now a Vec2<int>).
2014-08-25Pica/VertexShader: Fix a bug in the bitfield definitions and add the "negate" field for swizzlers.Tony Wasserka2-14/+92
2014-08-25Pica/citra-qt: Replace command list view and command list debugging code with something more sophisticated.Tony Wasserka4-63/+78
2014-08-25Pica/CommandProcessor: Implement parameter masking.Tony Wasserka2-6/+25
2014-08-25Pica: Add debug utilities for dumping shaders.Tony Wasserka4-1/+227
2014-08-25Pica: Add debug utility functions for dumping geometry data.Tony Wasserka6-4/+123
2014-08-24Fix the threading for GL Context in Qt5.Sacha1-1/+0
Connect the emu_thread start/finish to a moveContext slot.
2014-08-13float24: Remove private default constructorarchshift1-2/+0
Fixes building with clang.
2014-08-12Use glewExperimental on Linux in order to fix GLFW-modearchshift1-3/+2
2014-08-12Pica: Add basic rasterizer.Tony Wasserka7-2/+260
2014-08-12Pica: Add triangle clipper.Tony Wasserka7-8/+230
2014-08-12Pica: Add primitive assembly stage.Tony Wasserka7-2/+95
2014-08-12Pica: Add vertex shader implementation.Tony Wasserka7-10/+722
2014-08-12Pica: Implement vertex loading.Tony Wasserka2-8/+102
2014-08-12Pica: Add register definition for vertex loading and rendering.Tony Wasserka1-33/+128
2014-08-12Pica: Add command processor.Tony Wasserka7-5/+107
2014-08-12Pica: Add float24 structure.Tony Wasserka1-0/+75
24-bit floating points are used internally for calculations on the GPU, however the current code will still emulate that with 32-bit floating points. In the future we might want to accurately perform the calculations with correct bitness in the future, but for now we just wrap the calculations around this class.
2014-08-12Video core: Add utility class for vector operations.Tony Wasserka4-1/+582
I wrote most of this for ppsspp, so I hold full copyright over it. In addition to the original release in ppsspp, this provides functionality to easily extend e.g. two-dimensional vectors to three-dimensional vectors.
2014-08-12Pica/GPU: Change hardware registers to use physical addresses rather than virtual ones.Tony Wasserka2-8/+8
This cleans up the mess that address reading/writing had become and makes the code a *lot* more sensible. This adds a physical<->virtual address converter to mem_map.h. For further accuracy, we will want to properly extend this to support a wider range of address regions. For now, this makes simply homebrew applications work in a good manner though.
2014-08-12Remove the fancy RegisterSet class introduced in 4c2bff61e.Tony Wasserka2-100/+146
While it was some nice and fancy template usage, it ultimately had many practical issues regarding length of involved expressions under regular usage as well as common code completion tools not being able to handle the structures. Instead, we now use a more conventional approach which is a lot more clean to use.
2014-08-06GSP: Removed dumb GX prefixes to functions/structs in GSP namespace.bunnei1-6/+6
- Various other cleanups.
2014-07-23Use uniform formatting when printing hexadecimal numbers.Tony Wasserka1-1/+1
2014-07-23GSP: Clean up GX command processing a lot and treat command id as a u8 rather than a u32.Tony Wasserka1-3/+2
Anonymous structs are not standard C++, hence don't use them.
2014-07-23RegisterSet: Simplify code by using structs for register definition instead of unions.Tony Wasserka1-9/+9
2014-07-23GPU: Make use of RegisterSet.Tony Wasserka1-26/+28
2014-07-23Renderer: Fix component order in bottom framebuffer.Tony Wasserka2-5/+4
2014-07-23Renderer: Respect the active_fb GPU register.Tony Wasserka1-2/+9
2014-07-23Renderer: Add a few TODOs.Tony Wasserka1-3/+10
2014-07-22GPU debugger: Don't keep track of debugging data if no debugger views are active.Tony Wasserka1-0/+6
2014-06-12GPU debugger: Const correctness and build fix.Tony Wasserka1-3/+3
2014-06-12Preprocessor: #if's out OSX-specific GL changes on other platformsarchshift1-0/+3
2014-06-12Pica: Use some template magic to define register structures efficiently.Tony Wasserka1-25/+102
2014-06-12Further refine GPU command list debugging.Tony Wasserka2-0/+17
2014-06-12Refine command list debugging functionality and its qt interface.Tony Wasserka2-8/+17
2014-06-12citra-qt: Add command list view.Tony Wasserka1-2/+2
2014-06-12GPU debugger: Add functionality to inspect command lists.Tony Wasserka1-1/+53
2014-06-12video core: added PICA definitions file.Tony Wasserka3-0/+37
2014-06-12Rename LCD to GPU.Tony Wasserka1-3/+3
2014-06-12Add initial graphics debugger interface.Tony Wasserka3-3/+102
2014-05-20common_types: Changed BasicRect back to Rect, in the common namespacearchshift2-3/+3
Only Rect is in the namespace for now; the rest of common should be added in the future
2014-05-20Improved clarity and whitespacearchshift2-3/+4
Changed QGL version to 3,2 in order to be less restrictive, yet it should still change up to 4,1 on OSX on Qt5.
2014-05-20CMakeLists: rename HEADS, improved commentsarchshift1-2/+2
Changes for clarity of comments, removed redundant compiler flags.
2014-05-19Indent fixesarchshift1-31/+31
2014-05-08Update FlipFramebufferSethpaien1-7/+6
Less calculations + fix
2014-05-01Fixed indentsarchshift2-37/+35
2014-05-01Reverse debugging changesarchshift1-2/+0
2014-05-01Unintended change reversalarchshift1-36/+36
2014-05-01TGA dumps work, courtesy of @bunneiarchshift2-36/+38
2014-05-01OpenGL 3+ on OSX with GLFWarchshift1-0/+2
2014-04-29IT'S ALIVE!archshift1-1/+6
2014-04-28Xcode complains that the class name is redundant.archshift1-1/+1
2014-04-28Rect to BasicRectarchshift2-3/+3
Somewhere along the line an OSX header had already taken the name Rect.
2014-04-28removed DISALLOW_COPY_AND_ASSIGN in favor of NonCopyable classbunnei2-4/+1
2014-04-27fixed renderer to use correct framebuffer locationbunnei2-8/+7
2014-04-22fixed GL context acquire (applies to Qt GUI only)bunnei1-0/+2
2014-04-18renamed hw_lcd module to just lcdbunnei1-1/+1
2014-04-17fixed framebuffer color orderbunnei1-1/+1
2014-04-17removed hard-coded framebuffer addresses from renderer_opengl.cppbunnei1-2/+4
2014-04-11cleaned up some logging messagesbunnei1-1/+2
2014-04-10fixed a bunch of errors in CMakeListsbunnei1-3/+3
2014-04-10updated CMakeListsbunnei1-16/+2
2014-04-09fixed project includes to use new directory structurebunnei9-38/+39
2014-04-09got rid of 'src' folders in each sub-projectbunnei7-0/+0
2014-04-09fixed license header in video_corebunnei7-182/+23
2014-04-09- removed lots of unused code from gekkobunnei3-367/+110
- updated code style/naming conventions
2014-04-07added support for renderering the external framebuffersbunnei2-20/+147
2014-04-07added external framebuffer GL handlesbunnei1-2/+11
2014-04-06added initial renderer codebunnei7-19/+534
2014-04-05added video_core project to solutionbunnei8-0/+567