mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-26 04:32:35 +01:00
Merge pull request #6970 from linkmauve/switch-gsl-tcb
Switch gsl::span from GSL to tcbrindle’s implementation
This commit is contained in:
commit
7519e36317
7
.gitmodules
vendored
7
.gitmodules
vendored
@ -11,10 +11,6 @@
|
||||
url = https://github.com/RPCS3/llvm
|
||||
branch = release_60
|
||||
ignore = dirty
|
||||
[submodule "GSL"]
|
||||
path = 3rdparty/GSL
|
||||
url = https://github.com/Microsoft/GSL.git
|
||||
ignore = dirty
|
||||
[submodule "Vulkan/glslang"]
|
||||
path = Vulkan/glslang
|
||||
url = https://github.com/KhronosGroup/glslang.git
|
||||
@ -56,3 +52,6 @@
|
||||
path = 3rdparty/FAudio
|
||||
url = https://github.com/FNA-XNA/FAudio.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/span"]
|
||||
path = 3rdparty/span
|
||||
url = https://github.com/tcbrindle/span
|
||||
|
@ -8,7 +8,7 @@ export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib
|
||||
|
||||
cd rpcs3
|
||||
|
||||
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/GSL 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/libusb 3rdparty/FAudio Vulkan/glslang
|
||||
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/span 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/libusb 3rdparty/FAudio Vulkan/glslang
|
||||
|
||||
# Download pre-compiled llvm libs
|
||||
curl -sLO https://github.com/RPCS3/llvm/releases/download/continuous-linux-master/llvmlibs-linux.tar.gz
|
||||
|
@ -15,7 +15,7 @@ cp target/release/libportability.dylib vulkan-sdk/lib/libVulkan.dylib
|
||||
install_name_tool -id ${PWD}/vulkan-sdk/lib/libVulkan.dylib vulkan-sdk/lib/libVulkan.dylib
|
||||
export VULKAN_SDK=${PWD}/vulkan-sdk
|
||||
|
||||
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/GSL 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/libusb 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/FAudio Vulkan/glslang
|
||||
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/span 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/libusb 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/FAudio Vulkan/glslang
|
||||
|
||||
mkdir build; cd build
|
||||
cmake .. -DWITH_LLVM=OFF -DUSE_NATIVE_INSTRUCTIONS=OFF -G Ninja
|
||||
|
8
3rdparty/CMakeLists.txt
vendored
8
3rdparty/CMakeLists.txt
vendored
@ -204,9 +204,9 @@ else()
|
||||
endif()
|
||||
|
||||
|
||||
# GSL
|
||||
add_library(3rdparty_gsl INTERFACE)
|
||||
target_include_directories(3rdparty_gsl INTERFACE GSL/include)
|
||||
# span
|
||||
add_library(3rdparty_span INTERFACE)
|
||||
target_include_directories(3rdparty_span INTERFACE span/include)
|
||||
|
||||
|
||||
# stblib
|
||||
@ -424,7 +424,7 @@ add_library(3rdparty::hidapi ALIAS 3rdparty_hidapi)
|
||||
add_library(3rdparty::libpng ALIAS ${LIBPNG_TARGET})
|
||||
add_library(3rdparty::cereal ALIAS 3rdparty_cereal)
|
||||
add_library(3rdparty::opengl ALIAS 3rdparty_opengl)
|
||||
add_library(3rdparty::gsl ALIAS 3rdparty_gsl)
|
||||
add_library(3rdparty::span ALIAS 3rdparty_span)
|
||||
add_library(3rdparty::stblib ALIAS 3rdparty_stblib)
|
||||
add_library(3rdparty::discord-rpc ALIAS 3rdparty_discord-rpc)
|
||||
add_library(3rdparty::alsa ALIAS ${ALSA_TARGET})
|
||||
|
1
3rdparty/GSL
vendored
1
3rdparty/GSL
vendored
@ -1 +0,0 @@
|
||||
Subproject commit 1995e86d1ad70519465374fb4876c6ef7c9f8c61
|
1
3rdparty/span
vendored
Submodule
1
3rdparty/span
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 9d7559aabdebf569cab3480a7ea2a87948c0ae47
|
@ -1,10 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define GSL_THROW_ON_CONTRACT_VIOLATION
|
||||
|
||||
#pragma push_macro("new")
|
||||
#undef new
|
||||
#include <gsl/gsl>
|
||||
#pragma pop_macro("new")
|
||||
#undef Expects
|
||||
#undef Ensures
|
2
Utilities/span.h
Normal file
2
Utilities/span.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define TCB_SPAN_NAMESPACE_NAME gsl
|
||||
#include <tcb/span.hpp>
|
@ -171,11 +171,6 @@ using get_uint_t = typename get_int_impl<N>::utype;
|
||||
template <std::size_t N>
|
||||
using get_sint_t = typename get_int_impl<N>::stype;
|
||||
|
||||
namespace gsl
|
||||
{
|
||||
using std::byte;
|
||||
}
|
||||
|
||||
// Formatting helper, type-specific preprocessing for improving safety and functionality
|
||||
template <typename T, typename = void>
|
||||
struct fmt_unveil;
|
||||
|
@ -47,7 +47,7 @@ install:
|
||||
git submodule -q update --init `
|
||||
3rdparty/cereal `
|
||||
3rdparty/ffmpeg `
|
||||
3rdparty/GSL `
|
||||
3rdparty/span `
|
||||
3rdparty/hidapi `
|
||||
3rdparty/libpng `
|
||||
3rdparty/libusb `
|
||||
|
@ -49,7 +49,7 @@ target_include_directories(rpcs3_emu PUBLIC "${CMAKE_SOURCE_DIR}")
|
||||
target_link_libraries(rpcs3_emu
|
||||
PUBLIC
|
||||
3rdparty::pugixml
|
||||
3rdparty::gsl)
|
||||
3rdparty::span)
|
||||
|
||||
if (MSVC)
|
||||
set_source_files_properties("../../Utilities/JIT.cpp" PROPERTIES COMPILE_FLAGS /GR-)
|
||||
@ -412,7 +412,7 @@ target_link_libraries(rpcs3_emu
|
||||
3rdparty::vulkan 3rdparty::glew
|
||||
3rdparty::libusb
|
||||
PRIVATE
|
||||
3rdparty::gsl 3rdparty::xxhash
|
||||
3rdparty::span 3rdparty::xxhash
|
||||
)
|
||||
|
||||
|
||||
|
@ -52,7 +52,6 @@
|
||||
|
||||
#include <thread>
|
||||
#include <cfenv>
|
||||
#include "Utilities/GSL.h"
|
||||
|
||||
const bool s_use_ssse3 = utils::has_ssse3();
|
||||
|
||||
|
@ -14,9 +14,9 @@ struct frame_trace_data
|
||||
std::string name;
|
||||
std::pair<std::string, std::string> programs;
|
||||
rsx::rsx_state state;
|
||||
std::array<std::vector<gsl::byte>, 4> color_buffer;
|
||||
std::array<std::vector<gsl::byte>, 2> depth_stencil;
|
||||
std::vector<gsl::byte> index;
|
||||
std::array<std::vector<std::byte>, 4> color_buffer;
|
||||
std::array<std::vector<std::byte>, 2> depth_stencil;
|
||||
std::vector<std::byte> index;
|
||||
u32 vertex_count;
|
||||
|
||||
};
|
||||
|
@ -42,15 +42,15 @@ namespace
|
||||
// FIXME: GSL as_span break build if template parameter is non const with current revision.
|
||||
// Replace with true as_span when fixed.
|
||||
template <typename T>
|
||||
gsl::span<T> as_span_workaround(gsl::span<gsl::byte> unformated_span)
|
||||
gsl::span<T> as_span_workaround(gsl::span<std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
gsl::span<T> as_const_span(gsl::span<const gsl::byte> unformated_span)
|
||||
gsl::span<T> as_const_span(gsl::span<const std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
}
|
||||
|
||||
@ -457,7 +457,7 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
void write_vertex_array_data_to_buffer(gsl::span<gsl::byte> raw_dst_span, gsl::span<const gsl::byte> src_ptr, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride, bool swap_endianness)
|
||||
void write_vertex_array_data_to_buffer(gsl::span<std::byte> raw_dst_span, gsl::span<const std::byte> src_ptr, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride, bool swap_endianness)
|
||||
{
|
||||
verify(HERE), (vector_element_count > 0);
|
||||
const u32 src_read_stride = rsx::get_vertex_type_size_on_host(type, vector_element_count);
|
||||
@ -1171,8 +1171,8 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
std::tuple<u32, u32, u32> write_index_array_data_to_buffer(gsl::span<gsl::byte> dst_ptr,
|
||||
gsl::span<const gsl::byte> src_ptr,
|
||||
std::tuple<u32, u32, u32> write_index_array_data_to_buffer(gsl::span<std::byte> dst_ptr,
|
||||
gsl::span<const std::byte> src_ptr,
|
||||
rsx::index_array_type type, rsx::primitive_type draw_mode, bool restart_index_enabled, u32 restart_index,
|
||||
const std::function<bool(rsx::primitive_type)>& expands)
|
||||
{
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "Utilities/GSL.h"
|
||||
#include "Utilities/span.h"
|
||||
#include "../gcm_enums.h"
|
||||
|
||||
/**
|
||||
* Write count vertex attributes from src_ptr.
|
||||
* src_ptr array layout is deduced from the type, vector element count and src_stride arguments.
|
||||
*/
|
||||
void write_vertex_array_data_to_buffer(gsl::span<gsl::byte> raw_dst_span, gsl::span<const gsl::byte> src_ptr, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride, bool swap_endianness);
|
||||
void write_vertex_array_data_to_buffer(gsl::span<std::byte> raw_dst_span, gsl::span<const std::byte> src_ptr, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride, bool swap_endianness);
|
||||
|
||||
/*
|
||||
* If primitive mode is not supported and need to be emulated (using an index buffer) returns false.
|
||||
@ -36,7 +36,7 @@ u32 get_index_type_size(rsx::index_array_type type);
|
||||
* Returns min/max index found during the process and the number of valid indices written to the buffer.
|
||||
* The function expands index buffer for non native primitive type if expands(draw_mode) return true.
|
||||
*/
|
||||
std::tuple<u32, u32, u32> write_index_array_data_to_buffer(gsl::span<gsl::byte> dst, gsl::span<const gsl::byte> src,
|
||||
std::tuple<u32, u32, u32> write_index_array_data_to_buffer(gsl::span<std::byte> dst, gsl::span<const std::byte> src,
|
||||
rsx::index_array_type, rsx::primitive_type draw_mode, bool restart_index_enabled, u32 restart_index,
|
||||
const std::function<bool(rsx::primitive_type)>& expands);
|
||||
|
||||
|
@ -3,10 +3,10 @@
|
||||
#include "Emu/RSX/RSXFragmentProgram.h"
|
||||
#include "Emu/RSX/RSXVertexProgram.h"
|
||||
|
||||
#include "Utilities/GSL.h"
|
||||
#include "Utilities/hash.h"
|
||||
#include "Utilities/mutex.h"
|
||||
#include "Utilities/Log.h"
|
||||
#include "Utilities/span.h"
|
||||
|
||||
#include <deque>
|
||||
|
||||
@ -520,7 +520,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fill_fragment_constants_buffer(gsl::span<f32, gsl::dynamic_range> dst_buffer, const RSXFragmentProgram &fragment_program, bool sanitize = false) const
|
||||
void fill_fragment_constants_buffer(gsl::span<f32> dst_buffer, const RSXFragmentProgram &fragment_program, bool sanitize = false) const
|
||||
{
|
||||
const auto I = m_fragment_shader_cache.find(fragment_program);
|
||||
if (I == m_fragment_shader_cache.end())
|
||||
|
@ -28,15 +28,15 @@ namespace
|
||||
// FIXME: GSL as_span break build if template parameter is non const with current revision.
|
||||
// Replace with true as_span when fixed.
|
||||
template <typename T>
|
||||
gsl::span<T> as_span_workaround(gsl::span<gsl::byte> unformated_span)
|
||||
gsl::span<T> as_span_workaround(gsl::span<std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
gsl::span<T> as_const_span(gsl::span<const gsl::byte> unformated_span)
|
||||
gsl::span<T> as_const_span(gsl::span<const std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
|
||||
// TODO: Make this function part of GSL
|
||||
@ -326,7 +326,7 @@ namespace
|
||||
* Sometimes texture provides a pitch even if texture is swizzled (and then packed) and in such case it's ignored. It's passed via suggested_pitch and is used only if padded_row is false.
|
||||
*/
|
||||
template <u8 block_edge_in_texel, typename SRC_TYPE>
|
||||
std::vector<rsx_subresource_layout> get_subresources_layout_impl(const gsl::byte *texture_data_pointer, u16 width_in_texel, u16 height_in_texel, u16 depth, u8 layer_count, u16 mipmap_count, u32 suggested_pitch_in_bytes, bool padded_row, bool border)
|
||||
std::vector<rsx_subresource_layout> get_subresources_layout_impl(const std::byte *texture_data_pointer, u16 width_in_texel, u16 height_in_texel, u16 depth, u8 layer_count, u16 mipmap_count, u32 suggested_pitch_in_bytes, bool padded_row, bool border)
|
||||
{
|
||||
/**
|
||||
* Note about size type: RSX texture width is stored in a 16 bits int and pitch is stored in a 20 bits int.
|
||||
@ -387,7 +387,7 @@ namespace
|
||||
|
||||
slice_sz = src_pitch_in_block * block_size_in_bytes * full_height_in_block * depth;
|
||||
current_subresource_layout.pitch_in_block = src_pitch_in_block;
|
||||
current_subresource_layout.data = gsl::span<const gsl::byte>(texture_data_pointer + offset_in_src, slice_sz);
|
||||
current_subresource_layout.data = gsl::span<const std::byte>(texture_data_pointer + offset_in_src, slice_sz);
|
||||
|
||||
offset_in_src += slice_sz;
|
||||
miplevel_width_in_texel = std::max(miplevel_width_in_texel / 2, 1);
|
||||
@ -461,7 +461,7 @@ std::vector<rsx_subresource_layout> get_subresources_layout_impl(const RsxTextur
|
||||
int format = texture.format() & ~(CELL_GCM_TEXTURE_LN | CELL_GCM_TEXTURE_UN);
|
||||
|
||||
const u32 texaddr = rsx::get_address(texture.offset(), texture.location());
|
||||
auto pixels = vm::_ptr<const gsl::byte>(texaddr);
|
||||
auto pixels = vm::_ptr<const std::byte>(texaddr);
|
||||
|
||||
const bool is_swizzled = !(texture.format() & CELL_GCM_TEXTURE_LN);
|
||||
const bool has_border = !texture.border_type();
|
||||
@ -516,7 +516,7 @@ std::vector<rsx_subresource_layout> get_subresources_layout(const rsx::vertex_te
|
||||
return get_subresources_layout_impl(texture);
|
||||
}
|
||||
|
||||
texture_memory_info upload_texture_subresource(gsl::span<gsl::byte> dst_buffer, const rsx_subresource_layout &src_layout, int format, bool is_swizzled, const texture_uploader_capabilities& caps)
|
||||
texture_memory_info upload_texture_subresource(gsl::span<std::byte> dst_buffer, const rsx_subresource_layout &src_layout, int format, bool is_swizzled, const texture_uploader_capabilities& caps)
|
||||
{
|
||||
u16 w = src_layout.width_in_block;
|
||||
u16 h = src_layout.height_in_block;
|
||||
@ -1042,4 +1042,4 @@ std::pair<u32, bool> get_compatible_gcm_format(rsx::surface_depth_format format)
|
||||
default:
|
||||
ASSUME(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../RSXTexture.h"
|
||||
#include "Utilities/span.h"
|
||||
|
||||
#include <vector>
|
||||
#include "Utilities/GSL.h"
|
||||
|
||||
namespace rsx
|
||||
{
|
||||
@ -88,7 +88,7 @@ namespace rsx
|
||||
|
||||
struct rsx_subresource_layout
|
||||
{
|
||||
gsl::span<const gsl::byte> data;
|
||||
gsl::span<const std::byte> data;
|
||||
u16 width_in_texel;
|
||||
u16 height_in_texel;
|
||||
u16 width_in_block;
|
||||
@ -132,7 +132,7 @@ size_t get_placed_texture_storage_size(const rsx::vertex_texture &texture, size_
|
||||
std::vector<rsx_subresource_layout> get_subresources_layout(const rsx::fragment_texture &texture);
|
||||
std::vector<rsx_subresource_layout> get_subresources_layout(const rsx::vertex_texture &texture);
|
||||
|
||||
texture_memory_info upload_texture_subresource(gsl::span<gsl::byte> dst_buffer, const rsx_subresource_layout &src_layout, int format, bool is_swizzled, const texture_uploader_capabilities& caps);
|
||||
texture_memory_info upload_texture_subresource(gsl::span<std::byte> dst_buffer, const rsx_subresource_layout &src_layout, int format, bool is_swizzled, const texture_uploader_capabilities& caps);
|
||||
|
||||
u8 get_format_block_size_in_bytes(int format);
|
||||
u8 get_format_block_size_in_texel(int format);
|
||||
|
@ -1,18 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include "Utilities/GSL.h"
|
||||
#include "Emu/Memory/vm.h"
|
||||
#include "surface_utils.h"
|
||||
#include "../GCM.h"
|
||||
#include "../rsx_utils.h"
|
||||
#include "Utilities/span.h"
|
||||
#include <list>
|
||||
|
||||
namespace
|
||||
{
|
||||
template <typename T>
|
||||
gsl::span<T> as_const_span(gsl::span<const gsl::byte> unformated_span)
|
||||
gsl::span<T> as_const_span(gsl::span<const std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2405,7 +2405,7 @@ namespace rsx
|
||||
subres.height_in_block = subres.height_in_texel = image_height;
|
||||
subres.pitch_in_block = full_width;
|
||||
subres.depth = 1;
|
||||
subres.data = { vm::_ptr<const gsl::byte>(image_base), src.pitch * image_height };
|
||||
subres.data = { vm::_ptr<const std::byte>(image_base), static_cast<gsl::span<const std::byte>::index_type>(src.pitch * image_height) };
|
||||
subresource_layout.push_back(subres);
|
||||
|
||||
vram_texture = upload_image_from_cpu(cmd, rsx_range, image_width, image_height, 1, 1, src.pitch, gcm_format, texture_upload_context::blit_engine_src,
|
||||
@ -2537,7 +2537,7 @@ namespace rsx
|
||||
subres.height_in_block = subres.height_in_texel = dst_dimensions.height;
|
||||
subres.pitch_in_block = pitch_in_block;
|
||||
subres.depth = 1;
|
||||
subres.data = { vm::get_super_ptr<const gsl::byte>(dst.rsx_address), dst.pitch * dst_dimensions.height };
|
||||
subres.data = { vm::get_super_ptr<const std::byte>(dst.rsx_address), static_cast<gsl::span<const std::byte>::index_type>(dst.pitch * dst_dimensions.height) };
|
||||
subresource_layout.push_back(subres);
|
||||
|
||||
cached_dest = upload_image_from_cpu(cmd, rsx_range, dst_dimensions.width, dst_dimensions.height, 1, 1, dst.pitch,
|
||||
|
@ -1372,7 +1372,7 @@ void GLGSRender::load_program_env()
|
||||
auto mapping = m_fragment_constants_buffer->alloc_from_heap(fragment_constants_size, m_uniform_buffer_offset_align);
|
||||
auto buf = static_cast<u8*>(mapping.first);
|
||||
|
||||
m_prog_buffer.fill_fragment_constants_buffer({ reinterpret_cast<float*>(buf), gsl::narrow<int>(fragment_constants_size) },
|
||||
m_prog_buffer.fill_fragment_constants_buffer({ reinterpret_cast<float*>(buf), fragment_constants_size },
|
||||
current_fragment_program, gl::get_driver_caps().vendor_NVIDIA);
|
||||
|
||||
m_fragment_constants_buffer->bind_range(GL_FRAGMENT_CONSTANT_BUFFERS_BIND_SLOT, mapping.second, fragment_constants_size);
|
||||
|
@ -177,8 +177,8 @@ protected:
|
||||
void notify_tile_unbound(u32 tile) override;
|
||||
void on_semaphore_acquire_wait() override;
|
||||
|
||||
std::array<std::vector<gsl::byte>, 4> copy_render_targets_to_memory() override;
|
||||
std::array<std::vector<gsl::byte>, 2> copy_depth_stencil_buffer_to_memory() override;
|
||||
std::array<std::vector<std::byte>, 4> copy_render_targets_to_memory() override;
|
||||
std::array<std::vector<std::byte>, 2> copy_depth_stencil_buffer_to_memory() override;
|
||||
|
||||
void on_decompiler_init() override;
|
||||
void on_decompiler_exit() override;
|
||||
|
@ -414,12 +414,12 @@ void GLGSRender::init_buffers(rsx::framebuffer_creation_context context, bool sk
|
||||
}
|
||||
}
|
||||
|
||||
std::array<std::vector<gsl::byte>, 4> GLGSRender::copy_render_targets_to_memory()
|
||||
std::array<std::vector<std::byte>, 4> GLGSRender::copy_render_targets_to_memory()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
std::array<std::vector<gsl::byte>, 2> GLGSRender::copy_depth_stencil_buffer_to_memory()
|
||||
std::array<std::vector<std::byte>, 2> GLGSRender::copy_depth_stencil_buffer_to_memory()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
@ -456,7 +456,7 @@ namespace gl
|
||||
}
|
||||
|
||||
void fill_texture(rsx::texture_dimension_extended dim, u16 mipmap_count, int format, u16 width, u16 height, u16 depth,
|
||||
const std::vector<rsx_subresource_layout> &input_layouts, bool is_swizzled, GLenum gl_format, GLenum gl_type, std::vector<gsl::byte>& staging_buffer)
|
||||
const std::vector<rsx_subresource_layout> &input_layouts, bool is_swizzled, GLenum gl_format, GLenum gl_type, std::vector<std::byte>& staging_buffer)
|
||||
{
|
||||
int mip_level = 0;
|
||||
texture_uploader_capabilities caps{ true, false, false, 4 };
|
||||
@ -635,7 +635,7 @@ namespace gl
|
||||
// Calculate staging buffer size
|
||||
const u32 aligned_pitch = align<u32>(width * get_format_block_size_in_bytes(gcm_format), 4);
|
||||
size_t texture_data_sz = depth * height * aligned_pitch;
|
||||
std::vector<gsl::byte> data_upload_buf(texture_data_sz);
|
||||
std::vector<std::byte> data_upload_buf(texture_data_sz);
|
||||
|
||||
// TODO: GL drivers support byteswapping and this should be used instead of doing so manually
|
||||
const auto format_type = get_format_type(gcm_format);
|
||||
|
@ -107,7 +107,7 @@ namespace
|
||||
u32 offset_in_index_buffer = mapping.second;
|
||||
|
||||
std::tie(min_index, max_index, index_count) = write_index_array_data_to_buffer(
|
||||
{ reinterpret_cast<gsl::byte*>(ptr), max_size },
|
||||
{ reinterpret_cast<std::byte*>(ptr), max_size },
|
||||
command.raw_index_buffer, type,
|
||||
rsx::method_registers.current_draw_clause.primitive,
|
||||
rsx::method_registers.restart_index_enabled(),
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "Emu/Cell/lv2/sys_event.h"
|
||||
#include "Emu/Cell/Modules/cellGcmSys.h"
|
||||
|
||||
#include "Utilities/GSL.h"
|
||||
#include "Utilities/span.h"
|
||||
#include "Utilities/StrUtil.h"
|
||||
|
||||
#include <cereal/archives/binary.hpp>
|
||||
@ -830,12 +830,12 @@ namespace rsx
|
||||
return t + timestamp_subvalue;
|
||||
}
|
||||
|
||||
gsl::span<const gsl::byte> thread::get_raw_index_array(const draw_clause& draw_indexed_clause) const
|
||||
gsl::span<const std::byte> thread::get_raw_index_array(const draw_clause& draw_indexed_clause) const
|
||||
{
|
||||
if (!element_push_buffer.empty())
|
||||
{
|
||||
//Indices provided via immediate mode
|
||||
return{(const gsl::byte*)element_push_buffer.data(), ::narrow<u32>(element_push_buffer.size() * sizeof(u32))};
|
||||
return{(const std::byte*)element_push_buffer.data(), ::narrow<u32>(element_push_buffer.size() * sizeof(u32))};
|
||||
}
|
||||
|
||||
const rsx::index_array_type type = rsx::method_registers.index_type();
|
||||
@ -850,11 +850,11 @@ namespace rsx
|
||||
const u32 first = draw_indexed_clause.min_index();
|
||||
const u32 count = draw_indexed_clause.get_elements_count();
|
||||
|
||||
const auto ptr = vm::_ptr<const gsl::byte>(address);
|
||||
const auto ptr = vm::_ptr<const std::byte>(address);
|
||||
return{ ptr + first * type_size, count * type_size };
|
||||
}
|
||||
|
||||
gsl::span<const gsl::byte> thread::get_raw_vertex_buffer(const rsx::data_array_format_info& vertex_array_info, u32 base_offset, const draw_clause& draw_array_clause) const
|
||||
gsl::span<const std::byte> thread::get_raw_vertex_buffer(const rsx::data_array_format_info& vertex_array_info, u32 base_offset, const draw_clause& draw_array_clause) const
|
||||
{
|
||||
u32 offset = vertex_array_info.offset();
|
||||
u32 address = rsx::get_address(rsx::get_vertex_offset_from_base(base_offset, offset & 0x7fffffff), offset >> 31);
|
||||
@ -864,7 +864,7 @@ namespace rsx
|
||||
const u32 first = draw_array_clause.min_index();
|
||||
const u32 count = draw_array_clause.get_elements_count();
|
||||
|
||||
const gsl::byte* ptr = vm::_ptr<const gsl::byte>(address);
|
||||
const std::byte* ptr = vm::_ptr<const std::byte>(address);
|
||||
return {ptr + first * vertex_array_info.stride(), count * vertex_array_info.stride() + element_size};
|
||||
}
|
||||
|
||||
@ -896,7 +896,7 @@ namespace rsx
|
||||
const auto& info = vertex_push_buffers[index];
|
||||
const u8 element_size = info.size * sizeof(u32);
|
||||
|
||||
gsl::span<const gsl::byte> vertex_src = { (const gsl::byte*)vertex_push_buffers[index].data.data(), vertex_push_buffers[index].vertex_count * element_size };
|
||||
gsl::span<const std::byte> vertex_src = { (const std::byte*)vertex_push_buffers[index].data.data(), vertex_push_buffers[index].vertex_count * element_size };
|
||||
result.emplace_back(vertex_array_buffer{ info.type, info.size, element_size, vertex_src, index, false });
|
||||
continue;
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ namespace rsx
|
||||
rsx::vertex_base_type type;
|
||||
u8 attribute_size;
|
||||
u8 stride;
|
||||
gsl::span<const gsl::byte> data;
|
||||
gsl::span<const std::byte> data;
|
||||
u8 index;
|
||||
bool is_be;
|
||||
};
|
||||
@ -153,7 +153,7 @@ namespace rsx
|
||||
|
||||
struct draw_indexed_array_command
|
||||
{
|
||||
gsl::span<const gsl::byte> raw_index_buffer;
|
||||
gsl::span<const std::byte> raw_index_buffer;
|
||||
};
|
||||
|
||||
struct draw_inlined_array
|
||||
@ -714,8 +714,8 @@ namespace rsx
|
||||
flags32_t read_barrier(u32 memory_address, u32 memory_range, bool unconditional);
|
||||
virtual void sync_hint(FIFO_hint /*hint*/, u64 /*arg*/) {}
|
||||
|
||||
gsl::span<const gsl::byte> get_raw_index_array(const draw_clause& draw_indexed_clause) const;
|
||||
gsl::span<const gsl::byte> get_raw_vertex_buffer(const rsx::data_array_format_info&, u32 base_offset, const draw_clause& draw_array_clause) const;
|
||||
gsl::span<const std::byte> get_raw_index_array(const draw_clause& draw_indexed_clause) const;
|
||||
gsl::span<const std::byte> get_raw_vertex_buffer(const rsx::data_array_format_info&, u32 base_offset, const draw_clause& draw_array_clause) const;
|
||||
|
||||
std::vector<std::variant<vertex_array_buffer, vertex_array_register, empty_vertex_array>>
|
||||
get_vertex_buffers(const rsx::rsx_state& state, u64 consumed_attrib_mask) const;
|
||||
@ -821,16 +821,16 @@ namespace rsx
|
||||
* Copy rtt values to buffer.
|
||||
* TODO: It's more efficient to combine multiple call of this function into one.
|
||||
*/
|
||||
virtual std::array<std::vector<gsl::byte>, 4> copy_render_targets_to_memory() {
|
||||
return std::array<std::vector<gsl::byte>, 4>();
|
||||
virtual std::array<std::vector<std::byte>, 4> copy_render_targets_to_memory() {
|
||||
return std::array<std::vector<std::byte>, 4>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy depth and stencil content to buffers.
|
||||
* TODO: It's more efficient to combine multiple call of this function into one.
|
||||
*/
|
||||
virtual std::array<std::vector<gsl::byte>, 2> copy_depth_stencil_buffer_to_memory() {
|
||||
return std::array<std::vector<gsl::byte>, 2>();
|
||||
virtual std::array<std::vector<std::byte>, 2> copy_depth_stencil_buffer_to_memory() {
|
||||
return std::array<std::vector<std::byte>, 2>();
|
||||
}
|
||||
|
||||
virtual std::pair<std::string, std::string> get_programs() const { return std::make_pair("", ""); }
|
||||
|
@ -2735,7 +2735,7 @@ void VKGSRender::load_program_env()
|
||||
auto mem = m_fragment_constants_ring_info.alloc<256>(fragment_constants_size);
|
||||
auto buf = m_fragment_constants_ring_info.map(mem, fragment_constants_size);
|
||||
|
||||
m_prog_buffer->fill_fragment_constants_buffer({ reinterpret_cast<float*>(buf), ::narrow<int>(fragment_constants_size) },
|
||||
m_prog_buffer->fill_fragment_constants_buffer({ reinterpret_cast<float*>(buf), fragment_constants_size },
|
||||
current_fragment_program, vk::sanitize_fp_values());
|
||||
|
||||
m_fragment_constants_ring_info.unmap();
|
||||
|
@ -245,7 +245,7 @@ namespace vk
|
||||
subres.height_in_block = subres.height_in_texel = surface_height * samples_y;
|
||||
subres.pitch_in_block = rsx_pitch / get_bpp();
|
||||
subres.depth = 1;
|
||||
subres.data = { (const gsl::byte*)vm::get_super_ptr(base_addr), s32(rsx_pitch * surface_height * samples_y) };
|
||||
subres.data = { (const std::byte*)vm::get_super_ptr(base_addr), static_cast<gsl::span<const std::byte>::index_type>(rsx_pitch * surface_height * samples_y) };
|
||||
|
||||
if (LIKELY(g_cfg.video.resolution_scale_percent == 100 && samples() == 1))
|
||||
{
|
||||
|
@ -722,7 +722,7 @@ namespace vk
|
||||
check_caps = false;
|
||||
}
|
||||
|
||||
gsl::span<gsl::byte> mapped{ (gsl::byte*)mapped_buffer, ::narrow<int>(image_linear_size) };
|
||||
gsl::span<std::byte> mapped{ (std::byte*)mapped_buffer, image_linear_size };
|
||||
opt = upload_texture_subresource(mapped, layout, format, is_swizzled, caps);
|
||||
upload_heap.unmap();
|
||||
|
||||
|
@ -144,8 +144,8 @@ namespace
|
||||
VkDeviceSize offset_in_index_buffer = m_index_buffer_ring_info.alloc<4>(upload_size);
|
||||
void* buf = m_index_buffer_ring_info.map(offset_in_index_buffer, upload_size);
|
||||
|
||||
gsl::span<gsl::byte> dst;
|
||||
std::vector<gsl::byte> tmp;
|
||||
gsl::span<std::byte> dst;
|
||||
std::vector<std::byte> tmp;
|
||||
if (emulate_restart)
|
||||
{
|
||||
tmp.resize(upload_size);
|
||||
@ -153,7 +153,7 @@ namespace
|
||||
}
|
||||
else
|
||||
{
|
||||
dst = gsl::span<gsl::byte>(static_cast<gsl::byte*>(buf), upload_size);
|
||||
dst = gsl::span<std::byte>(static_cast<std::byte*>(buf), upload_size);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -405,7 +405,6 @@
|
||||
<ClInclude Include="..\Utilities\dynamic_library.h" />
|
||||
<ClInclude Include="..\Utilities\event.h" />
|
||||
<ClInclude Include="..\Utilities\geometry.h" />
|
||||
<ClInclude Include="..\Utilities\GSL.h" />
|
||||
<ClInclude Include="..\Utilities\hash.h" />
|
||||
<ClInclude Include="..\Utilities\JIT.h" />
|
||||
<ClInclude Include="..\Utilities\lockless.h" />
|
||||
@ -651,4 +650,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1378,9 +1378,6 @@
|
||||
<ClInclude Include="Emu\VFS.h">
|
||||
<Filter>Emu</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Utilities\GSL.h">
|
||||
<Filter>Utilities</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Utilities\AtomicPtr.h">
|
||||
<Filter>Utilities</Filter>
|
||||
</ClInclude>
|
||||
@ -1586,4 +1583,4 @@
|
||||
<Filter>Emu\Cell\Modules</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -104,20 +104,20 @@
|
||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</IgnoreImportLibrary>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\GSL\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\span\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<LibraryPath>$(SolutionDir)lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\GSL\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\span\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<LibraryPath>$(SolutionDir)lib\Debug-x64;$(SolutionDir)lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LibraryPath>$(SolutionDir)lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\GSL\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<IncludePath>..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\span\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">
|
||||
<LibraryPath>$(SolutionDir)lib\Release-x64;$(SolutionDir)lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||
<IncludePath>..\3rdparty\7z;..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\GSL\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
<IncludePath>..\3rdparty\7z;..\3rdparty\hidapi\hidapi;.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\span\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\Optional;..\3rdparty\discord-rpc\include;..\3rdparty\zlib</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
@ -2152,4 +2152,4 @@
|
||||
<UserProperties MocDir=".\QTGeneratedFiles\$(ConfigurationName)" UicDir=".\QTGeneratedFiles" RccDir=".\QTGeneratedFiles" Qt5Version_x0020_x64="$(DefaultQtVersion)" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -13,9 +13,9 @@ constexpr auto qstr = QString::fromStdString;
|
||||
namespace
|
||||
{
|
||||
template <typename T>
|
||||
gsl::span<T> as_const_span(gsl::span<const gsl::byte> unformated_span)
|
||||
gsl::span<T> as_const_span(gsl::span<const std::byte> unformated_span)
|
||||
{
|
||||
return{ (T*)unformated_span.data(), ::narrow<int>(unformated_span.size_bytes() / sizeof(T)) };
|
||||
return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) };
|
||||
}
|
||||
}
|
||||
|
||||
@ -427,7 +427,7 @@ void Buffer::ShowWindowed()
|
||||
|
||||
namespace
|
||||
{
|
||||
std::array<u8, 3> get_value(gsl::span<const gsl::byte> orig_buffer, rsx::surface_color_format format, size_t idx)
|
||||
std::array<u8, 3> get_value(gsl::span<const std::byte> orig_buffer, rsx::surface_color_format format, size_t idx)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
@ -486,7 +486,7 @@ namespace
|
||||
/**
|
||||
* Return a new buffer that can be passed to QImage.
|
||||
*/
|
||||
u8* convert_to_QImage_buffer(rsx::surface_color_format format, gsl::span<const gsl::byte> orig_buffer, size_t width, size_t height) noexcept
|
||||
u8* convert_to_QImage_buffer(rsx::surface_color_format format, gsl::span<const std::byte> orig_buffer, size_t width, size_t height) noexcept
|
||||
{
|
||||
unsigned char* buffer = (unsigned char*)malloc(width * height * 4);
|
||||
for (u32 i = 0; i < width * height; i++)
|
||||
@ -532,7 +532,7 @@ void rsx_debugger::OnClickDrawCalls()
|
||||
{
|
||||
if (width && height && !draw_call.depth_stencil[0].empty())
|
||||
{
|
||||
gsl::span<const gsl::byte> orig_buffer = draw_call.depth_stencil[0];
|
||||
gsl::span<const std::byte> orig_buffer = draw_call.depth_stencil[0];
|
||||
unsigned char *buffer = (unsigned char *)malloc(width * height * 4);
|
||||
|
||||
if (draw_call.state.surface_depth_fmt() == rsx::surface_depth_format::z24s8)
|
||||
@ -573,7 +573,7 @@ void rsx_debugger::OnClickDrawCalls()
|
||||
{
|
||||
if (width && height && !draw_call.depth_stencil[1].empty())
|
||||
{
|
||||
gsl::span<const gsl::byte> orig_buffer = draw_call.depth_stencil[1];
|
||||
gsl::span<const std::byte> orig_buffer = draw_call.depth_stencil[1];
|
||||
unsigned char *buffer = (unsigned char *)malloc(width * height * 4);
|
||||
|
||||
for (u32 row = 0; row < height; row++)
|
||||
|
@ -8,8 +8,6 @@
|
||||
#include "Emu/RSX/GSRender.h"
|
||||
#include "Emu/RSX/GCM.h"
|
||||
|
||||
#include "Utilities/GSL.h"
|
||||
|
||||
#include "memory_viewer_panel.h"
|
||||
#include "table_item_delegate.h"
|
||||
#include "gui_settings.h"
|
||||
|
@ -3,7 +3,7 @@
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IncludePath>.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\GSL\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\hidapi\hidapi;..\3rdparty\Optional;..\3rdparty\xxhash</IncludePath>
|
||||
<IncludePath>.\;..\;..\asmjit\src;..\3rdparty\yaml-cpp\include;..\3rdparty\ffmpeg\WindowsInclude;..\3rdparty\cereal\include;..\3rdparty\ffmpeg\Windows\x86_64\Include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\minidx12\Include;..\3rdparty\span\include;..\3rdparty\libpng;..\3rdparty\GL;..\3rdparty\stblib;..\3rdparty\OpenAL\include;..\3rdparty\pugixml\src;..\3rdparty\hidapi\hidapi;..\3rdparty\Optional;..\3rdparty\xxhash</IncludePath>
|
||||
<OutDir>$(SolutionDir)lib\$(Configuration)-$(Platform)\</OutDir>
|
||||
<LibraryPath>$(SolutionDir)lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||
<IntDir>$(SolutionDir)tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
|
||||
@ -30,4 +30,4 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
||||
</Project>
|
||||
|
Loading…
Reference in New Issue
Block a user