Add D3D11_RESOURCE_MISC_SHARED in GL/DX interop tests

* Necessary for it to work correctly on AMD
This commit is contained in:
baldurk
2019-02-12 12:30:00 +00:00
parent 5e62d828d7
commit 014619eaf9
3 changed files with 20 additions and 3 deletions
+12
View File
@@ -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;
+2
View File
@@ -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;
+6 -3
View File
@@ -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");