Merge branch 'master' into d3d12

This commit is contained in:
Triang3l 2019-04-18 17:54:57 +03:00
commit ec92d46480
16 changed files with 81 additions and 66 deletions

View File

@ -7,7 +7,7 @@ objdir(build_obj)
-- Define an ARCH variable -- Define an ARCH variable
-- Only use this to enable architecture-specific functionality. -- Only use this to enable architecture-specific functionality.
if os.is("linux") then if os.istarget("linux") then
ARCH = os.outputof("uname -p") ARCH = os.outputof("uname -p")
else else
ARCH = "unknown" ARCH = "unknown"
@ -221,9 +221,9 @@ solution("xenia")
uuid("931ef4b0-6170-4f7a-aaf2-0fece7632747") uuid("931ef4b0-6170-4f7a-aaf2-0fece7632747")
startproject("xenia-app") startproject("xenia-app")
architecture("x86_64") architecture("x86_64")
if os.is("linux") then if os.istarget("linux") then
platforms({"Linux"}) platforms({"Linux"})
elseif os.is("windows") then elseif os.istarget("windows") then
platforms({"Windows"}) platforms({"Windows"})
-- Minimum version to support ID3D12GraphicsCommandList1 (for -- Minimum version to support ID3D12GraphicsCommandList1 (for
-- SetSamplePositions). -- SetSamplePositions).
@ -266,7 +266,7 @@ solution("xenia")
include("src/xenia/ui/vulkan") include("src/xenia/ui/vulkan")
include("src/xenia/vfs") include("src/xenia/vfs")
if os.is("windows") then if os.istarget("windows") then
include("src/xenia/apu/xaudio2") include("src/xenia/apu/xaudio2")
include("src/xenia/gpu/d3d12") include("src/xenia/gpu/d3d12")
include("src/xenia/hid/winkey") include("src/xenia/hid/winkey")

View File

@ -40,9 +40,6 @@ project("xenia-app")
"xenia-vfs", "xenia-vfs",
"xxhash", "xxhash",
}) })
flags({
"WinMain", -- Use WinMain instead of main.
})
defines({ defines({
"XBYAK_NO_OP_NAMES", "XBYAK_NO_OP_NAMES",
"XBYAK_ENABLE_OMITTED_OPERAND", "XBYAK_ENABLE_OMITTED_OPERAND",

View File

@ -497,22 +497,22 @@ void X64ThunkEmitter::EmitSaveVolatileRegs() {
mov(qword[rsp + offsetof(StackLayout::Thunk, r[5])], r10); mov(qword[rsp + offsetof(StackLayout::Thunk, r[5])], r10);
mov(qword[rsp + offsetof(StackLayout::Thunk, r[6])], r11); mov(qword[rsp + offsetof(StackLayout::Thunk, r[6])], r11);
// movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[0])], xmm0); // vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[0])], xmm0);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[1])], xmm1); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[1])], xmm1);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[2])], xmm2); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[2])], xmm2);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[3])], xmm3); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[3])], xmm3);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[4])], xmm4); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[4])], xmm4);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[5])], xmm5); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[5])], xmm5);
} }
void X64ThunkEmitter::EmitLoadVolatileRegs() { void X64ThunkEmitter::EmitLoadVolatileRegs() {
// Load volatile registers from our stack frame. // Load volatile registers from our stack frame.
// movaps(xmm0, qword[rsp + offsetof(StackLayout::Thunk, xmm[0])]); // vmovaps(xmm0, qword[rsp + offsetof(StackLayout::Thunk, xmm[0])]);
movaps(xmm1, qword[rsp + offsetof(StackLayout::Thunk, xmm[1])]); vmovaps(xmm1, qword[rsp + offsetof(StackLayout::Thunk, xmm[1])]);
movaps(xmm2, qword[rsp + offsetof(StackLayout::Thunk, xmm[2])]); vmovaps(xmm2, qword[rsp + offsetof(StackLayout::Thunk, xmm[2])]);
movaps(xmm3, qword[rsp + offsetof(StackLayout::Thunk, xmm[3])]); vmovaps(xmm3, qword[rsp + offsetof(StackLayout::Thunk, xmm[3])]);
movaps(xmm4, qword[rsp + offsetof(StackLayout::Thunk, xmm[4])]); vmovaps(xmm4, qword[rsp + offsetof(StackLayout::Thunk, xmm[4])]);
movaps(xmm5, qword[rsp + offsetof(StackLayout::Thunk, xmm[5])]); vmovaps(xmm5, qword[rsp + offsetof(StackLayout::Thunk, xmm[5])]);
// mov(rax, qword[rsp + offsetof(StackLayout::Thunk, r[0])]); // mov(rax, qword[rsp + offsetof(StackLayout::Thunk, r[0])]);
mov(rcx, qword[rsp + offsetof(StackLayout::Thunk, r[1])]); mov(rcx, qword[rsp + offsetof(StackLayout::Thunk, r[1])]);
@ -535,29 +535,29 @@ void X64ThunkEmitter::EmitSaveNonvolatileRegs() {
mov(qword[rsp + offsetof(StackLayout::Thunk, r[7])], r14); mov(qword[rsp + offsetof(StackLayout::Thunk, r[7])], r14);
mov(qword[rsp + offsetof(StackLayout::Thunk, r[8])], r15); mov(qword[rsp + offsetof(StackLayout::Thunk, r[8])], r15);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[0])], xmm6); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[0])], xmm6);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[1])], xmm7); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[1])], xmm7);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[2])], xmm8); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[2])], xmm8);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[3])], xmm9); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[3])], xmm9);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[4])], xmm10); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[4])], xmm10);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[5])], xmm11); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[5])], xmm11);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[6])], xmm12); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[6])], xmm12);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[7])], xmm13); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[7])], xmm13);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[8])], xmm14); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[8])], xmm14);
movaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[9])], xmm15); vmovaps(qword[rsp + offsetof(StackLayout::Thunk, xmm[9])], xmm15);
} }
void X64ThunkEmitter::EmitLoadNonvolatileRegs() { void X64ThunkEmitter::EmitLoadNonvolatileRegs() {
movaps(xmm6, qword[rsp + offsetof(StackLayout::Thunk, xmm[0])]); vmovaps(xmm6, qword[rsp + offsetof(StackLayout::Thunk, xmm[0])]);
movaps(xmm7, qword[rsp + offsetof(StackLayout::Thunk, xmm[1])]); vmovaps(xmm7, qword[rsp + offsetof(StackLayout::Thunk, xmm[1])]);
movaps(xmm8, qword[rsp + offsetof(StackLayout::Thunk, xmm[2])]); vmovaps(xmm8, qword[rsp + offsetof(StackLayout::Thunk, xmm[2])]);
movaps(xmm9, qword[rsp + offsetof(StackLayout::Thunk, xmm[3])]); vmovaps(xmm9, qword[rsp + offsetof(StackLayout::Thunk, xmm[3])]);
movaps(xmm10, qword[rsp + offsetof(StackLayout::Thunk, xmm[4])]); vmovaps(xmm10, qword[rsp + offsetof(StackLayout::Thunk, xmm[4])]);
movaps(xmm11, qword[rsp + offsetof(StackLayout::Thunk, xmm[5])]); vmovaps(xmm11, qword[rsp + offsetof(StackLayout::Thunk, xmm[5])]);
movaps(xmm12, qword[rsp + offsetof(StackLayout::Thunk, xmm[6])]); vmovaps(xmm12, qword[rsp + offsetof(StackLayout::Thunk, xmm[6])]);
movaps(xmm13, qword[rsp + offsetof(StackLayout::Thunk, xmm[7])]); vmovaps(xmm13, qword[rsp + offsetof(StackLayout::Thunk, xmm[7])]);
movaps(xmm14, qword[rsp + offsetof(StackLayout::Thunk, xmm[8])]); vmovaps(xmm14, qword[rsp + offsetof(StackLayout::Thunk, xmm[8])]);
movaps(xmm15, qword[rsp + offsetof(StackLayout::Thunk, xmm[9])]); vmovaps(xmm15, qword[rsp + offsetof(StackLayout::Thunk, xmm[9])]);
mov(rbx, qword[rsp + offsetof(StackLayout::Thunk, r[0])]); mov(rbx, qword[rsp + offsetof(StackLayout::Thunk, r[0])]);
mov(rcx, qword[rsp + offsetof(StackLayout::Thunk, r[1])]); mov(rcx, qword[rsp + offsetof(StackLayout::Thunk, r[1])]);

View File

@ -59,9 +59,6 @@ project("xenia-gpu-vulkan-trace-viewer")
"xenia-vfs", "xenia-vfs",
"xxhash", "xxhash",
}) })
flags({
"WinMain", -- Use WinMain instead of main.
})
defines({ defines({
}) })
includedirs({ includedirs({

View File

@ -33,9 +33,6 @@ project("xenia-hid-demo")
"xenia-ui", "xenia-ui",
"xenia-ui-vulkan", "xenia-ui-vulkan",
}) })
flags({
"WinMain", -- Use WinMain instead of main.
})
defines({ defines({
"GLEW_STATIC=1", "GLEW_STATIC=1",
"GLEW_MX=1", "GLEW_MX=1",

View File

@ -37,9 +37,6 @@ project("xenia-ui-window-vulkan-demo")
"xenia-ui-spirv", "xenia-ui-spirv",
"xenia-ui-vulkan", "xenia-ui-vulkan",
}) })
flags({
"WinMain", -- Use WinMain instead of main.
})
defines({ defines({
}) })
includedirs({ includedirs({

View File

@ -26,9 +26,6 @@ project("xenia-vfs-dump")
"xenia-base", "xenia-base",
"xenia-vfs", "xenia-vfs",
}) })
flags({
-- "WinMain", -- Use WinMain instead of main.
})
defines({}) defines({})
includedirs({ includedirs({
project_root.."/third_party/gflags/src", project_root.."/third_party/gflags/src",

@ -1 +1 @@
Subproject commit 61d799c8f9d1ab8130942b2d9dcd2819b9d8b049 Subproject commit 8593bc9480924f0d0724a4533e8de70222e6a08d

Binary file not shown.

Binary file not shown.

View File

@ -69,9 +69,8 @@ def build_premake():
elif sys.platform == 'win32': elif sys.platform == 'win32':
# Grab Visual Studio version and execute shell to set up environment. # Grab Visual Studio version and execute shell to set up environment.
vs_version = import_vs_environment() vs_version = import_vs_environment()
if vs_version != 2015: if vs_version is None:
print('ERROR: Visual Studio 2015 not found!') print('ERROR: Visual Studio not found!')
print('Ensure you have the VS140COMNTOOLS environment variable!')
sys.exit(1) sys.exit(1)
return return
@ -143,17 +142,30 @@ def import_vs_environment():
A version such as 2015 or None if no VS is found. A version such as 2015 or None if no VS is found.
""" """
version = 0 version = 0
candidate_path = subprocess.check_output('../../third_party/vswhere/vswhere.exe -all -version "[15,)" -latest -format value -property installationPath', shell=False, universal_newlines=True)
candidate_path = candidate_path.strip()
tools_path = '' tools_path = ''
if 'VS140COMNTOOLS' in os.environ: if candidate_path:
tools_path = os.path.join(candidate_path, 'vc\\auxiliary\\build\\vcvarsall.bat')
if os.path.isfile(tools_path) and os.access(tools_path, os.X_OK):
version = subprocess.check_output('../../third_party/vswhere/vswhere.exe -version "[15,)" -latest -format value -property catalog_productLineVersion', shell=False, universal_newlines=True)
version = version.strip()
if version:
version = int(version)
else:
version = 2017
if version == 0 and 'VS140COMNTOOLS' in os.environ:
version = 2015 version = 2015
tools_path = os.environ['VS140COMNTOOLS'] tools_path = os.environ['VS140COMNTOOLS']
tools_path = os.path.join(tools_path, '..\\..\\vc\\vcvarsall.bat')
if version == 0: if version == 0:
return None return None
tools_path = os.path.join(tools_path, '..\\..\\vc\\vcvarsall.bat')
args = [tools_path, '&&', 'set'] args = [tools_path, 'x64', '&&', 'set']
popen = subprocess.Popen( popen = subprocess.Popen(
args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
variables, _ = popen.communicate() variables, _ = popen.communicate()
envvars_to_save = ( envvars_to_save = (
'devenvdir', 'devenvdir',

View File

@ -1,3 +1,5 @@
require("vstudio")
include("scripts/build_paths.lua") include("scripts/build_paths.lua")
include("scripts/force_compile_as_c.lua") include("scripts/force_compile_as_c.lua")
include("scripts/force_compile_as_cc.lua") include("scripts/force_compile_as_cc.lua")

View File

@ -7,7 +7,7 @@ build_tools = "tools/build"
build_scripts = build_tools .. "/scripts" build_scripts = build_tools .. "/scripts"
build_tools_src = build_tools .. "/src" build_tools_src = build_tools .. "/src"
if os.is("windows") then if os.istarget("windows") then
platform_suffix = "win" platform_suffix = "win"
else else
platform_suffix = "posix" platform_suffix = "posix"

View File

@ -21,7 +21,11 @@ if premake.override then
-- for msvc -- for msvc
premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition) premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition)
if cfg.abspath and table.contains(forced_c_files, cfg.abspath) then if cfg.abspath and table.contains(forced_c_files, cfg.abspath) then
_p(3,'<CompileAs %s>CompileAsC</CompileAs>', condition) if condition == nil or condition == '' then
_p(3,'<CompileAs>CompileAsC</CompileAs>')
else
_p(3,'<CompileAs Condition="\'$(Configuration)|$(Platform)\'==\'%s\'">CompileAsC</CompileAs>', condition)
end
end end
return base(cfg, condition) return base(cfg, condition)
end) end)

View File

@ -21,7 +21,11 @@ if premake.override then
-- for msvc -- for msvc
premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition) premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition)
if cfg.abspath and table.contains(forced_cc_files, cfg.abspath) then if cfg.abspath and table.contains(forced_cc_files, cfg.abspath) then
_p(3,'<CompileAs %s>CompileAsCpp</CompileAs>', condition) if condition == nil or condition == '' then
_p(3,'<CompileAs>CompileAsCpp</CompileAs>')
else
_p(3,'<CompileAs Condition="\'$(Configuration)|$(Platform)\'==\'%s\'">CompileAsCpp</CompileAs>', condition)
end
end end
return base(cfg, condition) return base(cfg, condition)
end) end)

View File

@ -100,7 +100,12 @@ def import_vs_environment():
if candidate_path: if candidate_path:
tools_path = os.path.join(candidate_path, 'vc\\auxiliary\\build\\vcvarsall.bat') tools_path = os.path.join(candidate_path, 'vc\\auxiliary\\build\\vcvarsall.bat')
if os.path.isfile(tools_path) and os.access(tools_path, os.X_OK): if os.path.isfile(tools_path) and os.access(tools_path, os.X_OK):
version = 2017 version = subprocess.check_output('third_party/vswhere/vswhere.exe -version "[15,)" -latest -format value -property catalog_productLineVersion', shell=False, universal_newlines=True)
version = version.strip()
if version:
version = int(version)
else:
version = 2017
if version == 0 and 'VS140COMNTOOLS' in os.environ: if version == 0 and 'VS140COMNTOOLS' in os.environ:
version = 2015 version = 2015
tools_path = os.environ['VS140COMNTOOLS'] tools_path = os.environ['VS140COMNTOOLS']
@ -317,16 +322,19 @@ def run_premake(target_os, action, cc=None):
target_os: target --os to pass to premake. target_os: target --os to pass to premake.
action: action to preform. action: action to preform.
""" """
ret = subprocess.call([ args = [
sys.executable, sys.executable,
os.path.join('tools', 'build', 'premake'), os.path.join('tools', 'build', 'premake'),
'--file=premake5.lua', '--file=premake5.lua',
'--os=%s' % target_os, '--os=%s' % target_os,
'--cc=%s' % ('clang' if not cc else cc),
'--test-suite-mode=combined', '--test-suite-mode=combined',
'--verbose', '--verbose',
action, action,
], shell=False) ]
if cc:
args.insert(4, '--cc=%s' % cc)
ret = subprocess.call(args, shell=False)
if ret == 0: if ret == 0:
generate_version_h() generate_version_h()