Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2018-10-02 18:24:43 +0300
committerVladimir Byko-Ianko <bykoianko@gmail.com>2018-10-04 13:57:58 +0300
commit63548b973f57a453a3299fc31e72f9f7a0d93d7c (patch)
tree6263b8aaab9f62dba3ed5eddf071f889697b4b5a
parent0b8b83c8ff49d731218013aba599c630a21fa7c5 (diff)
Fixed Xcode compilation for MacOS.
-rw-r--r--drape/data_buffer.cpp5
-rw-r--r--drape/drape_global.hpp6
-rw-r--r--drape/hw_texture.cpp9
-rw-r--r--drape/mesh_object.cpp2
-rw-r--r--drape/mesh_object.hpp4
-rw-r--r--drape/render_state.cpp11
-rw-r--r--drape/vertex_array_buffer.cpp3
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp3
-rw-r--r--iphone/Maps/Classes/EAGLView.mm5
-rw-r--r--iphone/Maps/Maps.xcodeproj/project.pbxproj3
-rw-r--r--map/framework.cpp6
-rw-r--r--map/framework.hpp3
-rw-r--r--shaders/program_manager.cpp2
-rw-r--r--shaders/program_manager.hpp5
-rw-r--r--shaders/program_params.hpp3
-rw-r--r--xcode/drape/drape.xcodeproj/project.pbxproj36
-rw-r--r--xcode/shaders/shaders.xcodeproj/project.pbxproj15
17 files changed, 94 insertions, 27 deletions
diff --git a/drape/data_buffer.cpp b/drape/data_buffer.cpp
index 7864377889..d671d9d07e 100644
--- a/drape/data_buffer.cpp
+++ b/drape/data_buffer.cpp
@@ -1,7 +1,6 @@
#include "drape/data_buffer.hpp"
#include "drape/data_buffer_impl.hpp"
-
-#include "std/target_os.hpp"
+#include "drape/drape_global.hpp"
namespace dp
{
@@ -36,7 +35,7 @@ void DataBuffer::MoveToGPU(ref_ptr<GraphicsContext> context, GPUBuffer::Target t
}
else if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
if (currentSize != 0)
{
m_impl = CreateImplForMetal(context, m_impl->Data(), m_impl->GetElementSize(),
diff --git a/drape/drape_global.hpp b/drape/drape_global.hpp
index 2a90388711..2c0f7e8572 100644
--- a/drape/drape_global.hpp
+++ b/drape/drape_global.hpp
@@ -6,8 +6,14 @@
#include "base/assert.hpp"
+#include "std/target_os.hpp"
+
#include <cstdint>
+#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR) && !defined(OMIM_OS_MAC)
+#define OMIM_METAL_AVAILABLE
+#endif
+
namespace dp
{
enum class ApiVersion
diff --git a/drape/hw_texture.cpp b/drape/hw_texture.cpp
index f5108ff902..b230a5fb20 100644
--- a/drape/hw_texture.cpp
+++ b/drape/hw_texture.cpp
@@ -1,5 +1,6 @@
#include "drape/hw_texture.hpp"
+#include "drape/drape_global.hpp"
#include "drape/gl_functions.hpp"
#include "drape/utils/gpu_mem_tracker.hpp"
@@ -12,7 +13,9 @@
#if defined(OMIM_OS_IPHONE)
#include "drape/hw_texture_ios.hpp"
+#endif
+#if defined(OMIM_METAL_AVAILABLE)
extern drape_ptr<dp::HWTextureAllocator> CreateMetalAllocator();
extern ref_ptr<dp::HWTextureAllocator> GetDefaultMetalAllocator();
#endif
@@ -253,7 +256,7 @@ drape_ptr<HWTextureAllocator> CreateAllocator(ref_ptr<dp::GraphicsContext> conte
auto const apiVersion = context->GetApiVersion();
if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
return CreateMetalAllocator();
#endif
CHECK(false, ("Metal rendering is supported now only on iOS."));
@@ -263,7 +266,7 @@ drape_ptr<HWTextureAllocator> CreateAllocator(ref_ptr<dp::GraphicsContext> conte
if (apiVersion == dp::ApiVersion::OpenGLES3)
return make_unique_dp<OpenGLHWTextureAllocator>();
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
return make_unique_dp<HWTextureAllocatorApple>();
#else
return make_unique_dp<OpenGLHWTextureAllocator>();
@@ -275,7 +278,7 @@ ref_ptr<HWTextureAllocator> GetDefaultAllocator(ref_ptr<dp::GraphicsContext> con
CHECK(context != nullptr, ());
if (context->GetApiVersion() == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
return GetDefaultMetalAllocator();
#endif
CHECK(false, ("Metal rendering is supported now only on iOS."));
diff --git a/drape/mesh_object.cpp b/drape/mesh_object.cpp
index 81c777d052..152d9af5ea 100644
--- a/drape/mesh_object.cpp
+++ b/drape/mesh_object.cpp
@@ -153,7 +153,7 @@ MeshObject::MeshObject(ref_ptr<dp::GraphicsContext> context, DrawPrimitive drawP
}
else if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
InitForMetal();
#endif
}
diff --git a/drape/mesh_object.hpp b/drape/mesh_object.hpp
index 06e1d1c65c..7d769e0f40 100644
--- a/drape/mesh_object.hpp
+++ b/drape/mesh_object.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include "drape/drape_global.hpp"
#include "drape/graphics_context.hpp"
#include "drape/pointers.hpp"
#include "drape/render_state.hpp"
@@ -99,8 +100,11 @@ private:
};
void InitForOpenGL();
+
+#if defined(OMIM_METAL_AVAILABLE)
// Definition of this method is in a .mm-file.
void InitForMetal();
+#endif
void Bind(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::GpuProgram> program);
void Unbind(ref_ptr<dp::GpuProgram> program);
diff --git a/drape/render_state.cpp b/drape/render_state.cpp
index b12752b868..311e7bc4a2 100644
--- a/drape/render_state.cpp
+++ b/drape/render_state.cpp
@@ -1,11 +1,10 @@
#include "drape/render_state.hpp"
+#include "drape/drape_global.hpp"
#include "drape/gl_functions.hpp"
#include "drape/gl_gpu_program.hpp"
#include "base/buffer_vector.hpp"
-#include "std/target_os.hpp"
-
namespace dp
{
namespace
@@ -14,7 +13,7 @@ std::string const kColorTextureName = "u_colorTex";
std::string const kMaskTextureName = "u_maskTex";
} // namespace
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
// Definitions of these methods are in a .mm-file.
extern void ApplyDepthStencilStateForMetal(ref_ptr<GraphicsContext> context);
extern void ApplyPipelineStateForMetal(ref_ptr<GraphicsContext> context, ref_ptr<GpuProgram> program,
@@ -220,7 +219,7 @@ void TextureState::ApplyTextures(ref_ptr<GraphicsContext> context, RenderState c
}
else if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
ApplyTexturesForMetal(context, program, state);
#endif
}
@@ -245,7 +244,7 @@ void ApplyState(ref_ptr<GraphicsContext> context, ref_ptr<GpuProgram> program, R
if (apiVersion == dp::ApiVersion::Metal)
{
// For Metal rendering blending state is a part of the pipeline state.
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
ApplyPipelineStateForMetal(context, program, state.GetBlending().m_isEnabled);
#endif
}
@@ -261,7 +260,7 @@ void ApplyState(ref_ptr<GraphicsContext> context, ref_ptr<GpuProgram> program, R
if (apiVersion == dp::ApiVersion::Metal)
{
// For Metal rendering we have to apply depth-stencil state after SetX functions calls.
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
ApplyDepthStencilStateForMetal(context);
#endif
}
diff --git a/drape/vertex_array_buffer.cpp b/drape/vertex_array_buffer.cpp
index 79c7bfb360..f869dedc65 100644
--- a/drape/vertex_array_buffer.cpp
+++ b/drape/vertex_array_buffer.cpp
@@ -1,5 +1,6 @@
#include "drape/vertex_array_buffer.hpp"
+#include "drape/drape_global.hpp"
#include "drape/gl_functions.hpp"
#include "drape/gl_gpu_program.hpp"
#include "drape/index_storage.hpp"
@@ -206,7 +207,7 @@ void VertexArrayBuffer::Build(ref_ptr<GraphicsContext> context, ref_ptr<GpuProgr
}
else if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
m_impl = CreateImplForMetal(make_ref(this));
#endif
}
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp
index a267d4c21f..b8396cde1b 100755
--- a/drape_frontend/frontend_renderer.cpp
+++ b/drape_frontend/frontend_renderer.cpp
@@ -16,6 +16,7 @@
#include "shaders/programs.hpp"
+#include "drape/drape_global.hpp"
#include "drape/framebuffer.hpp"
#include "drape/support_manager.hpp"
#include "drape/utils/glyph_usage_tracker.hpp"
@@ -46,7 +47,7 @@
using namespace std::placeholders;
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
namespace dp
{
extern void RenderFrameMediator(std::function<void()> && renderFrameFunction);
diff --git a/iphone/Maps/Classes/EAGLView.mm b/iphone/Maps/Classes/EAGLView.mm
index e4dfc17ba5..04d1b675ec 100644
--- a/iphone/Maps/Classes/EAGLView.mm
+++ b/iphone/Maps/Classes/EAGLView.mm
@@ -9,6 +9,7 @@
#include "Framework.h"
+#include "drape/drape_global.hpp"
#include "drape/visual_scale.hpp"
#include "base/assert.hpp"
@@ -57,7 +58,7 @@ double getExactDPI(double contentScaleFactor)
- (dp::ApiVersion)getSupportedApiVersion
{
-#ifndef OMIM_OS_IPHONE_SIMULATOR
+#ifdef OMIM_METAL_AVAILABLE
if (GetFramework().LoadMetalAllowed())
{
id<MTLDevice> tempDevice = MTLCreateSystemDefaultDevice();
@@ -96,7 +97,7 @@ double getExactDPI(double contentScaleFactor)
m2::PointU const s = [self pixelSize];
if (m_apiVersion == dp::ApiVersion::Metal)
{
-#ifndef OMIM_OS_IPHONE_SIMULATOR
+#ifdef OMIM_METAL_AVAILABLE
CHECK(self.metalView != nil, ());
CHECK_EQUAL(self.bounds.size.width, self.metalView.bounds.size.width, ());
CHECK_EQUAL(self.bounds.size.height, self.metalView.bounds.size.height, ());
diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj
index e31bf6639f..982799f128 100644
--- a/iphone/Maps/Maps.xcodeproj/project.pbxproj
+++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj
@@ -5204,6 +5204,7 @@
CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements";
DEVELOPMENT_TEAM = 3T6FSDE8C7;
"EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = MetalContextFactory.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = MetalContextFactory.mm;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/3party/GoogleSignIn",
@@ -5220,6 +5221,7 @@
CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements";
DEVELOPMENT_TEAM = 3T6FSDE8C7;
"EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = MetalContextFactory.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = MetalContextFactory.mm;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/3party/GoogleSignIn",
@@ -5236,6 +5238,7 @@
CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements";
DEVELOPMENT_TEAM = 3T6FSDE8C7;
"EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = MetalContextFactory.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = MetalContextFactory.mm;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/3party/GoogleSignIn",
diff --git a/map/framework.cpp b/map/framework.cpp
index 68642a1b97..e5d3253adf 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -136,7 +136,7 @@ char const kTrafficSimplifiedColorsKey[] = "TrafficSimplifiedColors";
char const kLargeFontsSize[] = "LargeFontsSize";
char const kTranslitMode[] = "TransliterationMode";
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
char const kMetalAllowed[] = "MetalAllowed";
#endif
@@ -2497,7 +2497,7 @@ void Framework::UpdateSavedDataVersion()
int64_t Framework::GetCurrentDataVersion() const { return m_storage.GetCurrentDataVersion(); }
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
bool Framework::LoadMetalAllowed()
{
bool allowed;
@@ -2786,7 +2786,7 @@ bool Framework::ParseDrapeDebugCommand(string const & query)
m_drapeEngine->EnableDebugRectRendering(false /* shown */);
return true;
}
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
if (query == "?metal")
{
SaveMetalAllowed(true);
diff --git a/map/framework.hpp b/map/framework.hpp
index 19d4832010..a944e78110 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -27,6 +27,7 @@
#include "drape_frontend/drape_engine.hpp"
#include "drape_frontend/user_event_stream.hpp"
+#include "drape/drape_global.hpp"
#include "drape/graphics_context_factory.hpp"
#include "kml/type_utils.hpp"
@@ -776,7 +777,7 @@ public:
bool LoadTransitSchemeEnabled();
void SaveTransitSchemeEnabled(bool enabled);
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
bool LoadMetalAllowed();
void SaveMetalAllowed(bool allowed);
#endif
diff --git a/shaders/program_manager.cpp b/shaders/program_manager.cpp
index ad764fe24a..d6011151ad 100644
--- a/shaders/program_manager.cpp
+++ b/shaders/program_manager.cpp
@@ -22,7 +22,7 @@ void ProgramManager::Init(ref_ptr<dp::GraphicsContext> context)
}
else if (apiVersion == dp::ApiVersion::Metal)
{
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
InitForMetal(context);
#endif
}
diff --git a/shaders/program_manager.hpp b/shaders/program_manager.hpp
index 00a8980669..2fcd743310 100644
--- a/shaders/program_manager.hpp
+++ b/shaders/program_manager.hpp
@@ -27,9 +27,12 @@ public:
private:
void InitForOpenGL(ref_ptr<dp::GraphicsContext> context);
+
+#if defined(OMIM_METAL_AVAILABLE)
// Definition of this method is in a .mm-file.
void InitForMetal(ref_ptr<dp::GraphicsContext> context);
-
+#endif
+
using Programs = std::array<drape_ptr<dp::GpuProgram>,
static_cast<size_t>(Program::ProgramsCount)>;
Programs m_programs;
diff --git a/shaders/program_params.hpp b/shaders/program_params.hpp
index 042f94211f..4ce73ebc0c 100644
--- a/shaders/program_params.hpp
+++ b/shaders/program_params.hpp
@@ -2,6 +2,7 @@
#include "shaders/programs.hpp"
+#include "drape/drape_global.hpp"
#include "drape/glsl_types.hpp"
#include "drape/graphics_context.hpp"
#include "drape/gpu_program.hpp"
@@ -45,7 +46,7 @@ private:
} \
}
-#if defined(OMIM_OS_IPHONE) && !defined(OMIM_OS_IPHONE_SIMULATOR)
+#if defined(OMIM_METAL_AVAILABLE)
#define ALIGNMENT __attribute__ ((aligned(16)))
#else
#define ALIGNMENT
diff --git a/xcode/drape/drape.xcodeproj/project.pbxproj b/xcode/drape/drape.xcodeproj/project.pbxproj
index 732afc4886..df8dbfd1bf 100644
--- a/xcode/drape/drape.xcodeproj/project.pbxproj
+++ b/xcode/drape/drape.xcodeproj/project.pbxproj
@@ -671,7 +671,17 @@
render_state_metal.mm,
metal_cleaner.mm,
);
- "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = hw_texture_ios.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ hw_texture_ios.mm,
+ metal_base_context.mm,
+ metal_gpu_buffer_impl.mm,
+ metal_mesh_object_impl.mm,
+ metal_states.mm,
+ metal_texture.mm,
+ metal_vertex_array_buffer_impl.mm,
+ render_state_metal.mm,
+ metal_cleaner.mm,
+ );
EXECUTABLE_PREFIX = lib;
GCC_PREFIX_HEADER = "$(OMIM_ROOT)/precompiled_headers.hpp";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -692,7 +702,17 @@
render_state_metal.mm,
metal_cleaner.mm,
);
- "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = hw_texture_ios.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ hw_texture_ios.mm,
+ metal_base_context.mm,
+ metal_gpu_buffer_impl.mm,
+ metal_mesh_object_impl.mm,
+ metal_states.mm,
+ metal_texture.mm,
+ metal_vertex_array_buffer_impl.mm,
+ render_state_metal.mm,
+ metal_cleaner.mm,
+ );
EXECUTABLE_PREFIX = lib;
GCC_PREFIX_HEADER = "$(OMIM_ROOT)/precompiled_headers.hpp";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -732,7 +752,17 @@
render_state_metal.mm,
metal_cleaner.mm,
);
- "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = hw_texture_ios.mm;
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ hw_texture_ios.mm,
+ metal_base_context.mm,
+ metal_gpu_buffer_impl.mm,
+ metal_mesh_object_impl.mm,
+ metal_states.mm,
+ metal_texture.mm,
+ metal_vertex_array_buffer_impl.mm,
+ render_state_metal.mm,
+ metal_cleaner.mm,
+ );
EXECUTABLE_PREFIX = lib;
GCC_PREFIX_HEADER = "$(OMIM_ROOT)/precompiled_headers.hpp";
PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/xcode/shaders/shaders.xcodeproj/project.pbxproj b/xcode/shaders/shaders.xcodeproj/project.pbxproj
index 293e59973d..a7f4831e46 100644
--- a/xcode/shaders/shaders.xcodeproj/project.pbxproj
+++ b/xcode/shaders/shaders.xcodeproj/project.pbxproj
@@ -641,6 +641,11 @@
metal_program_pool.mm,
program_manager_metal.mm,
);
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ metal_program_params.mm,
+ metal_program_pool.mm,
+ program_manager_metal.mm,
+ );
};
name = Debug;
};
@@ -653,6 +658,11 @@
metal_program_pool.mm,
program_manager_metal.mm,
);
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ metal_program_params.mm,
+ metal_program_pool.mm,
+ program_manager_metal.mm,
+ );
};
name = Release;
};
@@ -677,6 +687,11 @@
metal_program_pool.mm,
program_manager_metal.mm,
);
+ "EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*]" = (
+ metal_program_params.mm,
+ metal_program_pool.mm,
+ program_manager_metal.mm,
+ );
};
name = "Production Full";
};