gl: Debugging argb8 hw scale (broken atm/ WIP)
This commit is contained in:
@@ -9,10 +9,11 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
#include "GLRenderTargets.h"
|
#include "GLRenderTargets.h"
|
||||||
#include "../Common/TextureUtils.h"
|
#include "../Common/TextureUtils.h"
|
||||||
#include <chrono>
|
#include "../../Memory/vm.h"
|
||||||
|
|
||||||
class GLGSRender;
|
class GLGSRender;
|
||||||
|
|
||||||
@@ -441,8 +442,16 @@ namespace gl
|
|||||||
glBindTexture(GL_TEXTURE_2D, rgb565_surface);
|
glBindTexture(GL_TEXTURE_2D, rgb565_surface);
|
||||||
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB565, 4096, 4096);
|
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB565, 4096, 4096);
|
||||||
|
|
||||||
fbo_argb8.color[0] = argb8_surface;
|
s32 old_fbo = 0;
|
||||||
fbo_rgb565.color[0] = rgb565_surface;
|
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo);
|
||||||
|
|
||||||
|
fbo_argb8.bind();
|
||||||
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, argb8_surface, 0);
|
||||||
|
|
||||||
|
fbo_rgb565.bind();
|
||||||
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rgb565_surface, 0);
|
||||||
|
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, old_fbo);
|
||||||
|
|
||||||
fbo_argb8.check();
|
fbo_argb8.check();
|
||||||
fbo_rgb565.check();
|
fbo_rgb565.check();
|
||||||
@@ -458,33 +467,46 @@ namespace gl
|
|||||||
glDeleteTextures(1, &rgb565_surface);
|
glDeleteTextures(1, &rgb565_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 scale_image(u32 src, const areai src_rect, const areai dst_rect, const position2i clip_offset, const size2i clip_dims, bool is_argb8)
|
u32 scale_image(u32 src, u32 dst, const areai src_rect, const areai dst_rect, const position2i dst_offset, const position2i clip_offset, const size2i dst_dims, const size2i clip_dims, bool is_argb8)
|
||||||
{
|
{
|
||||||
blit_src.color[0] = src;
|
s32 old_fbo = 0;
|
||||||
|
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo);
|
||||||
|
|
||||||
|
blit_src.bind();
|
||||||
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, src, 0);
|
||||||
blit_src.check();
|
blit_src.check();
|
||||||
|
|
||||||
u32 src_surface = 0;
|
u32 src_surface = 0;
|
||||||
u32 dst_tex = 0;
|
u32 dst_tex = dst;
|
||||||
|
|
||||||
glGenTextures(1, &dst_tex);
|
if (!dst_tex)
|
||||||
glBindTexture(GL_TEXTURE_2D, dst_tex);
|
{
|
||||||
|
glGenTextures(1, &dst_tex);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, dst_tex);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
|
if (is_argb8)
|
||||||
|
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, dst_dims.width, dst_dims.height);
|
||||||
|
else
|
||||||
|
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB565, dst_dims.width, dst_dims.height);
|
||||||
|
}
|
||||||
|
|
||||||
if (is_argb8)
|
if (is_argb8)
|
||||||
{
|
{
|
||||||
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, clip_dims.width, clip_dims.height);
|
|
||||||
blit_src.blit(fbo_argb8, src_rect, dst_rect);
|
blit_src.blit(fbo_argb8, src_rect, dst_rect);
|
||||||
src_surface = argb8_surface;
|
src_surface = argb8_surface;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB565, clip_dims.width, clip_dims.height);
|
|
||||||
blit_src.blit(fbo_rgb565, src_rect, dst_rect);
|
blit_src.blit(fbo_rgb565, src_rect, dst_rect);
|
||||||
src_surface = rgb565_surface;
|
src_surface = rgb565_surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
glCopyImageSubData(src_surface, GL_TEXTURE_2D, 0, clip_offset.x, clip_offset.y, 0,
|
glCopyImageSubData(src_surface, GL_TEXTURE_2D, 0, clip_offset.x, clip_offset.y, 0,
|
||||||
dst_tex, GL_TEXTURE_2D, 0, 0, 0, 0, clip_dims.width, clip_dims.height, 1);
|
dst_tex, GL_TEXTURE_2D, 0, dst_offset.x, dst_offset.y, 0, clip_dims.width, clip_dims.height, 1);
|
||||||
|
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, old_fbo);
|
||||||
return dst_tex;
|
return dst_tex;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -515,6 +537,18 @@ namespace gl
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cached_texture_section *find_texture(u32 texaddr, u32 range)
|
||||||
|
{
|
||||||
|
auto test = std::make_pair(texaddr, range);
|
||||||
|
for (cached_texture_section &tex : m_texture_cache)
|
||||||
|
{
|
||||||
|
if (tex.overlaps(test) && !tex.is_dirty())
|
||||||
|
return &tex;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
cached_texture_section& create_texture(u32 id, u32 texaddr, u32 texsize, u32 w, u32 h, u16 mipmap)
|
cached_texture_section& create_texture(u32 id, u32 texaddr, u32 texsize, u32 w, u32 h, u16 mipmap)
|
||||||
{
|
{
|
||||||
for (cached_texture_section &tex : m_texture_cache)
|
for (cached_texture_section &tex : m_texture_cache)
|
||||||
@@ -657,11 +691,15 @@ namespace gl
|
|||||||
{
|
{
|
||||||
m_renderer = renderer;
|
m_renderer = renderer;
|
||||||
m_renderer_thread = std::this_thread::get_id();
|
m_renderer_thread = std::this_thread::get_id();
|
||||||
|
|
||||||
|
m_hw_blitter.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void close()
|
void close()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
|
m_hw_blitter.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename RsxTextureType>
|
template<typename RsxTextureType>
|
||||||
@@ -695,6 +733,8 @@ namespace gl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG_ERROR(RSX, "REGULAR IFC: address=0x%X + 0x%X, w=%d h=%d", texaddr, range, tex.width(), tex.height());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if we are re-sampling a subresource of an RTV/DSV texture, bound or otherwise
|
* Check if we are re-sampling a subresource of an RTV/DSV texture, bound or otherwise
|
||||||
* (Turbo: Super Stunt Squad does this; bypassing the need for a sync object)
|
* (Turbo: Super Stunt Squad does this; bypassing the need for a sync object)
|
||||||
@@ -780,10 +820,25 @@ namespace gl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tex.width() || !tex.height())
|
/**
|
||||||
{
|
* Check for subslices from the cache in case we only have a subset a larger texture
|
||||||
LOG_ERROR(RSX, "Texture upload requested but invalid texture dimensions passed");
|
*/
|
||||||
return;
|
cached_texture = find_texture(texaddr, range);
|
||||||
|
if (cached_texture)
|
||||||
|
{
|
||||||
|
const u32 format = tex.format() & ~(CELL_GCM_TEXTURE_LN | CELL_GCM_TEXTURE_UN);
|
||||||
|
const u32 address_offset = texaddr - cached_texture->get_section_base();
|
||||||
|
const u32 bpp = get_format_block_size_in_bytes(format);
|
||||||
|
|
||||||
|
u16 offset_y = address_offset / tex.pitch();
|
||||||
|
u16 offset_x = address_offset % tex.pitch();
|
||||||
|
|
||||||
|
offset_y /= bpp;
|
||||||
|
offset_y /= bpp;
|
||||||
|
|
||||||
|
GLenum ifmt = gl::get_sized_internal_format(format);
|
||||||
|
u32 texture_id = create_temporary_subresource(cached_texture->id(), ifmt, offset_x, offset_y, tex.width(), tex.height());
|
||||||
|
if (texture_id) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gl_texture.init(index, tex);
|
gl_texture.init(index, tex);
|
||||||
@@ -977,28 +1032,60 @@ namespace gl
|
|||||||
|
|
||||||
bool upload_scaled_image(rsx::blit_src_info& src, rsx::blit_dst_info& dst, bool interpolate)
|
bool upload_scaled_image(rsx::blit_src_info& src, rsx::blit_dst_info& dst, bool interpolate)
|
||||||
{
|
{
|
||||||
|
if (dst.swizzled)
|
||||||
|
return false;
|
||||||
|
|
||||||
u32 tmp_tex = 0;
|
u32 tmp_tex = 0;
|
||||||
|
|
||||||
bool dst_is_argb8 = (dst.format == rsx::blit_engine::transfer_destination_format::a8r8g8b8);
|
bool dst_is_argb8 = (dst.format == rsx::blit_engine::transfer_destination_format::a8r8g8b8);
|
||||||
bool src_is_argb8 = (dst.format == rsx::blit_engine::transfer_destination_format::a8r8g8b8);
|
bool src_is_argb8 = (dst.format == rsx::blit_engine::transfer_destination_format::a8r8g8b8);
|
||||||
|
|
||||||
GLenum src_gl_format = src_is_argb8? GL_RGBA8: GL_RGB565;
|
GLenum src_gl_sized_format = src_is_argb8? GL_RGBA8: GL_RGB565;
|
||||||
|
GLenum src_gl_format = src_is_argb8 ? GL_RGBA : GL_RGB;
|
||||||
GLenum src_gl_type = src_is_argb8? GL_UNSIGNED_INT_8_8_8_8: GL_UNSIGNED_SHORT_5_6_5;
|
GLenum src_gl_type = src_is_argb8? GL_UNSIGNED_INT_8_8_8_8: GL_UNSIGNED_SHORT_5_6_5;
|
||||||
|
|
||||||
glGenTextures(1, &tmp_tex);
|
glGenTextures(1, &tmp_tex);
|
||||||
glBindTexture(GL_TEXTURE_2D, tmp_tex);
|
glBindTexture(GL_TEXTURE_2D, tmp_tex);
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, src.pitch);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, src.pitch / (src_is_argb8? 4: 2));
|
||||||
glTexStorage2D(GL_TEXTURE_2D, 0, src_gl_format, src.width, src.height);
|
glPixelStorei(GL_UNPACK_SWAP_BYTES, !src_is_argb8);
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, src.width, src.height, src_gl_format, src_gl_type, src.pixels);
|
glTexStorage2D(GL_TEXTURE_2D, 1, src_gl_sized_format, src.width, src.height);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, src.width, dst.clip_height, src_gl_format, src_gl_type, src.pixels);
|
||||||
|
|
||||||
const areai src_area = {src.offset_x, src.offset_y, src.offset_x + src.width, src.offset_y + src.height};
|
const areai src_area = {0, 0, src.width, src.slice_h};
|
||||||
const areai dst_area = {0, 0, dst.width, dst.height};
|
const areai dst_area = {0, 0, dst.width, dst.height};
|
||||||
const position2i clip_offset = {dst.clip_x, dst.clip_y};
|
const position2i clip_offset = {dst.clip_x, dst.clip_y};
|
||||||
|
const position2i dst_offset = {dst.offset_x, dst.offset_y};
|
||||||
const size2i clip_dimensions = {dst.clip_width, dst.clip_height};
|
const size2i clip_dimensions = {dst.clip_width, dst.clip_height};
|
||||||
|
const size2i dst_dimensions = {dst.pitch/(dst_is_argb8? 4: 2), dst.height};
|
||||||
|
|
||||||
u32 texture = m_hw_blitter.scale_image(tmp_tex, src_area, dst_area, clip_offset, clip_dimensions, dst_is_argb8);
|
auto old_cached_texture = find_texture(dst.rsx_address, dst.pitch * dst.height);
|
||||||
|
u32 dst_surface = 0;
|
||||||
|
|
||||||
|
if (old_cached_texture && old_cached_texture->matches(old_cached_texture->get_section_base(), dst.width, dst.height, 1))
|
||||||
|
dst_surface = old_cached_texture->id();
|
||||||
|
|
||||||
|
u32 texture_id = m_hw_blitter.scale_image(tmp_tex, dst_surface, src_area, dst_area, dst_offset, clip_offset, dst_dimensions, clip_dimensions, dst_is_argb8);
|
||||||
glDeleteTextures(1, &tmp_tex);
|
glDeleteTextures(1, &tmp_tex);
|
||||||
|
|
||||||
|
/* glBindTexture(GL_TEXTURE_2D, texture_id);
|
||||||
|
glPixelStorei(GL_PACK_SWAP_BYTES, !dst_is_argb8);
|
||||||
|
glPixelStorei(GL_PACK_ROW_LENGTH, dst.pitch / (dst_is_argb8 ? 4 : 2));
|
||||||
|
glGetTextureImageEXT(texture_id, GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, dst.pixels); */
|
||||||
|
|
||||||
|
LOG_ERROR(RSX, "SIFM: address=0x%X + 0x%X, x=%d(%d), y=%d(%d), w=%d(%d), h=%d(%d)", dst.rsx_address, dst.pitch * dst.height,
|
||||||
|
dst.offset_x, dst.clip_x, dst.offset_y, dst.clip_y, dst.width, dst.clip_width, dst.height, dst.clip_height);
|
||||||
|
|
||||||
|
if (dst_surface)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
std::lock_guard<std::mutex> lock(m_section_mutex);
|
||||||
|
|
||||||
|
cached_texture_section &cached = create_texture(texture_id, dst.rsx_address, dst.pitch * dst.height, dst.width, dst.height, 1);
|
||||||
|
cached.protect(utils::protection::ro);
|
||||||
|
cached.set_dirty(false);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <rsx_decompiler.h>
|
#include <rsx_decompiler.h>
|
||||||
#include "Utilities/VirtualMemory.h"
|
#include "Utilities/VirtualMemory.h"
|
||||||
#include "Emu/Memory/vm.h"
|
#include "Emu/Memory/vm.h"
|
||||||
|
#include "gcm_enums.h"
|
||||||
|
|
||||||
namespace rsx
|
namespace rsx
|
||||||
{
|
{
|
||||||
@@ -37,7 +38,7 @@ namespace rsx
|
|||||||
u16 offset_y;
|
u16 offset_y;
|
||||||
u16 width;
|
u16 width;
|
||||||
u16 height;
|
u16 height;
|
||||||
u16 slice;
|
u16 slice_h;
|
||||||
u16 pitch;
|
u16 pitch;
|
||||||
void *pixels;
|
void *pixels;
|
||||||
};
|
};
|
||||||
@@ -45,6 +46,8 @@ namespace rsx
|
|||||||
struct blit_dst_info
|
struct blit_dst_info
|
||||||
{
|
{
|
||||||
blit_engine::transfer_destination_format format;
|
blit_engine::transfer_destination_format format;
|
||||||
|
u16 offset_x;
|
||||||
|
u16 offset_y;
|
||||||
u16 width;
|
u16 width;
|
||||||
u16 height;
|
u16 height;
|
||||||
u16 pitch;
|
u16 pitch;
|
||||||
@@ -52,8 +55,10 @@ namespace rsx
|
|||||||
u16 clip_y;
|
u16 clip_y;
|
||||||
u16 clip_width;
|
u16 clip_width;
|
||||||
u16 clip_height;
|
u16 clip_height;
|
||||||
|
|
||||||
bool swizzled;
|
bool swizzled;
|
||||||
void *pixels;
|
void *pixels;
|
||||||
|
u32 rsx_address;
|
||||||
};
|
};
|
||||||
|
|
||||||
class shaders_cache
|
class shaders_cache
|
||||||
|
|||||||
@@ -550,7 +550,9 @@ namespace rsx
|
|||||||
src_info.width = in_w;
|
src_info.width = in_w;
|
||||||
src_info.height = in_h;
|
src_info.height = in_h;
|
||||||
src_info.pitch = in_pitch;
|
src_info.pitch = in_pitch;
|
||||||
src_info.slice = slice_h;
|
src_info.slice_h = slice_h;
|
||||||
|
src_info.offset_x = in_x;
|
||||||
|
src_info.offset_y = in_y;
|
||||||
src_info.pixels = pixels_src;
|
src_info.pixels = pixels_src;
|
||||||
|
|
||||||
dst_info.format = dst_color_format;
|
dst_info.format = dst_color_format;
|
||||||
@@ -560,8 +562,11 @@ namespace rsx
|
|||||||
dst_info.clip_y = clip_y;
|
dst_info.clip_y = clip_y;
|
||||||
dst_info.clip_width = clip_w;
|
dst_info.clip_width = clip_w;
|
||||||
dst_info.clip_height = clip_h;
|
dst_info.clip_height = clip_h;
|
||||||
dst_info.pitch = in_pitch;
|
dst_info.offset_x = out_x;
|
||||||
|
dst_info.offset_y = out_y;
|
||||||
|
dst_info.pitch = out_pitch;
|
||||||
dst_info.pixels = pixels_dst;
|
dst_info.pixels = pixels_dst;
|
||||||
|
dst_info.rsx_address = get_address(dst_offset, dst_dma);
|
||||||
dst_info.swizzled = (method_registers.blit_engine_context_surface() == blit_engine::context_surface::swizzle2d);
|
dst_info.swizzled = (method_registers.blit_engine_context_surface() == blit_engine::context_surface::swizzle2d);
|
||||||
|
|
||||||
if (need_convert)
|
if (need_convert)
|
||||||
|
|||||||
+123
-122
@@ -1,123 +1,124 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug - LLVM|x64">
|
<ProjectConfiguration Include="Debug - LLVM|x64">
|
||||||
<Configuration>Debug - LLVM</Configuration>
|
<Configuration>Debug - LLVM</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Debug - MemLeak|x64">
|
<ProjectConfiguration Include="Debug - MemLeak|x64">
|
||||||
<Configuration>Debug - MemLeak</Configuration>
|
<Configuration>Debug - MemLeak</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Release - LLVM|x64">
|
<ProjectConfiguration Include="Release - LLVM|x64">
|
||||||
<Configuration>Release - LLVM</Configuration>
|
<Configuration>Release - LLVM</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Release|x64">
|
<ProjectConfiguration Include="Release|x64">
|
||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<RootNamespace>GLGSRender</RootNamespace>
|
<RootNamespace>GLGSRender</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
<ProjectGuid>{3384223A-6D97-4799-9862-359F85312892}</ProjectGuid>
|
<ProjectGuid>{3384223A-6D97-4799-9862-359F85312892}</ProjectGuid>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Label="Configuration">
|
<PropertyGroup Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="Shared">
|
<ImportGroup Label="Shared">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets">
|
<ImportGroup Label="PropertySheets">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
<Import Project="..\rpcs3_default.props" />
|
<Import Project="..\rpcs3_default.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Import Project="..\rpcs3_debug.props" />
|
<Import Project="..\rpcs3_debug.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'" Label="PropertySheets">
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'" Label="PropertySheets">
|
||||||
<Import Project="..\rpcs3_debug.props" />
|
<Import Project="..\rpcs3_debug.props" />
|
||||||
<Import Project="..\rpcs3_memleak.props" />
|
<Import Project="..\rpcs3_memleak.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'" Label="PropertySheets">
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'" Label="PropertySheets">
|
||||||
<Import Project="..\rpcs3_debug.props" />
|
<Import Project="..\rpcs3_debug.props" />
|
||||||
<Import Project="..\rpcs3_llvm.props" />
|
<Import Project="..\rpcs3_llvm.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="..\rpcs3_release.props" />
|
<Import Project="..\rpcs3_release.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'" Label="PropertySheets">
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'" Label="PropertySheets">
|
||||||
<Import Project="..\rpcs3_release.props" />
|
<Import Project="..\rpcs3_release.props" />
|
||||||
<Import Project="..\rpcs3_llvm.props" />
|
<Import Project="..\rpcs3_llvm.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
<Optimization>Disabled</Optimization>
|
||||||
</ItemDefinitionGroup>
|
</ClCompile>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
</ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<ClCompile>
|
||||||
</ClCompile>
|
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ItemDefinitionGroup>
|
</ClCompile>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
</ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<ClCompile>
|
||||||
</ClCompile>
|
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ItemDefinitionGroup>
|
</ClCompile>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">
|
</ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">
|
||||||
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<ClCompile>
|
||||||
</ClCompile>
|
<AdditionalIncludeDirectories>..\rsx_program_decompiler\rsx_decompiler;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ItemDefinitionGroup>
|
</ClCompile>
|
||||||
<ItemGroup>
|
</ItemDefinitionGroup>
|
||||||
<ProjectReference Include="emucore.vcxproj">
|
<ItemGroup>
|
||||||
<Project>{c4a10229-4712-4bd2-b63e-50d93c67a038}</Project>
|
<ProjectReference Include="emucore.vcxproj">
|
||||||
</ProjectReference>
|
<Project>{c4a10229-4712-4bd2-b63e-50d93c67a038}</Project>
|
||||||
</ItemGroup>
|
</ProjectReference>
|
||||||
<ItemGroup>
|
</ItemGroup>
|
||||||
<ClInclude Include="Emu\RSX\GL\GLTextOut.h" />
|
<ItemGroup>
|
||||||
<ClInclude Include="Emu\RSX\GL\GLCommonDecompiler.h" />
|
<ClInclude Include="Emu\RSX\GL\GLTextOut.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLFragmentProgram.h" />
|
<ClInclude Include="Emu\RSX\GL\GLCommonDecompiler.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLGSRender.h" />
|
<ClInclude Include="Emu\RSX\GL\GLFragmentProgram.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLProcTable.h" />
|
<ClInclude Include="Emu\RSX\GL\GLGSRender.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLProgramBuffer.h" />
|
<ClInclude Include="Emu\RSX\GL\GLProcTable.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLVertexProgram.h" />
|
<ClInclude Include="Emu\RSX\GL\GLProgramBuffer.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLHelpers.h" />
|
<ClInclude Include="Emu\RSX\GL\GLVertexProgram.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLRenderTargets.h" />
|
<ClInclude Include="Emu\RSX\GL\GLHelpers.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLTextureCache.h" />
|
<ClInclude Include="Emu\RSX\GL\GLRenderTargets.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\OpenGL.h" />
|
<ClInclude Include="Emu\RSX\GL\GLTextureCache.h" />
|
||||||
<ClInclude Include="Emu\RSX\GL\GLTexture.h" />
|
<ClInclude Include="Emu\RSX\GL\OpenGL.h" />
|
||||||
</ItemGroup>
|
<ClInclude Include="Emu\RSX\GL\GLTexture.h" />
|
||||||
<ItemGroup>
|
</ItemGroup>
|
||||||
<ClCompile Include="Emu\RSX\GL\GLCommonDecompiler.cpp" />
|
<ItemGroup>
|
||||||
<ClCompile Include="Emu\RSX\GL\GLFragmentProgram.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLCommonDecompiler.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLGSRender.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLFragmentProgram.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLTextureCache.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLGSRender.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLVertexProgram.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLTextureCache.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLHelpers.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLVertexProgram.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLRenderTargets.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLHelpers.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\OpenGL.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLRenderTargets.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLTexture.cpp" />
|
<ClCompile Include="Emu\RSX\GL\OpenGL.cpp" />
|
||||||
<ClCompile Include="Emu\RSX\GL\GLVertexBuffers.cpp" />
|
<ClCompile Include="Emu\RSX\GL\GLTexture.cpp" />
|
||||||
</ItemGroup>
|
<ClCompile Include="Emu\RSX\GL\GLVertexBuffers.cpp" />
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
</ItemGroup>
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
</ImportGroup>
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
Reference in New Issue
Block a user