mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 15:22:16 +00:00
Merge branch 'master' of https://github.com/coelckers/gzdoom
This commit is contained in:
commit
9297c60ecd
7 changed files with 65 additions and 10 deletions
|
@ -450,6 +450,22 @@ else( SSE_MATTERS )
|
||||||
set( BACKPATCH 0 )
|
set( BACKPATCH 0 )
|
||||||
endif( SSE_MATTERS )
|
endif( SSE_MATTERS )
|
||||||
|
|
||||||
|
if( X64 )
|
||||||
|
set( HAVE_MMX 1 )
|
||||||
|
else( X64 )
|
||||||
|
set( SAFE_CMAKE_C_FLAGS ${CMAKE_C_FLAGS} )
|
||||||
|
|
||||||
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
||||||
|
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmmx")
|
||||||
|
endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
||||||
|
|
||||||
|
CHECK_CXX_SOURCE_COMPILES("#include <mmintrin.h>
|
||||||
|
int main(void) { __m64 v = _m_from_int(0); }"
|
||||||
|
HAVE_MMX)
|
||||||
|
|
||||||
|
set( CMAKE_C_FLAGS ${SAFE_CMAKE_C_FLAGS} )
|
||||||
|
endif( X64 )
|
||||||
|
|
||||||
# Set up flags for GCC
|
# Set up flags for GCC
|
||||||
|
|
||||||
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
||||||
|
@ -582,10 +598,6 @@ endif( NOT DYN_FLUIDSYNTH )
|
||||||
|
|
||||||
# Start defining source files for ZDoom
|
# Start defining source files for ZDoom
|
||||||
set( PLAT_WIN32_SOURCES
|
set( PLAT_WIN32_SOURCES
|
||||||
gl/hqnx_asm/hq2x_asm.cpp
|
|
||||||
gl/hqnx_asm/hq3x_asm.cpp
|
|
||||||
gl/hqnx_asm/hq4x_asm.cpp
|
|
||||||
gl/hqnx_asm/hqnx_asm_Image.cpp
|
|
||||||
win32/eaxedit.cpp
|
win32/eaxedit.cpp
|
||||||
win32/fb_d3d9.cpp
|
win32/fb_d3d9.cpp
|
||||||
win32/fb_d3d9_wipe.cpp
|
win32/fb_d3d9_wipe.cpp
|
||||||
|
@ -669,6 +681,25 @@ else( WIN32 )
|
||||||
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_OSX_SOURCES} ${PLAT_COCOA_SOURCES} )
|
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_OSX_SOURCES} ${PLAT_COCOA_SOURCES} )
|
||||||
endif( WIN32 )
|
endif( WIN32 )
|
||||||
|
|
||||||
|
if( HAVE_MMX )
|
||||||
|
add_definitions( -DHAVE_MMX=1 )
|
||||||
|
|
||||||
|
set( SYSTEM_SOURCES ${SYSTEM_SOURCES}
|
||||||
|
gl/hqnx_asm/hq2x_asm.cpp
|
||||||
|
gl/hqnx_asm/hq3x_asm.cpp
|
||||||
|
gl/hqnx_asm/hq4x_asm.cpp
|
||||||
|
gl/hqnx_asm/hqnx_asm_Image.cpp)
|
||||||
|
|
||||||
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
||||||
|
set_source_files_properties(
|
||||||
|
gl/hqnx_asm/hq2x_asm.cpp
|
||||||
|
gl/hqnx_asm/hq3x_asm.cpp
|
||||||
|
gl/hqnx_asm/hq4x_asm.cpp
|
||||||
|
gl/textures/gl_hqresize.cpp
|
||||||
|
PROPERTIES COMPILE_FLAGS "-mmmx" )
|
||||||
|
endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
||||||
|
endif( HAVE_MMX )
|
||||||
|
|
||||||
if( NOT ASM_SOURCES )
|
if( NOT ASM_SOURCES )
|
||||||
set( ASM_SOURCES "" )
|
set( ASM_SOURCES "" )
|
||||||
endif( NOT ASM_SOURCES )
|
endif( NOT ASM_SOURCES )
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
#ifndef __HQNX_H__
|
#ifndef __HQNX_H__
|
||||||
#define __HQNX_H__
|
#define __HQNX_H__
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4799)
|
#pragma warning(disable:4799)
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
#include "hqnx_asm_Image.h"
|
#include "hqnx_asm_Image.h"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,9 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable: 4103)
|
#pragma warning(disable: 4103)
|
||||||
|
#endif // _MSC_VER
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
namespace HQnX_asm
|
namespace HQnX_asm
|
||||||
|
|
|
@ -57,4 +57,18 @@ CUSTOM_CVAR (Float, vid_contrast, 1.f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
// when they are actually valid.
|
// when they are actually valid.
|
||||||
void gl_SetupMenu()
|
void gl_SetupMenu()
|
||||||
{
|
{
|
||||||
|
#ifndef HAVE_MMX
|
||||||
|
FOptionValues **opt = OptionValues.CheckKey("HqResizeModes");
|
||||||
|
if (opt != NULL)
|
||||||
|
{
|
||||||
|
for(int i = (*opt)->mValues.Size()-1; i>=0; i--)
|
||||||
|
{
|
||||||
|
// Delete HQnX resize modes for non MSVC targets
|
||||||
|
if ((*opt)->mValues[i].Value >= 7.0)
|
||||||
|
{
|
||||||
|
(*opt)->mValues.Delete(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,13 +40,17 @@
|
||||||
#include "gl/textures/gl_texture.h"
|
#include "gl/textures/gl_texture.h"
|
||||||
#include "c_cvars.h"
|
#include "c_cvars.h"
|
||||||
#include "gl/hqnx/hqx.h"
|
#include "gl/hqnx/hqx.h"
|
||||||
#ifdef _MSC_VER
|
#ifdef HAVE_MMX
|
||||||
#include "gl/hqnx_asm/hqnx_asm.h"
|
#include "gl/hqnx_asm/hqnx_asm.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CUSTOM_CVAR(Int, gl_texture_hqresize, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
CUSTOM_CVAR(Int, gl_texture_hqresize, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_MMX
|
||||||
|
if (self < 0 || self > 9)
|
||||||
|
#else
|
||||||
if (self < 0 || self > 6)
|
if (self < 0 || self > 6)
|
||||||
|
#endif
|
||||||
self = 0;
|
self = 0;
|
||||||
GLRenderer->FlushTextures();
|
GLRenderer->FlushTextures();
|
||||||
}
|
}
|
||||||
|
@ -182,8 +186,7 @@ static unsigned char *scaleNxHelper( void (*scaleNxFunction) ( uint32* , uint32*
|
||||||
return newBuffer;
|
return newBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// [BB] hqnx scaling is only supported with the MS compiler.
|
#ifdef HAVE_MMX
|
||||||
#ifdef _MSC_VER
|
|
||||||
static unsigned char *hqNxAsmHelper( void (*hqNxFunction) ( int*, unsigned char*, int, int, int ),
|
static unsigned char *hqNxAsmHelper( void (*hqNxFunction) ( int*, unsigned char*, int, int, int ),
|
||||||
const int N,
|
const int N,
|
||||||
unsigned char *inputBuffer,
|
unsigned char *inputBuffer,
|
||||||
|
@ -281,7 +284,7 @@ unsigned char *gl_CreateUpsampledTextureBuffer ( const FTexture *inputTexture, u
|
||||||
outWidth = inWidth;
|
outWidth = inWidth;
|
||||||
outHeight = inHeight;
|
outHeight = inHeight;
|
||||||
int type = gl_texture_hqresize;
|
int type = gl_texture_hqresize;
|
||||||
#ifdef _MSC_VER
|
#ifdef HAVE_MMX
|
||||||
// ASM-hqNx does not preserve the alpha channel so fall back to C-version for such textures
|
// ASM-hqNx does not preserve the alpha channel so fall back to C-version for such textures
|
||||||
if (!hasAlpha && type > 3 && type <= 6)
|
if (!hasAlpha && type > 3 && type <= 6)
|
||||||
{
|
{
|
||||||
|
@ -303,7 +306,7 @@ unsigned char *gl_CreateUpsampledTextureBuffer ( const FTexture *inputTexture, u
|
||||||
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
case 6:
|
case 6:
|
||||||
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
#ifdef _MSC_VER
|
#ifdef HAVE_MMX
|
||||||
case 7:
|
case 7:
|
||||||
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
|
||||||
case 8:
|
case 8:
|
||||||
|
|
|
@ -1239,7 +1239,7 @@ void FTextureManager::PrecacheLevel (void)
|
||||||
if (demoplayback)
|
if (demoplayback)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
precacheTime = I_MSTime();
|
precacheTime = I_FPSTime();
|
||||||
|
|
||||||
hitlist = new BYTE[cnt];
|
hitlist = new BYTE[cnt];
|
||||||
memset (hitlist, 0, cnt);
|
memset (hitlist, 0, cnt);
|
||||||
|
|
|
@ -103,6 +103,9 @@ OptionValue "HqResizeModes"
|
||||||
4, "hq2x"
|
4, "hq2x"
|
||||||
5, "hq3x"
|
5, "hq3x"
|
||||||
6, "hq4x"
|
6, "hq4x"
|
||||||
|
7, "hq2x MMX"
|
||||||
|
8, "hq3x MMX"
|
||||||
|
9, "hq4x MMX"
|
||||||
}
|
}
|
||||||
|
|
||||||
OptionValue "FogMode"
|
OptionValue "FogMode"
|
||||||
|
|
Loading…
Reference in a new issue