Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blitting between two textures with BackbufferRatio sizes crashes when window is resized #3134

Open
rogual opened this issue Jul 19, 2023 · 0 comments
Labels

Comments

@rogual
Copy link
Contributor

rogual commented Jul 19, 2023

Patch to 00-helloworld:

diff --git a/examples/00-helloworld/helloworld.cpp b/examples/00-helloworld/helloworld.cpp
index 37f8e0a3f..12b801f92 100644
--- a/examples/00-helloworld/helloworld.cpp
+++ b/examples/00-helloworld/helloworld.cpp
@@ -15,6 +15,8 @@ namespace
 class ExampleHelloWorld : public entry::AppI
 {
 public:
+	bgfx::TextureHandle tex1, tex2;
+
 	ExampleHelloWorld(const char* _name, const char* _description, const char* _url)
 		: entry::AppI(_name, _description, _url)
 	{
@@ -50,6 +52,20 @@ public:
 			, 0
 			);
 
+		tex1 = bgfx::createTexture2D(
+			bgfx::BackbufferRatio::Equal,
+			false, 1,
+			bgfx::TextureFormat::BGRA8,
+			0
+		);
+
+		tex2 = bgfx::createTexture2D(
+			bgfx::BackbufferRatio::Equal,
+			false, 1,
+			bgfx::TextureFormat::BGRA8,
+			BGFX_TEXTURE_BLIT_DST 
+		);
+
 		imguiCreate();
 	}
 
@@ -113,6 +129,14 @@ public:
 				, stats->textHeight
 				);
 
+			bgfx::blit(
+				0,
+				tex2,
+				0,
+				0,
+				tex1
+			);
+
 			// Advance to next frame. Rendering thread will be kicked to
 			// process submitted rendering primitives.
 			bgfx::frame();

Just run the patched example and resize the window. Under DX11 I get:

DXGI WARNING: IDXGISwapChain4::SetHDRMetaData: Redundant invocation on unchanged metadata could result in presentation performance inefficiency. [ MISCELLANEOUS WARNING #295: ]
D3D11 ERROR: ID3D11DeviceContext::CopySubresourceRegion: pSrcBox is not a valid box for the source subresource. *pSrcBox = { left:0, top:0, front:0, right:1280, bottom:720, back:1 }. SrcSubresource = { left:0, top:0, front:0, right:1280, bottom:640, back:1 }. [ RESOURCE_MANIPULATION ERROR #280: COPYSUBRESOURCEREGION_INVALIDSOURCEBOX]
D3D11: **BREAK** enabled for the previous message, which was: [ ERROR RESOURCE_MANIPULATION #280: COPYSUBRESOURCEREGION_INVALIDSOURCEBOX ]
Exception thrown at 0x7637D6C2 (KernelBase.dll) in example-00-helloworldDebug.exe: 0x0000087A (parameters: 0x00000001, 0x00EFB9A8, 0x00EFC620).
Unhandled exception at 0x7637D6C2 (KernelBase.dll) in example-00-helloworldDebug.exe: 0x0000087A (parameters: 0x00000001, 0x00EFB9A8, 0x00EFC620).

Call stack:

>	example-00-helloworldDebug.exe!bgfx::d3d11::RendererContextD3D11::submitBlit(bgfx::BlitState & _bs, unsigned short _view) Line 5553	C++
 	example-00-helloworldDebug.exe!bgfx::d3d11::RendererContextD3D11::submit(bgfx::Frame * _render, bgfx::ClearQuad & _clearQuad, bgfx::TextVideoMemBlitter & _textVideoMemBlitter) Line 5739	C++
 	example-00-helloworldDebug.exe!bgfx::Context::renderFrame(int _msecs) Line 2469	C++
 	example-00-helloworldDebug.exe!bgfx::renderFrame(int _msecs) Line 1491	C++
 	example-00-helloworldDebug.exe!entry::Context::run(int _argc, const char * const * _argv) Line 521	C++
 	example-00-helloworldDebug.exe!main(int _argc, const char * const * _argv) Line 1186	C++

@bkaradzic bkaradzic added the bug label Jul 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants