Skip to content

Align UR_API fields (8 byte) for optimization create/move/copy structs on x64 cpus #2747

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 66 additions & 66 deletions include/ur_api.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion source/loader/layers/sanitizer/asan/asan_interceptor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -942,7 +942,7 @@ ContextInfo::~ContextInfo() {

ur_usm_pool_handle_t ContextInfo::getUSMPool() {
std::call_once(PoolInit, [this]() {
ur_usm_pool_desc_t Desc{UR_STRUCTURE_TYPE_USM_POOL_DESC, nullptr, 0};
ur_usm_pool_desc_t Desc{nullptr, UR_STRUCTURE_TYPE_USM_POOL_DESC, 0};
auto URes =
getContext()->urDdiTable.USM.pfnPoolCreate(Handle, &Desc, &USMPool);
if (URes != UR_RESULT_SUCCESS &&
Expand Down
4 changes: 2 additions & 2 deletions source/loader/layers/sanitizer/asan/asan_shadow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ ur_result_t ShadowMemoryGPU::EnqueuePoisonShadow(ur_queue_handle_t Queue,
{
static const size_t PageSize = GetVirtualMemGranularity(Context, Device);

ur_physical_mem_properties_t Desc{UR_STRUCTURE_TYPE_PHYSICAL_MEM_PROPERTIES,
nullptr, 0};
ur_physical_mem_properties_t Desc{nullptr,
UR_STRUCTURE_TYPE_PHYSICAL_MEM_PROPERTIES, 0};

// Make sure [Ptr, Ptr + Size] is mapped to physical memory
for (auto MappedPtr = RoundDownTo(ShadowBegin, PageSize);
Expand Down
4 changes: 2 additions & 2 deletions source/loader/layers/sanitizer/tsan/tsan_shadow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,8 @@ ur_result_t ShadowMemoryGPU::CleanShadow(ur_queue_handle_t Queue, uptr Ptr,
{
static const size_t PageSize = GetVirtualMemGranularity(Context, Device);

ur_physical_mem_properties_t Desc{UR_STRUCTURE_TYPE_PHYSICAL_MEM_PROPERTIES,
nullptr, 0};
ur_physical_mem_properties_t Desc{nullptr,
UR_STRUCTURE_TYPE_PHYSICAL_MEM_PROPERTIES, 0};

// Make sure [Ptr, Ptr + Size] is mapped to physical memory
for (auto MappedPtr = RoundDownTo((uptr)Begin, PageSize); MappedPtr <= End;
Expand Down
8 changes: 4 additions & 4 deletions test/conformance/context/urContextCreate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ TEST_P(urContextCreateTest, Success) {
}

TEST_P(urContextCreateTest, SuccessWithProperties) {
ur_context_properties_t properties{UR_STRUCTURE_TYPE_CONTEXT_PROPERTIES,
nullptr, 0};
ur_context_properties_t properties{nullptr,
UR_STRUCTURE_TYPE_CONTEXT_PROPERTIES, 0};
uur::raii::Context context = nullptr;
ASSERT_SUCCESS(urContextCreate(1, &device, &properties, context.ptr()));
ASSERT_NE(nullptr, context);
Expand All @@ -37,8 +37,8 @@ TEST_P(urContextCreateTest, InvalidNullPointerContext) {
}

TEST_P(urContextCreateTest, InvalidEnumeration) {
ur_context_properties_t properties{UR_STRUCTURE_TYPE_CONTEXT_PROPERTIES,
nullptr, UR_CONTEXT_FLAGS_MASK};
ur_context_properties_t properties{nullptr,
UR_STRUCTURE_TYPE_CONTEXT_PROPERTIES, UR_CONTEXT_FLAGS_MASK};
uur::raii::Context context = nullptr;

ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_ENUMERATION,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ TEST_P(urContextCreateWithNativeHandleTest,

ur_context_handle_t ctx = nullptr;
ur_context_native_properties_t props{
UR_STRUCTURE_TYPE_CONTEXT_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_CONTEXT_NATIVE_PROPERTIES, false};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urContextCreateWithNativeHandle(
native_context, adapter, 1, &device, &props, &ctx));
ASSERT_NE(ctx, nullptr);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ TEST_P(urDeviceCreateWithNativeHandleTest,

ur_device_handle_t dev = nullptr;
ur_device_native_properties_t props{
UR_STRUCTURE_TYPE_DEVICE_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_DEVICE_NATIVE_PROPERTIES, false};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
urDeviceCreateWithNativeHandle(native_handle, adapter, &props, &dev));
ASSERT_NE(dev, nullptr);
Expand Down
2 changes: 1 addition & 1 deletion test/conformance/event/urEventCreateWithNativeHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ TEST_P(urEventCreateWithNativeHandleTest, SuccessWithProperties) {
// we always get the native handle from a UR object, and transferring
// ownership from one UR object to another isn't allowed.
ur_event_native_properties_t props = {
UR_STRUCTURE_TYPE_EVENT_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_EVENT_NATIVE_PROPERTIES, false};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
urEventCreateWithNativeHandle(native_event, context, &props, evt.ptr()));
ASSERT_NE(evt, nullptr);
Expand Down
10 changes: 5 additions & 5 deletions test/conformance/memory/urMemBufferCreateWithNativeHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ TEST_P(urMemBufferCreateWithNativeHandleTest, SuccessWithProperties) {
// we always get the native handle from a UR object, and transferring
// ownership from one UR object to another isn't allowed.
ur_mem_native_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.isNativeHandleOwned =*/false,
};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
Expand All @@ -64,8 +64,8 @@ TEST_P(urMemBufferCreateWithNativeHandleTest, SuccessWithUnOwnedNativeHandle) {

ur_mem_handle_t mem = nullptr;
ur_mem_native_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.isNativeHandleOwned =*/false,
};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
Expand All @@ -86,8 +86,8 @@ TEST_P(urMemBufferCreateWithNativeHandleTest, InvalidNullHandle) {

ur_mem_handle_t mem = nullptr;
ur_mem_native_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.isNativeHandleOwned =*/false,
};
auto err =
Expand All @@ -102,8 +102,8 @@ TEST_P(urMemBufferCreateWithNativeHandleTest, InvalidNullPointer) {
urMemGetNativeHandle(buffer, device, &hNativeMem));

ur_mem_native_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.isNativeHandleOwned =*/false,
};
auto err =
Expand All @@ -122,8 +122,8 @@ TEST_P(urMemBufferMultiQueueMemBufferTest, WriteBack) {
ASSERT_SUCCESS(urUSMHostAlloc(context, nullptr, nullptr, size, &ptr));
ur_mem_handle_t mem = nullptr;
ur_mem_native_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
/*.isNativeHandleOwned =*/false,
};
{
Expand Down
8 changes: 4 additions & 4 deletions test/conformance/memory/urMemImageCreate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ static ur_image_format_t image_format{UR_IMAGE_CHANNEL_ORDER_RGBA,
UR_IMAGE_CHANNEL_TYPE_SIGNED_INT32};

static ur_image_desc_t image_desc{
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
nullptr, ///< [in][optional] pointer to extension-specific structure
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
UR_MEM_TYPE_IMAGE3D, ///< [in] memory object type
1, ///< [in] image width
1, ///< [in] image height
Expand Down Expand Up @@ -97,8 +97,8 @@ TEST_P(urMemImageCreateTestWith1DMemoryTypeParam, Success) {
}

ur_image_desc_t image_desc_with_param{
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
nullptr, ///< [in][optional] pointer to extension-specific structure
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
getParam(), ///< [in] memory object type
1, ///< [in] image width
0, ///< [in] image height
Expand Down Expand Up @@ -133,8 +133,8 @@ TEST_P(urMemImageCreateTestWith2DMemoryTypeParam, Success) {
}

ur_image_desc_t image_desc_with_param{
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
nullptr, ///< [in][optional] pointer to extension-specific structure
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
getParam(), ///< [in] memory object type
1, ///< [in] image width
1, ///< [in] image height
Expand All @@ -155,8 +155,8 @@ TEST_P(urMemImageCreateTestWith2DMemoryTypeParam, Success) {

TEST_P(urMemImageCreateTest, SuccessWith3DImageType) {
ur_image_desc_t image_desc_with_param{
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
nullptr, ///< [in][optional] pointer to extension-specific structure
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
UR_MEM_TYPE_IMAGE3D, ///< [in] memory object type
1, ///< [in] image width
1, ///< [in] image height
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#include <vector>

static ur_image_desc_t image_desc{
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
nullptr, ///< [in][optional] pointer to extension-specific structure
UR_STRUCTURE_TYPE_IMAGE_DESC, ///< [in] type of this structure
UR_MEM_TYPE_IMAGE3D, ///< [in] memory object type
1, ///< [in] image width
1, ///< [in] image height
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ TEST_P(urMemImageCreateWithNativeHandleTest, SuccessWithProperties) {
urMemGetNativeHandle(image, device, &native_handle));

ur_mem_handle_t mem = nullptr;
ur_mem_native_properties_t props = {UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES,
nullptr, false};
ur_mem_native_properties_t props = {nullptr,
UR_STRUCTURE_TYPE_MEM_NATIVE_PROPERTIES, false};
// We can't pass isNativeHandleOwned = true in the generic tests since
// we always get the native handle from a UR object, and transferring
// ownership from one UR object to another isn't allowed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ TEST_P(urPlatformCreateWithNativeHandleTest,
// We can however convert the native_handle back into a unified-runtime
// handle and perform some query on it to verify that it works.
ur_platform_native_properties_t props = {
UR_STRUCTURE_TYPE_PLATFORM_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_PLATFORM_NATIVE_PROPERTIES, false};
ur_platform_handle_t plat = nullptr;
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
urPlatformCreateWithNativeHandle(native_handle, adapter, &props, &plat));
Expand Down
6 changes: 3 additions & 3 deletions test/conformance/queue/urQueueCreate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ TEST_P(urQueueCreateWithParamTest, SuccessWithProperties) {

ur_queue_handle_t queue = nullptr;
ur_queue_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.flags =*/queryFlag,
};
ASSERT_SUCCESS(urQueueCreate(context, device, &props, &queue));
Expand Down Expand Up @@ -89,8 +89,8 @@ TEST_P(urQueueCreateWithParamTest, MatchingDeviceHandles) {
}

ur_queue_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.flags =*/queryFlag,
};

Expand Down Expand Up @@ -173,8 +173,8 @@ TEST_P(urQueueCreateTest, InvalidNullPointerQueue) {

TEST_P(urQueueCreateTest, InvalidQueueProperties) {
ur_queue_properties_t props = {
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.pNext =*/nullptr,
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
/*.flags =*/UR_QUEUE_FLAG_FORCE_UINT32,
};

Expand Down
2 changes: 1 addition & 1 deletion test/conformance/queue/urQueueCreateWithNativeHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ TEST_P(urQueueCreateWithNativeHandleTest, SuccessWithProperties) {
// and perform some query on it to verify that it works.
ur_queue_handle_t q = nullptr;
ur_queue_native_properties_t properties = {
UR_STRUCTURE_TYPE_QUEUE_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_QUEUE_NATIVE_PROPERTIES, false};
ASSERT_SUCCESS(urQueueCreateWithNativeHandle(native_handle, context, device,
&properties, &q));
ASSERT_NE(q, nullptr);
Expand Down
2 changes: 1 addition & 1 deletion test/conformance/queue/urQueueGetInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ struct urQueueGetInfoDeviceQueueTestWithInfoParam : public uur::urQueueTest {

ur_queue_handle_t queue = nullptr;
const ur_queue_properties_t queueProperties = {
UR_STRUCTURE_TYPE_QUEUE_PROPERTIES, nullptr,
nullptr, UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
UR_QUEUE_FLAG_ON_DEVICE | UR_QUEUE_FLAG_ON_DEVICE_DEFAULT |
UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE};
};
Expand Down
12 changes: 6 additions & 6 deletions test/conformance/sampler/urSamplerCreate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ struct urSamplerCreateTestWithParam
}

ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
{}, /* normalizedCoords */
{}, /* addressing mode */
{}, /* filterMode */
Expand Down Expand Up @@ -64,8 +64,8 @@ TEST_P(urSamplerCreateTestWithParam, Success) {
const auto filter_mode = std::get<2>(param);

ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
normalized, /* normalizedCoords */
addr_mode, /* addressing mode */
filter_mode, /* filterMode */
Expand All @@ -81,8 +81,8 @@ UUR_INSTANTIATE_DEVICE_TEST_SUITE(urSamplerCreateTest);

TEST_P(urSamplerCreateTest, InvalidNullHandleContext) {
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_CLAMP, /* addressing mode */
UR_SAMPLER_FILTER_MODE_LINEAR, /* filterMode */
Expand All @@ -94,8 +94,8 @@ TEST_P(urSamplerCreateTest, InvalidNullHandleContext) {

TEST_P(urSamplerCreateTest, InvalidEnumerationAddrMode) {
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_FORCE_UINT32, /* addressing mode */
UR_SAMPLER_FILTER_MODE_LINEAR, /* filterMode */
Expand All @@ -107,8 +107,8 @@ TEST_P(urSamplerCreateTest, InvalidEnumerationAddrMode) {

TEST_P(urSamplerCreateTest, InvalidEnumerationFilterMode) {
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_CLAMP, /* addressing mode */
UR_SAMPLER_FILTER_MODE_FORCE_UINT32, /* filterMode */
Expand All @@ -120,8 +120,8 @@ TEST_P(urSamplerCreateTest, InvalidEnumerationFilterMode) {

TEST_P(urSamplerCreateTest, InvalidNullPointer) {
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_CLAMP, /* addressing mode */
UR_SAMPLER_FILTER_MODE_FORCE_UINT32, /* filterMode */
Expand Down
10 changes: 5 additions & 5 deletions test/conformance/sampler/urSamplerCreateWithNativeHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ TEST_P(urSamplerCreateWithNativeHandleTest,
// and perform some query on it to verify that it works.
ur_sampler_handle_t hSampler = nullptr;
ur_sampler_native_properties_t props{
UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, false};
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urSamplerCreateWithNativeHandle(
native_sampler, context, &props, &hSampler));
ASSERT_NE(hSampler, nullptr);
Expand Down Expand Up @@ -89,8 +89,8 @@ TEST_P(urSamplerCreateWithNativeHandleTest, SuccessWithOwnedNativeHandle) {
uur::raii::Sampler hSampler = nullptr;
{
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_NONE, /* addressing mode */
UR_SAMPLER_FILTER_MODE_NEAREST, /* filterMode */
Expand All @@ -103,7 +103,7 @@ TEST_P(urSamplerCreateWithNativeHandleTest, SuccessWithOwnedNativeHandle) {
}

ur_sampler_native_properties_t props = {
UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, nullptr, true};
nullptr, UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, true};
ur_sampler_handle_t sampler = nullptr;
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urSamplerCreateWithNativeHandle(
native_handle, context, &props, &sampler));
Expand All @@ -116,8 +116,8 @@ TEST_P(urSamplerCreateWithNativeHandleTest, SuccessWithUnOwnedNativeHandle) {
uur::raii::Sampler hSampler = nullptr;
{
ur_sampler_desc_t sampler_desc{
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
nullptr, /* pNext */
UR_STRUCTURE_TYPE_SAMPLER_DESC, /* stype */
true, /* normalizedCoords */
UR_SAMPLER_ADDRESSING_MODE_NONE, /* addressing mode */
UR_SAMPLER_FILTER_MODE_NEAREST, /* filterMode */
Expand All @@ -130,7 +130,7 @@ TEST_P(urSamplerCreateWithNativeHandleTest, SuccessWithUnOwnedNativeHandle) {
}

ur_sampler_native_properties_t props = {
UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, nullptr, false};
nullptr, UR_STRUCTURE_TYPE_SAMPLER_NATIVE_PROPERTIES, false};
ur_sampler_handle_t sampler = nullptr;
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urSamplerCreateWithNativeHandle(
native_handle, context, &props, &sampler));
Expand Down
Loading