Commit Graph

53 Commits

Author SHA1 Message Date
chss95cs@gmail.com
d372d8d5e3 nasty commit with a bunch of test code left in, will clean up and pr
Remove the logger_ != nullptr check from shouldlog, it will nearly always be true except on initialization and gets checked later anyway, this shrinks the size of the generated code for some
Select specialized vastcpy for current cpu, for now only have paths for MOVDIR64B and generic avx1
Add XE_UNLIKELY/LIKELY if, they map better to the c++ unlikely/likely attributes which we will need to use soon
Finished reimplementing STVL/STVR/LVL/LVR as their own opcodes. we now generate far less code for these instructions. this also means optimization passes can be written to simplify/remove/replace these instructions in some cases. Found that a good deal of the X86 we were emitting for these instructions was dead code or redundant.
the reduction in generated HIR/x86 should help a lot with compilation times and make function precompilation more feasible as a default

Don't static assert in default prefetch impl, in c++20 the assertion will be triggered even without an instantiation
Reorder some if/else to prod msvc into ordering the branches optimally. it somewhat worked...
Added some notes about which opcodes should be removed/refactored
Dispatch in WriteRegister via vector compares for the bounds. still not very optimal, we ought to be checking whether any register in a range may be special
A lot of work on trying to optimize writeregister, moved wraparound path into a noinline function based on profiling info
Hoist the IsUcodeAnalyzed check out of AnalyzeShader, instead check it before each call. Profiler recorded many hits in the stack frame setup of the function, but none in the actual body of it, so the check is often true but the stack frame setup is run unconditionally
Pre-check whether we're about to write a single register from a ring
Replace more jump tables from draw_util/texture_info with popcnt based sparse indexing/bit tables/shuffle lookups
Place the GPU register file on its own VAD/virtual allocation, it is no longer a member of graphics system
2022-09-04 22:42:51 -05:00
Joel Linn
6dfa36d1b8 [GPU] Misc GCC build fixes 2021-06-02 22:28:43 -05:00
Triang3l
bd5f77bc3b [GPU] Common resolve code based on compute shaders, swap MSAA samples 1 and 2, change ROV write rounding, random refactoring 2020-08-09 21:33:10 +03:00
Triang3l
4bb0ca0e09 [GPU] Move all xenos.h to gpu::xenos, disambiguate Dimension/TextureDimension 2020-07-11 15:54:22 +03:00
Triang3l
a9ed73bdd1 [GPU] Remove most hardcoded register/instruction layouts from common and D3D12 code 2019-10-20 19:40:37 +03:00
Triang3l
54b211ed18 [GPU] Rename 2_10_10_10 AS_16 RT format to AS_10 2018-12-29 14:54:01 +03:00
Triang3l
2b03a9e095 [GPU] Synchronize GPU frontend with the D3D12 branch 2018-10-22 23:28:52 +03:00
Triang3l
d75a372780 [GPU] Add info about unknown texture formats 2018-08-05 14:02:58 +03:00
gibbed
1409b9c565 [GPU/Vulkan] Add support for 2D image stacks. 2018-06-05 07:51:51 -05:00
gibbed
2c7043bd98 [GPU/Vulkan] Maybe fix minimum mip level. Probably breaks everything. 2018-06-04 10:13:28 -05:00
gibbed
b5a88d1a7d [GPU] Track unaligned (visible) block width in texture info.
[Vulkan] Don't use power of two for mip width/height calculation for host textures.
[Vulkan] Add more Vulkan error logging.
[Vulkan/GPU] Rudimentary texture dumping.
2018-06-04 06:08:29 -05:00
gibbed
e89a31006f - [GPU] Rename TextureMemoryUsage to TextureExtent (and relevant functions/etc).
- [GPU] Precalculate memory byte usage for base mip (and any additional mip levels).
- [GPU] Change TextureCache::WatchCallback so that if it's fired multiple times for the same texture it does not assert.
- [GPU] Add write watches for texture memory associated with additional mipmap levels.
2018-05-31 19:41:33 -05:00
gibbed
bbebfd49c8 [Vulkan] Add logging to certain error conditions.
[Vulkan] Track both texture block height and texture block vertical pitch.
[Vulkan] Only convert the necessary visible height on texture uploads.
[Vulkan] Fix write watch on texture data so it properly only covers mip 0 data.
2018-05-30 19:38:36 -05:00
gibbed
7df45bf590 [Vulkan] Fix DXT3A conversion. 2018-05-26 08:25:25 -05:00
gibbed
7116b5fc82 [Vulkan] Reimplemented texture conversions. Here be dragons! Probably breaks everything. Also bonus DXT3A support. 2018-05-26 06:57:16 -05:00
gibbed
cddfa26bae [GPU] Add IsSRGBCapable default case. 2018-05-20 12:18:31 -05:00
gibbed
c233eabeda [GPU] Remove extraneous breaks from GetTexelSize. 2018-05-20 02:10:16 -05:00
gibbed
3f901311af [GPU] Add SRGB helper function. 2018-05-20 02:08:49 -05:00
gibbed
981590bc98 [Vulkan] Don't break k_2_10_10_10. 2018-05-19 16:37:05 -05:00
Dr. Chat
191dc30bee [GPU] Use the pitch field in tfetch constants 2018-05-18 13:48:28 -05:00
gibbed
170ab85049 [Vulkan] Reworking packed mip offset calculation. Probably breaks everything. 2018-05-14 03:47:58 -05:00
Dr. Chat
da62e0e044 [GPU] Rename TextureInfo::size_xx -> TextureInfo::size 2018-05-08 10:29:36 -05:00
Dr. Chat
77d1d7342e [GPU] Remove TextureInfo::has_packed_mips 2018-05-05 18:23:30 -05:00
Dr. Chat
88729e2ac4 [GPU] Initial (and possibly incorrect) texture size calculation for 1D and 3D 2018-05-04 12:10:26 -05:00
Dr. Chat
f45cd398ef [Vulkan] Handle MIPs with non-power-of-two dimensions 2018-05-03 17:54:09 -05:00
Dr. Chat
f885b89a03 [Vulkan] Make image views cover all mips
Align texture dimensions to 1 block minimum (for uploading mips)
2018-05-03 14:15:36 -05:00
Dr. Chat
c9d4cfe6d0 [GPU] MIPs > 16 pixels are stored in their own individual tiles 2018-05-03 12:01:50 -05:00
DrChat
1f157f35f4 [Vulkan] Initial support for mipmaps 2018-05-03 10:02:07 -05:00
DrChat
f7c7cc54ed [GPU] TextureInfo::GetMaxMipLevels 2018-04-30 11:01:46 -05:00
DrChat
1eac03a11c GPU: The base format of *_EXPAND textures is *_FLOAT 2017-08-19 21:10:53 -05:00
DrChat
57ffee0d8c GPU: Add name strings for all texture formats 2017-08-19 20:55:29 -05:00
gibbed
b14dc3351c GPU: Make 1D textures into 2D ones. 2017-08-08 17:58:11 -05:00
gibbed
6d9a56a269 GPU: Fixed texel pitch calculation for linear textures. 2017-08-07 20:50:42 -05:00
gibbed
b4ae5b9a01 - GPU: Removal of deprecated TextureInfo fields.
- GPU: Replicated removed deprecated fields into local struct for GL.
- GPU: Improved texture copies for Vulkan, no more pitch changes.
- GPU: Stubbed code for CTX1 conversion in Vulkan.
2017-08-07 19:30:06 -05:00
Dr. Chat
b40d75aa3d TextureInfo: Store the texture format, not a pointer to texture format info. 2017-04-07 15:16:09 -05:00
Dr. Chat
4a815e62cb TextureInfo: PrepareResolve, Reorganize source, add better documentation 2017-03-14 22:46:47 -05:00
gibbed
8dbf3d240b Make the previous commit slightly more performant. 2017-03-12 01:15:43 -06:00
gibbed
69b92c6c31 Maybe fix texture uploads where mipmaps are packed in linear textures. 2017-03-12 01:12:02 -06:00
gibbed
a95de67b8c 1D textures. Maybe. 2017-01-10 00:04:41 -06:00
Dr. Chat
79f1193130 Vulkan CP: Fix calculating an invalid copy destination base address when sizeof(texel) != 4 2016-05-06 00:12:47 -05:00
Ben Vanik
ec113275dc Making texture swizzles dynamic. Seems to fix some color swap issues.
And probably exposes many more ;)
2015-12-07 22:39:33 -08:00
Ben Vanik
bea8870700 Shuffling old-style ucode.h under gl4. 2015-11-28 16:10:27 -08:00
Ben Vanik
8b0d4fb51c Linux tweaks. 2015-08-18 14:18:00 -07:00
Ben Vanik
e3220f7ae6 Code cleanup: moving poly/ into xenia/base/ 2015-05-02 03:42:51 -07:00
Ben Vanik
30f7effa73 Code cleanup: removing common.h 2015-05-02 01:25:59 -07:00
Ben Vanik
b392afbfae Basic cubemap support, though the sampling code is wrong. 2015-03-22 19:15:22 -07:00
Ben Vanik
8cfcea2309 32_32_F render target format. 2015-03-22 15:30:18 -07:00
Ben Vanik
84fa131f12 Hacking on render targets. Kind of work in simple cases, upside down :/ 2015-03-06 20:36:10 -08:00
Ben Vanik
b19c98fd9a Fixing small textures. This was painful.
Fixes #173.
2015-03-05 22:22:34 -08:00
Ben Vanik
78451a4e9e Cleaning up texture info/uploading. Edge cases still likely. 2015-02-09 14:10:24 -08:00