mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Initial open source release of OpenCL 2.2 CTS.
This commit is contained in:
259
test_conformance/d3d10/misc.cpp
Normal file
259
test_conformance/d3d10/misc.cpp
Normal file
@@ -0,0 +1,259 @@
|
||||
//
|
||||
// Copyright (c) 2017 The Khronos Group Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "harness.h"
|
||||
|
||||
void SubTestMiscMultipleCreates(
|
||||
cl_context context,
|
||||
cl_command_queue command_queue,
|
||||
ID3D10Device* pDevice)
|
||||
{
|
||||
ID3D10Buffer* pBuffer = NULL;
|
||||
ID3D10Texture2D* pTexture = NULL;
|
||||
HRESULT hr = S_OK;
|
||||
cl_mem mem[5] = {NULL, NULL, NULL, NULL, NULL};
|
||||
cl_int result = CL_SUCCESS;
|
||||
|
||||
HarnessD3D10_TestBegin("Misc: Multiple Creates");
|
||||
|
||||
// create the D3D10 resources
|
||||
{
|
||||
D3D10_TEXTURE2D_DESC desc;
|
||||
memset(&desc, 0, sizeof(desc) );
|
||||
desc.Width = 256;
|
||||
desc.Height = 256;
|
||||
desc.MipLevels = 4;
|
||||
desc.ArraySize = 4;
|
||||
desc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
|
||||
desc.SampleDesc.Count = 1;
|
||||
desc.SampleDesc.Quality = 0;
|
||||
desc.Usage = D3D10_USAGE_DEFAULT;
|
||||
desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET;
|
||||
desc.CPUAccessFlags = 0;
|
||||
desc.MiscFlags = 0;
|
||||
|
||||
hr = pDevice->CreateTexture2D(&desc, NULL, &pTexture);
|
||||
TestRequire(SUCCEEDED(hr), "Failed to create texture.");
|
||||
}
|
||||
|
||||
// create the D3D10 buffer
|
||||
{
|
||||
D3D10_BUFFER_DESC desc = {0};
|
||||
desc.ByteWidth = 1024;
|
||||
desc.Usage = D3D10_USAGE_DEFAULT;
|
||||
desc.CPUAccessFlags = 0;
|
||||
desc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
|
||||
desc.MiscFlags = 0;
|
||||
hr = pDevice->CreateBuffer(&desc, NULL, &pBuffer);
|
||||
TestRequire(SUCCEEDED(hr), "Creating vertex buffer failed!");
|
||||
}
|
||||
|
||||
mem[0] = clCreateFromD3D10BufferKHR(
|
||||
context,
|
||||
0,
|
||||
pBuffer,
|
||||
&result);
|
||||
TestRequire(result == CL_SUCCESS, "clCreateFromD3D10BufferKHR");
|
||||
|
||||
mem[1] = clCreateFromD3D10BufferKHR(
|
||||
context,
|
||||
0,
|
||||
pBuffer,
|
||||
&result);
|
||||
TestRequire(result == CL_INVALID_D3D10_RESOURCE_KHR, "clCreateFromD3D10BufferKHR succeeded when it shouldn't");
|
||||
|
||||
mem[2] = clCreateFromD3D10Texture2DKHR(
|
||||
context,
|
||||
0,
|
||||
pTexture,
|
||||
1,
|
||||
&result);
|
||||
TestRequire(result == CL_SUCCESS, "clCreateFromD3D10Texture2DKHR failed");
|
||||
|
||||
mem[3] = clCreateFromD3D10Texture2DKHR(
|
||||
context,
|
||||
0,
|
||||
pTexture,
|
||||
1,
|
||||
&result);
|
||||
TestRequire(result == CL_INVALID_D3D10_RESOURCE_KHR, "clCreateFromD3D10Texture2DKHR succeeded when it shouldn't");
|
||||
|
||||
mem[4] = clCreateFromD3D10Texture2DKHR(
|
||||
context,
|
||||
0,
|
||||
pTexture,
|
||||
16,
|
||||
&result);
|
||||
TestRequire(result == CL_INVALID_VALUE, "clCreateFromD3D10Texture2DKHR succeeded when it shouldn't");
|
||||
|
||||
|
||||
Cleanup:
|
||||
|
||||
for (UINT i = 0; i < 4; ++i)
|
||||
{
|
||||
if (mem[i])
|
||||
{
|
||||
clReleaseMemObject(mem[i]);
|
||||
}
|
||||
}
|
||||
if (pBuffer)
|
||||
{
|
||||
pBuffer->Release();
|
||||
}
|
||||
if (pTexture)
|
||||
{
|
||||
pTexture->Release();
|
||||
}
|
||||
|
||||
HarnessD3D10_TestEnd();
|
||||
}
|
||||
|
||||
void SubTestMiscAcquireRelease(
|
||||
cl_context context,
|
||||
cl_command_queue command_queue,
|
||||
ID3D10Device* pDevice)
|
||||
{
|
||||
ID3D10Buffer* pBuffer = NULL;
|
||||
ID3D10Texture2D* pTexture = NULL;
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
cl_int result = CL_SUCCESS;
|
||||
cl_mem mem[2] = {NULL, NULL};
|
||||
|
||||
HarnessD3D10_TestBegin("Misc: Acquire Release");
|
||||
|
||||
// create the D3D10 resources
|
||||
{
|
||||
D3D10_TEXTURE2D_DESC desc;
|
||||
memset(&desc, 0, sizeof(desc) );
|
||||
desc.Width = 256;
|
||||
desc.Height = 256;
|
||||
desc.MipLevels = 4;
|
||||
desc.ArraySize = 4;
|
||||
desc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
|
||||
desc.SampleDesc.Count = 1;
|
||||
desc.SampleDesc.Quality = 0;
|
||||
desc.Usage = D3D10_USAGE_DEFAULT;
|
||||
desc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET;
|
||||
desc.CPUAccessFlags = 0;
|
||||
desc.MiscFlags = 0;
|
||||
|
||||
hr = pDevice->CreateTexture2D(&desc, NULL, &pTexture);
|
||||
TestRequire(SUCCEEDED(hr), "Failed to create texture.");
|
||||
}
|
||||
|
||||
// create the D3D10 buffer
|
||||
{
|
||||
D3D10_BUFFER_DESC desc = {0};
|
||||
desc.ByteWidth = 1024;
|
||||
desc.Usage = D3D10_USAGE_DEFAULT;
|
||||
desc.CPUAccessFlags = 0;
|
||||
desc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
|
||||
desc.MiscFlags = 0;
|
||||
hr = pDevice->CreateBuffer(&desc, NULL, &pBuffer);
|
||||
TestRequire(SUCCEEDED(hr), "Creating vertex buffer failed!");
|
||||
}
|
||||
|
||||
// create cl_mem objects for the resources
|
||||
mem[0] = clCreateFromD3D10BufferKHR(
|
||||
context,
|
||||
0,
|
||||
pBuffer,
|
||||
&result);
|
||||
TestRequire(result == CL_SUCCESS, "clCreateFromD3D10BufferKHR");
|
||||
mem[1] = clCreateFromD3D10Texture2DKHR(
|
||||
context,
|
||||
0,
|
||||
pTexture,
|
||||
1,
|
||||
&result);
|
||||
TestRequire(result == CL_SUCCESS, "clCreateFromD3D10Texture2DKHR failed");
|
||||
|
||||
// test some acquire/release patterns
|
||||
result = clEnqueueAcquireD3D10ObjectsKHR(
|
||||
command_queue,
|
||||
1,
|
||||
&mem[1],
|
||||
0,
|
||||
NULL,
|
||||
NULL);
|
||||
TestRequire(result == CL_SUCCESS, "clEnqueueAcquireD3D10ObjectsKHR failed.");
|
||||
|
||||
result = clEnqueueAcquireD3D10ObjectsKHR(
|
||||
command_queue,
|
||||
1,
|
||||
&mem[0],
|
||||
0,
|
||||
NULL,
|
||||
NULL);
|
||||
TestRequire(result == CL_SUCCESS, "clEnqueueAcquireD3D10ObjectsKHR failed.");
|
||||
|
||||
result = clEnqueueReleaseD3D10ObjectsKHR(
|
||||
command_queue,
|
||||
1,
|
||||
&mem[1],
|
||||
0,
|
||||
NULL,
|
||||
NULL);
|
||||
TestRequire(result == CL_SUCCESS, "clEnqueueReleaseD3D10ObjectsKHR failed.");
|
||||
|
||||
|
||||
result = clEnqueueReleaseD3D10ObjectsKHR(
|
||||
command_queue,
|
||||
1,
|
||||
&mem[0],
|
||||
0,
|
||||
NULL,
|
||||
NULL);
|
||||
TestRequire(result == CL_SUCCESS, "clEnqueueReleaseD3D10ObjectsKHR failed.");
|
||||
|
||||
Cleanup:
|
||||
|
||||
for (UINT i = 0; i < 2; ++i)
|
||||
{
|
||||
if (mem[i])
|
||||
{
|
||||
clReleaseMemObject(mem[i]);
|
||||
}
|
||||
}
|
||||
if (pBuffer)
|
||||
{
|
||||
pBuffer->Release();
|
||||
}
|
||||
if (pTexture)
|
||||
{
|
||||
pTexture->Release();
|
||||
}
|
||||
|
||||
HarnessD3D10_TestEnd();
|
||||
}
|
||||
|
||||
void TestDeviceMisc(
|
||||
cl_device_id device,
|
||||
cl_context context,
|
||||
cl_command_queue command_queue,
|
||||
ID3D10Device* pDevice)
|
||||
{
|
||||
SubTestMiscMultipleCreates(
|
||||
context,
|
||||
command_queue,
|
||||
pDevice);
|
||||
|
||||
SubTestMiscAcquireRelease(
|
||||
context,
|
||||
command_queue,
|
||||
pDevice);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user