Merge remote-tracking branch 'upstream/master' into canary-old-update

This commit is contained in:
illusion 2020-03-08 17:01:45 +11:00
commit e44c450eb7
7 changed files with 39 additions and 19 deletions

View File

@ -4,7 +4,6 @@ language: cpp
os:
- linux
sudo: required
dist: bionic
addons:
apt:
@ -27,10 +26,9 @@ addons:
- libx11-dev
- liblz4-dev
matrix:
jobs:
include:
- env: C_COMPILER=clang-9 CXX_COMPILER=clang++-9 LINT=true
sudo: false
- env: C_COMPILER=clang-9 CXX_COMPILER=clang++-9 BUILD=true CONFIG=Debug
- env: C_COMPILER=clang-9 CXX_COMPILER=clang++-9 BUILD=true CONFIG=Release

View File

@ -1045,12 +1045,12 @@ struct CACHE_CONTROL
static void Emit(X64Emitter& e, const EmitArgType& i) {
bool is_clflush = false, is_prefetch = false;
switch (CacheControlType(i.instr->flags)) {
case CacheControlType::CACHE_CONTOROL_TYPE_DATA_TOUCH:
case CacheControlType::CACHE_CONTOROL_TYPE_DATA_TOUCH_FOR_STORE:
case CacheControlType::CACHE_CONTROL_TYPE_DATA_TOUCH:
case CacheControlType::CACHE_CONTROL_TYPE_DATA_TOUCH_FOR_STORE:
is_prefetch = true;
break;
case CacheControlType::CACHE_CONTOROL_TYPE_DATA_STORE:
case CacheControlType::CACHE_CONTOROL_TYPE_DATA_STORE_AND_FLUSH:
case CacheControlType::CACHE_CONTROL_TYPE_DATA_STORE:
case CacheControlType::CACHE_CONTROL_TYPE_DATA_STORE_AND_FLUSH:
is_clflush = true;
break;
default:

View File

@ -40,10 +40,10 @@ enum LoadStoreFlags {
};
enum CacheControlType {
CACHE_CONTOROL_TYPE_DATA_TOUCH,
CACHE_CONTOROL_TYPE_DATA_TOUCH_FOR_STORE,
CACHE_CONTOROL_TYPE_DATA_STORE,
CACHE_CONTOROL_TYPE_DATA_STORE_AND_FLUSH,
CACHE_CONTROL_TYPE_DATA_TOUCH,
CACHE_CONTROL_TYPE_DATA_TOUCH_FOR_STORE,
CACHE_CONTROL_TYPE_DATA_STORE,
CACHE_CONTROL_TYPE_DATA_STORE_AND_FLUSH,
};
enum ArithmeticFlags {

View File

@ -1091,27 +1091,27 @@ int InstrEmit_dcbf(PPCHIRBuilder& f, const InstrData& i) {
} else {
Value* ea = CalculateEA_0(f, i.X.RA, i.X.RB);
f.CacheControl(ea, 128,
CacheControlType::CACHE_CONTOROL_TYPE_DATA_STORE_AND_FLUSH);
CacheControlType::CACHE_CONTROL_TYPE_DATA_STORE_AND_FLUSH);
}
return 0;
}
int InstrEmit_dcbst(PPCHIRBuilder& f, const InstrData& i) {
Value* ea = CalculateEA_0(f, i.X.RA, i.X.RB);
f.CacheControl(ea, 128, CacheControlType::CACHE_CONTOROL_TYPE_DATA_STORE);
f.CacheControl(ea, 128, CacheControlType::CACHE_CONTROL_TYPE_DATA_STORE);
return 0;
}
int InstrEmit_dcbt(PPCHIRBuilder& f, const InstrData& i) {
Value* ea = CalculateEA_0(f, i.X.RA, i.X.RB);
f.CacheControl(ea, 128, CacheControlType::CACHE_CONTOROL_TYPE_DATA_TOUCH);
f.CacheControl(ea, 128, CacheControlType::CACHE_CONTROL_TYPE_DATA_TOUCH);
return 0;
}
int InstrEmit_dcbtst(PPCHIRBuilder& f, const InstrData& i) {
Value* ea = CalculateEA_0(f, i.X.RA, i.X.RB);
f.CacheControl(ea, 128,
CacheControlType::CACHE_CONTOROL_TYPE_DATA_TOUCH_FOR_STORE);
CacheControlType::CACHE_CONTROL_TYPE_DATA_TOUCH_FOR_STORE);
return 0;
}

View File

@ -19,6 +19,7 @@ constexpr Register WAIT_UNTIL::register_index;
constexpr Register SQ_PROGRAM_CNTL::register_index;
constexpr Register SQ_CONTEXT_MISC::register_index;
constexpr Register VGT_DRAW_INITIATOR::register_index;
constexpr Register VGT_OUTPUT_PATH_CNTL::register_index;
constexpr Register VGT_HOS_CNTL::register_index;

View File

@ -1009,10 +1009,16 @@ dword_result_t NetDll_sendto(dword_t caller, dword_t socket_handle,
}
DECLARE_XAM_EXPORT1(NetDll_sendto, kNetworking, kImplemented);
dword_result_t NetDll___WSAFDIsSet(dword_t socket_handle, lpvoid_t fd_set) {
dword_result_t NetDll___WSAFDIsSet(dword_t socket_handle,
pointer_t<x_fd_set> fd_set) {
for (uint32_t i = 0; i < fd_set->fd_count.value; i++) {
if (fd_set->fd_array[i] == socket_handle) {
return 1;
}
}
return 0;
}
DECLARE_XAM_EXPORT1(NetDll___WSAFDIsSet, kNetworking, kStub);
DECLARE_XAM_EXPORT1(NetDll___WSAFDIsSet, kNetworking, kImplemented);
void RegisterNetExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state) {

View File

@ -39,6 +39,9 @@ class MessageBoxDialog : public xe::ui::ImGuiDialog {
buttons_(std::move(buttons)),
default_button_(default_button),
out_chosen_button_(out_chosen_button) {
if (!title_.size()) {
title_ = "Message Box";
}
if (out_chosen_button) {
*out_chosen_button = default_button;
}
@ -53,7 +56,9 @@ class MessageBoxDialog : public xe::ui::ImGuiDialog {
}
if (ImGui::BeginPopupModal(title_.c_str(), nullptr,
ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::Text("%s", description_.c_str());
if (description_.size()) {
ImGui::Text("%s", description_.c_str());
}
if (first_draw) {
ImGui::SetKeyboardFocusHere();
}
@ -214,6 +219,14 @@ class KeyboardInputDialog : public xe::ui::ImGuiDialog {
default_text_(xe::to_string(default_text)),
out_text_(out_text),
max_length_(max_length) {
if (!title_.size()) {
if (!description_.size()) {
title_ = "Keyboard Input";
} else {
title_ = description_;
description_ = "";
}
}
if (out_text_) {
*out_text_ = default_text;
}
@ -231,7 +244,9 @@ class KeyboardInputDialog : public xe::ui::ImGuiDialog {
}
if (ImGui::BeginPopupModal(title_.c_str(), nullptr,
ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::TextWrapped("%s", description_.c_str());
if (description_.size()) {
ImGui::TextWrapped("%s", description_.c_str());
}
if (first_draw) {
ImGui::SetKeyboardFocusHere();
}