Added software fallback for YUV overlay code when YUV textures aren't available.
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403242
This commit is contained in:
parent
de5363f399
commit
4bab1880be
12 changed files with 751 additions and 44 deletions
102
VisualC/tests/testoverlay/testoverlay.dsp
Normal file
102
VisualC/tests/testoverlay/testoverlay.dsp
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
# Microsoft Developer Studio Project File - Name="testoverlay" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=testoverlay - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "testoverlay.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "testoverlay.mak" CFG="testoverlay - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "testoverlay - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "testoverlay - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "testoverlay - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "testoverlay - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "testoverlay - Win32 Release"
|
||||||
|
# Name "testoverlay - Win32 Debug"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\Sdl\Debug\SDL.lib
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\SDLmain\Debug\SDLmain.lib
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\test\testoverlay.c
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
217
VisualC/tests/testoverlay/testoverlay.vcproj
Normal file
217
VisualC/tests/testoverlay/testoverlay.vcproj
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="testoverlay"
|
||||||
|
ProjectGUID="{9E320A14-B443-4DD7-8725-B7020DCFF730}"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory=".\Release"
|
||||||
|
IntermediateDirectory=".\Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Release/testoverlay.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\include"
|
||||||
|
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
|
||||||
|
StringPooling="true"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
PrecompiledHeaderFile=".\Release/testoverlay.pch"
|
||||||
|
AssemblerListingLocation=".\Release/"
|
||||||
|
ObjectFile=".\Release/"
|
||||||
|
ProgramDataBaseFileName=".\Release/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
CompileAs="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
OutputFile=".\Release/testoverlay.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
ProgramDatabaseFile=".\Release/testoverlay.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory=".\Debug"
|
||||||
|
IntermediateDirectory=".\Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Debug/testoverlay.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\include"
|
||||||
|
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
PrecompiledHeaderFile=".\Debug/testoverlay.pch"
|
||||||
|
AssemblerListingLocation=".\Debug/"
|
||||||
|
ObjectFile=".\Debug/"
|
||||||
|
ProgramDataBaseFileName=".\Debug/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
CompileAs="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
OutputFile=".\Debug/testoverlay.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile=".\Debug/testoverlay.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\Sdl\Debug\SDL.lib"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\SDLmain\Debug\SDLmain.lib"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\test\testoverlay.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
102
VisualC/tests/testoverlay2/testoverlay2.dsp
Normal file
102
VisualC/tests/testoverlay2/testoverlay2.dsp
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
# Microsoft Developer Studio Project File - Name="testoverlay2" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=testoverlay2 - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "testoverlay2.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "testoverlay2.mak" CFG="testoverlay2 - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "testoverlay2 - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "testoverlay2 - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "testoverlay2 - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "testoverlay2 - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "testoverlay2 - Win32 Release"
|
||||||
|
# Name "testoverlay2 - Win32 Debug"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\Sdl\Debug\SDL.lib
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\SDLmain\Debug\SDLmain.lib
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\test\testoverlay2.c
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
217
VisualC/tests/testoverlay2/testoverlay2.vcproj
Normal file
217
VisualC/tests/testoverlay2/testoverlay2.vcproj
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="testoverlay2"
|
||||||
|
ProjectGUID="{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory=".\Release"
|
||||||
|
IntermediateDirectory=".\Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Release/testoverlay2.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\include"
|
||||||
|
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
|
||||||
|
StringPooling="true"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
PrecompiledHeaderFile=".\Release/testoverlay2.pch"
|
||||||
|
AssemblerListingLocation=".\Release/"
|
||||||
|
ObjectFile=".\Release/"
|
||||||
|
ProgramDataBaseFileName=".\Release/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
CompileAs="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
OutputFile=".\Release/testoverlay2.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
ProgramDatabaseFile=".\Release/testoverlay2.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory=".\Debug"
|
||||||
|
IntermediateDirectory=".\Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Debug/testoverlay2.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\include"
|
||||||
|
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
PrecompiledHeaderFile=".\Debug/testoverlay2.pch"
|
||||||
|
AssemblerListingLocation=".\Debug/"
|
||||||
|
ObjectFile=".\Debug/"
|
||||||
|
ProgramDataBaseFileName=".\Debug/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
CompileAs="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
OutputFile=".\Debug/testoverlay2.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile=".\Debug/testoverlay2.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\Sdl\Debug\SDL.lib"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\SDLmain\Debug\SDLmain.lib"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\test\testoverlay2.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
|
@ -99,6 +99,30 @@ Package=<4>
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "testoverlay"=".\testoverlay\testoverlay.dsp" - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "testoverlay2"=".\testoverlay2\testoverlay2.dsp" - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
Project: "testpalette"=".\testpalette\testpalette.dsp" - Package Owner=<4>
|
Project: "testpalette"=".\testpalette\testpalette.dsp" - Package Owner=<4>
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
|
|
|
@ -28,6 +28,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl2", "testgl2\testgl2.
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "checkkeys\checkkeys.vcproj", "{26828762-C95D-4637-9CB1-7F0979523813}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "checkkeys\checkkeys.vcproj", "{26828762-C95D-4637-9CB1-7F0979523813}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay", "testoverlay\testoverlay.vcproj", "{9E320A14-B443-4DD7-8725-B7020DCFF730}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay2", "testoverlay2\testoverlay2.vcproj", "{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
@ -90,6 +94,14 @@ Global
|
||||||
{26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.Build.0 = Debug|Win32
|
{26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.ActiveCfg = Release|Win32
|
{26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.Build.0 = Release|Win32
|
{26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{9E320A14-B443-4DD7-8725-B7020DCFF730}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{9E320A14-B443-4DD7-8725-B7020DCFF730}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{9E320A14-B443-4DD7-8725-B7020DCFF730}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{9E320A14-B443-4DD7-8725-B7020DCFF730}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|Win32.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
#include "video/SDL_sysvideo.h"
|
#include "video/SDL_sysvideo.h"
|
||||||
#include "video/SDL_pixels_c.h"
|
#include "video/SDL_pixels_c.h"
|
||||||
|
#include "video/SDL_yuv_sw_c.h"
|
||||||
|
|
||||||
static SDL_WindowID SDL_VideoWindow = 0;
|
static SDL_WindowID SDL_VideoWindow = 0;
|
||||||
static SDL_RendererInfo SDL_VideoRendererInfo;
|
static SDL_RendererInfo SDL_VideoRendererInfo;
|
||||||
|
@ -1349,6 +1350,8 @@ struct private_yuvhwdata
|
||||||
Uint16 pitches[3];
|
Uint16 pitches[3];
|
||||||
Uint8 *planes[3];
|
Uint8 *planes[3];
|
||||||
|
|
||||||
|
SDL_SW_YUVTexture *sw;
|
||||||
|
|
||||||
SDL_TextureID textureID;
|
SDL_TextureID textureID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1431,6 +1434,19 @@ SDL_CreateYUVOverlay(int w, int h, Uint32 format, SDL_Surface * display)
|
||||||
|
|
||||||
overlay->hwdata->textureID =
|
overlay->hwdata->textureID =
|
||||||
SDL_CreateTexture(texture_format, SDL_TEXTUREACCESS_STREAMING, w, h);
|
SDL_CreateTexture(texture_format, SDL_TEXTUREACCESS_STREAMING, w, h);
|
||||||
|
if (overlay->hwdata->textureID) {
|
||||||
|
overlay->hwdata->sw = NULL;
|
||||||
|
} else {
|
||||||
|
overlay->hwdata->sw = SDL_SW_CreateYUVTexture(texture_format, w, h);
|
||||||
|
if (!overlay->hwdata->sw) {
|
||||||
|
SDL_FreeYUVOverlay(overlay);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create a supported RGB format texture for display */
|
||||||
|
overlay->hwdata->textureID =
|
||||||
|
SDL_CreateTexture(SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, w, h);
|
||||||
|
}
|
||||||
if (!overlay->hwdata->textureID) {
|
if (!overlay->hwdata->textureID) {
|
||||||
SDL_FreeYUVOverlay(overlay);
|
SDL_FreeYUVOverlay(overlay);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1449,10 +1465,16 @@ SDL_LockYUVOverlay(SDL_Overlay * overlay)
|
||||||
SDL_SetError("Passed a NULL overlay");
|
SDL_SetError("Passed a NULL overlay");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (overlay->hwdata->sw) {
|
||||||
|
if (SDL_SW_QueryYUVTexturePixels(overlay->hwdata->sw, &pixels, &pitch) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (SDL_LockTexture(overlay->hwdata->textureID, NULL, 1, &pixels, &pitch)
|
if (SDL_LockTexture(overlay->hwdata->textureID, NULL, 1, &pixels, &pitch)
|
||||||
< 0) {
|
< 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
overlay->pixels[0] = (Uint8 *) pixels;
|
overlay->pixels[0] = (Uint8 *) pixels;
|
||||||
overlay->pitches[0] = pitch;
|
overlay->pitches[0] = pitch;
|
||||||
switch (overlay->format) {
|
switch (overlay->format) {
|
||||||
|
@ -1479,8 +1501,23 @@ SDL_UnlockYUVOverlay(SDL_Overlay * overlay)
|
||||||
if (!overlay) {
|
if (!overlay) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (overlay->hwdata->sw) {
|
||||||
|
void *pixels;
|
||||||
|
int pitch;
|
||||||
|
if (SDL_LockTexture(overlay->hwdata->textureID, NULL, 1, &pixels, &pitch) == 0) {
|
||||||
|
SDL_Rect srcrect;
|
||||||
|
|
||||||
|
srcrect.x = 0;
|
||||||
|
srcrect.y = 0;
|
||||||
|
srcrect.w = overlay->w;
|
||||||
|
srcrect.h = overlay->h;
|
||||||
|
SDL_SW_CopyYUVToRGB(overlay->hwdata->sw, &srcrect, SDL_PIXELFORMAT_RGB888, overlay->w, overlay->h, pixels, pitch);
|
||||||
SDL_UnlockTexture(overlay->hwdata->textureID);
|
SDL_UnlockTexture(overlay->hwdata->textureID);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
SDL_UnlockTexture(overlay->hwdata->textureID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
SDL_DisplayYUVOverlay(SDL_Overlay * overlay, SDL_Rect * dstrect)
|
SDL_DisplayYUVOverlay(SDL_Overlay * overlay, SDL_Rect * dstrect)
|
||||||
|
|
|
@ -90,7 +90,6 @@ localexit:
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
__declspec(naked)
|
|
||||||
_ftol2_sse()
|
_ftol2_sse()
|
||||||
{
|
{
|
||||||
_ftol();
|
_ftol();
|
||||||
|
|
|
@ -361,7 +361,7 @@ static int
|
||||||
SW_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
SW_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
{
|
{
|
||||||
if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
|
if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
|
||||||
texture->driverdata = SDL_SW_CreateYUVTexture(texture);
|
texture->driverdata = SDL_SW_CreateYUVTexture(texture->format, texture->w, texture->h);
|
||||||
} else {
|
} else {
|
||||||
int bpp;
|
int bpp;
|
||||||
Uint32 Rmask, Gmask, Bmask, Amask;
|
Uint32 Rmask, Gmask, Bmask, Amask;
|
||||||
|
|
|
@ -91,9 +91,9 @@
|
||||||
|
|
||||||
struct SDL_SW_YUVTexture
|
struct SDL_SW_YUVTexture
|
||||||
{
|
{
|
||||||
SDL_Texture *texture;
|
Uint32 format;
|
||||||
|
|
||||||
Uint32 target_format;
|
Uint32 target_format;
|
||||||
|
int w, h;
|
||||||
Uint8 *pixels;
|
Uint8 *pixels;
|
||||||
int *colortab;
|
int *colortab;
|
||||||
Uint32 *rgb_2_pix;
|
Uint32 *rgb_2_pix;
|
||||||
|
@ -974,7 +974,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* You have chosen wisely... */
|
/* You have chosen wisely... */
|
||||||
switch (swdata->texture->format) {
|
switch (swdata->format) {
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
case SDL_PIXELFORMAT_IYUV:
|
case SDL_PIXELFORMAT_IYUV:
|
||||||
if (SDL_BYTESPERPIXEL(target_format) == 2) {
|
if (SDL_BYTESPERPIXEL(target_format) == 2) {
|
||||||
|
@ -982,7 +982,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
||||||
/* inline assembly functions */
|
/* inline assembly functions */
|
||||||
if (SDL_HasMMX() && (Rmask == 0xF800) &&
|
if (SDL_HasMMX() && (Rmask == 0xF800) &&
|
||||||
(Gmask == 0x07E0) && (Bmask == 0x001F)
|
(Gmask == 0x07E0) && (Bmask == 0x001F)
|
||||||
&& (swdata->texture->w & 15) == 0) {
|
&& (swdata->w & 15) == 0) {
|
||||||
/*printf("Using MMX 16-bit 565 dither\n");*/
|
/*printf("Using MMX 16-bit 565 dither\n");*/
|
||||||
swdata->Display1X = Color565DitherYV12MMX1X;
|
swdata->Display1X = Color565DitherYV12MMX1X;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1003,7 +1003,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
||||||
/* inline assembly functions */
|
/* inline assembly functions */
|
||||||
if (SDL_HasMMX() && (Rmask == 0x00FF0000) &&
|
if (SDL_HasMMX() && (Rmask == 0x00FF0000) &&
|
||||||
(Gmask == 0x0000FF00) &&
|
(Gmask == 0x0000FF00) &&
|
||||||
(Bmask == 0x000000FF) && (swdata->texture->w & 15) == 0) {
|
(Bmask == 0x000000FF) && (swdata->w & 15) == 0) {
|
||||||
/*printf("Using MMX 32-bit dither\n");*/
|
/*printf("Using MMX 32-bit dither\n");*/
|
||||||
swdata->Display1X = ColorRGBDitherYV12MMX1X;
|
swdata->Display1X = ColorRGBDitherYV12MMX1X;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1045,7 +1045,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SW_YUVTexture *
|
SDL_SW_YUVTexture *
|
||||||
SDL_SW_CreateYUVTexture(SDL_Texture * texture)
|
SDL_SW_CreateYUVTexture(Uint32 format, int w, int h)
|
||||||
{
|
{
|
||||||
SDL_SW_YUVTexture *swdata;
|
SDL_SW_YUVTexture *swdata;
|
||||||
int *Cr_r_tab;
|
int *Cr_r_tab;
|
||||||
|
@ -1061,7 +1061,7 @@ SDL_SW_CreateYUVTexture(SDL_Texture * texture)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (texture->format) {
|
switch (format) {
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
case SDL_PIXELFORMAT_IYUV:
|
case SDL_PIXELFORMAT_IYUV:
|
||||||
case SDL_PIXELFORMAT_YUY2:
|
case SDL_PIXELFORMAT_YUY2:
|
||||||
|
@ -1073,9 +1073,11 @@ SDL_SW_CreateYUVTexture(SDL_Texture * texture)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
swdata->texture = texture;
|
swdata->format = format;
|
||||||
swdata->target_format = SDL_PIXELFORMAT_UNKNOWN;
|
swdata->target_format = SDL_PIXELFORMAT_UNKNOWN;
|
||||||
swdata->pixels = (Uint8 *) SDL_malloc(texture->w * texture->h * 2);
|
swdata->w = w;
|
||||||
|
swdata->h = h;
|
||||||
|
swdata->pixels = (Uint8 *) SDL_malloc(w * h * 2);
|
||||||
swdata->colortab = (int *) SDL_malloc(4 * 256 * sizeof(int));
|
swdata->colortab = (int *) SDL_malloc(4 * 256 * sizeof(int));
|
||||||
swdata->rgb_2_pix = (Uint32 *) SDL_malloc(3 * 768 * sizeof(Uint32));
|
swdata->rgb_2_pix = (Uint32 *) SDL_malloc(3 * 768 * sizeof(Uint32));
|
||||||
if (!swdata->pixels || !swdata->colortab || !swdata->rgb_2_pix) {
|
if (!swdata->pixels || !swdata->colortab || !swdata->rgb_2_pix) {
|
||||||
|
@ -1101,22 +1103,22 @@ SDL_SW_CreateYUVTexture(SDL_Texture * texture)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find the pitch and offset values for the overlay */
|
/* Find the pitch and offset values for the overlay */
|
||||||
switch (texture->format) {
|
switch (format) {
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
case SDL_PIXELFORMAT_IYUV:
|
case SDL_PIXELFORMAT_IYUV:
|
||||||
swdata->pitches[0] = texture->w;
|
swdata->pitches[0] = w;
|
||||||
swdata->pitches[1] = swdata->pitches[0] / 2;
|
swdata->pitches[1] = swdata->pitches[0] / 2;
|
||||||
swdata->pitches[2] = swdata->pitches[0] / 2;
|
swdata->pitches[2] = swdata->pitches[0] / 2;
|
||||||
swdata->planes[0] = swdata->pixels;
|
swdata->planes[0] = swdata->pixels;
|
||||||
swdata->planes[1] =
|
swdata->planes[1] =
|
||||||
swdata->planes[0] + swdata->pitches[0] * texture->h;
|
swdata->planes[0] + swdata->pitches[0] * h;
|
||||||
swdata->planes[2] =
|
swdata->planes[2] =
|
||||||
swdata->planes[1] + swdata->pitches[1] * texture->h / 2;
|
swdata->planes[1] + swdata->pitches[1] * h / 2;
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_YUY2:
|
case SDL_PIXELFORMAT_YUY2:
|
||||||
case SDL_PIXELFORMAT_UYVY:
|
case SDL_PIXELFORMAT_UYVY:
|
||||||
case SDL_PIXELFORMAT_YVYU:
|
case SDL_PIXELFORMAT_YVYU:
|
||||||
swdata->pitches[0] = texture->w * 2;
|
swdata->pitches[0] = w * 2;
|
||||||
swdata->planes[0] = swdata->pixels;
|
swdata->planes[0] = swdata->pixels;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1141,19 +1143,17 @@ int
|
||||||
SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
||||||
const void *pixels, int pitch)
|
const void *pixels, int pitch)
|
||||||
{
|
{
|
||||||
SDL_Texture *texture = swdata->texture;
|
switch (swdata->format) {
|
||||||
|
|
||||||
switch (texture->format) {
|
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
case SDL_PIXELFORMAT_IYUV:
|
case SDL_PIXELFORMAT_IYUV:
|
||||||
if (rect
|
if (rect
|
||||||
&& (rect->x != 0 || rect->y != 0 || rect->w != texture->w
|
&& (rect->x != 0 || rect->y != 0 || rect->w != swdata->w
|
||||||
|| rect->h != texture->h)) {
|
|| rect->h != swdata->h)) {
|
||||||
SDL_SetError
|
SDL_SetError
|
||||||
("YV12 and IYUV textures only support full surface updates");
|
("YV12 and IYUV textures only support full surface updates");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
SDL_memcpy(swdata->pixels, pixels, texture->h * texture->w * 2);
|
SDL_memcpy(swdata->pixels, pixels, swdata->h * swdata->w * 2);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_YUY2:
|
case SDL_PIXELFORMAT_YUY2:
|
||||||
case SDL_PIXELFORMAT_UYVY:
|
case SDL_PIXELFORMAT_UYVY:
|
||||||
|
@ -1183,14 +1183,12 @@ int
|
||||||
SDL_SW_LockYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
SDL_SW_LockYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
||||||
int markDirty, void **pixels, int *pitch)
|
int markDirty, void **pixels, int *pitch)
|
||||||
{
|
{
|
||||||
SDL_Texture *texture = swdata->texture;
|
switch (swdata->format) {
|
||||||
|
|
||||||
switch (texture->format) {
|
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
case SDL_PIXELFORMAT_IYUV:
|
case SDL_PIXELFORMAT_IYUV:
|
||||||
if (rect
|
if (rect
|
||||||
&& (rect->x != 0 || rect->y != 0 || rect->w != texture->w
|
&& (rect->x != 0 || rect->y != 0 || rect->w != swdata->w
|
||||||
|| rect->h != texture->h)) {
|
|| rect->h != swdata->h)) {
|
||||||
SDL_SetError
|
SDL_SetError
|
||||||
("YV12 and IYUV textures only support full surface locks");
|
("YV12 and IYUV textures only support full surface locks");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1213,7 +1211,6 @@ SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect,
|
||||||
Uint32 target_format, int w, int h, void *pixels,
|
Uint32 target_format, int w, int h, void *pixels,
|
||||||
int pitch)
|
int pitch)
|
||||||
{
|
{
|
||||||
SDL_Texture *texture = swdata->texture;
|
|
||||||
int stretch;
|
int stretch;
|
||||||
int scale_2x;
|
int scale_2x;
|
||||||
Uint8 *lum, *Cr, *Cb;
|
Uint8 *lum, *Cr, *Cb;
|
||||||
|
@ -1228,8 +1225,8 @@ SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect,
|
||||||
|
|
||||||
stretch = 0;
|
stretch = 0;
|
||||||
scale_2x = 0;
|
scale_2x = 0;
|
||||||
if (srcrect->x || srcrect->y || srcrect->w < texture->w
|
if (srcrect->x || srcrect->y || srcrect->w < swdata->w
|
||||||
|| srcrect->h < texture->h) {
|
|| srcrect->h < swdata->h) {
|
||||||
/* The source rectangle has been clipped.
|
/* The source rectangle has been clipped.
|
||||||
Using a scratch surface is easier than adding clipped
|
Using a scratch surface is easier than adding clipped
|
||||||
source support to all the blitters, plus that would
|
source support to all the blitters, plus that would
|
||||||
|
@ -1268,7 +1265,7 @@ SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect,
|
||||||
SDL_PixelFormatEnumToMasks(target_format, &bpp, &Rmask, &Gmask,
|
SDL_PixelFormatEnumToMasks(target_format, &bpp, &Rmask, &Gmask,
|
||||||
&Bmask, &Amask);
|
&Bmask, &Amask);
|
||||||
swdata->stretch =
|
swdata->stretch =
|
||||||
SDL_CreateRGBSurface(0, texture->w, texture->h, bpp, Rmask,
|
SDL_CreateRGBSurface(0, swdata->w, swdata->h, bpp, Rmask,
|
||||||
Gmask, Bmask, Amask);
|
Gmask, Bmask, Amask);
|
||||||
if (!swdata->stretch) {
|
if (!swdata->stretch) {
|
||||||
return (-1);
|
return (-1);
|
||||||
|
@ -1277,7 +1274,7 @@ SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect,
|
||||||
pixels = swdata->stretch->pixels;
|
pixels = swdata->stretch->pixels;
|
||||||
pitch = swdata->stretch->pitch;
|
pitch = swdata->stretch->pitch;
|
||||||
}
|
}
|
||||||
switch (texture->format) {
|
switch (swdata->format) {
|
||||||
case SDL_PIXELFORMAT_YV12:
|
case SDL_PIXELFORMAT_YV12:
|
||||||
lum = swdata->planes[0];
|
lum = swdata->planes[0];
|
||||||
Cr = swdata->planes[1];
|
Cr = swdata->planes[1];
|
||||||
|
@ -1310,13 +1307,13 @@ SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect,
|
||||||
mod = (pitch / SDL_BYTESPERPIXEL(target_format));
|
mod = (pitch / SDL_BYTESPERPIXEL(target_format));
|
||||||
|
|
||||||
if (scale_2x) {
|
if (scale_2x) {
|
||||||
mod -= (texture->w * 2);
|
mod -= (swdata->w * 2);
|
||||||
swdata->Display2X(swdata->colortab, swdata->rgb_2_pix,
|
swdata->Display2X(swdata->colortab, swdata->rgb_2_pix,
|
||||||
lum, Cr, Cb, pixels, texture->h, texture->w, mod);
|
lum, Cr, Cb, pixels, swdata->h, swdata->w, mod);
|
||||||
} else {
|
} else {
|
||||||
mod -= texture->w;
|
mod -= swdata->w;
|
||||||
swdata->Display1X(swdata->colortab, swdata->rgb_2_pix,
|
swdata->Display1X(swdata->colortab, swdata->rgb_2_pix,
|
||||||
lum, Cr, Cb, pixels, texture->h, texture->w, mod);
|
lum, Cr, Cb, pixels, swdata->h, swdata->w, mod);
|
||||||
}
|
}
|
||||||
if (stretch) {
|
if (stretch) {
|
||||||
SDL_Rect rect = *srcrect;
|
SDL_Rect rect = *srcrect;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
typedef struct SDL_SW_YUVTexture SDL_SW_YUVTexture;
|
typedef struct SDL_SW_YUVTexture SDL_SW_YUVTexture;
|
||||||
|
|
||||||
SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(SDL_Texture * texture);
|
SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(Uint32 format, int w, int h);
|
||||||
int SDL_SW_QueryYUVTexturePixels(SDL_SW_YUVTexture * swdata, void **pixels,
|
int SDL_SW_QueryYUVTexturePixels(SDL_SW_YUVTexture * swdata, void **pixels,
|
||||||
int *pitch);
|
int *pitch);
|
||||||
int SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
int SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture * swdata, const SDL_Rect * rect,
|
||||||
|
|
|
@ -294,7 +294,7 @@ GDI_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
texture->driverdata = data;
|
texture->driverdata = data;
|
||||||
|
|
||||||
if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
|
if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
|
||||||
data->yuv = SDL_SW_CreateYUVTexture(texture);
|
data->yuv = SDL_SW_CreateYUVTexture(texture->format, texture->w, texture->h);
|
||||||
if (!data->yuv) {
|
if (!data->yuv) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue