blob: b48e1e8ec8848002492de21657325960cba74dce [file]
/*
* Copyright 2025 Rive
*/
#include "rive/renderer/d3d/d3d_utils.hpp"
#include <dxgi1_6.h>
#include <iostream>
#include <Windows.h>
#include <winerror.h>
#include "rive/renderer/d3d/d3d.hpp"
namespace rive::gpu
{
namespace d3d_utils
{
DXGI_FORMAT convert_format(GPUTextureFormat format)
{
switch (format)
{
case GPUTextureFormat::rgba32:
return DXGI_FORMAT_R8G8B8A8_UNORM;
case GPUTextureFormat::bc1:
return DXGI_FORMAT_BC1_UNORM;
case GPUTextureFormat::bc2:
return DXGI_FORMAT_BC2_UNORM;
case GPUTextureFormat::bc3:
return DXGI_FORMAT_BC3_UNORM;
case GPUTextureFormat::bc7:
return DXGI_FORMAT_BC7_UNORM;
default:
return DXGI_FORMAT_R8G8B8A8_UNORM;
}
}
bool GetWStringFromString(const char* cString, std::wstring& outString)
{
int len = MultiByteToWideChar(CP_UTF8, 0, cString, -1, nullptr, 0);
if (len <= 0)
{
std::cerr
<< "Failed to get required size for gpu name filter wide string with error "
<< GetLastError() << "\n";
return false;
}
outString.resize(len - 1, 0);
if (MultiByteToWideChar(CP_UTF8, 0, cString, -1, &outString[0], len) <= 0)
{
std::cerr
<< "Failed to conver gpu name filter to wide string with error "
<< GetLastError() << "\n";
return false;
}
return true;
}
} // namespace d3d_utils
} // namespace rive::gpu