pkgsrc/graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h
tnn 154f8711b6 MesaLib: update to mesa-20.0.1
New features in mesa 20:
OpenGL 4.6 on radeonsi.
GL_ARB_gl_spirv on radeonsi.
GL_ARB_spirv_extensions on radeonsi.
GL_EXT_direct_state_access for compatibility profile.
VK_AMD_device_coherent_memory on RADV.
VK_AMD_mixed_attachment_samples on RADV.
VK_AMD_shader_explicit_vertex_parameter on RADV.
VK_AMD_shader_image_load_store_lod on RADV.
VK_AMD_shader_fragment_mask on RADV.
VK_EXT_subgroup_size_control on RADV/LLVM.
VK_KHR_separate_depth_stencil_layouts on Intel, RADV.
VK_KHR_shader_subgroup_extended_types on RADV.
VK_KHR_swapchain_mutable_format on RADV.
VK_KHR_shader_float_controls on RADV/ACO.
GFX6 (Southern Islands) and GFX7 (Sea Islands) support on RADV/ACO.
Wave32 support for GFX10 (Navi) on RADV/ACO.
Compilation of Geometry Shaders on RADV/ACO.
Vulkan 1.2 on Intel, RADV.
GL_INTEL_shader_integer_functions2 and VK_INTEL_shader_integer_functions2 on Intel.

As usual many bugfixes also.
2020-03-08 10:35:03 +00:00

53 lines
1.7 KiB
C

$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.6 2020/03/08 10:35:03 tnn Exp $
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
with dlopen(3) at the moment.
--- src/mapi/entry_x86_tls.h.orig 2020-03-05 21:34:32.000000000 +0000
+++ src/mapi/entry_x86_tls.h
@@ -45,6 +45,25 @@ __asm__("x86_current_tls:\n\t"
"movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t"
"ret");
+#if defined(__NetBSD__)
+__asm__("x86_current_table_helper:\n\t"
+ "call 1f\n\t"
+ "1:\n\t"
+ "popl %eax\n\t"
+ "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t"
+ "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t"
+ "movl %gs:(%eax), %eax\n\t"
+ "testl %eax, %eax\n\t"
+ "je 2f\n\t"
+ "ret\n\t"
+ "2:\n\t"
+ "call 3f\n\t"
+ "3:\n\t"
+ "popl %eax\n\t"
+ "addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %eax\n\t"
+ "jmp *" ENTRY_CURRENT_TABLE_GET "@GOT(%eax)");
+#endif
+
#ifndef GLX_X86_READONLY_TEXT
__asm__(".section wtext, \"awx\", @progbits");
#endif /* GLX_X86_READONLY_TEXT */
@@ -58,6 +77,11 @@ __asm__(".balign 16\n"
".balign 16\n" \
func ":"
+#if defined(__NetBSD__)
+#define STUB_ASM_CODE(slot) \
+ "call x86_current_table_helper\n\t" \
+ "jmp *(4 * " slot ")(%eax)"
+#else
#define STUB_ASM_CODE(slot) \
"call 1f\n" \
"1:\n\t" \
@@ -66,6 +90,7 @@ __asm__(".balign 16\n"
"movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" \
"movl %gs:(%eax), %eax\n\t" \
"jmp *(4 * " slot ")(%eax)"
+#endif
#define MAPI_TMP_STUB_ASM_GCC
#include "mapi_tmp.h"