mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-31 18:11:31 +02:00
Kill HAVE_OPENCL.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6756 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
5ca3adde3c
commit
95b6d3f445
5
Externals/CLRun/SConscript
vendored
Normal file
5
Externals/CLRun/SConscript
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# -*- python -*-
|
||||||
|
|
||||||
|
Import('env')
|
||||||
|
|
||||||
|
env['CPPPATH'] += ['#Externals/CLRun/include']
|
1
Externals/CLRun/include/OpenCL/cl.h
vendored
Normal file
1
Externals/CLRun/include/OpenCL/cl.h
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <CL/cl.h>
|
1
Externals/CLRun/include/OpenCL/cl_platform.h
vendored
Normal file
1
Externals/CLRun/include/OpenCL/cl_platform.h
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <CL/cl_platform.h>
|
@ -269,10 +269,6 @@ else:
|
|||||||
print "Must have CgGL to build"
|
print "Must have CgGL to build"
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
env['HAVE_OPENCL'] = int(conf.CheckPKG('OpenCL') and \
|
|
||||||
conf.CheckCXXHeader("CL/cl.h"))
|
|
||||||
conf.Define('HAVE_OPENCL', env['HAVE_OPENCL'])
|
|
||||||
|
|
||||||
# PGO - Profile Guided Optimization
|
# PGO - Profile Guided Optimization
|
||||||
if env['pgo'] == 'generate':
|
if env['pgo'] == 'generate':
|
||||||
env['CCFLAGS'] += ['-fprofile-generate']
|
env['CCFLAGS'] += ['-fprofile-generate']
|
||||||
@ -337,7 +333,7 @@ env['LIBPATH'].insert(0, env['local_libs'])
|
|||||||
|
|
||||||
dirs = [
|
dirs = [
|
||||||
'Externals/Bochs_disasm',
|
'Externals/Bochs_disasm',
|
||||||
#'Externals/CLRun',
|
'Externals/CLRun',
|
||||||
'Externals/Lua',
|
'Externals/Lua',
|
||||||
'Externals/GLew',
|
'Externals/GLew',
|
||||||
'Externals/LZO',
|
'Externals/LZO',
|
||||||
@ -364,7 +360,6 @@ dirs = [
|
|||||||
'Source/Plugins/Plugin_DSP_LLE/Src',
|
'Source/Plugins/Plugin_DSP_LLE/Src',
|
||||||
#'Source/Plugins/Plugin_VideoDX11/Src',
|
#'Source/Plugins/Plugin_VideoDX11/Src',
|
||||||
#'Source/Plugins/Plugin_VideoDX9/Src',
|
#'Source/Plugins/Plugin_VideoDX9/Src',
|
||||||
#'Source/Plugins/Plugin_VideoMerge/Src',
|
|
||||||
'Source/Plugins/Plugin_VideoOGL/Src',
|
'Source/Plugins/Plugin_VideoOGL/Src',
|
||||||
'Source/Plugins/Plugin_VideoSoftware/Src',
|
'Source/Plugins/Plugin_VideoSoftware/Src',
|
||||||
'Source/UnitTests',
|
'Source/UnitTests',
|
||||||
|
@ -21,18 +21,12 @@
|
|||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
|
|
||||||
#ifndef __APPLE__
|
|
||||||
#include "clrun.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace OpenCL
|
namespace OpenCL
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
cl_device_id device_id = NULL;
|
cl_device_id device_id = NULL;
|
||||||
cl_context g_context = NULL;
|
cl_context g_context = NULL;
|
||||||
cl_command_queue g_cmdq = NULL;
|
cl_command_queue g_cmdq = NULL;
|
||||||
#endif
|
|
||||||
|
|
||||||
bool g_bInitialized = false;
|
bool g_bInitialized = false;
|
||||||
|
|
||||||
@ -41,7 +35,6 @@ bool Initialize()
|
|||||||
if(g_bInitialized)
|
if(g_bInitialized)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if(g_context)
|
if(g_context)
|
||||||
return false;
|
return false;
|
||||||
int err; // error code returned from api calls
|
int err; // error code returned from api calls
|
||||||
@ -127,12 +120,8 @@ bool Initialize()
|
|||||||
|
|
||||||
g_bInitialized = true;
|
g_bInitialized = true;
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
cl_context GetContext()
|
cl_context GetContext()
|
||||||
{
|
{
|
||||||
return g_context;
|
return g_context;
|
||||||
@ -204,11 +193,9 @@ cl_kernel CompileKernel(cl_program program, const char *Function)
|
|||||||
(float)(Common::Timer::GetTimeMs() - compileStart) / 1000.0);
|
(float)(Common::Timer::GetTimeMs() - compileStart) / 1000.0);
|
||||||
return kernel;
|
return kernel;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void Destroy()
|
void Destroy()
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if (g_cmdq)
|
if (g_cmdq)
|
||||||
{
|
{
|
||||||
clReleaseCommandQueue(g_cmdq);
|
clReleaseCommandQueue(g_cmdq);
|
||||||
@ -220,13 +207,10 @@ void Destroy()
|
|||||||
g_context = NULL;
|
g_context = NULL;
|
||||||
}
|
}
|
||||||
g_bInitialized = false;
|
g_bInitialized = false;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleCLError(cl_int error, const char* str)
|
void HandleCLError(cl_int error, const char* str)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
|
|
||||||
const char* name;
|
const char* name;
|
||||||
switch(error)
|
switch(error)
|
||||||
{
|
{
|
||||||
@ -284,6 +268,5 @@ void HandleCLError(cl_int error, const char* str)
|
|||||||
if(!str)
|
if(!str)
|
||||||
str = "";
|
str = "";
|
||||||
ERROR_LOG(COMMON, "OpenCL error: %s %s (%d)", str, name, error);
|
ERROR_LOG(COMMON, "OpenCL error: %s %s (%d)", str, name, error);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,46 +20,21 @@
|
|||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
|
|
||||||
// The CLRun library provides the headers and all the imports
|
|
||||||
#ifndef __APPLE__
|
|
||||||
#define HAVE_OPENCL 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// We detect the presence of the 10.6 SDK, which has the OpenCL headers,
|
|
||||||
// by looking for the new blocks feature in the 10.6 version of gcc.
|
|
||||||
// This allows us to have the 10.5 SDK first in the search path.
|
|
||||||
#if defined __APPLE__ && defined __BLOCKS__
|
|
||||||
#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER WEAK_IMPORT_ATTRIBUTE
|
|
||||||
#define HAVE_OPENCL 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER WEAK_IMPORT_ATTRIBUTE
|
||||||
#include <OpenCL/cl.h>
|
#include <OpenCL/cl.h>
|
||||||
#else
|
#else
|
||||||
|
// The CLRun library provides the headers and all the imports.
|
||||||
#include <CL/cl.h>
|
#include <CL/cl.h>
|
||||||
#endif
|
#include <clrun.h>
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
typedef void *cl_context;
|
|
||||||
typedef void *cl_command_queue;
|
|
||||||
typedef void *cl_program;
|
|
||||||
typedef void *cl_kernel;
|
|
||||||
typedef void *cl_mem;
|
|
||||||
typedef void *cl_int;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace OpenCL
|
namespace OpenCL
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
extern cl_device_id device_id;
|
extern cl_device_id device_id;
|
||||||
extern cl_context g_context;
|
extern cl_context g_context;
|
||||||
extern cl_command_queue g_cmdq;
|
extern cl_command_queue g_cmdq;
|
||||||
#endif
|
|
||||||
|
|
||||||
bool Initialize();
|
bool Initialize();
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from SconsTests import utils
|
from SconsTests import utils
|
||||||
|
|
||||||
Execute(Delete(File('#Source/Core/Common/Src/svnrev.h').abspath))
|
|
||||||
utils.GenerateRevFile(env['flavor'], Dir('#Source/Core/Common/Src').abspath +
|
utils.GenerateRevFile(env['flavor'], Dir('#Source/Core/Common/Src').abspath +
|
||||||
os.sep + 'svnrev_template.h', 'svnrev.h')
|
os.sep + 'svnrev_template.h', 'svnrev.h')
|
||||||
|
|
||||||
|
@ -75,9 +75,9 @@ elif sys.platform == 'darwin' and env['HAVE_WX']:
|
|||||||
for mo in mo_files:
|
for mo in mo_files:
|
||||||
index_lo = mo.find("Languages/") + len("Languages/")
|
index_lo = mo.find("Languages/") + len("Languages/")
|
||||||
index_hi = mo.find("/dolphin-emu.mo")
|
index_hi = mo.find("/dolphin-emu.mo")
|
||||||
lang_name = mo[index_lo:index_hi]
|
lang = mo[index_lo:index_hi]
|
||||||
install_loc = env['data_dir'] + "/" + lang_name + ".lproj/dolphin-emu.mo"
|
lproj = env['data_dir'] + '/' + lang + ".lproj/dolphin-emu.mo"
|
||||||
env.InstallAs(install_loc, mo)
|
env.InstallAs(lproj, mo)
|
||||||
|
|
||||||
from plistlib import writePlist
|
from plistlib import writePlist
|
||||||
def createPlist(target, source, env):
|
def createPlist(target, source, env):
|
||||||
|
@ -43,10 +43,8 @@
|
|||||||
#include "DataReader.h"
|
#include "DataReader.h"
|
||||||
|
|
||||||
#include "OpenCL.h"
|
#include "OpenCL.h"
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
#include "OpenCL/OCLTextureDecoder.h"
|
#include "OpenCL/OCLTextureDecoder.h"
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
u8* g_pVideoData = 0;
|
u8* g_pVideoData = 0;
|
||||||
DataReadU32xNfunc DataReadU32xFuncs[16] = {
|
DataReadU32xNfunc DataReadU32xFuncs[16] = {
|
||||||
@ -403,25 +401,21 @@ void OpcodeDecoder_Init()
|
|||||||
{
|
{
|
||||||
g_pVideoData = FAKE_GetFifoStartPtr();
|
g_pVideoData = FAKE_GetFifoStartPtr();
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if (g_Config.bEnableOpenCL)
|
if (g_Config.bEnableOpenCL)
|
||||||
{
|
{
|
||||||
OpenCL::Initialize();
|
OpenCL::Initialize();
|
||||||
TexDecoder_OpenCL_Initialize();
|
TexDecoder_OpenCL_Initialize();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OpcodeDecoder_Shutdown()
|
void OpcodeDecoder_Shutdown()
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if (g_Config.bEnableOpenCL)
|
if (g_Config.bEnableOpenCL)
|
||||||
{
|
{
|
||||||
TexDecoder_OpenCL_Shutdown();
|
TexDecoder_OpenCL_Shutdown();
|
||||||
OpenCL::Destroy();
|
OpenCL::Destroy();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpcodeDecoder_Run(bool skipped_frame)
|
void OpcodeDecoder_Run(bool skipped_frame)
|
||||||
|
@ -86,7 +86,6 @@ cl_mem g_clsrc, g_cldst; // texture buffer memory objects
|
|||||||
|
|
||||||
void TexDecoder_OpenCL_Initialize()
|
void TexDecoder_OpenCL_Initialize()
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if(!g_Inited)
|
if(!g_Inited)
|
||||||
{
|
{
|
||||||
if(!OpenCL::Initialize())
|
if(!OpenCL::Initialize())
|
||||||
@ -240,12 +239,10 @@ void TexDecoder_OpenCL_Initialize()
|
|||||||
|
|
||||||
g_Inited = true;
|
g_Inited = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TexDecoder_OpenCL_Shutdown()
|
void TexDecoder_OpenCL_Shutdown()
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL && !defined(DEBUG_OPENCL)
|
|
||||||
if (g_program)
|
if (g_program)
|
||||||
clReleaseProgram(g_program);
|
clReleaseProgram(g_program);
|
||||||
|
|
||||||
@ -264,12 +261,10 @@ void TexDecoder_OpenCL_Shutdown()
|
|||||||
clReleaseMemObject(g_cldst);
|
clReleaseMemObject(g_cldst);
|
||||||
|
|
||||||
g_Inited = false;
|
g_Inited = false;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PC_TexFormat TexDecoder_Decode_OpenCL(u8 *dst, const u8 *src, int width, int height, int texformat, int tlutaddr, int tlutfmt, bool rgba)
|
PC_TexFormat TexDecoder_Decode_OpenCL(u8 *dst, const u8 *src, int width, int height, int texformat, int tlutaddr, int tlutfmt, bool rgba)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
cl_int err;
|
cl_int err;
|
||||||
sDecoderParameter& decoder = rgba ? g_DecodeParametersRGBA[texformat] : g_DecodeParametersNative[texformat];
|
sDecoderParameter& decoder = rgba ? g_DecodeParametersRGBA[texformat] : g_DecodeParametersNative[texformat];
|
||||||
if(!g_Inited || !decoder.name || !decoder.kernel || decoder.format == PC_TEX_FMT_NONE)
|
if(!g_Inited || !decoder.name || !decoder.kernel || decoder.format == PC_TEX_FMT_NONE)
|
||||||
@ -310,7 +305,4 @@ PC_TexFormat TexDecoder_Decode_OpenCL(u8 *dst, const u8 *src, int width, int hei
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
return decoder.format;
|
return decoder.format;
|
||||||
#else
|
|
||||||
return PC_TEX_FMT_NONE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,8 @@
|
|||||||
#include "CPUDetect.h"
|
#include "CPUDetect.h"
|
||||||
#include "TextureDecoder.h"
|
#include "TextureDecoder.h"
|
||||||
#include "OpenCL.h"
|
#include "OpenCL.h"
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
#include "OpenCL/OCLTextureDecoder.h"
|
#include "OpenCL/OCLTextureDecoder.h"
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "LookUpTables.h"
|
#include "LookUpTables.h"
|
||||||
|
|
||||||
@ -1733,7 +1731,6 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he
|
|||||||
const __m128i dxt = _mm_loadu_si128((__m128i *)(src + sizeof(struct DXTBlock) * 0));
|
const __m128i dxt = _mm_loadu_si128((__m128i *)(src + sizeof(struct DXTBlock) * 0));
|
||||||
__m128i argb888x4;
|
__m128i argb888x4;
|
||||||
const __m128i allFF = _mm_set_epi32(0xFFFFFFFFL, 0xFFFFFFFFL, 0xFFFFFFFFL, 0xFFFFFFFFL);
|
const __m128i allFF = _mm_set_epi32(0xFFFFFFFFL, 0xFFFFFFFFL, 0xFFFFFFFFL, 0xFFFFFFFFL);
|
||||||
const __m128i lowMask = _mm_srli_si128( allFF, 8 );
|
|
||||||
__m128i c1 = _mm_unpackhi_epi16(dxt, dxt);
|
__m128i c1 = _mm_unpackhi_epi16(dxt, dxt);
|
||||||
c1 = _mm_slli_si128(c1, 8);
|
c1 = _mm_slli_si128(c1, 8);
|
||||||
const __m128i c0 = _mm_or_si128(c1, _mm_srli_si128(_mm_slli_si128(_mm_unpacklo_epi16(dxt, dxt), 8), 8));
|
const __m128i c0 = _mm_or_si128(c1, _mm_srli_si128(_mm_slli_si128(_mm_unpacklo_epi16(dxt, dxt), 8), 8));
|
||||||
@ -2039,10 +2036,8 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in
|
|||||||
{
|
{
|
||||||
PC_TexFormat retval = PC_TEX_FMT_NONE;
|
PC_TexFormat retval = PC_TEX_FMT_NONE;
|
||||||
|
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if (g_Config.bEnableOpenCL)
|
if (g_Config.bEnableOpenCL)
|
||||||
retval = TexDecoder_Decode_OpenCL(dst, src, width, height, texformat, tlutaddr, tlutfmt, rgbaOnly);
|
retval = TexDecoder_Decode_OpenCL(dst, src, width, height, texformat, tlutaddr, tlutfmt, rgbaOnly);
|
||||||
#endif
|
|
||||||
|
|
||||||
if(retval == PC_TEX_FMT_NONE)
|
if(retval == PC_TEX_FMT_NONE)
|
||||||
retval = rgbaOnly ? TexDecoder_Decode_RGBA((u32*)dst,src,width,height,texformat,tlutaddr,tlutfmt) : TexDecoder_Decode_real(dst,src,width,height,texformat,tlutaddr,tlutfmt);
|
retval = rgbaOnly ? TexDecoder_Decode_RGBA((u32*)dst,src,width,height,texformat,tlutaddr,tlutfmt) : TexDecoder_Decode_real(dst,src,width,height,texformat,tlutaddr,tlutfmt);
|
||||||
|
@ -43,8 +43,7 @@ __m128i _b1[256];
|
|||||||
__m128i _b2[256];
|
__m128i _b2[256];
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
bool Inited = false;
|
||||||
bool Inited = false;
|
|
||||||
|
|
||||||
cl_kernel To_kernel;
|
cl_kernel To_kernel;
|
||||||
cl_program To_program;
|
cl_program To_program;
|
||||||
@ -110,7 +109,7 @@ void InitKernels()
|
|||||||
To_kernel = OpenCL::CompileKernel(To_program, "ConvertToXFB");
|
To_kernel = OpenCL::CompileKernel(To_program, "ConvertToXFB");
|
||||||
Inited = true;
|
Inited = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
void InitXFBConvTables()
|
void InitXFBConvTables()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 256; i++)
|
for (int i = 0; i < 256; i++)
|
||||||
@ -138,7 +137,6 @@ void ConvertFromXFB(u32 *dst, const u8* _pXFB, int width, int height)
|
|||||||
}
|
}
|
||||||
const unsigned char *src = _pXFB;
|
const unsigned char *src = _pXFB;
|
||||||
u32 numBlocks = ((width * height) / 2) / 2;
|
u32 numBlocks = ((width * height) / 2) / 2;
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if(!Inited)
|
if(!Inited)
|
||||||
InitKernels();
|
InitKernels();
|
||||||
int err;
|
int err;
|
||||||
@ -209,29 +207,6 @@ void ConvertFromXFB(u32 *dst, const u8* _pXFB, int width, int height)
|
|||||||
}
|
}
|
||||||
clReleaseMemObject(_dst);
|
clReleaseMemObject(_dst);
|
||||||
clReleaseMemObject(_src);
|
clReleaseMemObject(_src);
|
||||||
#else
|
|
||||||
for (u32 i = 0; i < numBlocks; i++)
|
|
||||||
{
|
|
||||||
__m128i y1 = _y[src[0]];
|
|
||||||
__m128i u = _u[src[1]];
|
|
||||||
__m128i y2 = _y[src[2]];
|
|
||||||
__m128i v = _v[src[3]];
|
|
||||||
__m128i y1_2 = _y[src[4+0]];
|
|
||||||
__m128i u_2 = _u[src[4+1]];
|
|
||||||
__m128i y2_2 = _y[src[4+2]];
|
|
||||||
__m128i v_2 = _v[src[4+3]];
|
|
||||||
|
|
||||||
__m128i c1 = _mm_srai_epi32(_mm_add_epi32(y1, _mm_add_epi32(u, v)), 16);
|
|
||||||
__m128i c2 = _mm_srai_epi32(_mm_add_epi32(y2, _mm_add_epi32(u, v)), 16);
|
|
||||||
__m128i c3 = _mm_srai_epi32(_mm_add_epi32(y1_2, _mm_add_epi32(u_2, v_2)), 16);
|
|
||||||
__m128i c4 = _mm_srai_epi32(_mm_add_epi32(y2_2, _mm_add_epi32(u_2, v_2)), 16);
|
|
||||||
|
|
||||||
__m128i four_dest = _mm_packus_epi16(_mm_packs_epi32(c1, c2), _mm_packs_epi32(c3, c4));
|
|
||||||
_mm_store_si128((__m128i *)dst, four_dest);
|
|
||||||
dst += 4;
|
|
||||||
src += 8;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -243,7 +218,6 @@ void ConvertToXFB(u32 *dst, const u8* _pEFB, int width, int height)
|
|||||||
if (((size_t)dst & 0xF) != 0) {
|
if (((size_t)dst & 0xF) != 0) {
|
||||||
PanicAlert("ConvertToXFB - unaligned XFB");
|
PanicAlert("ConvertToXFB - unaligned XFB");
|
||||||
}
|
}
|
||||||
#if defined(HAVE_OPENCL) && HAVE_OPENCL
|
|
||||||
if(!Inited)
|
if(!Inited)
|
||||||
InitKernels();
|
InitKernels();
|
||||||
|
|
||||||
@ -315,33 +289,4 @@ void ConvertToXFB(u32 *dst, const u8* _pEFB, int width, int height)
|
|||||||
}
|
}
|
||||||
clReleaseMemObject(_dst);
|
clReleaseMemObject(_dst);
|
||||||
clReleaseMemObject(_src);
|
clReleaseMemObject(_src);
|
||||||
#else
|
|
||||||
for (u32 i = 0; i < numBlocks; i++)
|
|
||||||
{
|
|
||||||
__m128i yuyv0 = _mm_srai_epi32(
|
|
||||||
_mm_add_epi32(
|
|
||||||
_mm_add_epi32(_r1[src[0]], _mm_add_epi32(_g1[src[1]], _b1[src[2]])),
|
|
||||||
_mm_add_epi32(_r2[src[4]], _mm_add_epi32(_g2[src[5]], _b2[src[6]]))), 16);
|
|
||||||
src += 8;
|
|
||||||
__m128i yuyv1 = _mm_srai_epi32(
|
|
||||||
_mm_add_epi32(
|
|
||||||
_mm_add_epi32(_r1[src[0]], _mm_add_epi32(_g1[src[1]], _b1[src[2]])),
|
|
||||||
_mm_add_epi32(_r2[src[4]], _mm_add_epi32(_g2[src[5]], _b2[src[6]]))), 16);
|
|
||||||
src += 8;
|
|
||||||
__m128i yuyv2 = _mm_srai_epi32(
|
|
||||||
_mm_add_epi32(
|
|
||||||
_mm_add_epi32(_r1[src[0]], _mm_add_epi32(_g1[src[1]], _b1[src[2]])),
|
|
||||||
_mm_add_epi32(_r2[src[4]], _mm_add_epi32(_g2[src[5]], _b2[src[6]]))), 16);
|
|
||||||
src += 8;
|
|
||||||
__m128i yuyv3 = _mm_srai_epi32(
|
|
||||||
_mm_add_epi32(
|
|
||||||
_mm_add_epi32(_r1[src[0]], _mm_add_epi32(_g1[src[1]], _b1[src[2]])),
|
|
||||||
_mm_add_epi32(_r2[src[4]], _mm_add_epi32(_g2[src[5]], _b2[src[6]]))), 16);
|
|
||||||
src += 8;
|
|
||||||
__m128i four_dest = _mm_packus_epi16(_mm_packs_epi32(yuyv0, yuyv1), _mm_packs_epi32(yuyv2, yuyv3));
|
|
||||||
_mm_store_si128((__m128i *)dst, four_dest);
|
|
||||||
dst += 4;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,5 @@ libs = [ 'videocommon', 'videouicommon', 'GLEW', 'SOIL', 'common' ]
|
|||||||
|
|
||||||
if sys.platform == 'darwin' and not env['HAVE_WX']:
|
if sys.platform == 'darwin' and not env['HAVE_WX']:
|
||||||
files += [ 'cocoaGL.m' ]
|
files += [ 'cocoaGL.m' ]
|
||||||
elif not sys.platform == 'darwin' and env['HAVE_OPENCL']:
|
|
||||||
libs += [ 'OpenCL' ]
|
|
||||||
|
|
||||||
env.SharedLibrary(env['plugin_dir'] + name, files, LIBS = env['LIBS'] + libs)
|
env.SharedLibrary(env['plugin_dir'] + name, files, LIBS = env['LIBS'] + libs)
|
||||||
|
Loading…
Reference in New Issue
Block a user