diff --git a/util/test/demos/d3d11/d3d11_helpers.cpp b/util/test/demos/d3d11/d3d11_helpers.cpp index 761574415..6dbc84947 100644 --- a/util/test/demos/d3d11/d3d11_helpers.cpp +++ b/util/test/demos/d3d11/d3d11_helpers.cpp @@ -220,6 +220,12 @@ D3D11BufferCreator &D3D11BufferCreator::Staging() return *this; } +D3D11BufferCreator &D3D11BufferCreator::Shared() +{ + m_BufDesc.MiscFlags |= D3D11_RESOURCE_MISC_SHARED; + return *this; +} + D3D11BufferCreator &D3D11BufferCreator::Data(const void *data) { m_Initdata.pSysMem = data; @@ -314,6 +320,12 @@ D3D11TextureCreator &D3D11TextureCreator::Staging() return *this; } +D3D11TextureCreator &D3D11TextureCreator::Shared() +{ + MiscFlags |= D3D11_RESOURCE_MISC_SHARED; + return *this; +} + D3D11TextureCreator::operator ID3D11Texture1DPtr() const { D3D11_TEXTURE1D_DESC texdesc; diff --git a/util/test/demos/d3d11/d3d11_helpers.h b/util/test/demos/d3d11/d3d11_helpers.h index 7b98fa800..1871a6b01 100644 --- a/util/test/demos/d3d11/d3d11_helpers.h +++ b/util/test/demos/d3d11/d3d11_helpers.h @@ -103,6 +103,7 @@ public: D3D11BufferCreator &ByteAddressed(); D3D11BufferCreator &Mappable(); D3D11BufferCreator &Staging(); + D3D11BufferCreator &Shared(); D3D11BufferCreator &Data(const void *data); D3D11BufferCreator &Size(UINT size); @@ -145,6 +146,7 @@ public: D3D11TextureCreator &Mappable(); D3D11TextureCreator &Staging(); + D3D11TextureCreator &Shared(); operator ID3D11Texture1DPtr() const; operator ID3D11Texture2DPtr() const; diff --git a/util/test/demos/gl/gl_dx_interop.cpp b/util/test/demos/gl/gl_dx_interop.cpp index c00844769..a1441d741 100644 --- a/util/test/demos/gl/gl_dx_interop.cpp +++ b/util/test/demos/gl/gl_dx_interop.cpp @@ -141,11 +141,12 @@ void main() ID3D11VertexShaderPtr vs = d3d.CreateVS(vsblob); ID3D11PixelShaderPtr ps = d3d.CreatePS(psblob); - ID3D11Texture2DPtr d3d_fromd3d = d3d.MakeTexture(DXGI_FORMAT_R8G8B8A8_UNORM, 1024, 1024).RTV(); + ID3D11Texture2DPtr d3d_fromd3d = + d3d.MakeTexture(DXGI_FORMAT_R8G8B8A8_UNORM, 1024, 1024).RTV().Shared(); ID3D11RenderTargetViewPtr rtv = d3d.MakeRTV(d3d_fromd3d); ID3D11Texture2DPtr d3d_tod3d = - d3d.MakeTexture(DXGI_FORMAT_R8G8B8A8_UNORM, 1024, 1024).RTV().SRV(); + d3d.MakeTexture(DXGI_FORMAT_R8G8B8A8_UNORM, 1024, 1024).RTV().SRV().Shared(); ID3D11ShaderResourceViewPtr srv = d3d.MakeSRV(d3d_tod3d); ID3D11RenderTargetViewPtr rtv2 = d3d.MakeRTV(d3d_tod3d); @@ -163,7 +164,7 @@ void main() {Vec3f(0.8f, 0.8f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 1.0f)}, }; - ID3D11BufferPtr buf = d3d.MakeBuffer().Vertex().Data(quad); + ID3D11BufferPtr buf = d3d.MakeBuffer().Vertex().Data(quad).Shared(); GLuint vao = MakeVAO(); glBindVertexArray(vao); @@ -256,6 +257,8 @@ void main() ctx->ClearState(); + ctx->Flush(); + res = wglDXLockObjectsNV(interop_dev, ARRAY_COUNT(lockHandles), lockHandles); TEST_ASSERT(res, "wglDXLockObjectsNV textures failed");