presentation loop
parent
6827eea6d3
commit
06b805cf93
|
@ -932,8 +932,8 @@ REFRESHAPI void REFRESH_SetTextureDataYUV(
|
|||
*
|
||||
* NOTE:
|
||||
* Calling this function on a buffer after the buffer
|
||||
* has been bound by BindVertexBuffers but before
|
||||
* Present has been called is an error.
|
||||
* has been bound by BindVertexBuffers without calling
|
||||
* Submit first is an error.
|
||||
*
|
||||
* buffer: The vertex buffer to be updated.
|
||||
* offsetInBytes: The starting offset of the buffer to write into.
|
||||
|
@ -954,8 +954,8 @@ REFRESHAPI void REFRESH_SetVertexBufferData(
|
|||
*
|
||||
* NOTE:
|
||||
* Calling this function on a buffer after the buffer
|
||||
* has been bound by BindIndexBuffer but before
|
||||
* Present has been called is an error.
|
||||
* has been bound by BindIndexBuffer without calling
|
||||
* Submit first is an error.
|
||||
*
|
||||
* buffer: The index buffer to be updated.
|
||||
* offsetInBytes: The starting offset of the buffer to write into.
|
||||
|
@ -1249,6 +1249,7 @@ REFRESHAPI void REFRESH_BindGraphicsPipeline(
|
|||
REFRESH_GraphicsPipeline *graphicsPipeline
|
||||
);
|
||||
|
||||
/* Binds vertex buffers for use with subsequent draw calls. */
|
||||
REFRESHAPI void REFRESH_BindVertexBuffers(
|
||||
REFRESH_Device *device,
|
||||
uint32_t firstBinding,
|
||||
|
@ -1257,6 +1258,7 @@ REFRESHAPI void REFRESH_BindVertexBuffers(
|
|||
uint64_t *pOffsets
|
||||
);
|
||||
|
||||
/* Binds an index buffer for use with subsequent draw calls. */
|
||||
REFRESHAPI void REFRESH_BindIndexBuffer(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_Buffer *buffer,
|
||||
|
@ -1264,14 +1266,30 @@ REFRESHAPI void REFRESH_BindIndexBuffer(
|
|||
REFRESH_IndexElementSize indexElementSize
|
||||
);
|
||||
|
||||
/* Presentation */
|
||||
/* Submission/Presentation */
|
||||
|
||||
REFRESHAPI void REFRESH_Present(
|
||||
/* Prepares for an image to be presented to the screen.
|
||||
* The image will be presented upon the next REFRESH_Submit call.
|
||||
*
|
||||
* NOTE:
|
||||
* It is an error to call this function in headless mode.
|
||||
*
|
||||
* texture: The image to present.
|
||||
* sourceRectangle: The region of the image to present (or NULL).
|
||||
* destinationRectangle: The region of the window to update (or NULL).
|
||||
*/
|
||||
REFRESHAPI void REFRESH_PreparePresent(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_Texture* texture,
|
||||
REFRESH_Rect *sourceRectangle,
|
||||
REFRESH_Rect *destinationRectangle
|
||||
);
|
||||
|
||||
/* Submits all of the enqueued commands. */
|
||||
REFRESHAPI void REFRESH_Submit(
|
||||
REFRESH_Device* device
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
|
|
@ -346,7 +346,7 @@ REFRESH_Texture* REFRESH_CreateTextureCube(
|
|||
|
||||
REFRESH_ColorTarget* REFRESH_GenColorTarget(
|
||||
REFRESH_Device *device,
|
||||
uint32_t multisampleCount,
|
||||
REFRESH_SampleCount multisampleCount,
|
||||
REFRESH_TextureSlice textureSlice
|
||||
) {
|
||||
NULL_RETURN_NULL(device);
|
||||
|
@ -835,17 +835,28 @@ void REFRESH_BindIndexBuffer(
|
|||
);
|
||||
}
|
||||
|
||||
void REFRESH_Present(
|
||||
void REFRESH_PreparePresent(
|
||||
REFRESH_Device *device,
|
||||
REFRESH_Texture *texture,
|
||||
REFRESH_Rect *sourceRectangle,
|
||||
REFRESH_Rect *destinationRectangle
|
||||
) {
|
||||
NULL_RETURN(device);
|
||||
device->Present(
|
||||
device->PreparePresent(
|
||||
device->driverData,
|
||||
texture,
|
||||
sourceRectangle,
|
||||
destinationRectangle
|
||||
);
|
||||
}
|
||||
|
||||
void REFRESH_Submit(
|
||||
REFRESH_Device *device
|
||||
) {
|
||||
NULL_RETURN(device);
|
||||
device->Submit(
|
||||
device->driverData
|
||||
);
|
||||
}
|
||||
|
||||
/* vim: set noexpandtab shiftwidth=8 tabstop=8: */
|
||||
|
|
|
@ -268,7 +268,7 @@ struct REFRESH_Device
|
|||
|
||||
REFRESH_ColorTarget* (*GenColorTarget)(
|
||||
REFRESH_Renderer *driverData,
|
||||
uint32_t multisampleCount,
|
||||
REFRESH_SampleCount multisampleCount,
|
||||
REFRESH_TextureSlice textureSlice
|
||||
);
|
||||
|
||||
|
@ -505,12 +505,17 @@ struct REFRESH_Device
|
|||
REFRESH_IndexElementSize indexElementSize
|
||||
);
|
||||
|
||||
void(*Present)(
|
||||
void(*PreparePresent)(
|
||||
REFRESH_Renderer *driverData,
|
||||
REFRESH_Texture *texture,
|
||||
REFRESH_Rect *sourceRectangle,
|
||||
REFRESH_Rect *destinationRectangle
|
||||
);
|
||||
|
||||
void(*Submit)(
|
||||
REFRESH_Renderer *driverData
|
||||
);
|
||||
|
||||
/* Opaque pointer for the Driver */
|
||||
REFRESH_Renderer *driverData;
|
||||
};
|
||||
|
@ -562,7 +567,8 @@ struct REFRESH_Device
|
|||
ASSIGN_DRIVER_FUNC(BindGraphicsPipeline, name) \
|
||||
ASSIGN_DRIVER_FUNC(BindVertexBuffers, name) \
|
||||
ASSIGN_DRIVER_FUNC(BindIndexBuffer, name) \
|
||||
ASSIGN_DRIVER_FUNC(Present, name)
|
||||
ASSIGN_DRIVER_FUNC(PreparePresent, name) \
|
||||
ASSIGN_DRIVER_FUNC(Submit, name)
|
||||
|
||||
typedef struct REFRESH_Driver
|
||||
{
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue