You can't combine SDL_STRINGIFY_ARG() and SDL_FUNCTION

Removed obsolete documentation that shows this usage and macros that attempt it.

Also allow SDL_FUNCTION to be redefined by the application.

Fixes https://github.com/libsdl-org/SDL/issues/15004

(cherry picked from commit 6feb0e1333)
(cherry picked from commit cbd2917324)
(cherry picked from commit f689caed82)
This commit is contained in:
Sam Lantinga
2026-02-08 10:51:43 -08:00
committed by Ozkan Sezer
parent 7d4c119d17
commit 10a82990ee
9 changed files with 96 additions and 126 deletions

View File

@@ -163,7 +163,7 @@ extern "C" {
#ifdef SDL_WIKI_DOCUMENTATION_SECTION
/**
* A macro that reports the current function being compiled.
* A constant that contains the current function being compiled.
*
* If SDL can't figure how the compiler reports this, it will use "???".
*
@@ -171,13 +171,15 @@ extern "C" {
*/
#define SDL_FUNCTION __FUNCTION__
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
#elif !defined(SDL_FUNCTION)
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
# define SDL_FUNCTION __func__
#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))
# define SDL_FUNCTION __FUNCTION__
#else
# define SDL_FUNCTION "???"
#endif
#endif
/**
* A macro that reports the current file being compiled.

View File

@@ -227,12 +227,6 @@ void *alloca(size_t);
/**
* Macro useful for building other macros with strings in them.
*
* For example:
*
* ```c
* #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")`
* ```
*
* \param arg the text to turn into a string literal.
*
* \since This macro is available since SDL 3.2.0.

View File

@@ -35,12 +35,6 @@
#include "SDL_shaders_d3d11.h"
#if defined(_MSC_VER) && !defined(__clang__)
#define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
#else
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#endif
#define SAFE_RELEASE(X) \
if ((X)) { \
IUnknown_Release(SDL_static_cast(IUnknown *, X)); \
@@ -483,7 +477,7 @@ static ID3D11BlendState *D3D11_CreateBlendState(SDL_Renderer *renderer, SDL_Blen
blendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
result = ID3D11Device_CreateBlendState(data->d3dDevice, &blendDesc, &blendState);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateBlendState"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateBlendState", result);
return NULL;
}
@@ -579,13 +573,13 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
result = DXGIGetDebugInterfaceFunc(0, &SDL_IID_IDXGIDebug1, (void **)&data->dxgiDebug);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("DXGIGetDebugInterface1"), result);
WIN_SetErrorFromHRESULT("DXGIGetDebugInterface1", result);
goto done;
}
result = DXGIGetDebugInterfaceFunc(0, &SDL_IID_IDXGIInfoQueue, (void **)&dxgiInfoQueue);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("DXGIGetDebugInterface1"), result);
WIN_SetErrorFromHRESULT("DXGIGetDebugInterface1", result);
goto done;
}
@@ -602,14 +596,14 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
result = CreateDXGIFactoryFunc(&SDL_IID_IDXGIFactory2, (void **)&data->dxgiFactory);
}
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("CreateDXGIFactory"), result);
WIN_SetErrorFromHRESULT("CreateDXGIFactory", result);
goto done;
}
// FIXME: Should we use the default adapter?
result = IDXGIFactory2_EnumAdapters(data->dxgiFactory, 0, &data->dxgiAdapter);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D11CreateDevice"), result);
WIN_SetErrorFromHRESULT("EnumAdapters", result);
goto done;
}
@@ -642,25 +636,25 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
&d3dContext // Returns the device immediate context.
);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D11CreateDevice"), result);
WIN_SetErrorFromHRESULT("D3D11CreateDevice", result);
goto done;
}
result = ID3D11Device_QueryInterface(d3dDevice, &SDL_IID_ID3D11Device1, (void **)&data->d3dDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device to ID3D11Device1"), result);
WIN_SetErrorFromHRESULT("ID3D11Device to ID3D11Device1", result);
goto done;
}
result = ID3D11DeviceContext_QueryInterface(d3dContext, &SDL_IID_ID3D11DeviceContext1, (void **)&data->d3dContext);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext to ID3D11DeviceContext1"), result);
WIN_SetErrorFromHRESULT("ID3D11DeviceContext to ID3D11DeviceContext1", result);
goto done;
}
result = ID3D11Device_QueryInterface(d3dDevice, &SDL_IID_IDXGIDevice1, (void **)&dxgiDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device to IDXGIDevice1"), result);
WIN_SetErrorFromHRESULT("ID3D11Device to IDXGIDevice1", result);
goto done;
}
@@ -669,7 +663,7 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
*/
result = IDXGIDevice1_SetMaximumFrameLatency(dxgiDevice, 1);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGIDevice1::SetMaximumFrameLatency"), result);
WIN_SetErrorFromHRESULT("IDXGIDevice1::SetMaximumFrameLatency", result);
goto done;
}
@@ -717,7 +711,7 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
NULL,
&data->vertexShaderConstants);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateBuffer [vertex shader constants]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateBuffer [vertex shader constants]", result);
goto done;
}
@@ -748,7 +742,7 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
&samplerDesc,
&data->samplers[i]);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateSamplerState [nearest-pixel filter]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateSamplerState [nearest-pixel filter]", result);
goto done;
}
}
@@ -767,14 +761,14 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
rasterDesc.SlopeScaledDepthBias = 0.0f;
result = ID3D11Device_CreateRasterizerState(data->d3dDevice, &rasterDesc, &data->mainRasterizer);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateRasterizerState [main rasterizer]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateRasterizerState [main rasterizer]", result);
goto done;
}
rasterDesc.ScissorEnable = TRUE;
result = ID3D11Device_CreateRasterizerState(data->d3dDevice, &rasterDesc, &data->clippedRasterizer);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateRasterizerState [clipped rasterizer]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateRasterizerState [clipped rasterizer]", result);
goto done;
}
@@ -917,7 +911,7 @@ static HRESULT D3D11_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
NULL, // Allow on all displays.
&data->swapChain);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGIFactory2::CreateSwapChainForCoreWindow"), result);
WIN_SetErrorFromHRESULT("IDXGIFactory2::CreateSwapChainForCoreWindow", result);
goto done;
}
} else {
@@ -937,13 +931,13 @@ static HRESULT D3D11_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
NULL, // Allow on all displays.
&data->swapChain);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGIFactory2::CreateSwapChainForHwnd"), result);
WIN_SetErrorFromHRESULT("IDXGIFactory2::CreateSwapChainForHwnd", result);
goto done;
}
IDXGIFactory_MakeWindowAssociation(data->dxgiFactory, hwnd, DXGI_MWA_NO_WINDOW_CHANGES);
#else
SDL_SetError(__FUNCTION__ ", Unable to find something to attach a swap chain to");
SDL_SetError("%s, Unable to find something to attach a swap chain to", __FUNCTION__);
goto done;
#endif // defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK) / else
}
@@ -968,7 +962,7 @@ static HRESULT D3D11_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
(colorspace_support & DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT)) {
result = IDXGISwapChain3_SetColorSpace1(swapChain3, colorspace);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain3::SetColorSpace1"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain3::SetColorSpace1", result);
goto done;
}
} else if (colorspace != DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709) {
@@ -1024,7 +1018,7 @@ static HRESULT D3D11_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
DXGI_FORMAT_UNKNOWN,
0);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::ResizeBuffers"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::ResizeBuffers", result);
goto done;
}
} else {
@@ -1039,7 +1033,7 @@ static HRESULT D3D11_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
if (data->swapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) {
result = IDXGISwapChain1_SetRotation(data->swapChain, data->rotation);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain1::SetRotation"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain1::SetRotation", result);
goto done;
}
}
@@ -1050,7 +1044,7 @@ static HRESULT D3D11_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
&SDL_IID_ID3D11Texture2D,
(void **)&backBuffer);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::GetBuffer [back-buffer]"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::GetBuffer [back-buffer]", result);
goto done;
}
@@ -1060,7 +1054,7 @@ static HRESULT D3D11_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
NULL,
&data->mainRenderTargetView);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateRenderTargetView"), result);
WIN_SetErrorFromHRESULT("ID3D11Device::CreateRenderTargetView", result);
goto done;
}
@@ -1222,7 +1216,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
NULL,
&textureData->mainTexture);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D", result);
}
}
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER, textureData->mainTexture);
@@ -1243,7 +1237,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
NULL,
&textureData->mainTextureU);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D", result);
}
}
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER, textureData->mainTextureU);
@@ -1257,7 +1251,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
NULL,
&textureData->mainTextureV);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D", result);
}
}
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER, textureData->mainTextureV);
@@ -1298,7 +1292,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
&resourceViewDesc,
&textureData->mainTextureResourceView);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateShaderResourceView"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateShaderResourceView", result);
}
#ifdef SDL_HAVE_YUV
if (textureData->yuv) {
@@ -1307,14 +1301,14 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
&resourceViewDesc,
&textureData->mainTextureResourceViewU);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateShaderResourceView"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateShaderResourceView", result);
}
result = ID3D11Device_CreateShaderResourceView(rendererData->d3dDevice,
(ID3D11Resource *)textureData->mainTextureV,
&resourceViewDesc,
&textureData->mainTextureResourceViewV);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateShaderResourceView"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateShaderResourceView", result);
}
}
@@ -1332,7 +1326,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
&nvResourceViewDesc,
&textureData->mainTextureResourceViewNV);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateShaderResourceView"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateShaderResourceView", result);
}
}
#endif // SDL_HAVE_YUV
@@ -1349,7 +1343,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
&renderTargetViewDesc,
&textureData->mainTextureRenderTargetView);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateRenderTargetView"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateRenderTargetView", result);
}
}
@@ -1410,7 +1404,7 @@ static bool D3D11_UpdateTextureInternal(D3D11_RenderData *rendererData, ID3D11Te
NULL,
&stagingTexture);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D [create staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D [create staging texture]", result);
}
// Get a write-only pointer to data in the staging texture:
@@ -1422,7 +1416,7 @@ static bool D3D11_UpdateTextureInternal(D3D11_RenderData *rendererData, ID3D11Te
&textureMemory);
if (FAILED(result)) {
SAFE_RELEASE(stagingTexture);
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext1::Map [map staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11DeviceContext1::Map [map staging texture]", result);
}
src = (const Uint8 *)pixels;
@@ -1603,7 +1597,7 @@ static bool D3D11_UpdateTextureNV(SDL_Renderer *renderer, SDL_Texture *texture,
NULL,
&stagingTexture);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D [create staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D [create staging texture]", result);
}
// Get a write-only pointer to data in the staging texture:
@@ -1615,7 +1609,7 @@ static bool D3D11_UpdateTextureNV(SDL_Renderer *renderer, SDL_Texture *texture,
&textureMemory);
if (FAILED(result)) {
SAFE_RELEASE(stagingTexture);
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext1::Map [map staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11DeviceContext1::Map [map staging texture]", result);
}
src = Yplane;
@@ -1728,7 +1722,7 @@ static bool D3D11_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
NULL,
&textureData->stagingTexture);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D [create staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D [create staging texture]", result);
}
// Get a write-only pointer to data in the staging texture:
@@ -1740,7 +1734,7 @@ static bool D3D11_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
&textureMemory);
if (FAILED(result)) {
SAFE_RELEASE(textureData->stagingTexture);
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext1::Map [map staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D11DeviceContext1::Map [map staging texture]", result);
}
/* Make note of where the staging texture will be written to
@@ -1927,7 +1921,7 @@ static bool D3D11_UpdateVertexBuffer(SDL_Renderer *renderer,
0,
&mappedResource);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext1::Map [vertex buffer]"), result);
return WIN_SetErrorFromHRESULT("ID3D11DeviceContext1::Map [vertex buffer]", result);
}
SDL_memcpy(mappedResource.pData, vertexData, dataSizeInBytes);
ID3D11DeviceContext_Unmap(rendererData->d3dContext, (ID3D11Resource *)rendererData->vertexBuffers[vbidx], 0);
@@ -1953,7 +1947,7 @@ static bool D3D11_UpdateVertexBuffer(SDL_Renderer *renderer,
&vertexBufferData,
&rendererData->vertexBuffers[vbidx]);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateBuffer [vertex buffer]"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateBuffer [vertex buffer]", result);
}
rendererData->vertexBufferSizes[vbidx] = dataSizeInBytes;
@@ -2248,7 +2242,7 @@ static bool D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *
HRESULT result = ID3D11Device_CreateBuffer(rendererData->d3dDevice, &desc, &data, &shader_state->constants);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateBuffer [create shader constants]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device::CreateBuffer [create shader constants]", result);
return false;
}
SDL_memcpy(&shader_state->shader_constants, shader_constants, sizeof(*shader_constants));
@@ -2545,7 +2539,7 @@ static SDL_Surface *D3D11_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
NULL,
&stagingTexture);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateTexture2D [create staging texture]"), result);
WIN_SetErrorFromHRESULT("ID3D11Device1::CreateTexture2D [create staging texture]", result);
goto done;
}
@@ -2577,7 +2571,7 @@ static SDL_Surface *D3D11_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
0,
&textureMemory);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11DeviceContext1::Map [map staging texture]"), result);
WIN_SetErrorFromHRESULT("ID3D11DeviceContext1::Map [map staging texture]", result);
goto done;
}
@@ -2638,9 +2632,9 @@ static bool D3D11_RenderPresent(SDL_Renderer *renderer)
} else if (result == DXGI_ERROR_INVALID_CALL) {
// We probably went through a fullscreen <-> windowed transition
D3D11_CreateWindowSizeDependentResources(renderer);
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::Present"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::Present", result);
} else {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::Present"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::Present", result);
}
return false;
}

View File

@@ -28,8 +28,6 @@
#include "SDL_shaders_d3d11.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#if SDL_WINAPI_FAMILY_PHONE
#error Need to build shaders with level_9_3
#endif
@@ -82,7 +80,7 @@ bool D3D11_CreateVertexShader(ID3D11Device1 *d3dDevice, ID3D11VertexShader **ver
NULL,
vertexShader);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateVertexShader"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateVertexShader", result);
}
// Create an input layout for SDL's vertex shader:
@@ -93,7 +91,7 @@ bool D3D11_CreateVertexShader(ID3D11Device1 *d3dDevice, ID3D11VertexShader **ver
sizeof(D3D11_VertexShader),
inputLayout);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreateInputLayout"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreateInputLayout", result);
}
return true;
}
@@ -108,7 +106,7 @@ bool D3D11_CreatePixelShader(ID3D11Device1 *d3dDevice, D3D11_Shader shader, ID3D
NULL,
pixelShader);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device1::CreatePixelShader"), result);
return WIN_SetErrorFromHRESULT("ID3D11Device1::CreatePixelShader", result);
}
return true;
}

View File

@@ -39,12 +39,6 @@
#include "SDL_shaders_d3d12.h"
#if defined(_MSC_VER) && !defined(__clang__)
#define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
#else
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#endif
// Set up for C function definitions, even when using C++
#ifdef __cplusplus
extern "C" {
@@ -563,7 +557,7 @@ static HRESULT D3D12_IssueBatch(D3D12_RenderData *data)
// Issue the command list
result = ID3D12GraphicsCommandList2_Close(data->commandList);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D12_IssueBatch"), result);
WIN_SetErrorFromHRESULT("D3D12_IssueBatch", result);
return result;
}
ID3D12CommandQueue_ExecuteCommandLists(data->commandQueue, 1, (ID3D12CommandList *const *)&data->commandList);
@@ -702,7 +696,7 @@ static D3D12_PipelineState *D3D12_CreatePipelineState(SDL_Renderer *renderer,
D3D_GUID(SDL_IID_ID3D12PipelineState),
(void **)&pipelineState);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateGraphicsPipelineState"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateGraphicsPipelineState", result);
return NULL;
}
@@ -759,7 +753,7 @@ static HRESULT D3D12_CreateVertexBuffer(D3D12_RenderData *data, size_t vbidx, si
(void **)&data->vertexBuffers[vbidx].resource);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreatePlacedResource [vertex buffer]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreatePlacedResource [vertex buffer]", result);
return result;
}
@@ -873,13 +867,13 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
result = DXGIGetDebugInterfaceFunc(0, D3D_GUID(SDL_IID_IDXGIDebug1), (void **)&data->dxgiDebug);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("DXGIGetDebugInterface1"), result);
WIN_SetErrorFromHRESULT("DXGIGetDebugInterface1", result);
goto done;
}
result = DXGIGetDebugInterfaceFunc(0, D3D_GUID(SDL_IID_IDXGIInfoQueue), (void **)&dxgiInfoQueue);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("DXGIGetDebugInterface1"), result);
WIN_SetErrorFromHRESULT("DXGIGetDebugInterface1", result);
goto done;
}
@@ -892,7 +886,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
result = CreateDXGIFactoryFunc(creationFlags, D3D_GUID(SDL_IID_IDXGIFactory6), (void **)&data->dxgiFactory);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("CreateDXGIFactory"), result);
WIN_SetErrorFromHRESULT("CreateDXGIFactory", result);
goto done;
}
@@ -903,7 +897,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_IDXGIAdapter4),
(void **)&data->dxgiAdapter);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGIFactory6::EnumAdapterByGPUPreference"), result);
WIN_SetErrorFromHRESULT("IDXGIFactory6::EnumAdapterByGpuPreference", result);
goto done;
}
@@ -912,7 +906,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12Device1),
(void **)&d3dDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D12CreateDevice"), result);
WIN_SetErrorFromHRESULT("D3D12CreateDevice", result);
goto done;
}
@@ -924,7 +918,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
result = ID3D12Device1_QueryInterface(d3dDevice, D3D_GUID(SDL_IID_ID3D12InfoQueue), (void **)&infoQueue);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device to ID3D12InfoQueue"), result);
WIN_SetErrorFromHRESULT("ID3D12Device to ID3D12InfoQueue", result);
goto done;
}
@@ -942,7 +936,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
result = ID3D12Device_QueryInterface(d3dDevice, D3D_GUID(SDL_IID_ID3D12Device1), (void **)&data->d3dDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device to ID3D12Device1"), result);
WIN_SetErrorFromHRESULT("ID3D12Device to ID3D12Device1", result);
goto done;
}
@@ -956,7 +950,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12CommandQueue),
(void **)&data->commandQueue);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommandQueue"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommandQueue", result);
goto done;
}
@@ -969,7 +963,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
(void **)&data->rtvDescriptorHeap);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateDescriptorHeap [rtv]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateDescriptorHeap [rtv]", result);
goto done;
}
data->rtvDescriptorSize = ID3D12Device1_GetDescriptorHandleIncrementSize(d3dDevice, D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
@@ -980,7 +974,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
(void **)&data->textureRTVDescriptorHeap);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateDescriptorHeap [texture rtv]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateDescriptorHeap [texture rtv]", result);
goto done;
}
@@ -993,7 +987,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
(void **)&data->srvDescriptorHeap);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateDescriptorHeap [srv]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateDescriptorHeap [srv]", result);
goto done;
}
rootDescriptorHeaps[0] = data->srvDescriptorHeap;
@@ -1008,7 +1002,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12DescriptorHeap),
(void **)&data->samplerDescriptorHeap);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateDescriptorHeap [sampler]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateDescriptorHeap [sampler]", result);
goto done;
}
rootDescriptorHeaps[1] = data->samplerDescriptorHeap;
@@ -1021,7 +1015,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12CommandAllocator),
(void **)&data->commandAllocators[i]);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommandAllocator"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommandAllocator", result);
goto done;
}
}
@@ -1035,7 +1029,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12GraphicsCommandList2),
(void **)&data->commandList);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommandList"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommandList", result);
goto done;
}
@@ -1049,7 +1043,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12Fence),
(void **)&data->fence);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateFence"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateFence", result);
goto done;
}
@@ -1057,7 +1051,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
data->fenceEvent = CreateEventExFunc(NULL, NULL, 0, EVENT_MODIFY_STATE | SYNCHRONIZE);
if (!data->fenceEvent) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("CreateEventEx"), result);
WIN_SetErrorFromHRESULT("CreateEventEx", result);
goto done;
}
@@ -1072,7 +1066,7 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12RootSignature),
(void **)&data->rootSignatures[i]);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateRootSignature"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateRootSignature", result);
goto done;
}
}
@@ -1278,7 +1272,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
NULL, // Allow on all displays.
&swapChain);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGIFactory2::CreateSwapChainForHwnd"), result);
WIN_SetErrorFromHRESULT("IDXGIFactory2::CreateSwapChainForHwnd", result);
goto done;
}
@@ -1286,7 +1280,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
result = IDXGISwapChain1_QueryInterface(swapChain, D3D_GUID(SDL_IID_IDXGISwapChain4), (void **)&data->swapChain);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain1::QueryInterface"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain1::QueryInterface", result);
goto done;
}
@@ -1295,7 +1289,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
*/
result = IDXGISwapChain4_SetMaximumFrameLatency(data->swapChain, 1);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain4::SetMaximumFrameLatency"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain4::SetMaximumFrameLatency", result);
goto done;
}
@@ -1320,7 +1314,7 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
(colorspace_support & DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT)) {
result = IDXGISwapChain3_SetColorSpace1(data->swapChain, colorspace);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain3::SetColorSpace1"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain3::SetColorSpace1", result);
goto done;
}
} else {
@@ -1376,7 +1370,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
DXGI_FORMAT_UNKNOWN,
data->swapFlags);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::ResizeBuffers"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::ResizeBuffers", result);
goto done;
}
} else {
@@ -1391,7 +1385,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
if (data->swapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) {
result = IDXGISwapChain4_SetRotation(data->swapChain, data->rotation); // NOLINT(clang-analyzer-core.NullDereference)
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain4::SetRotation"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain4::SetRotation", result);
goto done;
}
}
@@ -1403,7 +1397,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
#if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)
result = D3D12_XBOX_CreateBackBufferTarget(data->d3dDevice, renderer->window->w, renderer->window->h, (void **)&data->renderTargets[i]);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("D3D12_XBOX_CreateBackBufferTarget"), result);
WIN_SetErrorFromHRESULT("D3D12_XBOX_CreateBackBufferTarget", result);
goto done;
}
#else
@@ -1412,7 +1406,7 @@ static HRESULT D3D12_CreateWindowSizeDependentResources(SDL_Renderer *renderer)
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&data->renderTargets[i]);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain4::GetBuffer"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain4::GetBuffer", result);
goto done;
}
#endif
@@ -1625,7 +1619,7 @@ static bool D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&textureData->mainTexture);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommittedResource [texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommittedResource [texture]", result);
}
}
textureData->mainResourceState = D3D12_RESOURCE_STATE_COPY_DEST;
@@ -1651,7 +1645,7 @@ static bool D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&textureData->mainTextureU);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommittedResource [texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommittedResource [texture]", result);
}
}
textureData->mainResourceStateU = D3D12_RESOURCE_STATE_COPY_DEST;
@@ -1670,7 +1664,7 @@ static bool D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&textureData->mainTextureV);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommittedResource [texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommittedResource [texture]", result);
}
}
textureData->mainResourceStateV = D3D12_RESOURCE_STATE_COPY_DEST;
@@ -1875,7 +1869,7 @@ static bool D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Re
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&rendererData->uploadBuffers[rendererData->currentUploadBuffer]);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommittedResource [create upload buffer]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommittedResource [create upload buffer]", result);
}
// Get a write-only pointer to data in the upload buffer:
@@ -1886,7 +1880,7 @@ static bool D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Re
(void **)&textureMemory);
if (FAILED(result)) {
D3D_SAFE_RELEASE(rendererData->uploadBuffers[rendererData->currentUploadBuffer]);
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Resource::Map [map staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Resource::Map [map staging texture]", result);
}
src = (const Uint8 *)pixels;
@@ -2136,7 +2130,7 @@ static bool D3D12_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&textureData->stagingBuffer);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateCommittedResource [create upload buffer]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Device::CreateCommittedResource [create upload buffer]", result);
}
// Get a write-only pointer to data in the upload buffer:
@@ -2146,7 +2140,7 @@ static bool D3D12_LockTexture(SDL_Renderer *renderer, SDL_Texture *texture,
(void **)&textureMemory);
if (FAILED(result)) {
D3D_SAFE_RELEASE(rendererData->uploadBuffers[rendererData->currentUploadBuffer]);
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Resource::Map [map staging texture]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Resource::Map [map staging texture]", result);
}
SDL_zero(pitchedDesc);
@@ -2407,7 +2401,7 @@ static bool D3D12_UpdateVertexBuffer(SDL_Renderer *renderer,
vertexBuffer = rendererData->vertexBuffers[vbidx].resource;
result = ID3D12Resource_Map(vertexBuffer, 0, &range, (void **)&vertexBufferData);
if (FAILED(result)) {
return WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Resource::Map [vertex buffer]"), result);
return WIN_SetErrorFromHRESULT("ID3D12Resource::Map [vertex buffer]", result);
}
SDL_memcpy(vertexBufferData, vertexData, dataSizeInBytes);
ID3D12Resource_Unmap(vertexBuffer, 0, NULL);
@@ -3031,7 +3025,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
D3D_GUID(SDL_IID_ID3D12Resource),
(void **)&readbackBuffer);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Device::CreateTexture2D [create staging texture]"), result);
WIN_SetErrorFromHRESULT("ID3D12Device::CreateTexture2D [create staging texture]", result);
goto done;
}
@@ -3091,7 +3085,7 @@ static SDL_Surface *D3D12_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
NULL,
(void **)&textureMemory);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D12Resource::Map [map staging texture]"), result);
WIN_SetErrorFromHRESULT("ID3D12Resource::Map [map staging texture]", result);
goto done;
}
@@ -3151,9 +3145,9 @@ static bool D3D12_RenderPresent(SDL_Renderer *renderer)
} else if (result == DXGI_ERROR_INVALID_CALL) {
// We probably went through a fullscreen <-> windowed transition
D3D12_CreateWindowSizeDependentResources(renderer);
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::Present"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::Present", result);
} else {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("IDXGISwapChain::Present"), result);
WIN_SetErrorFromHRESULT("IDXGISwapChain::Present", result);
}
return false;
} else {

View File

@@ -25,12 +25,6 @@
#include "../../core/windows/SDL_windows.h"
#include <XGameRuntime.h>
#if defined(_MSC_VER) && !defined(__clang__)
#define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
#else
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
#endif
static const GUID SDL_IID_ID3D12Device1 = { 0x77acce80, 0x638e, 0x4e65, { 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e } };
static const GUID SDL_IID_ID3D12Resource = { 0x696442be, 0xa72e, 0x4059, { 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad } };
static const GUID SDL_IID_IDXGIDevice1 = { 0x77db970f, 0x6276, 0x48ba, { 0xba, 0x28, 0x07, 0x01, 0x43, 0xb4, 0x39, 0x2c } };
@@ -53,38 +47,38 @@ HRESULT D3D12_XBOX_CreateDevice(ID3D12Device **device, bool createDebug)
result = D3D12XboxCreateDevice(NULL, &params, SDL_IID_ID3D12Device1, (void **) device);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] D3D12XboxCreateDevice"), result);
WIN_SetErrorFromHRESULT("D3D12XboxCreateDevice", result);
goto done;
}
result = (*device)->QueryInterface(SDL_IID_IDXGIDevice1, (void **) &dxgiDevice);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] ID3D12Device to IDXGIDevice1"), result);
WIN_SetErrorFromHRESULT("ID3D12Device to IDXGIDevice1", result);
goto done;
}
result = dxgiDevice->GetAdapter(&dxgiAdapter);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] dxgiDevice->GetAdapter"), result);
WIN_SetErrorFromHRESULT("dxgiDevice->GetAdapter", result);
goto done;
}
result = dxgiAdapter->EnumOutputs(0, &dxgiOutput);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] dxgiAdapter->EnumOutputs"), result);
WIN_SetErrorFromHRESULT("dxgiAdapter->EnumOutputs", result);
goto done;
}
// Set frame interval
result = (*device)->SetFrameIntervalX(dxgiOutput, D3D12XBOX_FRAME_INTERVAL_60_HZ, 1, D3D12XBOX_FRAME_INTERVAL_FLAG_NONE);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] SetFrameIntervalX"), result);
WIN_SetErrorFromHRESULT("SetFrameIntervalX", result);
goto done;
}
result = (*device)->ScheduleFrameEventX(D3D12XBOX_FRAME_EVENT_ORIGIN, 0, NULL, D3D12XBOX_SCHEDULE_FRAME_EVENT_FLAG_NONE);
if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("[xbox] ScheduleFrameEventX"), result);
WIN_SetErrorFromHRESULT("ScheduleFrameEventX", result);
goto done;
}

View File

@@ -27,8 +27,6 @@
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// The shaders here were compiled with compile_shaders.bat
#define g_main D3D12_PixelShader_Colors

View File

@@ -29,8 +29,6 @@
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// Shader blob headers are generated with a pre-build step using compile_shaders_xbox.bat
#define g_main D3D12_PixelShader_Colors

View File

@@ -29,8 +29,6 @@
#include "SDL_shaders_d3d12.h"
#define SDL_COMPOSE_ERROR(str) SDL_STRINGIFY_ARG(__FUNCTION__) ", " str
// Shader blob headers are generated with a pre-build step using compile_shaders_xbox.bat