view src/hermes/HeadMMX.h @ 2105:12bcd4fd2606

Date: Wed, 23 May 2007 00:39:47 +0300 From: "Eyal Lotem" To: "SDL Mailing List" <sdl@lists.libsdl.org> Subject: [SDL] Bug in GL_SWAP_CONTROL extension name. The checked extension name is incorrect. The attached patch fixes it to the correct name. I don't think that under any setup, this extension name was ever correct, which is why its not OR'd against the old check. This fixes the "tear effect" (vsync problems) I had here with nVidia GLX drivers. Eyal
author Ryan C. Gordon <icculus@icculus.org>
date Tue, 22 May 2007 22:13:56 +0000
parents c121d94672cb
children
line wrap: on
line source

/*
   Header definitions for the MMX routines for the HERMES library
   Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk)
   This source code is licensed under the GNU LGPL
  
   Please refer to the file COPYING.LIB contained in the distribution for
   licensing conditions
*/
#include "SDL_config.h"

#ifndef __HERMES_HEAD_MMX__
#define __HERMES_HEAD_MMX__


/* If you cannot stand ifdefs, then please do not look into this file, it's
   going to end your life :) */

#ifdef X86_ASSEMBLER


#ifdef __cplusplus
extern "C"
{
#endif

    void STACKCALL ConvertMMX(HermesConverterInterface *);

    void STACKCALL ClearMMX_32(HermesClearInterface *);
    void STACKCALL ClearMMX_24(HermesClearInterface *);
    void STACKCALL ClearMMX_16(HermesClearInterface *);
    void STACKCALL ClearMMX_8(HermesClearInterface *);

    void ConvertMMXpII32_24RGB888();
    void ConvertMMXpII32_16RGB565();
    void ConvertMMXpII32_16BGR565();
    void ConvertMMXpII32_16RGB555();
    void ConvertMMXpII32_16BGR565();
    void ConvertMMXpII32_16BGR555();

    void ConvertMMXp32_16RGB555();

#ifdef __cplusplus
}
#endif



/* Fix the underscore business with ELF compilers */

#if defined(__ELF__) && defined(__GNUC__)
#ifdef __cplusplus
extern "C"
{
#endif

    extern void _ConvertMMX(HermesConverterInterface *);
    extern void _ConvertMMXpII32_24RGB888();
    extern void _ConvertMMXpII32_16RGB565();
    extern void _ConvertMMXpII32_16BGR565();
    extern void _ConvertMMXpII32_16RGB555();
    extern void _ConvertMMXpII32_16BGR555();

#define ConvertMMX _ConvertMMX
#define ConvertMMXpII32_24RGB888 _ConvertMMXpII32_24RGB888
#define ConvertMMXpII32_16RGB565 _ConvertMMXpII32_16RGB565
#define ConvertMMXpII32_16BGR565 _ConvertMMXpII32_16BGR565
#define ConvertMMXpII32_16RGB555 _ConvertMMXpII32_16RGB555
#define ConvertMMXpII32_16BGR555 _ConvertMMXpII32_16BGR555

#ifdef __cplusplus
}
#endif

#endif                          /* ELF and GNUC */




/* Make it work with Watcom */
#ifdef __WATCOMC__
#pragma warning 601 9

#pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI]

#pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
#pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
#pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
#pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI]

#pragma aux ConvertMMXpII32_24RGB888 "_*"
#pragma aux ConvertMMXpII32_16RGB565 "_*"
#pragma aux ConvertMMXpII32_16BGR565 "_*"
#pragma aux ConvertMMXpII32_16RGB555 "_*"
#pragma aux ConvertMMXpII32_16BGR555 "_*"
#pragma aux ConvertMMXp32_16RGB555 "_*"

#endif                          /* WATCOM */

#endif                          /* X86_ASSEMBLER */


#endif
/* vi: set ts=4 sw=4 expandtab: */