Lines Matching refs:renderer

38 #define CHECK_RENDERER_MAGIC(renderer, retval) \  argument
39 SDL_assert(renderer && renderer->magic == &renderer_magic); \
40 if (!renderer || renderer->magic != &renderer_magic) { \
209 FlushRenderCommands(SDL_Renderer *renderer) in FlushRenderCommands() argument
213 SDL_assert((renderer->render_commands == NULL) == (renderer->render_commands_tail == NULL)); in FlushRenderCommands()
215 if (renderer->render_commands == NULL) { /* nothing to do! */ in FlushRenderCommands()
216 SDL_assert(renderer->vertex_data_used == 0); in FlushRenderCommands()
220 DebugLogRenderCommands(renderer->render_commands); in FlushRenderCommands()
222 …retval = renderer->RunCommandQueue(renderer, renderer->render_commands, renderer->vertex_data, ren… in FlushRenderCommands()
225 if (renderer->render_commands_tail != NULL) { in FlushRenderCommands()
226 renderer->render_commands_tail->next = renderer->render_commands_pool; in FlushRenderCommands()
227 renderer->render_commands_pool = renderer->render_commands; in FlushRenderCommands()
228 renderer->render_commands_tail = NULL; in FlushRenderCommands()
229 renderer->render_commands = NULL; in FlushRenderCommands()
231 renderer->vertex_data_used = 0; in FlushRenderCommands()
232 renderer->render_command_generation++; in FlushRenderCommands()
233 renderer->color_queued = SDL_FALSE; in FlushRenderCommands()
234 renderer->viewport_queued = SDL_FALSE; in FlushRenderCommands()
235 renderer->cliprect_queued = SDL_FALSE; in FlushRenderCommands()
242 SDL_Renderer *renderer = texture->renderer; in FlushRenderCommandsIfTextureNeeded() local
243 if (texture->last_command_generation == renderer->render_command_generation) { in FlushRenderCommandsIfTextureNeeded()
245 return FlushRenderCommands(renderer); in FlushRenderCommandsIfTextureNeeded()
251 FlushRenderCommandsIfNotBatching(SDL_Renderer *renderer) in FlushRenderCommandsIfNotBatching() argument
253 return renderer->batching ? 0 : FlushRenderCommands(renderer); in FlushRenderCommandsIfNotBatching()
257 SDL_RenderFlush(SDL_Renderer * renderer) in SDL_RenderFlush() argument
259 return FlushRenderCommands(renderer); in SDL_RenderFlush()
263 SDL_AllocateRenderVertices(SDL_Renderer *renderer, const size_t numbytes, const size_t alignment, s… in SDL_AllocateRenderVertices() argument
265 const size_t needed = renderer->vertex_data_used + numbytes + alignment; in SDL_AllocateRenderVertices()
266 size_t current_offset = renderer->vertex_data_used; in SDL_AllocateRenderVertices()
271 if (renderer->vertex_data_allocation < needed) { in SDL_AllocateRenderVertices()
272 … const size_t current_allocation = renderer->vertex_data ? renderer->vertex_data_allocation : 1024; in SDL_AllocateRenderVertices()
278 ptr = SDL_realloc(renderer->vertex_data, newsize); in SDL_AllocateRenderVertices()
283 renderer->vertex_data = ptr; in SDL_AllocateRenderVertices()
284 renderer->vertex_data_allocation = newsize; in SDL_AllocateRenderVertices()
291 renderer->vertex_data_used += aligner + numbytes; in SDL_AllocateRenderVertices()
293 return ((Uint8 *) renderer->vertex_data) + aligned; in SDL_AllocateRenderVertices()
297 AllocateRenderCommand(SDL_Renderer *renderer) in AllocateRenderCommand() argument
302 retval = renderer->render_commands_pool; in AllocateRenderCommand()
304 renderer->render_commands_pool = retval->next; in AllocateRenderCommand()
314 SDL_assert((renderer->render_commands == NULL) == (renderer->render_commands_tail == NULL)); in AllocateRenderCommand()
315 if (renderer->render_commands_tail != NULL) { in AllocateRenderCommand()
316 renderer->render_commands_tail->next = retval; in AllocateRenderCommand()
318 renderer->render_commands = retval; in AllocateRenderCommand()
320 renderer->render_commands_tail = retval; in AllocateRenderCommand()
326 QueueCmdSetViewport(SDL_Renderer *renderer) in QueueCmdSetViewport() argument
329 …if (!renderer->viewport_queued || (SDL_memcmp(&renderer->viewport, &renderer->last_queued_viewport… in QueueCmdSetViewport()
330 SDL_RenderCommand *cmd = AllocateRenderCommand(renderer); in QueueCmdSetViewport()
335 SDL_memcpy(&cmd->data.viewport.rect, &renderer->viewport, sizeof (renderer->viewport)); in QueueCmdSetViewport()
336 retval = renderer->QueueSetViewport(renderer, cmd); in QueueCmdSetViewport()
340 SDL_memcpy(&renderer->last_queued_viewport, &renderer->viewport, sizeof (SDL_Rect)); in QueueCmdSetViewport()
341 renderer->viewport_queued = SDL_TRUE; in QueueCmdSetViewport()
349 QueueCmdSetClipRect(SDL_Renderer *renderer) in QueueCmdSetClipRect() argument
352 if ((!renderer->cliprect_queued) || in QueueCmdSetClipRect()
353 (renderer->clipping_enabled != renderer->last_queued_cliprect_enabled) || in QueueCmdSetClipRect()
354 … (SDL_memcmp(&renderer->clip_rect, &renderer->last_queued_cliprect, sizeof (SDL_Rect)) != 0)) { in QueueCmdSetClipRect()
355 SDL_RenderCommand *cmd = AllocateRenderCommand(renderer); in QueueCmdSetClipRect()
360 cmd->data.cliprect.enabled = renderer->clipping_enabled; in QueueCmdSetClipRect()
361 … SDL_memcpy(&cmd->data.cliprect.rect, &renderer->clip_rect, sizeof (cmd->data.cliprect.rect)); in QueueCmdSetClipRect()
362 SDL_memcpy(&renderer->last_queued_cliprect, &renderer->clip_rect, sizeof (SDL_Rect)); in QueueCmdSetClipRect()
363 renderer->last_queued_cliprect_enabled = renderer->clipping_enabled; in QueueCmdSetClipRect()
364 renderer->cliprect_queued = SDL_TRUE; in QueueCmdSetClipRect()
371 QueueCmdSetDrawColor(SDL_Renderer *renderer, const Uint8 r, const Uint8 g, const Uint8 b, const Uin… in QueueCmdSetDrawColor() argument
376 if (!renderer->color_queued || (color != renderer->last_queued_color)) { in QueueCmdSetDrawColor()
377 SDL_RenderCommand *cmd = AllocateRenderCommand(renderer); in QueueCmdSetDrawColor()
387 retval = renderer->QueueSetDrawColor(renderer, cmd); in QueueCmdSetDrawColor()
391 renderer->last_queued_color = color; in QueueCmdSetDrawColor()
392 renderer->color_queued = SDL_TRUE; in QueueCmdSetDrawColor()
400 QueueCmdClear(SDL_Renderer *renderer) in QueueCmdClear() argument
402 SDL_RenderCommand *cmd = AllocateRenderCommand(renderer); in QueueCmdClear()
409 cmd->data.color.r = renderer->r; in QueueCmdClear()
410 cmd->data.color.g = renderer->g; in QueueCmdClear()
411 cmd->data.color.b = renderer->b; in QueueCmdClear()
412 cmd->data.color.a = renderer->a; in QueueCmdClear()
417 PrepQueueCmdDraw(SDL_Renderer *renderer, const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a) in PrepQueueCmdDraw() argument
419 int retval = QueueCmdSetDrawColor(renderer, r, g, b, a); in PrepQueueCmdDraw()
423 if (retval == 0 && !renderer->viewport_queued) { in PrepQueueCmdDraw()
424 retval = QueueCmdSetViewport(renderer); in PrepQueueCmdDraw()
426 if (retval == 0 && !renderer->cliprect_queued) { in PrepQueueCmdDraw()
427 retval = QueueCmdSetClipRect(renderer); in PrepQueueCmdDraw()
433 PrepQueueCmdDrawSolid(SDL_Renderer *renderer, const SDL_RenderCommandType cmdtype) in PrepQueueCmdDrawSolid() argument
437 if (PrepQueueCmdDraw(renderer, renderer->r, renderer->g, renderer->b, renderer->a) == 0) { in PrepQueueCmdDrawSolid()
438 cmd = AllocateRenderCommand(renderer); in PrepQueueCmdDrawSolid()
443 cmd->data.draw.r = renderer->r; in PrepQueueCmdDrawSolid()
444 cmd->data.draw.g = renderer->g; in PrepQueueCmdDrawSolid()
445 cmd->data.draw.b = renderer->b; in PrepQueueCmdDrawSolid()
446 cmd->data.draw.a = renderer->a; in PrepQueueCmdDrawSolid()
447 cmd->data.draw.blend = renderer->blendMode; in PrepQueueCmdDrawSolid()
455 QueueCmdDrawPoints(SDL_Renderer *renderer, const SDL_FPoint * points, const int count) in QueueCmdDrawPoints() argument
457 SDL_RenderCommand *cmd = PrepQueueCmdDrawSolid(renderer, SDL_RENDERCMD_DRAW_POINTS); in QueueCmdDrawPoints()
460 retval = renderer->QueueDrawPoints(renderer, cmd, points, count); in QueueCmdDrawPoints()
469 QueueCmdDrawLines(SDL_Renderer *renderer, const SDL_FPoint * points, const int count) in QueueCmdDrawLines() argument
471 SDL_RenderCommand *cmd = PrepQueueCmdDrawSolid(renderer, SDL_RENDERCMD_DRAW_LINES); in QueueCmdDrawLines()
474 retval = renderer->QueueDrawLines(renderer, cmd, points, count); in QueueCmdDrawLines()
483 QueueCmdFillRects(SDL_Renderer *renderer, const SDL_FRect * rects, const int count) in QueueCmdFillRects() argument
485 SDL_RenderCommand *cmd = PrepQueueCmdDrawSolid(renderer, SDL_RENDERCMD_FILL_RECTS); in QueueCmdFillRects()
488 retval = renderer->QueueFillRects(renderer, cmd, rects, count); in QueueCmdFillRects()
497 PrepQueueCmdDrawTexture(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_RenderCommandType c… in PrepQueueCmdDrawTexture() argument
501 if (PrepQueueCmdDraw(renderer, texture->r, texture->g, texture->b, texture->a) == 0) { in PrepQueueCmdDrawTexture()
502 cmd = AllocateRenderCommand(renderer); in PrepQueueCmdDrawTexture()
519 QueueCmdCopy(SDL_Renderer *renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_FRe… in QueueCmdCopy() argument
521 SDL_RenderCommand *cmd = PrepQueueCmdDrawTexture(renderer, texture, SDL_RENDERCMD_COPY); in QueueCmdCopy()
524 retval = renderer->QueueCopy(renderer, cmd, texture, srcrect, dstrect); in QueueCmdCopy()
533 QueueCmdCopyEx(SDL_Renderer *renderer, SDL_Texture * texture, in QueueCmdCopyEx() argument
537 SDL_RenderCommand *cmd = PrepQueueCmdDrawTexture(renderer, texture, SDL_RENDERCMD_COPY_EX); in QueueCmdCopyEx()
539 SDL_assert(renderer->QueueCopyEx != NULL); /* should have caught at higher level. */ in QueueCmdCopyEx()
541 … retval = renderer->QueueCopyEx(renderer, cmd, texture, srcquad, dstrect, angle, center, flip); in QueueCmdCopyEx()
550 static int UpdateLogicalSize(SDL_Renderer *renderer);
577 static void GetWindowViewportValues(SDL_Renderer *renderer, int *logical_w, int *logical_h, SDL_Rec… in GetWindowViewportValues() argument
579 SDL_LockMutex(renderer->target_mutex); in GetWindowViewportValues()
580 *logical_w = renderer->target ? renderer->logical_w_backup : renderer->logical_w; in GetWindowViewportValues()
581 *logical_h = renderer->target ? renderer->logical_h_backup : renderer->logical_h; in GetWindowViewportValues()
582 *viewport = renderer->target ? renderer->viewport_backup : renderer->viewport; in GetWindowViewportValues()
583 *scale = renderer->target ? renderer->scale_backup : renderer->scale; in GetWindowViewportValues()
584 SDL_UnlockMutex(renderer->target_mutex); in GetWindowViewportValues()
590 SDL_Renderer *renderer = (SDL_Renderer *)userdata; in SDL_RendererEventWatch() local
594 if (window == renderer->window) { in SDL_RendererEventWatch()
595 if (renderer->WindowEvent) { in SDL_RendererEventWatch()
596 renderer->WindowEvent(renderer, &event->window); in SDL_RendererEventWatch()
601 SDL_Texture *saved_target = SDL_GetRenderTarget(renderer); in SDL_RendererEventWatch()
603 SDL_SetRenderTarget(renderer, NULL); in SDL_RendererEventWatch()
606 if (renderer->logical_w) { in SDL_RendererEventWatch()
607 UpdateLogicalSize(renderer); in SDL_RendererEventWatch()
612 if (renderer->GetOutputSize) { in SDL_RendererEventWatch()
613 renderer->GetOutputSize(renderer, &w, &h); in SDL_RendererEventWatch()
615 SDL_GetWindowSize(renderer->window, &w, &h); in SDL_RendererEventWatch()
618 if (renderer->target) { in SDL_RendererEventWatch()
619 renderer->viewport_backup.x = 0; in SDL_RendererEventWatch()
620 renderer->viewport_backup.y = 0; in SDL_RendererEventWatch()
621 renderer->viewport_backup.w = w; in SDL_RendererEventWatch()
622 renderer->viewport_backup.h = h; in SDL_RendererEventWatch()
624 renderer->viewport.x = 0; in SDL_RendererEventWatch()
625 renderer->viewport.y = 0; in SDL_RendererEventWatch()
626 renderer->viewport.w = w; in SDL_RendererEventWatch()
627 renderer->viewport.h = h; in SDL_RendererEventWatch()
628 QueueCmdSetViewport(renderer); in SDL_RendererEventWatch()
629 FlushRenderCommandsIfNotBatching(renderer); in SDL_RendererEventWatch()
634 SDL_SetRenderTarget(renderer, saved_target); in SDL_RendererEventWatch()
637 renderer->hidden = SDL_TRUE; in SDL_RendererEventWatch()
640 renderer->hidden = SDL_FALSE; in SDL_RendererEventWatch()
643 renderer->hidden = SDL_TRUE; in SDL_RendererEventWatch()
647 renderer->hidden = SDL_FALSE; in SDL_RendererEventWatch()
653 if (window == renderer->window) { in SDL_RendererEventWatch()
657 GetWindowViewportValues(renderer, &logical_w, &logical_h, &viewport, &scale); in SDL_RendererEventWatch()
659 event->motion.x -= (int)(viewport.x * renderer->dpi_scale.x); in SDL_RendererEventWatch()
660 event->motion.y -= (int)(viewport.y * renderer->dpi_scale.y); in SDL_RendererEventWatch()
661 event->motion.x = (int)(event->motion.x / (scale.x * renderer->dpi_scale.x)); in SDL_RendererEventWatch()
662 event->motion.y = (int)(event->motion.y / (scale.y * renderer->dpi_scale.y)); in SDL_RendererEventWatch()
663 if (event->motion.xrel != 0 && renderer->relative_scaling) { in SDL_RendererEventWatch()
664 … float rel = renderer->xrel + event->motion.xrel / (scale.x * renderer->dpi_scale.x); in SDL_RendererEventWatch()
666 renderer->xrel = rel - trunc; in SDL_RendererEventWatch()
669 if (event->motion.yrel != 0 && renderer->relative_scaling) { in SDL_RendererEventWatch()
670 … float rel = renderer->yrel + event->motion.yrel / (scale.y * renderer->dpi_scale.y); in SDL_RendererEventWatch()
672 renderer->yrel = rel - trunc; in SDL_RendererEventWatch()
680 if (window == renderer->window) { in SDL_RendererEventWatch()
684 GetWindowViewportValues(renderer, &logical_w, &logical_h, &viewport, &scale); in SDL_RendererEventWatch()
686 event->button.x -= (int)(viewport.x * renderer->dpi_scale.x); in SDL_RendererEventWatch()
687 event->button.y -= (int)(viewport.y * renderer->dpi_scale.y); in SDL_RendererEventWatch()
688 event->button.x = (int)(event->button.x / (scale.x * renderer->dpi_scale.x)); in SDL_RendererEventWatch()
689 event->button.y = (int)(event->button.y / (scale.y * renderer->dpi_scale.y)); in SDL_RendererEventWatch()
698 GetWindowViewportValues(renderer, &logical_w, &logical_h, &viewport, &scale); in SDL_RendererEventWatch()
702 if (renderer->GetOutputSize) { in SDL_RendererEventWatch()
703 renderer->GetOutputSize(renderer, &w, &h); in SDL_RendererEventWatch()
705 SDL_GetWindowSize(renderer->window, &w, &h); in SDL_RendererEventWatch()
711 event->tfinger.x -= (viewport.x * renderer->dpi_scale.x); in SDL_RendererEventWatch()
712 event->tfinger.y -= (viewport.y * renderer->dpi_scale.y); in SDL_RendererEventWatch()
713 event->tfinger.x = (event->tfinger.x / (scale.x * renderer->dpi_scale.x)); in SDL_RendererEventWatch()
714 event->tfinger.y = (event->tfinger.y / (scale.y * renderer->dpi_scale.y)); in SDL_RendererEventWatch()
734 SDL_Window **window, SDL_Renderer **renderer) in SDL_CreateWindowAndRenderer() argument
740 *renderer = NULL; in SDL_CreateWindowAndRenderer()
744 *renderer = SDL_CreateRenderer(*window, -1, 0); in SDL_CreateWindowAndRenderer()
745 if (!*renderer) { in SDL_CreateWindowAndRenderer()
753 void VerifyDrawQueueFunctions(const SDL_Renderer *renderer) in VerifyDrawQueueFunctions() argument
757 SDL_assert(renderer->QueueSetViewport != NULL); in VerifyDrawQueueFunctions()
758 SDL_assert(renderer->QueueSetDrawColor != NULL); in VerifyDrawQueueFunctions()
759 SDL_assert(renderer->QueueDrawPoints != NULL); in VerifyDrawQueueFunctions()
760 SDL_assert(renderer->QueueDrawLines != NULL); in VerifyDrawQueueFunctions()
761 SDL_assert(renderer->QueueFillRects != NULL); in VerifyDrawQueueFunctions()
762 SDL_assert(renderer->QueueCopy != NULL); in VerifyDrawQueueFunctions()
763 SDL_assert(renderer->RunCommandQueue != NULL); in VerifyDrawQueueFunctions()
770 SDL_Renderer *renderer = NULL; in SDL_CreateRenderer() local
805 renderer = driver->CreateRenderer(window, flags); in SDL_CreateRenderer()
806 if (renderer) { in SDL_CreateRenderer()
814 if (!renderer) { in SDL_CreateRenderer()
820 renderer = driver->CreateRenderer(window, flags); in SDL_CreateRenderer()
821 if (renderer) { in SDL_CreateRenderer()
839 renderer = render_drivers[index]->CreateRenderer(window, flags); in SDL_CreateRenderer()
843 if (!renderer) { in SDL_CreateRenderer()
847 VerifyDrawQueueFunctions(renderer); in SDL_CreateRenderer()
850 if (renderer->always_batch) { in SDL_CreateRenderer()
856 renderer->batching = batching; in SDL_CreateRenderer()
857 renderer->magic = &renderer_magic; in SDL_CreateRenderer()
858 renderer->window = window; in SDL_CreateRenderer()
859 renderer->target_mutex = SDL_CreateMutex(); in SDL_CreateRenderer()
860 renderer->scale.x = 1.0f; in SDL_CreateRenderer()
861 renderer->scale.y = 1.0f; in SDL_CreateRenderer()
862 renderer->dpi_scale.x = 1.0f; in SDL_CreateRenderer()
863 renderer->dpi_scale.y = 1.0f; in SDL_CreateRenderer()
866 renderer->render_command_generation = 1; in SDL_CreateRenderer()
868 if (window && renderer->GetOutputSize) { in SDL_CreateRenderer()
871 if (renderer->GetOutputSize(renderer, &output_w, &output_h) == 0) { in SDL_CreateRenderer()
872 SDL_GetWindowSize(renderer->window, &window_w, &window_h); in SDL_CreateRenderer()
873 renderer->dpi_scale.x = (float)window_w / output_w; in SDL_CreateRenderer()
874 renderer->dpi_scale.y = (float)window_h / output_h; in SDL_CreateRenderer()
878 renderer->relative_scaling = SDL_GetHintBoolean(SDL_HINT_MOUSE_RELATIVE_SCALING, SDL_TRUE); in SDL_CreateRenderer()
881 renderer->hidden = SDL_TRUE; in SDL_CreateRenderer()
883 renderer->hidden = SDL_FALSE; in SDL_CreateRenderer()
886 SDL_SetWindowData(window, SDL_WINDOWRENDERDATA, renderer); in SDL_CreateRenderer()
888 SDL_RenderSetViewport(renderer, NULL); in SDL_CreateRenderer()
890 SDL_AddEventWatch(SDL_RendererEventWatch, renderer); in SDL_CreateRenderer()
893 "Created renderer: %s", renderer->info.name); in SDL_CreateRenderer()
898 return renderer; in SDL_CreateRenderer()
917 SDL_Renderer *renderer; in SDL_CreateSoftwareRenderer() local
919 renderer = SW_CreateRendererForSurface(surface); in SDL_CreateSoftwareRenderer()
921 if (renderer) { in SDL_CreateSoftwareRenderer()
922 VerifyDrawQueueFunctions(renderer); in SDL_CreateSoftwareRenderer()
923 renderer->magic = &renderer_magic; in SDL_CreateSoftwareRenderer()
924 renderer->target_mutex = SDL_CreateMutex(); in SDL_CreateSoftwareRenderer()
925 renderer->scale.x = 1.0f; in SDL_CreateSoftwareRenderer()
926 renderer->scale.y = 1.0f; in SDL_CreateSoftwareRenderer()
929 renderer->render_command_generation = 1; in SDL_CreateSoftwareRenderer()
931 SDL_RenderSetViewport(renderer, NULL); in SDL_CreateSoftwareRenderer()
933 return renderer; in SDL_CreateSoftwareRenderer()
947 SDL_GetRendererInfo(SDL_Renderer * renderer, SDL_RendererInfo * info) in SDL_GetRendererInfo() argument
949 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_GetRendererInfo()
951 *info = renderer->info; in SDL_GetRendererInfo()
956 SDL_GetRendererOutputSize(SDL_Renderer * renderer, int *w, int *h) in SDL_GetRendererOutputSize() argument
958 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_GetRendererOutputSize()
960 if (renderer->target) { in SDL_GetRendererOutputSize()
961 return SDL_QueryTexture(renderer->target, NULL, NULL, w, h); in SDL_GetRendererOutputSize()
962 } else if (renderer->GetOutputSize) { in SDL_GetRendererOutputSize()
963 return renderer->GetOutputSize(renderer, w, h); in SDL_GetRendererOutputSize()
964 } else if (renderer->window) { in SDL_GetRendererOutputSize()
965 SDL_GetWindowSize(renderer->window, w, h); in SDL_GetRendererOutputSize()
974 IsSupportedBlendMode(SDL_Renderer * renderer, SDL_BlendMode blendMode) in IsSupportedBlendMode() argument
987 return renderer->SupportsBlendMode && renderer->SupportsBlendMode(renderer, blendMode); in IsSupportedBlendMode()
992 IsSupportedFormat(SDL_Renderer * renderer, Uint32 format) in IsSupportedFormat() argument
996 for (i = 0; i < renderer->info.num_texture_formats; ++i) { in IsSupportedFormat()
997 if (renderer->info.texture_formats[i] == format) { in IsSupportedFormat()
1005 GetClosestSupportedFormat(SDL_Renderer * renderer, Uint32 format) in GetClosestSupportedFormat() argument
1011 for (i = 0; i < renderer->info.num_texture_formats; ++i) { in GetClosestSupportedFormat()
1012 if (renderer->info.texture_formats[i] == format) { in GetClosestSupportedFormat()
1013 return renderer->info.texture_formats[i]; in GetClosestSupportedFormat()
1020 for (i = 0; i < renderer->info.num_texture_formats; ++i) { in GetClosestSupportedFormat()
1021 if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) && in GetClosestSupportedFormat()
1022 SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == hasAlpha) { in GetClosestSupportedFormat()
1023 return renderer->info.texture_formats[i]; in GetClosestSupportedFormat()
1027 return renderer->info.texture_formats[0]; in GetClosestSupportedFormat()
1047 SDL_CreateTexture(SDL_Renderer * renderer, Uint32 format, int access, int w, int h) in SDL_CreateTexture() argument
1051 CHECK_RENDERER_MAGIC(renderer, NULL); in SDL_CreateTexture()
1054 format = renderer->info.texture_formats[0]; in SDL_CreateTexture()
1068 if ((renderer->info.max_texture_width && w > renderer->info.max_texture_width) || in SDL_CreateTexture()
1069 (renderer->info.max_texture_height && h > renderer->info.max_texture_height)) { in SDL_CreateTexture()
1070 …DL_SetError("Texture dimensions are limited to %dx%d", renderer->info.max_texture_width, renderer-… in SDL_CreateTexture()
1088 texture->renderer = renderer; in SDL_CreateTexture()
1089 texture->next = renderer->textures; in SDL_CreateTexture()
1090 if (renderer->textures) { in SDL_CreateTexture()
1091 renderer->textures->prev = texture; in SDL_CreateTexture()
1093 renderer->textures = texture; in SDL_CreateTexture()
1095 if (IsSupportedFormat(renderer, format)) { in SDL_CreateTexture()
1096 if (renderer->CreateTexture(renderer, texture) < 0) { in SDL_CreateTexture()
1101 texture->native = SDL_CreateTexture(renderer, in SDL_CreateTexture()
1102 GetClosestSupportedFormat(renderer, format), in SDL_CreateTexture()
1120 renderer->textures = texture; in SDL_CreateTexture()
1146 SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface) in SDL_CreateTextureFromSurface() argument
1155 CHECK_RENDERER_MAGIC(renderer, NULL); in SDL_CreateTextureFromSurface()
1183 for (i = 0; i < (int)renderer->info.num_texture_formats; ++i) { in SDL_CreateTextureFromSurface()
1184 if (renderer->info.texture_formats[i] == SDL_PIXELFORMAT_ARGB8888) { in SDL_CreateTextureFromSurface()
1190 for (i = 0; i < (int)renderer->info.num_texture_formats; ++i) { in SDL_CreateTextureFromSurface()
1191 if (renderer->info.texture_formats[i] == SDL_PIXELFORMAT_ABGR8888) { in SDL_CreateTextureFromSurface()
1199 for (i = 0; i < (int)renderer->info.num_texture_formats; ++i) { in SDL_CreateTextureFromSurface()
1200 if (renderer->info.texture_formats[i] == fmt->format) { in SDL_CreateTextureFromSurface()
1209 format = renderer->info.texture_formats[0]; in SDL_CreateTextureFromSurface()
1210 for (i = 0; i < (int)renderer->info.num_texture_formats; ++i) { in SDL_CreateTextureFromSurface()
1211 if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) && in SDL_CreateTextureFromSurface()
1212 SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == needAlpha) { in SDL_CreateTextureFromSurface()
1213 format = renderer->info.texture_formats[i]; in SDL_CreateTextureFromSurface()
1219 texture = SDL_CreateTexture(renderer, format, SDL_TEXTUREACCESS_STATIC, in SDL_CreateTextureFromSurface()
1378 SDL_Renderer *renderer; in SDL_SetTextureBlendMode() local
1382 renderer = texture->renderer; in SDL_SetTextureBlendMode()
1383 if (!IsSupportedBlendMode(renderer, blendMode)) { in SDL_SetTextureBlendMode()
1407 SDL_Renderer *renderer; in SDL_SetTextureScaleMode() local
1411 renderer = texture->renderer; in SDL_SetTextureScaleMode()
1412 renderer->SetTextureScaleMode(renderer, texture, scaleMode); in SDL_SetTextureScaleMode()
1552 SDL_Renderer *renderer = texture->renderer; in SDL_UpdateTexture() local
1556 return renderer->UpdateTexture(renderer, texture, rect, pixels, pitch); in SDL_UpdateTexture()
1620 SDL_Renderer *renderer; in SDL_UpdateYUVTexture() local
1665 renderer = texture->renderer; in SDL_UpdateYUVTexture()
1666 SDL_assert(renderer->UpdateTextureYUV); in SDL_UpdateYUVTexture()
1667 if (renderer->UpdateTextureYUV) { in SDL_UpdateYUVTexture()
1671 …return renderer->UpdateTextureYUV(renderer, texture, rect, Yplane, Ypitch, Uplane, Upitch, Vplane,… in SDL_UpdateYUVTexture()
1734 SDL_Renderer *renderer = texture->renderer; in SDL_LockTexture() local
1738 return renderer->LockTexture(renderer, texture, rect, pixels, pitch); in SDL_LockTexture()
1839 SDL_Renderer *renderer = texture->renderer; in SDL_UnlockTexture() local
1840 renderer->UnlockTexture(renderer, texture); in SDL_UnlockTexture()
1848 SDL_RenderTargetSupported(SDL_Renderer *renderer) in SDL_RenderTargetSupported() argument
1850 if (!renderer || !renderer->SetRenderTarget) { in SDL_RenderTargetSupported()
1853 return (renderer->info.flags & SDL_RENDERER_TARGETTEXTURE) != 0; in SDL_RenderTargetSupported()
1857 SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture) in SDL_SetRenderTarget() argument
1859 if (!SDL_RenderTargetSupported(renderer)) { in SDL_SetRenderTarget()
1862 if (texture == renderer->target) { in SDL_SetRenderTarget()
1867 FlushRenderCommands(renderer); /* time to send everything to the GPU! */ in SDL_SetRenderTarget()
1872 if (renderer != texture->renderer) { in SDL_SetRenderTarget()
1884 SDL_LockMutex(renderer->target_mutex); in SDL_SetRenderTarget()
1886 if (texture && !renderer->target) { in SDL_SetRenderTarget()
1888 renderer->viewport_backup = renderer->viewport; in SDL_SetRenderTarget()
1889 renderer->clip_rect_backup = renderer->clip_rect; in SDL_SetRenderTarget()
1890 renderer->clipping_enabled_backup = renderer->clipping_enabled; in SDL_SetRenderTarget()
1891 renderer->scale_backup = renderer->scale; in SDL_SetRenderTarget()
1892 renderer->logical_w_backup = renderer->logical_w; in SDL_SetRenderTarget()
1893 renderer->logical_h_backup = renderer->logical_h; in SDL_SetRenderTarget()
1895 renderer->target = texture; in SDL_SetRenderTarget()
1897 if (renderer->SetRenderTarget(renderer, texture) < 0) { in SDL_SetRenderTarget()
1898 SDL_UnlockMutex(renderer->target_mutex); in SDL_SetRenderTarget()
1903 renderer->viewport.x = 0; in SDL_SetRenderTarget()
1904 renderer->viewport.y = 0; in SDL_SetRenderTarget()
1905 renderer->viewport.w = texture->w; in SDL_SetRenderTarget()
1906 renderer->viewport.h = texture->h; in SDL_SetRenderTarget()
1907 SDL_zero(renderer->clip_rect); in SDL_SetRenderTarget()
1908 renderer->clipping_enabled = SDL_FALSE; in SDL_SetRenderTarget()
1909 renderer->scale.x = 1.0f; in SDL_SetRenderTarget()
1910 renderer->scale.y = 1.0f; in SDL_SetRenderTarget()
1911 renderer->logical_w = texture->w; in SDL_SetRenderTarget()
1912 renderer->logical_h = texture->h; in SDL_SetRenderTarget()
1914 renderer->viewport = renderer->viewport_backup; in SDL_SetRenderTarget()
1915 renderer->clip_rect = renderer->clip_rect_backup; in SDL_SetRenderTarget()
1916 renderer->clipping_enabled = renderer->clipping_enabled_backup; in SDL_SetRenderTarget()
1917 renderer->scale = renderer->scale_backup; in SDL_SetRenderTarget()
1918 renderer->logical_w = renderer->logical_w_backup; in SDL_SetRenderTarget()
1919 renderer->logical_h = renderer->logical_h_backup; in SDL_SetRenderTarget()
1922 SDL_UnlockMutex(renderer->target_mutex); in SDL_SetRenderTarget()
1924 if (QueueCmdSetViewport(renderer) < 0) { in SDL_SetRenderTarget()
1927 if (QueueCmdSetClipRect(renderer) < 0) { in SDL_SetRenderTarget()
1932 return FlushRenderCommandsIfNotBatching(renderer); in SDL_SetRenderTarget()
1936 SDL_GetRenderTarget(SDL_Renderer *renderer) in SDL_GetRenderTarget() argument
1938 return renderer->target; in SDL_GetRenderTarget()
1942 UpdateLogicalSize(SDL_Renderer *renderer) in UpdateLogicalSize() argument
1953 if (!renderer->logical_w || !renderer->logical_h) { in UpdateLogicalSize()
1956 if (SDL_GetRendererOutputSize(renderer, &w, &h) < 0) { in UpdateLogicalSize()
1978 want_aspect = (float)renderer->logical_w / renderer->logical_h; in UpdateLogicalSize()
1982 SDL_RenderSetScale(renderer, 1.0f, 1.0f); in UpdateLogicalSize()
1984 if (renderer->integer_scale) { in UpdateLogicalSize()
1986 scale = (float)(w / renderer->logical_w); in UpdateLogicalSize()
1988 scale = (float)(h / renderer->logical_h); in UpdateLogicalSize()
1990 viewport.w = (int)SDL_ceil(renderer->logical_w * scale); in UpdateLogicalSize()
1992 viewport.h = (int)SDL_ceil(renderer->logical_h * scale); in UpdateLogicalSize()
1995 SDL_RenderSetViewport(renderer, &viewport); in UpdateLogicalSize()
1998 scale = (float)w / renderer->logical_w; in UpdateLogicalSize()
1999 SDL_RenderSetViewport(renderer, NULL); in UpdateLogicalSize()
2006 scale = (float)h / renderer->logical_h; in UpdateLogicalSize()
2009 viewport.w = (int)SDL_ceil(renderer->logical_w * scale); in UpdateLogicalSize()
2011 SDL_RenderSetViewport(renderer, &viewport); in UpdateLogicalSize()
2014 scale = (float)w / renderer->logical_w; in UpdateLogicalSize()
2017 viewport.h = (int)SDL_ceil(renderer->logical_h * scale); in UpdateLogicalSize()
2019 SDL_RenderSetViewport(renderer, &viewport); in UpdateLogicalSize()
2027 scale = (float)w / renderer->logical_w; in UpdateLogicalSize()
2030 viewport.h = (int)SDL_ceil(renderer->logical_h * scale); in UpdateLogicalSize()
2032 SDL_RenderSetViewport(renderer, &viewport); in UpdateLogicalSize()
2035 scale = (float)h / renderer->logical_h; in UpdateLogicalSize()
2038 viewport.w = (int)SDL_ceil(renderer->logical_w * scale); in UpdateLogicalSize()
2040 SDL_RenderSetViewport(renderer, &viewport); in UpdateLogicalSize()
2045 SDL_RenderSetScale(renderer, scale, scale); in UpdateLogicalSize()
2051 SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h) in SDL_RenderSetLogicalSize() argument
2053 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderSetLogicalSize()
2057 renderer->logical_w = 0; in SDL_RenderSetLogicalSize()
2058 renderer->logical_h = 0; in SDL_RenderSetLogicalSize()
2059 SDL_RenderSetViewport(renderer, NULL); in SDL_RenderSetLogicalSize()
2060 SDL_RenderSetScale(renderer, 1.0f, 1.0f); in SDL_RenderSetLogicalSize()
2064 renderer->logical_w = w; in SDL_RenderSetLogicalSize()
2065 renderer->logical_h = h; in SDL_RenderSetLogicalSize()
2067 return UpdateLogicalSize(renderer); in SDL_RenderSetLogicalSize()
2071 SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h) in SDL_RenderGetLogicalSize() argument
2073 CHECK_RENDERER_MAGIC(renderer, ); in SDL_RenderGetLogicalSize()
2076 *w = renderer->logical_w; in SDL_RenderGetLogicalSize()
2079 *h = renderer->logical_h; in SDL_RenderGetLogicalSize()
2084 SDL_RenderSetIntegerScale(SDL_Renderer * renderer, SDL_bool enable) in SDL_RenderSetIntegerScale() argument
2086 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderSetIntegerScale()
2088 renderer->integer_scale = enable; in SDL_RenderSetIntegerScale()
2090 return UpdateLogicalSize(renderer); in SDL_RenderSetIntegerScale()
2094 SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer) in SDL_RenderGetIntegerScale() argument
2096 CHECK_RENDERER_MAGIC(renderer, SDL_FALSE); in SDL_RenderGetIntegerScale()
2098 return renderer->integer_scale; in SDL_RenderGetIntegerScale()
2102 SDL_RenderSetViewport(SDL_Renderer * renderer, const SDL_Rect * rect) in SDL_RenderSetViewport() argument
2105 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderSetViewport()
2108 renderer->viewport.x = (int)SDL_floor(rect->x * renderer->scale.x); in SDL_RenderSetViewport()
2109 renderer->viewport.y = (int)SDL_floor(rect->y * renderer->scale.y); in SDL_RenderSetViewport()
2110 renderer->viewport.w = (int)SDL_ceil(rect->w * renderer->scale.x); in SDL_RenderSetViewport()
2111 renderer->viewport.h = (int)SDL_ceil(rect->h * renderer->scale.y); in SDL_RenderSetViewport()
2113 renderer->viewport.x = 0; in SDL_RenderSetViewport()
2114 renderer->viewport.y = 0; in SDL_RenderSetViewport()
2115 if (SDL_GetRendererOutputSize(renderer, &renderer->viewport.w, &renderer->viewport.h) < 0) { in SDL_RenderSetViewport()
2119 retval = QueueCmdSetViewport(renderer); in SDL_RenderSetViewport()
2120 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderSetViewport()
2124 SDL_RenderGetViewport(SDL_Renderer * renderer, SDL_Rect * rect) in SDL_RenderGetViewport() argument
2126 CHECK_RENDERER_MAGIC(renderer, ); in SDL_RenderGetViewport()
2129 rect->x = (int)(renderer->viewport.x / renderer->scale.x); in SDL_RenderGetViewport()
2130 rect->y = (int)(renderer->viewport.y / renderer->scale.y); in SDL_RenderGetViewport()
2131 rect->w = (int)(renderer->viewport.w / renderer->scale.x); in SDL_RenderGetViewport()
2132 rect->h = (int)(renderer->viewport.h / renderer->scale.y); in SDL_RenderGetViewport()
2137 SDL_RenderSetClipRect(SDL_Renderer * renderer, const SDL_Rect * rect) in SDL_RenderSetClipRect() argument
2140 CHECK_RENDERER_MAGIC(renderer, -1) in SDL_RenderSetClipRect()
2143 renderer->clipping_enabled = SDL_TRUE; in SDL_RenderSetClipRect()
2144 renderer->clip_rect.x = (int)SDL_floor(rect->x * renderer->scale.x); in SDL_RenderSetClipRect()
2145 renderer->clip_rect.y = (int)SDL_floor(rect->y * renderer->scale.y); in SDL_RenderSetClipRect()
2146 renderer->clip_rect.w = (int)SDL_ceil(rect->w * renderer->scale.x); in SDL_RenderSetClipRect()
2147 renderer->clip_rect.h = (int)SDL_ceil(rect->h * renderer->scale.y); in SDL_RenderSetClipRect()
2149 renderer->clipping_enabled = SDL_FALSE; in SDL_RenderSetClipRect()
2150 SDL_zero(renderer->clip_rect); in SDL_RenderSetClipRect()
2153 retval = QueueCmdSetClipRect(renderer); in SDL_RenderSetClipRect()
2154 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderSetClipRect()
2158 SDL_RenderGetClipRect(SDL_Renderer * renderer, SDL_Rect * rect) in SDL_RenderGetClipRect() argument
2160 CHECK_RENDERER_MAGIC(renderer, ) in SDL_RenderGetClipRect()
2163 rect->x = (int)(renderer->clip_rect.x / renderer->scale.x); in SDL_RenderGetClipRect()
2164 rect->y = (int)(renderer->clip_rect.y / renderer->scale.y); in SDL_RenderGetClipRect()
2165 rect->w = (int)(renderer->clip_rect.w / renderer->scale.x); in SDL_RenderGetClipRect()
2166 rect->h = (int)(renderer->clip_rect.h / renderer->scale.y); in SDL_RenderGetClipRect()
2171 SDL_RenderIsClipEnabled(SDL_Renderer * renderer) in SDL_RenderIsClipEnabled() argument
2173 CHECK_RENDERER_MAGIC(renderer, SDL_FALSE) in SDL_RenderIsClipEnabled()
2174 return renderer->clipping_enabled; in SDL_RenderIsClipEnabled()
2178 SDL_RenderSetScale(SDL_Renderer * renderer, float scaleX, float scaleY) in SDL_RenderSetScale() argument
2180 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderSetScale()
2182 renderer->scale.x = scaleX; in SDL_RenderSetScale()
2183 renderer->scale.y = scaleY; in SDL_RenderSetScale()
2188 SDL_RenderGetScale(SDL_Renderer * renderer, float *scaleX, float *scaleY) in SDL_RenderGetScale() argument
2190 CHECK_RENDERER_MAGIC(renderer, ); in SDL_RenderGetScale()
2193 *scaleX = renderer->scale.x; in SDL_RenderGetScale()
2196 *scaleY = renderer->scale.y; in SDL_RenderGetScale()
2201 SDL_SetRenderDrawColor(SDL_Renderer * renderer, in SDL_SetRenderDrawColor() argument
2204 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_SetRenderDrawColor()
2206 renderer->r = r; in SDL_SetRenderDrawColor()
2207 renderer->g = g; in SDL_SetRenderDrawColor()
2208 renderer->b = b; in SDL_SetRenderDrawColor()
2209 renderer->a = a; in SDL_SetRenderDrawColor()
2214 SDL_GetRenderDrawColor(SDL_Renderer * renderer, in SDL_GetRenderDrawColor() argument
2217 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_GetRenderDrawColor()
2220 *r = renderer->r; in SDL_GetRenderDrawColor()
2223 *g = renderer->g; in SDL_GetRenderDrawColor()
2226 *b = renderer->b; in SDL_GetRenderDrawColor()
2229 *a = renderer->a; in SDL_GetRenderDrawColor()
2235 SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, SDL_BlendMode blendMode) in SDL_SetRenderDrawBlendMode() argument
2237 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_SetRenderDrawBlendMode()
2239 if (!IsSupportedBlendMode(renderer, blendMode)) { in SDL_SetRenderDrawBlendMode()
2242 renderer->blendMode = blendMode; in SDL_SetRenderDrawBlendMode()
2247 SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, SDL_BlendMode *blendMode) in SDL_GetRenderDrawBlendMode() argument
2249 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_GetRenderDrawBlendMode()
2251 *blendMode = renderer->blendMode; in SDL_GetRenderDrawBlendMode()
2256 SDL_RenderClear(SDL_Renderer * renderer) in SDL_RenderClear() argument
2259 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderClear()
2260 retval = QueueCmdClear(renderer); in SDL_RenderClear()
2261 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderClear()
2269 SDL_RenderDrawPoint(SDL_Renderer * renderer, int x, int y) in SDL_RenderDrawPoint() argument
2274 return SDL_RenderDrawPointsF(renderer, &fpoint, 1); in SDL_RenderDrawPoint()
2278 SDL_RenderDrawPointF(SDL_Renderer * renderer, float x, float y) in SDL_RenderDrawPointF() argument
2283 return SDL_RenderDrawPointsF(renderer, &fpoint, 1); in SDL_RenderDrawPointF()
2287 RenderDrawPointsWithRects(SDL_Renderer * renderer, in RenderDrawPointsWithRects() argument
2300 frects[i].x = points[i].x * renderer->scale.x; in RenderDrawPointsWithRects()
2301 frects[i].y = points[i].y * renderer->scale.y; in RenderDrawPointsWithRects()
2302 frects[i].w = renderer->scale.x; in RenderDrawPointsWithRects()
2303 frects[i].h = renderer->scale.y; in RenderDrawPointsWithRects()
2306 retval = QueueCmdFillRects(renderer, frects, count); in RenderDrawPointsWithRects()
2310 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in RenderDrawPointsWithRects()
2314 SDL_RenderDrawPoints(SDL_Renderer * renderer, in SDL_RenderDrawPoints() argument
2322 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawPoints()
2332 if (renderer->hidden) { in SDL_RenderDrawPoints()
2336 if (renderer->scale.x != 1.0f || renderer->scale.y != 1.0f) { in SDL_RenderDrawPoints()
2337 return RenderDrawPointsWithRects(renderer, points, count); in SDL_RenderDrawPoints()
2345 fpoints[i].x = points[i].x * renderer->scale.x; in SDL_RenderDrawPoints()
2346 fpoints[i].y = points[i].y * renderer->scale.y; in SDL_RenderDrawPoints()
2349 retval = QueueCmdDrawPoints(renderer, fpoints, count); in SDL_RenderDrawPoints()
2353 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderDrawPoints()
2357 RenderDrawPointsWithRectsF(SDL_Renderer * renderer, in RenderDrawPointsWithRectsF() argument
2370 frects[i].x = fpoints[i].x * renderer->scale.x; in RenderDrawPointsWithRectsF()
2371 frects[i].y = fpoints[i].y * renderer->scale.y; in RenderDrawPointsWithRectsF()
2372 frects[i].w = renderer->scale.x; in RenderDrawPointsWithRectsF()
2373 frects[i].h = renderer->scale.y; in RenderDrawPointsWithRectsF()
2376 retval = QueueCmdFillRects(renderer, frects, count); in RenderDrawPointsWithRectsF()
2380 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in RenderDrawPointsWithRectsF()
2384 SDL_RenderDrawPointsF(SDL_Renderer * renderer, in SDL_RenderDrawPointsF() argument
2392 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawPointsF()
2402 if (renderer->hidden) { in SDL_RenderDrawPointsF()
2406 if (renderer->scale.x != 1.0f || renderer->scale.y != 1.0f) { in SDL_RenderDrawPointsF()
2407 return RenderDrawPointsWithRectsF(renderer, points, count); in SDL_RenderDrawPointsF()
2415 fpoints[i].x = points[i].x * renderer->scale.x; in SDL_RenderDrawPointsF()
2416 fpoints[i].y = points[i].y * renderer->scale.y; in SDL_RenderDrawPointsF()
2419 retval = QueueCmdDrawPoints(renderer, fpoints, count); in SDL_RenderDrawPointsF()
2423 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderDrawPointsF()
2427 SDL_RenderDrawLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2) in SDL_RenderDrawLine() argument
2434 return SDL_RenderDrawLinesF(renderer, points, 2); in SDL_RenderDrawLine()
2438 SDL_RenderDrawLineF(SDL_Renderer * renderer, float x1, float y1, float x2, float y2) in SDL_RenderDrawLineF() argument
2445 return SDL_RenderDrawLinesF(renderer, points, 2); in SDL_RenderDrawLineF()
2449 RenderDrawLinesWithRects(SDL_Renderer * renderer, in RenderDrawLinesWithRects() argument
2470 frect->x = points[i].x * renderer->scale.x; in RenderDrawLinesWithRects()
2471 frect->y = minY * renderer->scale.y; in RenderDrawLinesWithRects()
2472 frect->w = renderer->scale.x; in RenderDrawLinesWithRects()
2473 frect->h = (maxY - minY + 1) * renderer->scale.y; in RenderDrawLinesWithRects()
2479 frect->x = minX * renderer->scale.x; in RenderDrawLinesWithRects()
2480 frect->y = points[i].y * renderer->scale.y; in RenderDrawLinesWithRects()
2481 frect->w = (maxX - minX + 1) * renderer->scale.x; in RenderDrawLinesWithRects()
2482 frect->h = renderer->scale.y; in RenderDrawLinesWithRects()
2485 fpoints[0].x = points[i].x * renderer->scale.x; in RenderDrawLinesWithRects()
2486 fpoints[0].y = points[i].y * renderer->scale.y; in RenderDrawLinesWithRects()
2487 fpoints[1].x = points[i+1].x * renderer->scale.x; in RenderDrawLinesWithRects()
2488 fpoints[1].y = points[i+1].y * renderer->scale.y; in RenderDrawLinesWithRects()
2489 retval += QueueCmdDrawLines(renderer, fpoints, 2); in RenderDrawLinesWithRects()
2493 retval += QueueCmdFillRects(renderer, frects, nrects); in RenderDrawLinesWithRects()
2500 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in RenderDrawLinesWithRects()
2504 RenderDrawLinesWithRectsF(SDL_Renderer * renderer, in RenderDrawLinesWithRectsF() argument
2525 frect->x = points[i].x * renderer->scale.x; in RenderDrawLinesWithRectsF()
2526 frect->y = minY * renderer->scale.y; in RenderDrawLinesWithRectsF()
2527 frect->w = renderer->scale.x; in RenderDrawLinesWithRectsF()
2528 frect->h = (maxY - minY + 1) * renderer->scale.y; in RenderDrawLinesWithRectsF()
2534 frect->x = minX * renderer->scale.x; in RenderDrawLinesWithRectsF()
2535 frect->y = points[i].y * renderer->scale.y; in RenderDrawLinesWithRectsF()
2536 frect->w = (maxX - minX + 1) * renderer->scale.x; in RenderDrawLinesWithRectsF()
2537 frect->h = renderer->scale.y; in RenderDrawLinesWithRectsF()
2540 fpoints[0].x = points[i].x * renderer->scale.x; in RenderDrawLinesWithRectsF()
2541 fpoints[0].y = points[i].y * renderer->scale.y; in RenderDrawLinesWithRectsF()
2542 fpoints[1].x = points[i+1].x * renderer->scale.x; in RenderDrawLinesWithRectsF()
2543 fpoints[1].y = points[i+1].y * renderer->scale.y; in RenderDrawLinesWithRectsF()
2544 retval += QueueCmdDrawLines(renderer, fpoints, 2); in RenderDrawLinesWithRectsF()
2548 retval += QueueCmdFillRects(renderer, frects, nrects); in RenderDrawLinesWithRectsF()
2555 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in RenderDrawLinesWithRectsF()
2559 SDL_RenderDrawLines(SDL_Renderer * renderer, in SDL_RenderDrawLines() argument
2567 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawLines()
2577 if (renderer->hidden) { in SDL_RenderDrawLines()
2581 if (renderer->scale.x != 1.0f || renderer->scale.y != 1.0f) { in SDL_RenderDrawLines()
2582 return RenderDrawLinesWithRects(renderer, points, count); in SDL_RenderDrawLines()
2590 fpoints[i].x = points[i].x * renderer->scale.x; in SDL_RenderDrawLines()
2591 fpoints[i].y = points[i].y * renderer->scale.y; in SDL_RenderDrawLines()
2594 retval = QueueCmdDrawLines(renderer, fpoints, count); in SDL_RenderDrawLines()
2598 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderDrawLines()
2602 SDL_RenderDrawLinesF(SDL_Renderer * renderer, in SDL_RenderDrawLinesF() argument
2610 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawLinesF()
2620 if (renderer->hidden) { in SDL_RenderDrawLinesF()
2624 if (renderer->scale.x != 1.0f || renderer->scale.y != 1.0f) { in SDL_RenderDrawLinesF()
2625 return RenderDrawLinesWithRectsF(renderer, points, count); in SDL_RenderDrawLinesF()
2633 fpoints[i].x = points[i].x * renderer->scale.x; in SDL_RenderDrawLinesF()
2634 fpoints[i].y = points[i].y * renderer->scale.y; in SDL_RenderDrawLinesF()
2637 retval = QueueCmdDrawLines(renderer, fpoints, count); in SDL_RenderDrawLinesF()
2641 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderDrawLinesF()
2645 SDL_RenderDrawRect(SDL_Renderer * renderer, const SDL_Rect * rect) in SDL_RenderDrawRect() argument
2658 return SDL_RenderDrawRectF(renderer, prect); in SDL_RenderDrawRect()
2662 SDL_RenderDrawRectF(SDL_Renderer * renderer, const SDL_FRect * rect) in SDL_RenderDrawRectF() argument
2667 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawRectF()
2672 SDL_RenderGetViewport(renderer, &r); in SDL_RenderDrawRectF()
2690 return SDL_RenderDrawLinesF(renderer, points, 5); in SDL_RenderDrawRectF()
2694 SDL_RenderDrawRects(SDL_Renderer * renderer, in SDL_RenderDrawRects() argument
2699 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawRects()
2709 if (renderer->hidden) { in SDL_RenderDrawRects()
2714 if (SDL_RenderDrawRect(renderer, &rects[i]) < 0) { in SDL_RenderDrawRects()
2722 SDL_RenderDrawRectsF(SDL_Renderer * renderer, in SDL_RenderDrawRectsF() argument
2727 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderDrawRectsF()
2737 if (renderer->hidden) { in SDL_RenderDrawRectsF()
2742 if (SDL_RenderDrawRectF(renderer, &rects[i]) < 0) { in SDL_RenderDrawRectsF()
2750 SDL_RenderFillRect(SDL_Renderer * renderer, const SDL_Rect * rect) in SDL_RenderFillRect() argument
2754 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderFillRect()
2765 SDL_RenderGetViewport(renderer, &r); in SDL_RenderFillRect()
2771 return SDL_RenderFillRectsF(renderer, &frect, 1); in SDL_RenderFillRect()
2775 SDL_RenderFillRectF(SDL_Renderer * renderer, const SDL_FRect * rect) in SDL_RenderFillRectF() argument
2779 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderFillRectF()
2785 SDL_RenderGetViewport(renderer, &r); in SDL_RenderFillRectF()
2792 return SDL_RenderFillRectsF(renderer, rect, 1); in SDL_RenderFillRectF()
2796 SDL_RenderFillRects(SDL_Renderer * renderer, in SDL_RenderFillRects() argument
2804 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderFillRects()
2814 if (renderer->hidden) { in SDL_RenderFillRects()
2823 frects[i].x = rects[i].x * renderer->scale.x; in SDL_RenderFillRects()
2824 frects[i].y = rects[i].y * renderer->scale.y; in SDL_RenderFillRects()
2825 frects[i].w = rects[i].w * renderer->scale.x; in SDL_RenderFillRects()
2826 frects[i].h = rects[i].h * renderer->scale.y; in SDL_RenderFillRects()
2829 retval = QueueCmdFillRects(renderer, frects, count); in SDL_RenderFillRects()
2833 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderFillRects()
2837 SDL_RenderFillRectsF(SDL_Renderer * renderer, in SDL_RenderFillRectsF() argument
2845 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderFillRectsF()
2855 if (renderer->hidden) { in SDL_RenderFillRectsF()
2864 frects[i].x = rects[i].x * renderer->scale.x; in SDL_RenderFillRectsF()
2865 frects[i].y = rects[i].y * renderer->scale.y; in SDL_RenderFillRectsF()
2866 frects[i].w = rects[i].w * renderer->scale.x; in SDL_RenderFillRectsF()
2867 frects[i].h = rects[i].h * renderer->scale.y; in SDL_RenderFillRectsF()
2870 retval = QueueCmdFillRects(renderer, frects, count); in SDL_RenderFillRectsF()
2874 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderFillRectsF()
2932 SDL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, in SDL_RenderCopy() argument
2944 return SDL_RenderCopyF(renderer, texture, srcrect, pdstfrect); in SDL_RenderCopy()
2948 SDL_RenderCopyF(SDL_Renderer * renderer, SDL_Texture * texture, in SDL_RenderCopyF() argument
2956 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderCopyF()
2959 if (renderer != texture->renderer) { in SDL_RenderCopyF()
2964 if (renderer->hidden) { in SDL_RenderCopyF()
2979 SDL_RenderGetViewport(renderer, &r); in SDL_RenderCopyF()
2995 real_dstrect.x *= renderer->scale.x; in SDL_RenderCopyF()
2996 real_dstrect.y *= renderer->scale.y; in SDL_RenderCopyF()
2997 real_dstrect.w *= renderer->scale.x; in SDL_RenderCopyF()
2998 real_dstrect.h *= renderer->scale.y; in SDL_RenderCopyF()
3000 texture->last_command_generation = renderer->render_command_generation; in SDL_RenderCopyF()
3002 retval = QueueCmdCopy(renderer, texture, &real_srcrect, &real_dstrect); in SDL_RenderCopyF()
3003 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderCopyF()
3007 SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, in SDL_RenderCopyEx() argument
3030 return SDL_RenderCopyExF(renderer, texture, srcrect, pdstfrect, angle, pfcenter, flip); in SDL_RenderCopyEx()
3034 SDL_RenderCopyExF(SDL_Renderer * renderer, SDL_Texture * texture, in SDL_RenderCopyExF() argument
3044 return SDL_RenderCopyF(renderer, texture, srcrect, dstrect); in SDL_RenderCopyExF()
3047 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderCopyExF()
3050 if (renderer != texture->renderer) { in SDL_RenderCopyExF()
3053 if (!renderer->QueueCopyEx) { in SDL_RenderCopyExF()
3058 if (renderer->hidden) { in SDL_RenderCopyExF()
3078 SDL_RenderGetViewport(renderer, &r); in SDL_RenderCopyExF()
3096 real_dstrect.x *= renderer->scale.x; in SDL_RenderCopyExF()
3097 real_dstrect.y *= renderer->scale.y; in SDL_RenderCopyExF()
3098 real_dstrect.w *= renderer->scale.x; in SDL_RenderCopyExF()
3099 real_dstrect.h *= renderer->scale.y; in SDL_RenderCopyExF()
3101 real_center.x *= renderer->scale.x; in SDL_RenderCopyExF()
3102 real_center.y *= renderer->scale.y; in SDL_RenderCopyExF()
3104 texture->last_command_generation = renderer->render_command_generation; in SDL_RenderCopyExF()
3106 …retval = QueueCmdCopyEx(renderer, texture, &real_srcrect, &real_dstrect, angle, &real_center, flip… in SDL_RenderCopyExF()
3107 return retval < 0 ? retval : FlushRenderCommandsIfNotBatching(renderer); in SDL_RenderCopyExF()
3111 SDL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, in SDL_RenderReadPixels() argument
3116 CHECK_RENDERER_MAGIC(renderer, -1); in SDL_RenderReadPixels()
3118 if (!renderer->RenderReadPixels) { in SDL_RenderReadPixels()
3122 FlushRenderCommands(renderer); /* we need to render before we read the results. */ in SDL_RenderReadPixels()
3125 format = SDL_GetWindowPixelFormat(renderer->window); in SDL_RenderReadPixels()
3128 real_rect.x = renderer->viewport.x; in SDL_RenderReadPixels()
3129 real_rect.y = renderer->viewport.y; in SDL_RenderReadPixels()
3130 real_rect.w = renderer->viewport.w; in SDL_RenderReadPixels()
3131 real_rect.h = renderer->viewport.h; in SDL_RenderReadPixels()
3145 return renderer->RenderReadPixels(renderer, &real_rect, in SDL_RenderReadPixels()
3150 SDL_RenderPresent(SDL_Renderer * renderer) in SDL_RenderPresent() argument
3152 CHECK_RENDERER_MAGIC(renderer, ); in SDL_RenderPresent()
3154 FlushRenderCommands(renderer); /* time to send everything to the GPU! */ in SDL_RenderPresent()
3157 if (renderer->hidden) { in SDL_RenderPresent()
3160 renderer->RenderPresent(renderer); in SDL_RenderPresent()
3166 SDL_Renderer *renderer; in SDL_DestroyTexture() local
3170 renderer = texture->renderer; in SDL_DestroyTexture()
3171 if (texture == renderer->target) { in SDL_DestroyTexture()
3172 SDL_SetRenderTarget(renderer, NULL); /* implies command queue flush */ in SDL_DestroyTexture()
3185 renderer->textures = texture->next; in SDL_DestroyTexture()
3198 renderer->DestroyTexture(renderer, texture); in SDL_DestroyTexture()
3207 SDL_DestroyRenderer(SDL_Renderer * renderer) in SDL_DestroyRenderer() argument
3211 CHECK_RENDERER_MAGIC(renderer, ); in SDL_DestroyRenderer()
3213 SDL_DelEventWatch(SDL_RendererEventWatch, renderer); in SDL_DestroyRenderer()
3215 if (renderer->render_commands_tail != NULL) { in SDL_DestroyRenderer()
3216 renderer->render_commands_tail->next = renderer->render_commands_pool; in SDL_DestroyRenderer()
3217 cmd = renderer->render_commands; in SDL_DestroyRenderer()
3219 cmd = renderer->render_commands_pool; in SDL_DestroyRenderer()
3222 renderer->render_commands_pool = NULL; in SDL_DestroyRenderer()
3223 renderer->render_commands_tail = NULL; in SDL_DestroyRenderer()
3224 renderer->render_commands = NULL; in SDL_DestroyRenderer()
3232 SDL_free(renderer->vertex_data); in SDL_DestroyRenderer()
3235 while (renderer->textures) { in SDL_DestroyRenderer()
3236 SDL_Texture *tex = renderer->textures; (void) tex; in SDL_DestroyRenderer()
3237 SDL_DestroyTexture(renderer->textures); in SDL_DestroyRenderer()
3238 SDL_assert(tex != renderer->textures); /* satisfy static analysis. */ in SDL_DestroyRenderer()
3241 if (renderer->window) { in SDL_DestroyRenderer()
3242 SDL_SetWindowData(renderer->window, SDL_WINDOWRENDERDATA, NULL); in SDL_DestroyRenderer()
3246 renderer->magic = NULL; in SDL_DestroyRenderer()
3249 SDL_DestroyMutex(renderer->target_mutex); in SDL_DestroyRenderer()
3250 renderer->target_mutex = NULL; in SDL_DestroyRenderer()
3253 renderer->DestroyRenderer(renderer); in SDL_DestroyRenderer()
3258 SDL_Renderer *renderer; in SDL_GL_BindTexture() local
3261 renderer = texture->renderer; in SDL_GL_BindTexture()
3264 } else if (renderer && renderer->GL_BindTexture) { in SDL_GL_BindTexture()
3266 return renderer->GL_BindTexture(renderer, texture, texw, texh); in SDL_GL_BindTexture()
3274 SDL_Renderer *renderer; in SDL_GL_UnbindTexture() local
3277 renderer = texture->renderer; in SDL_GL_UnbindTexture()
3280 } else if (renderer && renderer->GL_UnbindTexture) { in SDL_GL_UnbindTexture()
3282 return renderer->GL_UnbindTexture(renderer, texture); in SDL_GL_UnbindTexture()
3289 SDL_RenderGetMetalLayer(SDL_Renderer * renderer) in SDL_RenderGetMetalLayer() argument
3291 CHECK_RENDERER_MAGIC(renderer, NULL); in SDL_RenderGetMetalLayer()
3293 if (renderer->GetMetalLayer) { in SDL_RenderGetMetalLayer()
3294 FlushRenderCommands(renderer); /* in case the app is going to mess with it. */ in SDL_RenderGetMetalLayer()
3295 return renderer->GetMetalLayer(renderer); in SDL_RenderGetMetalLayer()
3301 SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer) in SDL_RenderGetMetalCommandEncoder() argument
3303 CHECK_RENDERER_MAGIC(renderer, NULL); in SDL_RenderGetMetalCommandEncoder()
3305 if (renderer->GetMetalCommandEncoder) { in SDL_RenderGetMetalCommandEncoder()
3306 FlushRenderCommands(renderer); /* in case the app is going to mess with it. */ in SDL_RenderGetMetalCommandEncoder()
3307 return renderer->GetMetalCommandEncoder(renderer); in SDL_RenderGetMetalCommandEncoder()