initial commit
This commit is contained in:
+216
@@ -0,0 +1,216 @@
|
||||
package sdl
|
||||
|
||||
/*
|
||||
#include "sdl_wrapper.h"
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,9))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_HasAVX512F is not supported before SDL 2.0.9")
|
||||
#endif
|
||||
|
||||
static inline SDL_bool SDL_HasAVX512F()
|
||||
{
|
||||
return SDL_FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,1))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_GetSystemRAM is not supported before SDL 2.0.1")
|
||||
#endif
|
||||
|
||||
static inline int SDL_GetSystemRAM()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,2))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_HasAVX is not supported before SDL 2.0.2")
|
||||
#endif
|
||||
|
||||
static inline SDL_bool SDL_HasAVX()
|
||||
{
|
||||
return SDL_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,4))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_HasAVX2 is not supported before SDL 2.0.4")
|
||||
#endif
|
||||
|
||||
static inline SDL_bool SDL_HasAVX2()
|
||||
{
|
||||
return SDL_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,6))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_HasNEON is not supported before SDL 2.0.4")
|
||||
#endif
|
||||
|
||||
static inline SDL_bool SDL_HasNEON()
|
||||
{
|
||||
return SDL_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(SDL_VERSION_ATLEAST(2,0,10))
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_SIMDGetAlignment is not supported before SDL 2.0.10")
|
||||
#endif
|
||||
|
||||
static inline size_t SDL_SIMDGetAlignment(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_SIMDAlloc is not supported before SDL 2.0.10")
|
||||
#endif
|
||||
|
||||
static inline void * SDL_SIMDAlloc(const size_t len)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(WARN_OUTDATED)
|
||||
#pragma message("SDL_SIMDFree is not supported before SDL 2.0.10")
|
||||
#endif
|
||||
|
||||
static inline void SDL_SIMDFree(void *ptr)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
*/
|
||||
import "C"
|
||||
import "unsafe"
|
||||
|
||||
// CACHELINE_SIZE is a cacheline size used for padding.
|
||||
const CACHELINE_SIZE = C.SDL_CACHELINE_SIZE
|
||||
|
||||
// GetCPUCount returns the number of CPU cores available.
|
||||
// (https://wiki.libsdl.org/SDL_GetCPUCount)
|
||||
func GetCPUCount() int {
|
||||
return int(C.SDL_GetCPUCount())
|
||||
}
|
||||
|
||||
// GetCPUCacheLineSize returns the L1 cache line size of the CPU.
|
||||
// (https://wiki.libsdl.org/SDL_GetCPUCacheLineSize)
|
||||
func GetCPUCacheLineSize() int {
|
||||
return int(C.SDL_GetCPUCacheLineSize())
|
||||
}
|
||||
|
||||
// HasRDTSC reports whether the CPU has the RDTSC instruction.
|
||||
// (https://wiki.libsdl.org/SDL_HasRDTSC)
|
||||
func HasRDTSC() bool {
|
||||
return C.SDL_HasRDTSC() > 0
|
||||
}
|
||||
|
||||
// HasAltiVec reports whether the CPU has AltiVec features.
|
||||
// (https://wiki.libsdl.org/SDL_HasAltiVec)
|
||||
func HasAltiVec() bool {
|
||||
return C.SDL_HasAltiVec() > 0
|
||||
}
|
||||
|
||||
// HasMMX reports whether the CPU has MMX features.
|
||||
// (https://wiki.libsdl.org/SDL_HasMMX)
|
||||
func HasMMX() bool {
|
||||
return C.SDL_HasMMX() > 0
|
||||
}
|
||||
|
||||
// Has3DNow reports whether the CPU has 3DNow! features.
|
||||
// (https://wiki.libsdl.org/SDL_Has3DNow)
|
||||
func Has3DNow() bool {
|
||||
return C.SDL_Has3DNow() > 0
|
||||
}
|
||||
|
||||
// HasSSE reports whether the CPU has SSE features.
|
||||
// (https://wiki.libsdl.org/SDL_HasSSE)
|
||||
func HasSSE() bool {
|
||||
return C.SDL_HasSSE() > 0
|
||||
}
|
||||
|
||||
// HasSSE2 reports whether the CPU has SSE2 features.
|
||||
// (https://wiki.libsdl.org/SDL_HasSSE2)
|
||||
func HasSSE2() bool {
|
||||
return C.SDL_HasSSE2() > 0
|
||||
}
|
||||
|
||||
// HasSSE3 reports whether the CPU has SSE3 features.
|
||||
// (https://wiki.libsdl.org/SDL_HasSSE3)
|
||||
func HasSSE3() bool {
|
||||
return C.SDL_HasSSE3() > 0
|
||||
}
|
||||
|
||||
// HasSSE41 reports whether the CPU has SSE4.1 features.
|
||||
// (https://wiki.libsdl.org/SDL_HasSSE41)
|
||||
func HasSSE41() bool {
|
||||
return C.SDL_HasSSE41() > 0
|
||||
}
|
||||
|
||||
// HasSSE42 reports whether the CPU has SSE4.2 features.
|
||||
// (https://wiki.libsdl.org/SDL_HasSSE42)
|
||||
func HasSSE42() bool {
|
||||
return C.SDL_HasSSE42() > 0
|
||||
}
|
||||
|
||||
// GetSystemRAM returns the amount of RAM configured in the system.
|
||||
// (https://wiki.libsdl.org/SDL_GetSystemRAM)
|
||||
func GetSystemRAM() int {
|
||||
return int(C.SDL_GetSystemRAM())
|
||||
}
|
||||
|
||||
// HasAVX reports whether the CPU has AVX features.
|
||||
// (https://wiki.libsdl.org/SDL_HasAVX)
|
||||
func HasAVX() bool {
|
||||
return C.SDL_HasAVX() > 0
|
||||
}
|
||||
|
||||
// HasAVX512F reports whether the CPU has AVX-512F (foundation) features.
|
||||
// TODO: (https://wiki.libsdl.org/SDL_HasAVX512F)
|
||||
func HasAVX512F() bool {
|
||||
return C.SDL_HasAVX512F() > 0
|
||||
}
|
||||
|
||||
// HasAVX2 reports whether the CPU has AVX2 features.
|
||||
// (https://wiki.libsdl.org/SDL_HasAVX2)
|
||||
func HasAVX2() bool {
|
||||
return C.SDL_HasAVX2() > 0
|
||||
}
|
||||
|
||||
// HasNEON reports whether the CPU has NEON features.
|
||||
// (https://wiki.libsdl.org/SDL_HasNEON)
|
||||
func HasNEON() bool {
|
||||
return C.SDL_HasNEON() > 0
|
||||
}
|
||||
|
||||
// SIMDGetAlignment reports the alignment this system needs for SIMD allocations.
|
||||
// TODO: (https://wiki.libsdl.org/SDL_SIMDGetAlignment)
|
||||
func SIMDGetAlignment() int {
|
||||
return int(C.SDL_SIMDGetAlignment())
|
||||
}
|
||||
|
||||
// SIMDAlloc allocates memory in a SIMD-friendly way.
|
||||
// TODO: (https://wiki.libsdl.org/SDL_SIMDAlloc)
|
||||
func SIMDAlloc(_len int) unsafe.Pointer {
|
||||
return C.SDL_SIMDAlloc(C.size_t(_len))
|
||||
}
|
||||
|
||||
// SIMDFree deallocates memory obtained from SDL_SIMDAlloc.
|
||||
// TODO: (https://wiki.libsdl.org/SDL_SIMDFree)
|
||||
func SIMDFree(p unsafe.Pointer) {
|
||||
C.SDL_SIMDFree(p)
|
||||
}
|
||||
Reference in New Issue
Block a user