Fernando Sahmkow
123c7cf307
Shader_IR: deduce size of indexed samplers
6 years ago
Fernando Sahmkow
2b9a30d06b
Shader_IR: Setup Indexed Samplers on the IR
6 years ago
Fernando Sahmkow
f93bff419e
Shader_IR: Implement initial code for tracking indexed samplers.
6 years ago
Fernando Sahmkow
c0c5fa078b
Shader_IR: Address Feedback
6 years ago
Fernando Sahmkow
5fb7881077
Shader_IR: Allow constant access of guest driver.
6 years ago
Fernando Sahmkow
c5fdcd7a2c
Shader_IR: Address Feedback
6 years ago
Fernando Sahmkow
87546c5c19
Guest_driver: Correct compiling errors in GCC.
6 years ago
Fernando Sahmkow
61d2053adb
Shader_IR: Store Bound buffer on Shader Usage
6 years ago
Fernando Sahmkow
e9f3264c8d
GPU: Implement guest driver profile and deduce texture handler sizes.
6 years ago
ReinUsesLisp
84532ba55a
vk_shader_decompiler: Disable default values on unwritten render targets
Some games like The Legend of Zelda: Breath of the Wild assign
render targets without writing them from the fragment shader. This
generates Vulkan validation errors, so silence these I previously
introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The
problem is that this is not what games expect. This commit reverts that
change.
6 years ago
ReinUsesLisp
402f69fb3e
gl_shader_cache: Disable fastmath on Nvidia
6 years ago
ReinUsesLisp
aa09f9385c
vk_blit_screen: Address feedback
6 years ago
ReinUsesLisp
fcc78abc3c
vk_blit_screen: Initial implementation
This abstraction takes care of presenting accelerated and
non-accelerated or "framebuffer" images to the Vulkan swapchain.
6 years ago
ReinUsesLisp
6b54252b77
vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V
Also updates sirit to include atomic instructions.
6 years ago
ReinUsesLisp
1538f99365
gl_state: Use bool instead of GLboolean
This fixes template resolution considering GLboolean an integer instead
of a bool.
6 years ago
ReinUsesLisp
4862fc4970
vk_graphics_pipeline: Set front facing properly
Front face was being forced to a certain value when cull face is
disabled. Set a default value on initialization and drop the forcefully
set front facing value with culling disabled.
6 years ago
ReinUsesLisp
9a3f0d3d1e
vk_rasterizer: Address feedback
6 years ago
ReinUsesLisp
203353a4d6
gl_shader_decompiler: Fix decompilation of condition codes
Use Visit instead of reimplementing it. Fixes unimplemented negations
for condition codes.
6 years ago
ReinUsesLisp
ef4b9a6e39
vk_rasterizer: Implement Vulkan's rasterizer
This abstraction is Vulkan's equivalent to OpenGL's rasterizer. It takes
care of joining all parts of the backend and rendering accordingly on
demand.
6 years ago
ReinUsesLisp
b52586eaaa
renderer_vulkan: Add header as placeholder
6 years ago
ReinUsesLisp
affa8cef27
vk_texture_cache: Address feedback
6 years ago
ReinUsesLisp
c4fd02b47f
shader/memory: Implement ATOMS.ADD.U32
6 years ago
ReinUsesLisp
078193d8bd
format_lookup_table: Fix ZF32_X24S8 component types
Component types for ZF32_X24S8 were using UNORM. Drivers will set FLOAT,
UINT, UNORM, UNORM; causing a format mismatch. This commit addresses
that.
6 years ago
Rodrigo Locatti
ec6681ecf4
vk_texture_cache: Fix typo in commentary
Co-Authored-By: MysticExile <30736337+MysticExile@users.noreply.github.com>
6 years ago
Lioncash
e481a676de
maxwell_3d: Make dirty_pointers private
This isn't used outside of the class itself, so we can make it private
for the time being.
6 years ago
ReinUsesLisp
1692dab134
gl_state: Implement PROGRAM_POINT_SIZE
For gl_PointSize to have effect we have to activate
GL_PROGRAM_POINT_SIZE.
6 years ago
Lioncash
6ab1c2a461
renderer_opengl/utils: Remove unused header inclusions
Nothing from these headers are used, so they can be removed.
6 years ago
Lioncash
0cb80ac6dc
renderer_opengl/utils: Forward declare private structs
Keeps the definitions hidden and allows changes to the structs without
needing to recompile all users of classes containing said structs.
6 years ago
ReinUsesLisp
dcde4b9186
gl_texture_cache: Use local variables to simplify DownloadTexture
6 years ago
ReinUsesLisp
50e0bb04b3
gl_texture_cache: Fix format for RGBX16F
6 years ago
ReinUsesLisp
549ddc898e
gl_texture_cache: Use Snorm internal format for RG8S
6 years ago
ReinUsesLisp
d45f4d62fb
gl_texture_cache: Use Snorm internal format for ABGR8S
6 years ago
Lioncash
a4792176ce
control_flow: Silence -Wreorder warning for CFGRebuildState
Organizes the initializer list in the same order that the variables
would actually be initialized in.
6 years ago
Lioncash
b3810c5a5f
gl_shader_cache: Remove unused STAGE_RESERVED_UBOS constant
Given this isn't used, this can be removed entirely.
6 years ago
Lioncash
f0ed92d90d
gl_shader_cache: std::move entries in CachedShader constructor
Avoids several reallocations of std::vector instances where applicable.
6 years ago
Lioncash
15b0cdd6bb
gl_shader_cache: Remove unused entries variable in BuildShader()
Eliminates a few unnecessary constructions of std::vectors.
6 years ago
ReinUsesLisp
f47fdb4b09
vk_texture_cache: Implement generic texture cache on Vulkan
It currently ignores PBO linearizations since these should be dropped as
soon as possible on OpenGL.
6 years ago
ReinUsesLisp
6fd13dc3b8
texture_cache/surface_params: Make GetNumLayers public
6 years ago
Rodrigo Locatti
e5f1158dac
vk_compute_pass: Address feedback
Comment hardcoded SPIR-V modules.
6 years ago
ReinUsesLisp
18c91ef3e2
maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver
Nvidia's driver defaults invalid enumerations to GL_CLAMP. Vulkan
doesn't expose GL_CLAMP through its API, but we can hack it on Nvidia's
driver using the internal driver defaults.
6 years ago
ReinUsesLisp
6d7d0e48ad
shader_ir/texture: Simplify AOFFI code
6 years ago
ReinUsesLisp
5fbd305638
shader_ir/memory: Implement u16 and u8 for STG and LDG
Using the same technique we used for u8 on LDG, implement u16.
In the case of STG, load memory and insert the value we want to set
into it with bitfieldInsert. Then set that value.
6 years ago
ReinUsesLisp
832dd7920a
vk_compute_pass: Add compute passes to emulate missing Vulkan features
This currently only supports quad arrays and u8 indices.
In the future we can remove quad arrays with a table written from the
CPU, but this was used to bootstrap the other passes helpers and it
was left in the code.
The blob code is generated from the "shaders/" directory. Read the
instructions there to know how to generate the SPIR-V.
6 years ago
ReinUsesLisp
0961937585
vk_shader_util: Add helper to build SPIR-V shaders
6 years ago
ReinUsesLisp
8db329bb9e
vk_pipeline_cache: Initial implementation
Given a pipeline key, this cache returns a pipeline abstraction (for
graphics or compute).
6 years ago
ReinUsesLisp
2c7928f71a
vk_graphics_pipeline: Initial implementation
This abstractio represents the state of the 3D engine at a given draw.
Instead of changing individual bits of the pipeline how it's done in
APIs like D3D11, OpenGL and NVN; on Vulkan we are forced to put
everything together into a single, immutable object.
It takes advantage of the few dynamic states Vulkan offers.
6 years ago
ReinUsesLisp
e89b88bf80
vk_compute_pipeline: Initial implementation
This abstraction represents a Vulkan compute pipeline.
6 years ago
ReinUsesLisp
836580aada
vk_pipeline_cache: Add file and define descriptor update template filler
This function allows us to share code between compute and graphics
pipelines compilation.
6 years ago
ReinUsesLisp
a067862bd3
fixed_pipeline_state: Add depth clamp
6 years ago
ReinUsesLisp
3b5cccbf0b
vk_rasterizer: Add placeholder
6 years ago