diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 28f1113702b..d53b33edc2d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -15,6 +15,9 @@ jobs: matrix: arch: [i686, x86_64, armv7, aarch64] os: [windows-latest, ubuntu-latest] + exclude: + - arch: armv7 + os: windows-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/src/graphics/sp/sp_base.cpp b/src/graphics/sp/sp_base.cpp index cc9265b33ee..f05fd30cec0 100644 --- a/src/graphics/sp/sp_base.cpp +++ b/src/graphics/sp/sp_base.cpp @@ -123,7 +123,7 @@ unsigned g_skinning_offset = 0; // ---------------------------------------------------------------------------- std::vector g_skinning_mesh; // ---------------------------------------------------------------------------- -int g_skinning_tbo_limit = 0; +bool g_skinning_use_tbo = false; // ---------------------------------------------------------------------------- int sp_cur_shadow_cascade = 0; // ---------------------------------------------------------------------------- @@ -319,12 +319,13 @@ void initSkinning() else { #ifndef USE_GLES2 - glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, &g_skinning_tbo_limit); - if (stk_config->m_max_skinning_bones << 6 > (unsigned)g_skinning_tbo_limit) + int skinning_tbo_limit; + glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, &skinning_tbo_limit); + if (stk_config->m_max_skinning_bones << 6 > (unsigned)skinning_tbo_limit) { Log::warn("SharedGPUObjects", "Too many bones for skinning, max: %d", - g_skinning_tbo_limit >> 6); - stk_config->m_max_skinning_bones = g_skinning_tbo_limit >> 6; + skinning_tbo_limit >> 6); + stk_config->m_max_skinning_bones = skinning_tbo_limit >> 6; } Log::info("SharedGPUObjects", "Hardware Skinning enabled, method: TBO, " "max bones: %u", stk_config->m_max_skinning_bones); @@ -444,7 +445,14 @@ void init() if (CVS->isARBTextureBufferObjectUsable()) { - glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE_ARB, &g_skinning_tbo_limit); + int skinning_tbo_limit; + glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE_ARB, &skinning_tbo_limit); + + g_skinning_use_tbo = skinning_tbo_limit >= stk_config->m_max_skinning_bones << 6; + } + else + { + g_skinning_use_tbo = false; } initSkinning(); @@ -655,8 +663,7 @@ SPShader* getNormalVisualizer() // ---------------------------------------------------------------------------- bool skinningUseTBO() { - return CVS->isARBTextureBufferObjectUsable() - && g_skinning_tbo_limit >= 64 * stk_config->m_max_skinning_bones; + return g_skinning_use_tbo; } diff --git a/src/items/item.cpp b/src/items/item.cpp index ea4d4413292..79f1b6f2781 100644 --- a/src/items/item.cpp +++ b/src/items/item.cpp @@ -414,7 +414,7 @@ void Item::handleNewMesh(ItemType type) m_node->setRotation(hpr.toIrrHPR()); if (m_icon_node) - m_node->removeChild(m_icon_node); + m_appear_anime_node->removeChild(m_icon_node); m_icon_node = NULL; auto icon = ItemManager::getIcon(type);