|
@@ -367,95 +367,11 @@ extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
|
|
|
* instructions.
|
|
|
*
|
|
|
* \since This function is available since SDL 3.0.0.
|
|
|
- */
|
|
|
-extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
|
|
|
-
|
|
|
-/**
|
|
|
- * Allocate memory in a SIMD-friendly way.
|
|
|
- *
|
|
|
- * This will allocate a block of memory that is suitable for use with SIMD
|
|
|
- * instructions. Specifically, it will be properly aligned and padded for the
|
|
|
- * system's supported vector instructions.
|
|
|
- *
|
|
|
- * The memory returned will be padded such that it is safe to read or write an
|
|
|
- * incomplete vector at the end of the memory block. This can be useful so you
|
|
|
- * don't have to drop back to a scalar fallback at the end of your SIMD
|
|
|
- * processing loop to deal with the final elements without overflowing the
|
|
|
- * allocated buffer.
|
|
|
- *
|
|
|
- * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or
|
|
|
- * delete[], etc.
|
|
|
- *
|
|
|
- * Note that SDL will only deal with SIMD instruction sets it is aware of; for
|
|
|
- * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and
|
|
|
- * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants
|
|
|
- * 64. To be clear: if you can't decide to use an instruction set with an
|
|
|
- * SDL_Has*() function, don't use that instruction set with memory allocated
|
|
|
- * through here.
|
|
|
*
|
|
|
- * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
|
|
|
- * out of memory, but you are not allowed to dereference it (because you only
|
|
|
- * own zero bytes of that buffer).
|
|
|
- *
|
|
|
- * \param len The length, in bytes, of the block to allocate. The actual
|
|
|
- * allocated block might be larger due to padding, etc.
|
|
|
- * \returns a pointer to the newly-allocated block, NULL if out of memory.
|
|
|
- *
|
|
|
- * \since This function is available since SDL 3.0.0.
|
|
|
- *
|
|
|
- * \sa SDL_SIMDGetAlignment
|
|
|
- * \sa SDL_SIMDRealloc
|
|
|
- * \sa SDL_SIMDFree
|
|
|
+ * \sa SDL_aligned_alloc
|
|
|
+ * \sa SDL_aligned_free
|
|
|
*/
|
|
|
-extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
|
|
|
-
|
|
|
-/**
|
|
|
- * Reallocate memory obtained from SDL_SIMDAlloc
|
|
|
- *
|
|
|
- * It is not valid to use this function on a pointer from anything but
|
|
|
- * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
|
|
|
- * SDL_malloc, memalign, new[], etc.
|
|
|
- *
|
|
|
- * \param mem The pointer obtained from SDL_SIMDAlloc. This function also
|
|
|
- * accepts NULL, at which point this function is the same as
|
|
|
- * calling SDL_SIMDAlloc with a NULL pointer.
|
|
|
- * \param len The length, in bytes, of the block to allocated. The actual
|
|
|
- * allocated block might be larger due to padding, etc. Passing 0
|
|
|
- * will return a non-NULL pointer, assuming the system isn't out of
|
|
|
- * memory.
|
|
|
- * \returns a pointer to the newly-reallocated block, NULL if out of memory.
|
|
|
- *
|
|
|
- * \since This function is available since SDL 3.0.0.
|
|
|
- *
|
|
|
- * \sa SDL_SIMDGetAlignment
|
|
|
- * \sa SDL_SIMDAlloc
|
|
|
- * \sa SDL_SIMDFree
|
|
|
- */
|
|
|
-extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);
|
|
|
-
|
|
|
-/**
|
|
|
- * Deallocate memory obtained from SDL_SIMDAlloc
|
|
|
- *
|
|
|
- * It is not valid to use this function on a pointer from anything but
|
|
|
- * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from
|
|
|
- * malloc, realloc, SDL_malloc, memalign, new[], etc.
|
|
|
- *
|
|
|
- * However, SDL_SIMDFree(NULL) is a legal no-op.
|
|
|
- *
|
|
|
- * The memory pointed to by `ptr` is no longer valid for access upon return,
|
|
|
- * and may be returned to the system or reused by a future allocation. The
|
|
|
- * pointer passed to this function is no longer safe to dereference once this
|
|
|
- * function returns, and should be discarded.
|
|
|
- *
|
|
|
- * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to
|
|
|
- * deallocate. NULL is a legal no-op.
|
|
|
- *
|
|
|
- * \since This function is available since SDL 3.0.0.
|
|
|
- *
|
|
|
- * \sa SDL_SIMDAlloc
|
|
|
- * \sa SDL_SIMDRealloc
|
|
|
- */
|
|
|
-extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
|
|
|
+extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
|
|
|
|
|
|
/* Ends C function definitions when using C++ */
|
|
|
#ifdef __cplusplus
|