Skip to content

Commit 440824d

Browse files
committed
Backends: Fixed early out on empty clip rect. In particular, DX12 backend would warn about it (others not so much). (#4775, #4464)
Amend/fix 2b0bd40
1 parent f087a5b commit 440824d

12 files changed

+12
-11
lines changed

backends/imgui_impl_allegro5.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void ImGui_ImplAllegro5_RenderDrawData(ImDrawData* draw_data)
174174
// Project scissor/clipping rectangles into framebuffer space
175175
ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_off.y);
176176
ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_off.y);
177-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
177+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
178178
continue;
179179

180180
// Apply scissor/clipping rectangle, Draw

backends/imgui_impl_dx10.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ void ImGui_ImplDX10_RenderDrawData(ImDrawData* draw_data)
256256
// Project scissor/clipping rectangles into framebuffer space
257257
ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_off.y);
258258
ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_off.y);
259-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
259+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
260260
continue;
261261

262262
// Apply scissor/clipping rectangle

backends/imgui_impl_dx11.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data)
266266
// Project scissor/clipping rectangles into framebuffer space
267267
ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_off.y);
268268
ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_off.y);
269-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
269+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
270270
continue;
271271

272272
// Apply scissor/clipping rectangle

backends/imgui_impl_dx12.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ void ImGui_ImplDX12_RenderDrawData(ImDrawData* draw_data, ID3D12GraphicsCommandL
262262
// Project scissor/clipping rectangles into framebuffer space
263263
ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_off.y);
264264
ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_off.y);
265-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
265+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
266266
continue;
267267

268268
// Apply Scissor/clipping rectangle, Bind texture, Draw

backends/imgui_impl_dx9.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ void ImGui_ImplDX9_RenderDrawData(ImDrawData* draw_data)
251251
// Project scissor/clipping rectangles into framebuffer space
252252
ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_off.y);
253253
ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_off.y);
254-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
254+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
255255
continue;
256256

257257
// Apply Scissor/clipping rectangle, Bind texture, Draw

backends/imgui_impl_metal.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ - (void)renderDrawData:(ImDrawData *)drawData
513513
if (clip_min.y < 0.0f) { clip_min.y = 0.0f; }
514514
if (clip_max.x > fb_width) { clip_max.x = (float)fb_width; }
515515
if (clip_max.y > fb_height) { clip_max.y = (float)fb_height; }
516-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
516+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
517517
continue;
518518

519519
// Apply scissor/clipping rectangle

backends/imgui_impl_opengl2.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ void ImGui_ImplOpenGL2_RenderDrawData(ImDrawData* draw_data)
203203
// Project scissor/clipping rectangles into framebuffer space
204204
ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->ClipRect.y - clip_off.y) * clip_scale.y);
205205
ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->ClipRect.w - clip_off.y) * clip_scale.y);
206-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
206+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
207207
continue;
208208

209209
// Apply scissor/clipping rectangle (Y is inverted in OpenGL)

backends/imgui_impl_opengl3.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
445445
// Project scissor/clipping rectangles into framebuffer space
446446
ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->ClipRect.y - clip_off.y) * clip_scale.y);
447447
ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->ClipRect.w - clip_off.y) * clip_scale.y);
448-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
448+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
449449
continue;
450450

451451
// Apply scissor/clipping rectangle (Y is inverted in OpenGL)

backends/imgui_impl_sdlrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void ImGui_ImplSDLRenderer_RenderDrawData(ImDrawData* draw_data)
164164
if (clip_min.y < 0.0f) { clip_min.y = 0.0f; }
165165
if (clip_max.x > fb_width) { clip_max.x = (float)fb_width; }
166166
if (clip_max.y > fb_height) { clip_max.y = (float)fb_height; }
167-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
167+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
168168
continue;
169169

170170
SDL_Rect r = { (int)(clip_min.x), (int)(clip_min.y), (int)(clip_max.x - clip_min.x), (int)(clip_max.y - clip_min.y) };

backends/imgui_impl_vulkan.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ void ImGui_ImplVulkan_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer comm
520520
if (clip_min.y < 0.0f) { clip_min.y = 0.0f; }
521521
if (clip_max.x > fb_width) { clip_max.x = (float)fb_width; }
522522
if (clip_max.y > fb_height) { clip_max.y = (float)fb_height; }
523-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
523+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
524524
continue;
525525

526526
// Apply scissor/clipping rectangle

backends/imgui_impl_wgpu.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ void ImGui_ImplWGPU_RenderDrawData(ImDrawData* draw_data, WGPURenderPassEncoder
447447
// Project scissor/clipping rectangles into framebuffer space
448448
ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->ClipRect.y - clip_off.y) * clip_scale.y);
449449
ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->ClipRect.w - clip_off.y) * clip_scale.y);
450-
if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
450+
if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)
451451
continue;
452452

453453
// Apply scissor/clipping rectangle, Draw

docs/CHANGELOG.txt

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ Other Changes:
7979
- Backends: Vulkan: Call vkCmdSetScissor() at the end of render with a full-viewport to reduce
8080
likehood of issues with people using VK_DYNAMIC_STATE_SCISSOR in their app without calling
8181
vkCmdSetScissor() explicitly every frame. (#4644)
82+
- Backends: DX12: Fixed DRAW_EMPTY_SCISSOR_RECTANGLE warnings. (#4775)
8283
- Backends: WebGPU: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVertexBuffer() and
8384
wgpuRenderPassEncoderSetIndexBuffer() functions as validation layers appears to not do what the
8485
in-flux specs says. (#4766) [@meshula]

0 commit comments

Comments
 (0)