this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Added GPU_GetTextureHandle().

+38 -8
+11 -1
include/SDL_gpu.h
··· 310 310 GPU_bool is_alias; 311 311 } GPU_Image; 312 312 313 + /*! \ingroup ImageControls 314 + * A backend-neutral type that is intended to hold a backend-specific handle/pointer to a texture. 315 + * \see GPU_CreateImageUsingTexture() 316 + * \see GPU_GetTextureHandle() 317 + */ 318 + typedef uintptr_t GPU_TextureHandle; 319 + 313 320 314 321 /*! \ingroup TargetControls 315 322 * Camera object that determines viewing transform. ··· 1164 1171 DECLSPEC GPU_Image* SDLCALL GPU_CreateImage(Uint16 w, Uint16 h, GPU_FormatEnum format); 1165 1172 1166 1173 /*! Create a new image that uses the given native texture handle as the image texture. */ 1167 - DECLSPEC GPU_Image* SDLCALL GPU_CreateImageUsingTexture(Uint32 handle, GPU_bool take_ownership); 1174 + DECLSPEC GPU_Image* SDLCALL GPU_CreateImageUsingTexture(GPU_TextureHandle handle, GPU_bool take_ownership); 1168 1175 1169 1176 /*! Load image from an image file that is supported by this renderer. Don't forget to GPU_FreeImage() it. */ 1170 1177 DECLSPEC GPU_Image* SDLCALL GPU_LoadImage(const char* filename); ··· 1255 1262 1256 1263 /*! Sets the image wrapping mode, if supported by the renderer. */ 1257 1264 DECLSPEC void SDLCALL GPU_SetWrapMode(GPU_Image* image, GPU_WrapEnum wrap_mode_x, GPU_WrapEnum wrap_mode_y); 1265 + 1266 + /*! Returns the backend-specific texture handle associated with the given image. Note that SDL_gpu will be unaware of changes made to the texture. */ 1267 + DECLSPEC GPU_TextureHandle SDLCALL GPU_GetTextureHandle(GPU_Image* image); 1258 1268 1259 1269 // End of ImageControls 1260 1270 /*! @} */
+5 -2
include/SDL_gpu_RendererImpl.h
··· 62 62 GPU_Image* (SDLCALL *CreateImage)(GPU_Renderer* renderer, Uint16 w, Uint16 h, GPU_FormatEnum format); 63 63 64 64 /*! \see GPU_CreateImageUsingTexture() */ 65 - GPU_Image* (SDLCALL *CreateImageUsingTexture)(GPU_Renderer* renderer, Uint32 handle, GPU_bool take_ownership); 65 + GPU_Image* (SDLCALL *CreateImageUsingTexture)(GPU_Renderer* renderer, GPU_TextureHandle handle, GPU_bool take_ownership); 66 66 67 67 /*! \see GPU_CreateAliasImage() */ 68 68 GPU_Image* (SDLCALL *CreateAliasImage)(GPU_Renderer* renderer, GPU_Image* image); ··· 138 138 139 139 /*! \see GPU_SetWrapMode() */ 140 140 void (SDLCALL *SetWrapMode)(GPU_Renderer* renderer, GPU_Image* image, GPU_WrapEnum wrap_mode_x, GPU_WrapEnum wrap_mode_y); 141 - 141 + 142 + /*! \see GPU_GetTextureHandle() */ 143 + GPU_TextureHandle (SDLCALL *GetTextureHandle)(GPU_Renderer* renderer, GPU_Image* image); 144 + 142 145 /*! \see GPU_ClearRGBA() */ 143 146 void (SDLCALL *ClearRGBA)(GPU_Renderer* renderer, GPU_Target* target, Uint8 r, Uint8 g, Uint8 b, Uint8 a); 144 147 /*! \see GPU_FlushBlitBuffer() */
+8 -1
src/SDL_gpu.c
··· 939 939 return _gpu_current_renderer->impl->CreateImage(_gpu_current_renderer, w, h, format); 940 940 } 941 941 942 - GPU_Image* GPU_CreateImageUsingTexture(Uint32 handle, GPU_bool take_ownership) 942 + GPU_Image* GPU_CreateImageUsingTexture(GPU_TextureHandle handle, GPU_bool take_ownership) 943 943 { 944 944 if(_gpu_current_renderer == NULL || _gpu_current_renderer->current_context_target == NULL) 945 945 return NULL; ··· 2007 2007 return; 2008 2008 2009 2009 _gpu_current_renderer->impl->SetWrapMode(_gpu_current_renderer, image, wrap_mode_x, wrap_mode_y); 2010 + } 2011 + 2012 + GPU_TextureHandle GPU_GetTextureHandle(GPU_Image* image) 2013 + { 2014 + if(image == NULL || image->renderer == NULL) 2015 + return 0; 2016 + return image->renderer->impl->GetTextureHandle(image->renderer, image); 2010 2017 } 2011 2018 2012 2019
+7 -3
src/renderer_GL_common.inl
··· 2470 2470 } 2471 2471 2472 2472 2473 - static GPU_Image* CreateImageUsingTexture(GPU_Renderer* renderer, Uint32 handle, GPU_bool take_ownership) 2473 + static GPU_Image* CreateImageUsingTexture(GPU_Renderer* renderer, GPU_TextureHandle handle, GPU_bool take_ownership) 2474 2474 { 2475 2475 #ifdef SDL_GPU_DISABLE_TEXTURE_GETS 2476 2476 GPU_PushErrorCode("GPU_CreateImageUsingTexture", GPU_ERROR_UNSUPPORTED_FUNCTION, "Renderer %s does not support this function", renderer->id.name); ··· 2632 2632 2633 2633 data = (GPU_IMAGE_DATA*)SDL_malloc(sizeof(GPU_IMAGE_DATA)); 2634 2634 data->refcount = 1; 2635 - data->handle = handle; 2635 + data->handle = (GLuint)handle; 2636 2636 data->owns_handle = take_ownership; 2637 2637 data->format = gl_format; 2638 2638 ··· 5421 5421 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_y ); 5422 5422 } 5423 5423 5424 - 5424 + static GPU_TextureHandle GetTextureHandle(GPU_Renderer* renderer, GPU_Image* image) 5425 + { 5426 + return ((GPU_IMAGE_DATA*)image->data)->handle; 5427 + } 5425 5428 5426 5429 5427 5430 ··· 6912 6915 impl->GetPixel = &GetPixel; \ 6913 6916 impl->SetImageFilter = &SetImageFilter; \ 6914 6917 impl->SetWrapMode = &SetWrapMode; \ 6918 + impl->GetTextureHandle = &GetTextureHandle; \ 6915 6919 \ 6916 6920 impl->ClearRGBA = &ClearRGBA; \ 6917 6921 impl->FlushBlitBuffer = &FlushBlitBuffer; \
+7 -1
tests/renderer/main.c
··· 472 472 } 473 473 474 474 475 - static GPU_Image* CreateImageUsingTexture(GPU_Renderer* renderer, Uint32 handle, GPU_bool take_ownership) 475 + static GPU_Image* CreateImageUsingTexture(GPU_Renderer* renderer, GPU_TextureHandle handle, GPU_bool take_ownership) 476 476 { 477 477 GPU_Log(" %s (dummy)\n", __func__); 478 478 ··· 803 803 image->wrap_mode_y = wrap_mode_y; 804 804 } 805 805 806 + static GPU_TextureHandle GetTextureHandle(GPU_Renderer* renderer, GPU_Image* image) 807 + { 808 + GPU_Log(" %s (dummy)\n", __func__); 809 + return 0; 810 + } 806 811 807 812 static void ClearRGBA(GPU_Renderer* renderer, GPU_Target* target, Uint8 r, Uint8 g, Uint8 b, Uint8 a) 808 813 { ··· 1219 1224 impl->GetPixel = &GetPixel; 1220 1225 impl->SetImageFilter = &SetImageFilter; 1221 1226 impl->SetWrapMode = &SetWrapMode; 1227 + impl->GetTextureHandle = &GetTextureHandle; 1222 1228 1223 1229 impl->ClearRGBA = &ClearRGBA; 1224 1230 impl->FlushBlitBuffer = &FlushBlitBuffer;