aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/gpu.h
AgeCommit message (Collapse)Author
2021-02-13gpu: Report renderer errors with exceptionsReinUsesLisp
Instead of using a two step initialization to report errors, initialize the GPU renderer and rasterizer on the constructor and report errors through std::runtime_error.
2021-01-15common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINITReinUsesLisp
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
2020-12-28video_core: gpu: Implement synchronous mode using threaded GPU.bunnei
2020-12-28video_core: gpu: Refactor out synchronous/asynchronous GPU implementations.bunnei
- We must always use a GPU thread now, even with synchronous GPU.
2020-12-04video_core: Resolve more variable shadowing scenariosLioncash
Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit.
2020-11-17gpu: Make use of [[nodiscard]] where applicableLioncash
2020-11-05General: Fix clang buildLioncash
Allows building on clang to work again
2020-11-01video_core: gpu: Implement WaitFence and IncrementSyncPoint.bunnei
2020-10-26video_core: NVDEC Implementationameerj
This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library. The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data. To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library. Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header. Async GPU is not properly implemented at the moment. Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
2020-09-06video_core: Remove all Core::System references in rendererReinUsesLisp
Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend.
2020-08-22video_core: Initialize renderer with a GPUReinUsesLisp
Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
2020-07-26video_core/gpu: Correct the size of the puller registersBilly Laws
The puller register array is made up of u32s however the `NUM_REGS` value is the size in bytes, so switch it to avoid making the struct unnecessary large. Also fix a small typo in a comment.
2020-07-21Merge pull request #4324 from ReinUsesLisp/formatsbunnei
video_core: Fix, add and rename pixel formats
2020-07-17async shadersDavid Marcec
2020-07-13video_core: Rearrange pixel format namesReinUsesLisp
Normalizes pixel format names to match Vulkan names. Previous to this commit pixel formats had no convention, leading to confusion and potential bugs.
2020-07-13video_core: Implement RGBA32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA16_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA8_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RG32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RG8_SINT render target and fix RG8_UINTReinUsesLisp
2020-07-13video_core: Implement R8_SINT render targetReinUsesLisp
2020-07-13video_core: Implement R8_SNORM render targetReinUsesLisp
2020-06-27General: Correct rebase, sync gpu and context management.Fernando Sahmkow
2020-04-30texture: Implement R8G8UIMorph
- Used by The Walking Dead: The Final Season
2020-04-23Clang Format.Fernando Sahmkow
2020-04-23DMAPusher: Propagate multimethod writes into the engines.Fernando Sahmkow
2020-04-22Address Feedback.Fernando Sahmkow
2020-04-22GPU: Implement Flush Requests for Async mode.Fernando Sahmkow
2020-04-22OpenGL: Implement Fencing backend.Fernando Sahmkow
2020-04-22GPU: Delay Fences.Fernando Sahmkow
2020-04-22GPU: Refactor synchronization on Async GPUFernando Sahmkow
2020-04-06GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow
2020-03-24Frontend/GPU: Refactor context managementJames Rowe
Changes the GraphicsContext to be managed by the GPU core. This eliminates the need for the frontends to fool around with tricky MakeCurrent/DoneCurrent calls that are dependent on the settings (such as async gpu option). This also refactors out the need to use QWidget::fromWindowContainer as that caused issues with focus and input handling. Now we use a regular QWidget and just access the native windowHandle() directly. Another change is removing the debug tool setting in FrameMailbox. Instead of trying to block the frontend until a new frame is ready, the core will now take over presentation and draw directly to the window if the renderer detects that its hooked by NSight or RenderDoc Lastly, since it was in the way, I removed ScopeAcquireWindowContext and replaced it with a simple subclass in GraphicsContext that achieves the same result
2020-03-12video_core: Implement RGBA16_SNORMReinUsesLisp
Implement RGBA16_SNORM with the current API. Nothing special here.
2020-02-25Merge pull request #3461 from ReinUsesLisp/r32i-rtMat M
video_core/surface: Add R32_SINT render target format
2020-02-25video_core/surface: Add R32_SINT render target formatReinUsesLisp
2020-02-25video_core/gpu: Remove unused functionsReinUsesLisp
2020-02-10GPU: Implement GPU Clock correctly.Fernando Sahmkow
2019-12-30video_core: Block in WaitFence.Markus Wick
This function is called rarely and blocks quite often for a long time. So don't waste power and let the CPU sleep. This might also increase the performance as the other cores might be allowed to clock higher.
2019-11-03common_func: Use std::array for INSERT_PADDING_* macros.bunnei
- Zero initialization here is useful for determinism.
2019-10-04Core: Wait for GPU to be idle before shutting down.Fernando Sahmkow
2019-10-04GPU_Async: Correct fences, display events and more.Fernando Sahmkow
This commit uses guest fences on vSync event instead of an articial fake fence we had. It also corrects to keep signaling display events while loading the game as the OS is suppose to send buffers to vSync during that time.
2019-09-22video_core: Implement RGBX16F PixelFormatFearlessTobi
2019-09-03Merge pull request #2793 from ReinUsesLisp/bgr565bunnei
renderer_opengl: Implement RGB565 framebuffer format
2019-08-30video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti
* texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables
2019-08-21Video_Core: Implement a new Buffer CacheFernando Sahmkow
2019-08-21renderer_opengl: Implement RGB565 framebuffer formatReinUsesLisp
2019-08-21renderer_opengl: Use VideoCore pixel formatReinUsesLisp
2019-08-21gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfigReinUsesLisp