android stuff

This commit is contained in:
DH 2025-02-24 01:21:21 +03:00 committed by Megamouse
parent 11e214f332
commit 798c194025
11 changed files with 304 additions and 236 deletions

View file

@ -84,8 +84,12 @@ endif()
# hidapi # hidapi
if (NOT ANDROID)
add_subdirectory(hidapi) add_subdirectory(hidapi)
else()
add_library(3rdparty_hidapi INTERFACE)
target_compile_definitions(3rdparty_hidapi INTERFACE WITHOUT_HIDAPI=1)
endif()
# glslang # glslang
add_subdirectory(glslang EXCLUDE_FROM_ALL) add_subdirectory(glslang EXCLUDE_FROM_ALL)
@ -99,6 +103,7 @@ add_subdirectory(yaml-cpp)
# OpenGL # OpenGL
if (NOT ANDROID)
find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL) find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL)
add_library(3rdparty_opengl INTERFACE) add_library(3rdparty_opengl INTERFACE)
@ -115,7 +120,10 @@ elseif(APPLE)
else() else()
target_link_libraries(3rdparty_opengl INTERFACE OpenGL::GL OpenGL::GLU OpenGL::GLX) target_link_libraries(3rdparty_opengl INTERFACE OpenGL::GL OpenGL::GLU OpenGL::GLX)
endif() endif()
else()
add_library(3rdparty_opengl INTERFACE)
target_compile_definitions(3rdparty_opengl INTERFACE WITHOUT_OPENGL=1)
endif()
# stblib # stblib
add_subdirectory(stblib) add_subdirectory(stblib)
@ -181,7 +189,7 @@ if(USE_VULKAN)
target_compile_definitions(3rdparty_vulkan INTERFACE -DHAVE_VULKAN) target_compile_definitions(3rdparty_vulkan INTERFACE -DHAVE_VULKAN)
target_link_libraries(3rdparty_vulkan INTERFACE Vulkan::Vulkan) target_link_libraries(3rdparty_vulkan INTERFACE Vulkan::Vulkan)
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE AND NOT ANDROID)
find_package(Wayland) find_package(Wayland)
if (WAYLAND_FOUND) if (WAYLAND_FOUND)
target_include_directories(3rdparty_vulkan target_include_directories(3rdparty_vulkan
@ -205,7 +213,12 @@ endif()
add_subdirectory(asmjit EXCLUDE_FROM_ALL) add_subdirectory(asmjit EXCLUDE_FROM_ALL)
# OpenAL # OpenAL
if (NOT ANDROID)
add_subdirectory(OpenAL EXCLUDE_FROM_ALL) add_subdirectory(OpenAL EXCLUDE_FROM_ALL)
else()
add_library(3rdparty_openal INTERFACE)
target_compile_definitions(3rdparty_openal INTERFACE WITHOUT_OPENAL=1)
endif()
# FAudio # FAudio
set(FAUDIO_TARGET 3rdparty_dummy_lib) set(FAUDIO_TARGET 3rdparty_dummy_lib)
@ -246,6 +259,7 @@ set_property(TARGET ${FAUDIO_TARGET} PROPERTY FOLDER "3rdparty/")
# FFMPEG # FFMPEG
if(NOT ANDROID)
add_library(3rdparty_ffmpeg INTERFACE) add_library(3rdparty_ffmpeg INTERFACE)
# Select the version of ffmpeg to use, default is builtin # Select the version of ffmpeg to use, default is builtin
@ -264,7 +278,7 @@ else()
if (WIN32) if (WIN32)
target_link_libraries(3rdparty_ffmpeg INTERFACE "Bcrypt.lib") target_link_libraries(3rdparty_ffmpeg INTERFACE "Bcrypt.lib")
endif() endif()
else()
find_library(FFMPEG_LIB_AVFORMAT avformat PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH) find_library(FFMPEG_LIB_AVFORMAT avformat PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH)
find_library(FFMPEG_LIB_AVCODEC avcodec PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH) find_library(FFMPEG_LIB_AVCODEC avcodec PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH)
find_library(FFMPEG_LIB_AVUTIL avutil PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH) find_library(FFMPEG_LIB_AVUTIL avutil PATHS ${FFMPEG_LIB_DIR} NO_DEFAULT_PATH)
@ -279,14 +293,14 @@ else()
${FFMPEG_LIB_SWSCALE} ${FFMPEG_LIB_SWSCALE}
${FFMPEG_LIB_SWRESAMPLE} ${FFMPEG_LIB_SWRESAMPLE}
) )
endif()
target_include_directories(3rdparty_ffmpeg INTERFACE "ffmpeg/include") target_include_directories(3rdparty_ffmpeg INTERFACE "ffmpeg/include")
endif() endif()
endif()
# GLEW # GLEW
add_library(3rdparty_glew INTERFACE) add_library(3rdparty_glew INTERFACE)
if(NOT MSVC) if(NOT MSVC AND NOT ANDROID)
find_package(GLEW REQUIRED) find_package(GLEW REQUIRED)
target_link_libraries(3rdparty_glew INTERFACE GLEW::GLEW) target_link_libraries(3rdparty_glew INTERFACE GLEW::GLEW)
endif() endif()

View file

@ -77,7 +77,7 @@ int main()
elseif (UNIX) elseif (UNIX)
# Unix is for all *NIX systems including OSX # Unix is for all *NIX systems including OSX
add_compile_definitions(PLATFORM_POSIX=1 HAVE_CLOCK_GETTIME) add_compile_definitions(PLATFORM_POSIX=1 HAVE_CLOCK_GETTIME)
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR ANDROID)
set(OS_LINUX 1) set(OS_LINUX 1)
set(PLATFORM_SRC set(PLATFORM_SRC
@ -87,9 +87,11 @@ elseif (UNIX)
events_posix.c events_posix.c
) )
if(NOT ANDROID)
list(APPEND LIBUSB_LIBRARIES rt) list(APPEND LIBUSB_LIBRARIES rt)
endif() endif()
endif() endif()
endif()
if (NOT PLATFORM_SRC) if (NOT PLATFORM_SRC)
message(FATAL_ERROR "Unsupported platform ${CMAKE_SYSTEM_NAME}. Currently only support Windows, OSX, & Linux.") message(FATAL_ERROR "Unsupported platform ${CMAKE_SYSTEM_NAME}. Currently only support Windows, OSX, & Linux.")

View file

@ -2172,7 +2172,11 @@ void thread_base::start()
void thread_base::initialize(void (*error_cb)()) void thread_base::initialize(void (*error_cb)())
{ {
#ifndef _WIN32 #ifndef _WIN32
#ifdef ANDROID
m_thread.release(pthread_self());
#else
m_thread.release(reinterpret_cast<u64>(pthread_self())); m_thread.release(reinterpret_cast<u64>(pthread_self()));
#endif
#endif #endif
// Initialize TLS variables // Initialize TLS variables
@ -2617,6 +2621,8 @@ thread_base::~thread_base() noexcept
const HANDLE handle0 = reinterpret_cast<HANDLE>(m_thread.load()); const HANDLE handle0 = reinterpret_cast<HANDLE>(m_thread.load());
WaitForSingleObject(handle0, INFINITE); WaitForSingleObject(handle0, INFINITE);
CloseHandle(handle0); CloseHandle(handle0);
#elif defined(ANDROID)
pthread_join(m_thread.load(), nullptr);
#else #else
pthread_join(reinterpret_cast<pthread_t>(m_thread.load()), nullptr); pthread_join(reinterpret_cast<pthread_t>(m_thread.load()), nullptr);
#endif #endif
@ -2691,7 +2697,13 @@ u64 thread_base::get_cycles()
#else #else
clockid_t _clock; clockid_t _clock;
struct timespec thread_time; struct timespec thread_time;
if (!pthread_getcpuclockid(reinterpret_cast<pthread_t>(handle), &_clock) && !clock_gettime(_clock, &thread_time)) pthread_t thread_id;
#ifdef ANDROID
thread_id = handle;
#else
thread_id = reinterpret_cast<pthread_t>(handle);
#endif
if (!pthread_getcpuclockid(thread_id, &_clock) && !clock_gettime(_clock, &thread_time))
{ {
cycles = static_cast<u64>(thread_time.tv_sec) * 1'000'000'000 + thread_time.tv_nsec; cycles = static_cast<u64>(thread_time.tv_sec) * 1'000'000'000 + thread_time.tv_nsec;
#endif #endif
@ -3194,7 +3206,7 @@ void thread_ctrl::set_thread_affinity_mask(u64 mask)
thread_affinity_policy_data_t policy = { static_cast<integer_t>(std::countr_zero(mask)) }; thread_affinity_policy_data_t policy = { static_cast<integer_t>(std::countr_zero(mask)) };
thread_port_t mach_thread = pthread_mach_thread_np(pthread_self()); thread_port_t mach_thread = pthread_mach_thread_np(pthread_self());
thread_policy_set(mach_thread, THREAD_AFFINITY_POLICY, reinterpret_cast<thread_policy_t>(&policy), !mask ? 0 : 1); thread_policy_set(mach_thread, THREAD_AFFINITY_POLICY, reinterpret_cast<thread_policy_t>(&policy), !mask ? 0 : 1);
#elif defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) #elif !defined(ANDROID) && (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__))
if (!mask) if (!mask)
{ {
// Reset affinity mask // Reset affinity mask
@ -3246,7 +3258,7 @@ u64 thread_ctrl::get_thread_affinity_mask()
sig_log.error("Failed to get thread affinity mask."); sig_log.error("Failed to get thread affinity mask.");
return 0; return 0;
#elif defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) #elif !defined(ANDROID) && (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__))
cpu_set_t cs; cpu_set_t cs;
CPU_ZERO(&cs); CPU_ZERO(&cs);
@ -3313,6 +3325,8 @@ u64 thread_ctrl::get_tid()
{ {
#ifdef _WIN32 #ifdef _WIN32
return GetCurrentThreadId(); return GetCurrentThreadId();
#elif defined(ANDROID)
return static_cast<u64>(pthread_self());
#elif defined(__linux__) #elif defined(__linux__)
return syscall(SYS_gettid); return syscall(SYS_gettid);
#else #else

View file

@ -126,15 +126,17 @@ namespace utils
std::vector<void*> get_backtrace(int max_depth) std::vector<void*> get_backtrace(int max_depth)
{ {
std::vector<void*> result(max_depth); std::vector<void*> result(max_depth);
#ifndef ANDROID
int depth = backtrace(result.data(), max_depth); int depth = backtrace(result.data(), max_depth);
result.resize(depth); result.resize(depth);
#endif
return result; return result;
} }
std::vector<std::string> get_backtrace_symbols(const std::vector<void*>& stack) std::vector<std::string> get_backtrace_symbols(const std::vector<void*>& stack)
{ {
std::vector<std::string> result; std::vector<std::string> result;
#ifndef ANDROID
result.reserve(stack.size()); result.reserve(stack.size());
const auto symbols = backtrace_symbols(stack.data(), static_cast<int>(stack.size())); const auto symbols = backtrace_symbols(stack.data(), static_cast<int>(stack.size()));
@ -144,6 +146,7 @@ namespace utils
} }
free(symbols); free(symbols);
#endif
return result; return result;
} }
#endif #endif

View file

@ -20,7 +20,7 @@ elseif(NOT WIN32 AND NOT CMAKE_CXX_FLAGS MATCHES "LIBICONV_PLUG")
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "iconv") set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "iconv")
endif() endif()
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE AND NOT ANDROID)
add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3") add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3")
# Optionally enable X11 for window management # Optionally enable X11 for window management
find_package(X11) find_package(X11)
@ -33,16 +33,24 @@ if(UNIX AND NOT APPLE)
endif() endif()
endif() endif()
if (NOT ANDROID)
# Qt # Qt
# finds Qt libraries and setups custom commands for MOC and UIC # finds Qt libraries and setups custom commands for MOC and UIC
# Must be done here because generated MOC and UIC targets cant # Must be done here because generated MOC and UIC targets cant
# be found otherwise # be found otherwise
include(${CMAKE_SOURCE_DIR}/3rdparty/qt6.cmake) include(${CMAKE_SOURCE_DIR}/3rdparty/qt6.cmake)
endif()
# subdirectories # subdirectories
add_subdirectory(Emu) add_subdirectory(Emu)
add_subdirectory(rpcs3qt)
if (NOT ANDROID)
add_subdirectory(rpcs3qt)
endif()
gen_git_version(${CMAKE_CURRENT_SOURCE_DIR})
if (NOT ANDROID)
if(WIN32) if(WIN32)
add_executable(rpcs3 WIN32) add_executable(rpcs3 WIN32)
target_sources(rpcs3 PRIVATE rpcs3.rc) target_sources(rpcs3 PRIVATE rpcs3.rc)
@ -93,7 +101,6 @@ target_sources(rpcs3
Input/xinput_pad_handler.cpp Input/xinput_pad_handler.cpp
) )
gen_git_version(${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(rpcs3 set_target_properties(rpcs3
PROPERTIES PROPERTIES
AUTOMOC ON AUTOMOC ON
@ -117,7 +124,7 @@ target_link_libraries(rpcs3
# Unix display manager # Unix display manager
if(X11_FOUND) if(X11_FOUND)
target_link_libraries(rpcs3 PRIVATE X11::X11) target_link_libraries(rpcs3 PRIVATE X11::X11)
elseif(USE_VULKAN AND UNIX AND NOT WAYLAND_FOUND AND NOT APPLE) elseif(USE_VULKAN AND UNIX AND NOT WAYLAND_FOUND AND NOT APPLE AND NOT ANDROID)
# Wayland has been checked in 3rdparty/CMakeLists.txt already. # Wayland has been checked in 3rdparty/CMakeLists.txt already.
message(FATAL_ERROR "RPCS3 requires either X11 or Wayland (or both) for Vulkan.") message(FATAL_ERROR "RPCS3 requires either X11 or Wayland (or both) for Vulkan.")
endif() endif()
@ -138,6 +145,7 @@ if(USE_PRECOMPILED_HEADERS)
target_precompile_headers(rpcs3 PRIVATE stdafx.h) target_precompile_headers(rpcs3 PRIVATE stdafx.h)
endif() endif()
# Copy icons to executable directory # Copy icons to executable directory
if(APPLE) if(APPLE)
if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
@ -192,3 +200,4 @@ if(UNIX AND NOT APPLE)
install(DIRECTORY ../bin/test install(DIRECTORY ../bin/test
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3) DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
endif() endif()
endif()

View file

@ -46,7 +46,14 @@ target_link_libraries(rpcs3_emu
# For stdafx.h # For stdafx.h
target_include_directories(rpcs3_emu target_include_directories(rpcs3_emu
PUBLIC PUBLIC
${PROJECT_SOURCE_DIR}/rpcs3) ${CMAKE_CURRENT_SOURCE_DIR}/../..
${CMAKE_CURRENT_SOURCE_DIR}/..
)
target_include_directories(rpcs3_emu
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../../3rdparty
)
# Utilities # Utilities
target_sources(rpcs3_emu PRIVATE target_sources(rpcs3_emu PRIVATE
@ -494,34 +501,6 @@ target_sources(rpcs3_emu PRIVATE
RSX/Core/RSXDrawCommands.cpp RSX/Core/RSXDrawCommands.cpp
RSX/gcm_enums.cpp RSX/gcm_enums.cpp
RSX/gcm_printing.cpp RSX/gcm_printing.cpp
RSX/GL/GLCommonDecompiler.cpp
RSX/GL/GLCompute.cpp
RSX/GL/GLDMA.cpp
RSX/GL/GLDraw.cpp
RSX/GL/GLFragmentProgram.cpp
RSX/GL/GLGSRender.cpp
RSX/GL/GLHelpers.cpp
RSX/GL/GLOverlays.cpp
RSX/GL/GLPipelineCompiler.cpp
RSX/GL/GLPresent.cpp
RSX/GL/GLRenderTargets.cpp
RSX/GL/GLResolveHelper.cpp
RSX/GL/GLShaderInterpreter.cpp
RSX/GL/GLTexture.cpp
RSX/GL/GLTextureCache.cpp
RSX/GL/glutils/blitter.cpp
RSX/GL/glutils/buffer_object.cpp
RSX/GL/glutils/capabilities.cpp
RSX/GL/glutils/common.cpp
RSX/GL/glutils/fbo.cpp
RSX/GL/glutils/image.cpp
RSX/GL/glutils/program.cpp
RSX/GL/glutils/ring_buffer.cpp
RSX/GL/glutils/sampler.cpp
RSX/GL/GLVertexBuffers.cpp
RSX/GL/GLVertexProgram.cpp
RSX/GL/OpenGL.cpp
RSX/GL/upscalers/fsr1/fsr_pass.cpp
RSX/GSRender.cpp RSX/GSRender.cpp
RSX/Host/MM.cpp RSX/Host/MM.cpp
RSX/Host/RSXDMAWriter.cpp RSX/Host/RSXDMAWriter.cpp
@ -590,6 +569,39 @@ target_sources(rpcs3_emu PRIVATE
RSX/rsx_vertex_data.cpp RSX/rsx_vertex_data.cpp
) )
if(NOT ANDROID)
target_sources(rpcs3_emu PRIVATE
RSX/GL/GLCommonDecompiler.cpp
RSX/GL/GLCompute.cpp
RSX/GL/GLDMA.cpp
RSX/GL/GLDraw.cpp
RSX/GL/GLFragmentProgram.cpp
RSX/GL/GLGSRender.cpp
RSX/GL/GLHelpers.cpp
RSX/GL/GLOverlays.cpp
RSX/GL/GLPipelineCompiler.cpp
RSX/GL/GLPresent.cpp
RSX/GL/GLRenderTargets.cpp
RSX/GL/GLResolveHelper.cpp
RSX/GL/GLShaderInterpreter.cpp
RSX/GL/GLTexture.cpp
RSX/GL/GLTextureCache.cpp
RSX/GL/glutils/blitter.cpp
RSX/GL/glutils/buffer_object.cpp
RSX/GL/glutils/capabilities.cpp
RSX/GL/glutils/common.cpp
RSX/GL/glutils/fbo.cpp
RSX/GL/glutils/image.cpp
RSX/GL/glutils/program.cpp
RSX/GL/glutils/ring_buffer.cpp
RSX/GL/glutils/sampler.cpp
RSX/GL/GLVertexBuffers.cpp
RSX/GL/GLVertexProgram.cpp
RSX/GL/OpenGL.cpp
RSX/GL/upscalers/fsr1/fsr_pass.cpp
)
endif()
if(TARGET 3rdparty_vulkan) if(TARGET 3rdparty_vulkan)
target_sources(rpcs3_emu PRIVATE target_sources(rpcs3_emu PRIVATE
RSX/VK/upscalers/fsr1/fsr_pass.cpp RSX/VK/upscalers/fsr1/fsr_pass.cpp
@ -658,7 +670,7 @@ endif()
if(USE_PRECOMPILED_HEADERS) if(USE_PRECOMPILED_HEADERS)
target_precompile_headers(rpcs3_emu PRIVATE "${PROJECT_SOURCE_DIR}/rpcs3/stdafx.h") target_precompile_headers(rpcs3_emu PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../stdafx.h")
endif() endif()
if(WAYLAND_FOUND) if(WAYLAND_FOUND)

View file

@ -133,12 +133,12 @@ sys_net_sockaddr native_addr_to_sys_net_addr(const ::sockaddr_storage& native_ad
sys_net_sockaddr sn_addr; sys_net_sockaddr sn_addr;
sys_net_sockaddr_in* paddr = reinterpret_cast<sys_net_sockaddr_in*>(&sn_addr); sys_net_sockaddr_in* paddr = reinterpret_cast<sys_net_sockaddr_in*>(&sn_addr);
*paddr = {};
paddr->sin_len = sizeof(sys_net_sockaddr_in); paddr->sin_len = sizeof(sys_net_sockaddr_in);
paddr->sin_family = SYS_NET_AF_INET; paddr->sin_family = SYS_NET_AF_INET;
paddr->sin_port = std::bit_cast<be_t<u16>, u16>(reinterpret_cast<const sockaddr_in*>(&native_addr)->sin_port); paddr->sin_port = std::bit_cast<be_t<u16>, u16>(reinterpret_cast<const sockaddr_in*>(&native_addr)->sin_port);
paddr->sin_addr = std::bit_cast<be_t<u32>, u32>(reinterpret_cast<const sockaddr_in*>(&native_addr)->sin_addr.s_addr); paddr->sin_addr = std::bit_cast<be_t<u32>, u32>(reinterpret_cast<const sockaddr_in*>(&native_addr)->sin_addr.s_addr);
paddr->sin_zero = 0;
return sn_addr; return sn_addr;
} }

View file

@ -3,7 +3,7 @@
#include "Utilities/Thread.h" #include "Utilities/Thread.h"
#include "util/logs.hpp" #include "util/logs.hpp"
#include "Emu/Memory/vm.h" #include "Emu/Memory/vm.h"
#include "../pine/pine_server.h" #include "pine/pine_server.h"
LOG_CHANNEL(IPC); LOG_CHANNEL(IPC);

View file

@ -1,10 +1,16 @@
#pragma once #pragma once
#include "util/endian.hpp" #include "util/endian.hpp"
#include "Emu/RSX/Program/RSXVertexProgram.h"
#include "Emu/RSX/Program/RSXFragmentProgram.h"
#include "Emu/RSX/Program/ProgramStateCache.h"
#include "Emu/RSX/Program/ShaderParam.h"
#include "Utilities/File.h"
#ifndef WITHOUT_OPENGL
#include "Emu/RSX/GL/GLVertexProgram.h" #include "Emu/RSX/GL/GLVertexProgram.h"
#include "Emu/RSX/GL/GLFragmentProgram.h" #include "Emu/RSX/GL/GLFragmentProgram.h"
#include "Emu/RSX/Program/ProgramStateCache.h" #endif
#include "Utilities/File.h"
using CGprofile = u32; using CGprofile = u32;
using CGbool = s32; using CGbool = s32;
@ -368,7 +374,9 @@ public:
prog.total_length = metadata.program_ucode_length + metadata.program_start_offset; prog.total_length = metadata.program_ucode_length + metadata.program_start_offset;
prog.data = reinterpret_cast<u8*>(be_data.data()) + metadata.program_start_offset; prog.data = reinterpret_cast<u8*>(be_data.data()) + metadata.program_start_offset;
for (u32 i = 0; i < 16; ++i) prog.texture_state.set_dimension(rsx::texture_dimension_extended::texture_dimension_2d, i); for (u32 i = 0; i < 16; ++i) prog.texture_state.set_dimension(rsx::texture_dimension_extended::texture_dimension_2d, i);
#ifndef WITHOUT_OPENGL
GLFragmentDecompilerThread(m_glsl_shader, param_array, prog, unused).Task(); GLFragmentDecompilerThread(m_glsl_shader, param_array, prog, unused).Task();
#endif
} }
else else
@ -411,7 +419,9 @@ public:
RSXVertexProgram prog; RSXVertexProgram prog;
program_hash_util::vertex_program_utils::analyse_vertex_program(vdata, 0, prog); program_hash_util::vertex_program_utils::analyse_vertex_program(vdata, 0, prog);
for (u32 i = 0; i < 4; ++i) prog.texture_state.set_dimension(rsx::texture_dimension_extended::texture_dimension_2d, i); for (u32 i = 0; i < 4; ++i) prog.texture_state.set_dimension(rsx::texture_dimension_extended::texture_dimension_2d, i);
#ifndef WITHOUT_OPENGL
GLVertexDecompilerThread(prog, m_glsl_shader, param_array).Task(); GLVertexDecompilerThread(prog, m_glsl_shader, param_array).Task();
#endif
} }
} }

View file

@ -28,6 +28,8 @@ using display_handle_t = std::variant<
std::pair<Display*, Window> std::pair<Display*, Window>
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) #elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
std::pair<wl_display*, wl_surface*> std::pair<wl_display*, wl_surface*>
#elif defined(ANDROID)
void *
#endif #endif
>; >;
#endif #endif

View file

@ -170,6 +170,8 @@ namespace
{ {
#ifdef _WIN32 #ifdef _WIN32
tid = GetCurrentThreadId(); tid = GetCurrentThreadId();
#elif defined(ANDROID)
tid = pthread_self();
#else #else
tid = reinterpret_cast<u64>(pthread_self()); tid = reinterpret_cast<u64>(pthread_self());
#endif #endif