mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-05 17:36:25 +00:00
GPU: Revise swapchain acquisition (#11633)
--------- Co-authored-by: Lucas Murray <22484+lmurray@users.noreply.github.com>
This commit is contained in:
@@ -2694,16 +2694,13 @@ bool SDL_AcquireGPUSwapchainTexture(
|
||||
CommandBufferCommonHeader *commandBufferHeader = (CommandBufferCommonHeader *)command_buffer;
|
||||
|
||||
if (command_buffer == NULL) {
|
||||
SDL_InvalidParamError("command_buffer");
|
||||
return false;
|
||||
return SDL_InvalidParamError("command_buffer");
|
||||
}
|
||||
if (window == NULL) {
|
||||
SDL_InvalidParamError("window");
|
||||
return false;
|
||||
return SDL_InvalidParamError("window");
|
||||
}
|
||||
if (swapchain_texture == NULL) {
|
||||
SDL_InvalidParamError("swapchain_texture");
|
||||
return false;
|
||||
return SDL_InvalidParamError("swapchain_texture");
|
||||
}
|
||||
|
||||
if (COMMAND_BUFFER_DEVICE->debug_mode) {
|
||||
@@ -2725,6 +2722,59 @@ bool SDL_AcquireGPUSwapchainTexture(
|
||||
return result;
|
||||
}
|
||||
|
||||
bool SDL_WaitForGPUSwapchain(
|
||||
SDL_GPUDevice *device,
|
||||
SDL_Window *window)
|
||||
{
|
||||
CHECK_DEVICE_MAGIC(device, false);
|
||||
|
||||
if (window == NULL) {
|
||||
return SDL_InvalidParamError("window");
|
||||
}
|
||||
|
||||
return device->WaitForSwapchain(
|
||||
device->driverData,
|
||||
window);
|
||||
}
|
||||
|
||||
bool SDL_WaitAndAcquireGPUSwapchainTexture(
|
||||
SDL_GPUCommandBuffer *command_buffer,
|
||||
SDL_Window *window,
|
||||
SDL_GPUTexture **swapchain_texture,
|
||||
Uint32 *swapchain_texture_width,
|
||||
Uint32 *swapchain_texture_height)
|
||||
{
|
||||
CommandBufferCommonHeader *commandBufferHeader = (CommandBufferCommonHeader *)command_buffer;
|
||||
|
||||
if (command_buffer == NULL) {
|
||||
return SDL_InvalidParamError("command_buffer");
|
||||
}
|
||||
if (window == NULL) {
|
||||
return SDL_InvalidParamError("window");
|
||||
}
|
||||
if (swapchain_texture == NULL) {
|
||||
return SDL_InvalidParamError("swapchain_texture");
|
||||
}
|
||||
|
||||
if (COMMAND_BUFFER_DEVICE->debug_mode) {
|
||||
CHECK_COMMAND_BUFFER_RETURN_FALSE
|
||||
CHECK_ANY_PASS_IN_PROGRESS("Cannot acquire a swapchain texture during a pass!", false)
|
||||
}
|
||||
|
||||
bool result = COMMAND_BUFFER_DEVICE->WaitAndAcquireSwapchainTexture(
|
||||
command_buffer,
|
||||
window,
|
||||
swapchain_texture,
|
||||
swapchain_texture_width,
|
||||
swapchain_texture_height);
|
||||
|
||||
if (*swapchain_texture != NULL){
|
||||
commandBufferHeader->swapchain_texture_acquired = true;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool SDL_SubmitGPUCommandBuffer(
|
||||
SDL_GPUCommandBuffer *command_buffer)
|
||||
{
|
||||
|
Reference in New Issue
Block a user