diff options
author | midipix <writeonce@midipix.org> | 2015-07-27 04:01:18 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2015-07-27 04:01:18 -0400 |
commit | dd89bb8ad4fe184a34b5dbdda237e640fc82121b (patch) | |
tree | 5e80d2da35f5892f92be29f57982b2708e6bd99b /include/ntapi/nt_blitter.h | |
parent | dcdadc2702712fa750ed255ed1dfa354522797a0 (diff) | |
download | ntapi-dd89bb8ad4fe184a34b5dbdda237e640fc82121b.tar.bz2 ntapi-dd89bb8ad4fe184a34b5dbdda237e640fc82121b.tar.xz |
entered advanced internal development stage.
Diffstat (limited to 'include/ntapi/nt_blitter.h')
-rw-r--r-- | include/ntapi/nt_blitter.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/include/ntapi/nt_blitter.h b/include/ntapi/nt_blitter.h new file mode 100644 index 0000000..529a843 --- /dev/null +++ b/include/ntapi/nt_blitter.h @@ -0,0 +1,129 @@ +#ifndef _NT_BLITTER_H_ +#define _NT_BLITTER_H_ + +#include <psxtypes/psxtypes.h> +#include "nt_object.h" + +/* blt_alloc flag bits */ +#define NT_BLITTER_ENABLE_BLOCK_ARRAY 0x01 +#define NT_BLITTER_ENABLE_BLOCK_SECTIONS 0x02 +#define NT_BLITTER_ENABLE_CACHE 0x04 +#define NT_BLITTER_PRESERVE_BITS 0x08 + +/* blitter query type bits */ +#define NT_BLITTER_QUERY_INFO 0x01 +#define NT_BLITTER_QUERY_PARAMS 0x02 + +/* blitter context (opaque) */ +typedef struct nt_blitter_context nt_blitter; + +typedef struct _nt_blitter_params { + size_t params_size; + size_t block_size; + intptr_t block_count; + intptr_t cache_blocks_min; __optional + intptr_t cache_blocks_max; __optional + size_t zero_bits; __optional + uint32_t srvtid; __optional + uint32_t flags; __optional + int32_t lock_tries; __optional + int32_t round_trips; __optional + void * hsignal_blt; __optional + void * hsignal_app; __optional + void * bitmap; __optional + void * region; __optional +} nt_blitter_params; + + +typedef struct _nt_blitter_info { + size_t info_size; + void * region_addr; + size_t region_size; + size_t block_size; + intptr_t block_count; + intptr_t blocks_used; + intptr_t blocks_avail; + intptr_t blocks_cached; + intptr_t lock_tries; + intptr_t busy; +} nt_blitter_info; + + +typedef struct _nt_blitter_query { + size_t size; + int32_t type; + uint32_t flags; + nt_blitter_params * params; + nt_blitter_info * info; +} nt_blitter_query; + + +typedef struct _nt_blitter_config { + size_t size; + int32_t type; + uint32_t flags; + nt_blitter_params * params; +} nt_blitter_config; + + +/* blitter functions */ +typedef int32_t __fastcall ntapi_blt_alloc( + __out nt_blitter ** blitter, + __in nt_blitter_params * params); + + +typedef int32_t __fastcall ntapi_blt_free( + __in nt_blitter * blitter); + + +typedef int32_t __fastcall ntapi_blt_query( + __in nt_blitter * blitter, + __in nt_blitter_query * blt_query); + + +typedef int32_t __fastcall ntapi_blt_config( + __in nt_blitter * blitter, + __in nt_blitter_config * blt_config); + + +typedef int32_t __fastcall ntapi_blt_acquire( + __in nt_blitter * blitter, + __out intptr_t * block_id); + + +typedef int32_t __fastcall ntapi_blt_obtain( + __in nt_blitter * blitter, + __out intptr_t * block_id); + + +typedef int32_t __fastcall ntapi_blt_possess( + __in nt_blitter * blitter, + __out intptr_t * block_id); + + +typedef int32_t __fastcall ntapi_blt_release( + __in nt_blitter * blitter, + __in intptr_t block_id); + + +typedef void * __fastcall ntapi_blt_region( + __in const nt_blitter * blitter); + + +/** + * blt_get,blt_set: + * clients might prefr to write inlined + * alternatives that use a cached blt_region. +**/ +typedef void * __fastcall ntapi_blt_get( + __in const nt_blitter * blitter, + __in intptr_t block_id); + + +typedef void __fastcall ntapi_blt_set( + __in const nt_blitter * blitter, + __in intptr_t block_id, + __in void * val); + + +#endif |