Commit Graph
29 Commits
Author SHA1 Message Date
Wunkolo 2a1683ba62 Introduce "Renderer" abstraction layer
Adds a `renderer` class for which a rendering backend must implement and
will conditionally use OpenGL in the case that `ENABLE_GL` is enabled.
2023-07-11 11:27:35 -07:00
Wunkolo d664d5caf0 Emulator: Conditional OpenGL compilation 2023-07-11 11:27:04 -07:00
Wunkolo 0009b0817d Add ENABLE_OPENGL build option
Allows the OpenGL backend to be fully disabled, continuing a modular
pattern of having multiple possible rendering backends. Also defines the
`ENABLE_OPENGL` preprocessor in the case of conditional source-file
changes depending on the rendering backend.
2023-07-11 11:27:04 -07:00
WunkandGitHub 7382e29fa7 Merge pull request #105 from Wunkolo/tunit-stb_image_write
Move `stb_image_write` into its own translation unit
2023-07-11 11:03:08 -07:00
Wunkolo e4e8e7ce26 Move stb_image_write into its own translation unit
Rather than having the entire implementation within `emulator.cpp`,
causing incremental builds to be much slower, give it its own
translation unit `stb_image_write.c`.
2023-07-11 10:43:20 -07:00
WunkandGitHub 72252fc702 Merge pull request #102 from Wunkolo/sdl-test-disable
Disable compilation of SDL tests
2023-07-10 13:02:23 -07:00
Wunkolo d96289cc05 Address remaining C4244 warnings
Remaining warnings regarding an implicit cast from `double` to `float`.
2023-07-10 12:33:37 -07:00
Wunkolo 119c908aa7 Add explicit return-type overload for getBits
Allows the return-type to be specified, allowing a concise final cast
after extracting the bit-type.  Addresses the remaining `C4244` warnings
regarding `getBits`.
2023-07-10 12:33:37 -07:00
Wunkolo 37b75f0928 Fix C4267/C4244 warnings
Address warnings involving lossy conversions from larger integer-types into smaller integer-types
2023-07-10 12:33:37 -07:00
Wunkolo 1cb5513716 Disable compilation of SDL tests
Speed up our compilation by about 20 files by removing the need to
compile all of SDL's test suite.
2023-07-10 12:31:10 -07:00
Wunkolo 5372fe6e43 config: Use error_code prototype of filesystem::exists
The non-error-code version of these functions are susceptible to
throwing an exception in the case of system errors like permission
issues or underlying device errors.
2023-07-10 11:33:29 -07:00
Wunkolo 9746dd5eb2 Add TexEnv PICA register offsets 2023-06-20 14:55:12 -07:00
Wunkolo 62fdb29646 Add GPU_DEBUG_INFO CMake-Option
Adds a project-wide setting for allowing renderer code to add additional
diagnostic data.  Currently used to allow `opengl.hpp` to conditionally
implement debug-labeling and scopes.
2023-06-20 11:04:52 -07:00
Wunkolo dbf0597bd8 Add DebugScope utility-class for RAII-based OpenGL debug-scopes
Simply define this object in a C++ scope like:
```cpp
OpenGL::DebugScope glScope("Renderer::display");
```
and it will associate all functions within the current scope within a
named group. Supports `printf` formatting.
2023-06-20 10:10:11 -07:00
Wunkolo 1251cecc88 Add setObjectLabel for naming OpenGL functions
Add `OPENGL_PRINTF_FORMAT` and `OPENGL_PRINTF_FORMAT_ATTR` macros for providing
printf diagnostic information across platforms.
2023-06-19 23:48:16 -07:00
Wunkolo 1b9f270b19 Migrate IOFile implementation to io_file.cpp
Makes the implementation of `IOFile` private, allowing inclusions and
defines such as `#define fseeko` and `#include <io.h>` to not poison
client-code or the global namespace.
2023-06-19 19:37:36 -07:00
Wunkolo 6ee3f73335 Bisect TextureFmt and ColorFmt
Makes framebuffer-formats unrepresentable from texture formats while
allowing them to alias each other. Add utility functions as well that
just re-use the `TextureFmt` ones.
2023-06-18 08:22:14 -07:00
Wunkolo 134e16d8ea Replace Texture::Formats with PICA::ColorFmt
This enum was a duplicate of the PICA one. Now the PICA one is more
complete. Migrate `textureFormatToString` to be next to the enums
definition.
2023-06-18 00:10:04 -07:00
Wunkolo 5f07f77c94 Move hasStencil to regs.hpp 2023-06-17 23:27:19 -07:00
Wunkolo 838d3f27f9 Migrate PICA-types into PICA namespace
Rather than prefixing these types with `PICA`, a namespace is used instead.
2023-06-17 18:23:47 -07:00
Wunkolo 78a3f9fa23 Add PICA texel-format and topology types
Slowly stepping the codebase towards having renderer-agnostic types and keeping the translation of PICA-types to OpenGL/VK/DX/Software/etc to the renderer-backend.
2023-06-17 12:26:41 -07:00
Wunkolo 553d23974a Use std::span to pass vertex data
Starts utilizing
[std::span](https://en.cppreference.com/w/cpp/container/span) to
indicate a non-owning view of a contiguous array of elements rather than
`T* data, usize count`.
2023-06-16 07:28:35 -07:00
Wunkolo fde93381a5 Use std::span for CPU register-state
Following the trend of #33: `std::span` provides some useful utility
functions like `size_bytes()` and `as_bytes()` and serves as a better
non-owning "chunk of data"-type over just passing around an
`std::array&`.
2023-06-16 07:24:37 -07:00
Wunkolo 0199918cd2 Add missing header for regs.hpp
This enum was using the `u32` type without including `helpers.hpp`, causing weird intermediate compiler errors when making incremental builds.
2023-06-16 05:48:33 -07:00
Wunkolo dd0831361d Add .clang-format
Use the command `clang-format -i tests/**/*.c src/**/*.cpp include/**/*.hpp`
to process all of the project's files.
Using the one from [pcsx-redux](https://github.com/grumpycoders/pcsx-redux/blob/main/src/.clang-format)
as a basis and then made additional edits to be the _least_ disruptive
to the pre-existing formatting patterns.
2023-06-15 00:37:49 -07:00
Wunkolo 8a852d2cab Implement SaveDataArchive::createFile
Based on `ExtSaveDataArchive::createFile`. Gets some games farther that
try to create save-data upon boot.
2023-06-11 01:05:48 -07:00
Wunkolo 2c94d0d683 Add Helpers:{getBits,getBit}
`constexpr` functions for extractint bitfields that lends itself a bit
better to emitting instructions like `bextr` on x86 or `ubfx` on arm64.
And may subjectively make things a bit more readable.
"Extract `5` bits" rather than `& 0x1F`.
2023-06-10 00:48:06 -07:00
Wunkolo 2edc9d5fb7 Remove #pragma once from source file 2023-06-09 20:31:25 -07:00
Wunkolo e0af6969c6 Fix cmake out-of-source build instructions
These directions are incorrectly using `cmake .` when it should be
`cmake ..`.
2023-06-09 20:23:14 -07:00