mirror of
https://github.com/Maschell/dynamic_libs.git
synced 2024-11-22 12:29:16 +01:00
188 lines
11 KiB
C
188 lines
11 KiB
C
/****************************************************************************
|
|
* Copyright (C) 2015
|
|
* by Dimok
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any
|
|
* damages arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any
|
|
* purpose, including commercial applications, and to alter it and
|
|
* redistribute it freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
* must not claim that you wrote the original software. If you use
|
|
* this software in a product, an acknowledgment in the product
|
|
* documentation would be appreciated but is not required.
|
|
*
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
* must not be misrepresented as being the original software.
|
|
*
|
|
* 3. This notice may not be removed or altered from any source
|
|
* distribution.
|
|
***************************************************************************/
|
|
#include "os_functions.h"
|
|
#include "gx2_types.h"
|
|
|
|
u32 gx2_handle __attribute__((section(".data"))) = 0;
|
|
|
|
EXPORT_DECL(void, GX2Init, u32 * init_attribs);
|
|
EXPORT_DECL(void, GX2Shutdown, void);
|
|
EXPORT_DECL(void, GX2Flush, void);
|
|
EXPORT_DECL(s32, GX2GetMainCoreId, void) ;
|
|
EXPORT_DECL(s32, GX2DrawDone, void);
|
|
EXPORT_DECL(void, GX2ClearColor, GX2ColorBuffer *colorBuffer, f32 r, f32 g, f32 b, f32 a);
|
|
EXPORT_DECL(void, GX2SetViewport, f32 x, f32 y, f32 w, f32 h, f32 nearZ, f32 farZ);
|
|
EXPORT_DECL(void, GX2SetScissor, u32 x_orig, u32 y_orig, u32 wd, u32 ht);
|
|
EXPORT_DECL(void, GX2SetContextState, const GX2ContextState* state);
|
|
EXPORT_DECL(void, GX2DrawEx, s32 primitive_type, u32 count, u32 first_vertex, u32 instances_count);
|
|
EXPORT_DECL(void, GX2DrawIndexedEx, s32 primitive_type, u32 count, s32 index_format, const void* idx, u32 first_vertex, u32 instances_count);
|
|
EXPORT_DECL(void, GX2ClearDepthStencilEx, GX2DepthBuffer *depthBuffer, f32 depth_value, u8 stencil_value, s32 clear_mode);
|
|
EXPORT_DECL(void, GX2SetClearDepthStencil, GX2DepthBuffer *depthBuffer, f32 depth_value, u8 stencil_value);
|
|
EXPORT_DECL(void, GX2CopyColorBufferToScanBuffer, const GX2ColorBuffer *colorBuffer, s32 scan_target);
|
|
EXPORT_DECL(void, GX2SwapScanBuffers, void);
|
|
EXPORT_DECL(void, GX2SetTVEnable, s32 enable);
|
|
EXPORT_DECL(void, GX2SetSwapInterval, u32 swap_interval);
|
|
EXPORT_DECL(u32, GX2GetSwapInterval, void);
|
|
EXPORT_DECL(void, GX2WaitForVsync, void);
|
|
EXPORT_DECL(void, GX2CalcTVSize, s32 tv_render_mode, s32 format, s32 buffering_mode, u32 * size, s32 * scale_needed);
|
|
EXPORT_DECL(void, GX2Invalidate, s32 invalidate_type, void * ptr, u32 buffer_size);
|
|
EXPORT_DECL(void, GX2SetTVBuffer, void *buffer, u32 buffer_size, s32 tv_render_mode, s32 format, s32 buffering_mode);
|
|
EXPORT_DECL(void, GX2CalcSurfaceSizeAndAlignment, GX2Surface *surface);
|
|
EXPORT_DECL(void, GX2InitDepthBufferRegs, GX2DepthBuffer *depthBuffer);
|
|
EXPORT_DECL(void, GX2InitColorBufferRegs, GX2ColorBuffer *colorBuffer);
|
|
EXPORT_DECL(void, GX2CalcColorBufferAuxInfo, GX2ColorBuffer *colorBuffer, u32 *size, u32 *align);
|
|
EXPORT_DECL(void, GX2CalcDepthBufferHiZInfo, GX2DepthBuffer *depthBuffer, u32 *size, u32 *align);
|
|
EXPORT_DECL(void, GX2InitDepthBufferHiZEnable, GX2DepthBuffer *depthBuffer, s32 hiZ_enable);
|
|
EXPORT_DECL(void, GX2SetupContextStateEx, GX2ContextState* state, s32 enable_profiling);
|
|
EXPORT_DECL(void, GX2SetColorBuffer, const GX2ColorBuffer *colorBuffer, s32 target);
|
|
EXPORT_DECL(void, GX2SetDepthBuffer, const GX2DepthBuffer *depthBuffer);
|
|
EXPORT_DECL(void, GX2SetAttribBuffer, u32 attr_index, u32 attr_size, u32 stride, const void* attr);
|
|
EXPORT_DECL(void, GX2InitTextureRegs, GX2Texture *texture);
|
|
EXPORT_DECL(void, GX2InitSampler, GX2Sampler *sampler, s32 tex_clamp, s32 min_mag_filter);
|
|
EXPORT_DECL(u32, GX2CalcFetchShaderSizeEx, u32 num_attrib, s32 fetch_shader_type, s32 tessellation_mode);
|
|
EXPORT_DECL(void, GX2InitFetchShaderEx, GX2FetchShader* fs, void* fs_buffer, u32 count, const GX2AttribStream* attribs, s32 fetch_shader_type, s32 tessellation_mode);
|
|
EXPORT_DECL(void, GX2SetFetchShader, const GX2FetchShader* fs);
|
|
EXPORT_DECL(void, GX2SetVertexUniformReg, u32 offset, u32 count, const void *values);
|
|
EXPORT_DECL(void, GX2SetPixelUniformReg, u32 offset, u32 count, const void *values);
|
|
EXPORT_DECL(void, GX2SetPixelTexture, const GX2Texture *texture, u32 texture_hw_location);
|
|
EXPORT_DECL(void, GX2SetVertexTexture, const GX2Texture *texture, u32 texture_hw_location);
|
|
EXPORT_DECL(void, GX2SetPixelSampler, const GX2Sampler *sampler, u32 sampler_hw_location);
|
|
EXPORT_DECL(void, GX2SetVertexSampler, const GX2Sampler *sampler, u32 sampler_hw_location);
|
|
EXPORT_DECL(void, GX2SetPixelShader, const GX2PixelShader* pixelShader);
|
|
EXPORT_DECL(void, GX2SetVertexShader, const GX2VertexShader* vertexShader);
|
|
EXPORT_DECL(void, GX2InitSamplerZMFilter, GX2Sampler *sampler, s32 z_filter, s32 mip_filter);
|
|
EXPORT_DECL(void, GX2SetColorControl, s32 lop, u8 blend_enable_mask, s32 enable_multi_write, s32 enable_color_buffer);
|
|
EXPORT_DECL(void, GX2SetDepthOnlyControl, s32 enable_depth, s32 enable_depth_write, s32 depth_comp_function);
|
|
EXPORT_DECL(void, GX2SetBlendControl, s32 target, s32 color_src_blend, s32 color_dst_blend, s32 color_combine, s32 separate_alpha_blend, s32 alpha_src_blend, s32 alpha_dst_blend, s32 alpha_combine);
|
|
EXPORT_DECL(void, GX2CalcDRCSize, s32 drc_mode, s32 format, s32 buffering_mode, u32 *size, s32 *scale_needed);
|
|
EXPORT_DECL(void, GX2SetDRCBuffer, void *buffer, u32 buffer_size, s32 drc_mode, s32 surface_format, s32 buffering_mode);
|
|
EXPORT_DECL(void, GX2SetDRCScale, u32 width, u32 height);
|
|
EXPORT_DECL(void, GX2SetDRCEnable, s32 enable);
|
|
EXPORT_DECL(void, GX2SetPolygonControl, s32 front_face_mode, s32 cull_front, s32 cull_back, s32 enable_mode, s32 mode_font, s32 mode_back, s32 poly_offset_front, s32 poly_offset_back, s32 point_line_offset);
|
|
EXPORT_DECL(void, GX2SetCullOnlyControl, s32 front_face_mode, s32 cull_front, s32 cull_back);
|
|
EXPORT_DECL(void, GX2SetDepthStencilControl, s32 enable_depth_test, s32 enable_depth_write, s32 depth_comp_function, s32 stencil_test_enable, s32 back_stencil_enable,
|
|
s32 font_stencil_func, s32 front_stencil_z_pass, s32 front_stencil_z_fail, s32 front_stencil_fail,
|
|
s32 back_stencil_func, s32 back_stencil_z_pass, s32 back_stencil_z_fail, s32 back_stencil_fail);
|
|
EXPORT_DECL(void, GX2SetStencilMask, u8 mask_front, u8 write_mask_front, u8 ref_front, u8 mask_back, u8 write_mask_back, u8 ref_back);
|
|
EXPORT_DECL(void, GX2SetLineWidth, f32 width);
|
|
EXPORT_DECL(void, GX2SetTVGamma, f32 val);
|
|
EXPORT_DECL(void, GX2SetDRCGamma, f32 gam);
|
|
EXPORT_DECL(s32, GX2GetSystemTVScanMode, void);
|
|
EXPORT_DECL(s32, GX2GetSystemDRCScanMode, void);
|
|
EXPORT_DECL(void, GX2RSetAllocator, void * (* allocFunc)(u32, u32, u32), void (* freeFunc)(u32, void*));
|
|
EXPORT_DECL(void, GX2CopySurface, GX2Surface * srcSurface,u32 srcMip,u32 srcSlice,GX2Surface * dstSurface,u32 dstMip,u32 dstSlice );
|
|
|
|
EXPORT_DECL(s32, GX2GetLastFrame, s32 target, GX2Texture * texture);
|
|
EXPORT_DECL(void, GX2BeginDisplayListEx,void * displayList,u32 size,s32 unkwn);
|
|
EXPORT_DECL(u32, GX2EndDisplayList, void * list);
|
|
EXPORT_DECL(void, GX2CallDisplayList, void * list, u32 size);
|
|
EXPORT_DECL(void, GX2ExpandAAColorBuffer,GX2ColorBuffer * buffer);
|
|
EXPORT_DECL(void, GX2ResolveAAColorBuffer, const GX2ColorBuffer * srcBuffer, GX2Surface * dstSurface,u32 dstMip,u32 dstSlice);
|
|
|
|
EXPORT_DECL(void, GX2ClearBuffersEx, GX2ColorBuffer * colorBuffer,GX2DepthBuffer * depthBuffer,f32 r, f32 g, f32 b, f32 a,f32 depthValue,u8 stencilValue,s32 clearFlags);
|
|
|
|
void InitAcquireGX2(void) {
|
|
if(coreinit_handle == 0) {
|
|
InitAcquireOS();
|
|
};
|
|
OSDynLoad_Acquire("gx2.rpl", &gx2_handle);
|
|
}
|
|
|
|
void InitGX2FunctionPointers(void) {
|
|
u32 *funcPointer = 0;
|
|
InitAcquireGX2();
|
|
|
|
OS_FIND_EXPORT(gx2_handle, GX2Init);
|
|
OS_FIND_EXPORT(gx2_handle, GX2Shutdown);
|
|
OS_FIND_EXPORT(gx2_handle, GX2Flush);
|
|
OS_FIND_EXPORT(gx2_handle, GX2GetMainCoreId);
|
|
OS_FIND_EXPORT(gx2_handle, GX2DrawDone);
|
|
OS_FIND_EXPORT(gx2_handle, GX2ClearColor);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetViewport);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetScissor);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetContextState);
|
|
OS_FIND_EXPORT(gx2_handle, GX2DrawEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2DrawIndexedEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2ClearDepthStencilEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CopyColorBufferToScanBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SwapScanBuffers);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetTVEnable);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetSwapInterval);
|
|
OS_FIND_EXPORT(gx2_handle, GX2GetSwapInterval);
|
|
OS_FIND_EXPORT(gx2_handle, GX2WaitForVsync);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcTVSize);
|
|
OS_FIND_EXPORT(gx2_handle, GX2Invalidate);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetTVBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcSurfaceSizeAndAlignment);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitDepthBufferRegs);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitColorBufferRegs);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcColorBufferAuxInfo);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcDepthBufferHiZInfo);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitDepthBufferHiZEnable);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetupContextStateEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetColorBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDepthBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetAttribBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitTextureRegs);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitSampler);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcFetchShaderSizeEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitFetchShaderEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetFetchShader);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetVertexUniformReg);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetPixelUniformReg);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetPixelTexture);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetVertexTexture);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetPixelSampler);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetVertexSampler);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetPixelShader);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetVertexShader);
|
|
OS_FIND_EXPORT(gx2_handle, GX2InitSamplerZMFilter);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetColorControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDepthOnlyControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetBlendControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CalcDRCSize);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDRCBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDRCScale);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDRCEnable);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetPolygonControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetCullOnlyControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDepthStencilControl);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetStencilMask);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetLineWidth);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetDRCGamma);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetTVGamma);
|
|
OS_FIND_EXPORT(gx2_handle, GX2GetSystemTVScanMode);
|
|
OS_FIND_EXPORT(gx2_handle, GX2GetSystemDRCScanMode);
|
|
OS_FIND_EXPORT(gx2_handle, GX2RSetAllocator);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CopySurface);
|
|
OS_FIND_EXPORT(gx2_handle, GX2GetLastFrame);
|
|
OS_FIND_EXPORT(gx2_handle, GX2ClearBuffersEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2BeginDisplayListEx);
|
|
OS_FIND_EXPORT(gx2_handle, GX2EndDisplayList);
|
|
OS_FIND_EXPORT(gx2_handle, GX2CallDisplayList);
|
|
OS_FIND_EXPORT(gx2_handle, GX2ExpandAAColorBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2ResolveAAColorBuffer);
|
|
OS_FIND_EXPORT(gx2_handle, GX2SetClearDepthStencil);
|
|
}
|