diff --git a/src/add-ons/opengl/mesa_software_renderer/Jamfile b/src/add-ons/opengl/mesa_software_renderer/Jamfile index 1e13749ad6..ea53576f38 100644 --- a/src/add-ons/opengl/mesa_software_renderer/Jamfile +++ b/src/add-ons/opengl/mesa_software_renderer/Jamfile @@ -13,7 +13,11 @@ if $(TARGET_PLATFORM) != haiku { defines = BEOS_THREADS GNU_ASSEMBLER ; if $(TARGET_ARCH) = x86 { - defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; #USE_SSE_ASM ; + defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; + if $(TARGET_PLATFORM != haiku) { + # FIXME: Remove me when Haiku SSE support will be fixed. + defines += USE_SSE_ASM ; + } } else { # Not yet supported, as current Mesa3D PPC assembly is Linux-dependent! # defines += USE_PPC_ASM ; @@ -28,6 +32,8 @@ UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa ] ; UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa main ] ; UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa glapi ] ; UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa tnl ] ; +UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa x86 ] ; +UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa ppc ] ; Addon Mesa\ Software\ Renderer : opengl : MesaSoftwareRenderer.cpp diff --git a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp index fa5f00eae3..79c4c2954e 100644 --- a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp +++ b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp @@ -24,7 +24,15 @@ extern "C" { #include "tnl/tnl.h" #include "tnl/t_context.h" #include "tnl/t_pipeline.h" + + + #if defined(USE_X86_ASM) + #include "x86/common_x86_asm.h" + #endif + #if defined(USE_PPC_ASM) + #include "ppc/common_ppc_features.h" + #endif } extern const char * color_space_name(color_space space); @@ -294,8 +302,51 @@ const GLubyte * MesaSoftwareRenderer::GetString(GLcontext *ctx, GLenum name) { switch (name) { - case GL_RENDERER: - return (const GLubyte *) "Haiku's OpenGL Software Renderer, powered by Mesa " MESA_VERSION_STRING ; + case GL_RENDERER: { + static char buffer[256] = { '\0' }; + + if (!buffer[0] ) { + // Let's build an renderer string + strncat(buffer, "Haiku's Mesa " MESA_VERSION_STRING " Software Renderer", sizeof(buffer)); + + // Append any CPU-specific information. +#ifdef USE_X86_ASM + if (_mesa_x86_cpu_features) + strncat(buffer, " x86", sizeof(buffer)); + #ifdef USE_MMX_ASM + if (cpu_has_mmx) + strncat(buffer, (cpu_has_mmxext) ? "/MMX+" : "/MMX", sizeof(buffer)); + #endif + #ifdef USE_3DNOW_ASM + if (cpu_has_3dnow) + strncat(buffer, (cpu_has_3dnowext) ? "/3DNow!+" : "/3DNow!", sizeof(buffer)); + #endif + #ifdef USE_SSE_ASM + if (cpu_has_xmm) + strncat(buffer, (cpu_has_xmm2) ? "/SSE2" : "/SSE", sizeof(buffer)); + #endif + +#elif defined(USE_SPARC_ASM) + + strncat(buffer, " SPARC", sizeof(buffer)); + +#elif defined(USE_PPC_ASM) + + if (_mesa_ppc_cpu_features) + strncat(buffer, (cpu_has_64) ? " PowerPC 64" : " PowerPC", sizeof(buffer)); + + #ifdef USE_VMX_ASM + if (cpu_has_vmx) + strncat(buffer, "/Altivec", sizeof(buffer)); + #endif + + if (! cpu_has_fpu) + strncat(buffer, "/No FPU", sizeof(buffer)); +#endif + + } + return (const GLubyte *) buffer; + } default: // Let core library handle all other cases return NULL; diff --git a/src/kits/opengl/Jamfile b/src/kits/opengl/Jamfile index 51279142ba..ca997a3ae1 100644 --- a/src/kits/opengl/Jamfile +++ b/src/kits/opengl/Jamfile @@ -24,7 +24,11 @@ UseHeaders [ FDirName $(SUBDIR) mesa swrast_setup ] ; defines = BEOS_THREADS GNU_ASSEMBLER ; if $(TARGET_ARCH) = x86 { - defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; #USE_SSE_ASM ; + defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; + if $(TARGET_PLATFORM != haiku) { + # FIXME: Remove me when Haiku SSE support will be fixed. + defines += USE_SSE_ASM ; + } } else if $(TARGET_ARCH) = ppc { # Not yet supported, as current Mesa3D PPC assembly is Linux-dependent! # defines += USE_PPC_ASM ; diff --git a/src/kits/opengl/mesa/Jamfile b/src/kits/opengl/mesa/Jamfile index 039644005d..5eac12da45 100644 --- a/src/kits/opengl/mesa/Jamfile +++ b/src/kits/opengl/mesa/Jamfile @@ -32,7 +32,11 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) tnl ] ; defines = BEOS_THREADS GNU_ASSEMBLER ; if $(TARGET_ARCH) = x86 { - defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; #USE_SSE_ASM ; + defines += USE_X86_ASM USE_MMX_ASM USE_3DNOW_ASM ; + if $(TARGET_PLATFORM != haiku) { + # FIXME: Remove me when Haiku SSE support will be fixed. + defines += USE_SSE_ASM ; + } } else { # Not yet supported, as current Mesa3D PPC assembly is Linux-dependent! # defines += USE_PPC_ASM ;