| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /******************************************************************************
- Copyright (C) 2013 by Hugh Bailey <[email protected]>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- ******************************************************************************/
- #include "../util/base.h"
- #include "../util/dstr.h"
- #include "../util/platform.h"
- #include "graphics-internal.h"
- #define GRAPHICS_IMPORT(func) \
- do { \
- exports->func = os_dlsym(module, #func); \
- if (!exports->func) { \
- success = false; \
- blog(LOG_ERROR, "Could not load function '%s' from " \
- "module '%s'", #func, module_name); \
- } \
- } while (false)
- #define GRAPHICS_IMPORT_OPTIONAL(func) \
- do { \
- exports->func = os_dlsym(module, #func); \
- } while (false)
- bool load_graphics_imports(struct gs_exports *exports, void *module,
- const char *module_name)
- {
- bool success = true;
- GRAPHICS_IMPORT(device_create);
- GRAPHICS_IMPORT(device_destroy);
- GRAPHICS_IMPORT(device_entercontext);
- GRAPHICS_IMPORT(device_leavecontext);
- GRAPHICS_IMPORT(device_create_swapchain);
- GRAPHICS_IMPORT(device_resize);
- GRAPHICS_IMPORT(device_getsize);
- GRAPHICS_IMPORT(device_getwidth);
- GRAPHICS_IMPORT(device_getheight);
- GRAPHICS_IMPORT(device_create_texture);
- GRAPHICS_IMPORT(device_create_cubetexture);
- GRAPHICS_IMPORT(device_create_volumetexture);
- GRAPHICS_IMPORT(device_create_zstencil);
- GRAPHICS_IMPORT(device_create_stagesurface);
- GRAPHICS_IMPORT(device_create_samplerstate);
- GRAPHICS_IMPORT(device_create_vertexshader);
- GRAPHICS_IMPORT(device_create_pixelshader);
- GRAPHICS_IMPORT(device_create_vertexbuffer);
- GRAPHICS_IMPORT(device_create_indexbuffer);
- GRAPHICS_IMPORT(device_gettexturetype);
- GRAPHICS_IMPORT(device_load_vertexbuffer);
- GRAPHICS_IMPORT(device_load_indexbuffer);
- GRAPHICS_IMPORT(device_load_texture);
- GRAPHICS_IMPORT(device_load_samplerstate);
- GRAPHICS_IMPORT(device_load_vertexshader);
- GRAPHICS_IMPORT(device_load_pixelshader);
- GRAPHICS_IMPORT(device_load_defaultsamplerstate);
- GRAPHICS_IMPORT(device_getvertexshader);
- GRAPHICS_IMPORT(device_getpixelshader);
- GRAPHICS_IMPORT(device_getrendertarget);
- GRAPHICS_IMPORT(device_getzstenciltarget);
- GRAPHICS_IMPORT(device_setrendertarget);
- GRAPHICS_IMPORT(device_setcuberendertarget);
- GRAPHICS_IMPORT(device_copy_texture);
- GRAPHICS_IMPORT(device_stage_texture);
- GRAPHICS_IMPORT(device_beginscene);
- GRAPHICS_IMPORT(device_draw);
- GRAPHICS_IMPORT(device_load_swapchain);
- GRAPHICS_IMPORT(device_endscene);
- GRAPHICS_IMPORT(device_clear);
- GRAPHICS_IMPORT(device_present);
- GRAPHICS_IMPORT(device_setcullmode);
- GRAPHICS_IMPORT(device_getcullmode);
- GRAPHICS_IMPORT(device_enable_blending);
- GRAPHICS_IMPORT(device_enable_depthtest);
- GRAPHICS_IMPORT(device_enable_stenciltest);
- GRAPHICS_IMPORT(device_enable_stencilwrite);
- GRAPHICS_IMPORT(device_enable_color);
- GRAPHICS_IMPORT(device_blendfunction);
- GRAPHICS_IMPORT(device_depthfunction);
- GRAPHICS_IMPORT(device_stencilfunction);
- GRAPHICS_IMPORT(device_stencilop);
- GRAPHICS_IMPORT(device_enable_fullscreen);
- GRAPHICS_IMPORT(device_fullscreen_enabled);
- GRAPHICS_IMPORT(device_setdisplaymode);
- GRAPHICS_IMPORT(device_getdisplaymode);
- GRAPHICS_IMPORT(device_setcolorramp);
- GRAPHICS_IMPORT(device_setviewport);
- GRAPHICS_IMPORT(device_getviewport);
- GRAPHICS_IMPORT(device_setscissorrect);
- GRAPHICS_IMPORT(device_ortho);
- GRAPHICS_IMPORT(device_frustum);
- GRAPHICS_IMPORT(device_projection_push);
- GRAPHICS_IMPORT(device_projection_pop);
- GRAPHICS_IMPORT(swapchain_destroy);
- GRAPHICS_IMPORT(texture_destroy);
- GRAPHICS_IMPORT(texture_getwidth);
- GRAPHICS_IMPORT(texture_getheight);
- GRAPHICS_IMPORT(texture_getcolorformat);
- GRAPHICS_IMPORT(texture_map);
- GRAPHICS_IMPORT(texture_unmap);
- GRAPHICS_IMPORT_OPTIONAL(texture_isrect);
- GRAPHICS_IMPORT(cubetexture_destroy);
- GRAPHICS_IMPORT(cubetexture_getsize);
- GRAPHICS_IMPORT(cubetexture_getcolorformat);
- GRAPHICS_IMPORT(volumetexture_destroy);
- GRAPHICS_IMPORT(volumetexture_getwidth);
- GRAPHICS_IMPORT(volumetexture_getheight);
- GRAPHICS_IMPORT(volumetexture_getdepth);
- GRAPHICS_IMPORT(volumetexture_getcolorformat);
- GRAPHICS_IMPORT(stagesurface_destroy);
- GRAPHICS_IMPORT(stagesurface_getwidth);
- GRAPHICS_IMPORT(stagesurface_getheight);
- GRAPHICS_IMPORT(stagesurface_getcolorformat);
- GRAPHICS_IMPORT(stagesurface_map);
- GRAPHICS_IMPORT(stagesurface_unmap);
- GRAPHICS_IMPORT(zstencil_destroy);
- GRAPHICS_IMPORT(samplerstate_destroy);
- GRAPHICS_IMPORT(vertexbuffer_destroy);
- GRAPHICS_IMPORT(vertexbuffer_flush);
- GRAPHICS_IMPORT(vertexbuffer_getdata);
- GRAPHICS_IMPORT(indexbuffer_destroy);
- GRAPHICS_IMPORT(indexbuffer_flush);
- GRAPHICS_IMPORT(indexbuffer_getdata);
- GRAPHICS_IMPORT(indexbuffer_numindices);
- GRAPHICS_IMPORT(indexbuffer_gettype);
- GRAPHICS_IMPORT(shader_destroy);
- GRAPHICS_IMPORT(shader_numparams);
- GRAPHICS_IMPORT(shader_getparambyidx);
- GRAPHICS_IMPORT(shader_getparambyname);
- GRAPHICS_IMPORT(shader_getparaminfo);
- GRAPHICS_IMPORT(shader_getviewprojmatrix);
- GRAPHICS_IMPORT(shader_getworldmatrix);
- GRAPHICS_IMPORT(shader_setbool);
- GRAPHICS_IMPORT(shader_setfloat);
- GRAPHICS_IMPORT(shader_setint);
- GRAPHICS_IMPORT(shader_setmatrix3);
- GRAPHICS_IMPORT(shader_setmatrix4);
- GRAPHICS_IMPORT(shader_setvec2);
- GRAPHICS_IMPORT(shader_setvec3);
- GRAPHICS_IMPORT(shader_setvec4);
- GRAPHICS_IMPORT(shader_settexture);
- GRAPHICS_IMPORT(shader_setval);
- GRAPHICS_IMPORT(shader_setdefault);
- /* OSX/Cocoa specific functions */
- GRAPHICS_IMPORT_OPTIONAL(texture_create_from_iosurface);
- GRAPHICS_IMPORT_OPTIONAL(texture_rebind_iosurface);
- return success;
- }
|