forked from MoonsideGames/Refresh
change shader uniform push to take pipelines instead of command buffers
parent
7f3e89315e
commit
8f1cdf190f
|
@ -995,7 +995,7 @@ REFRESHAPI void Refresh_SetBufferData(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms(
|
REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
@ -1012,7 +1012,7 @@ REFRESHAPI uint32_t Refresh_PushVertexShaderUniforms(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms(
|
REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
@ -1029,7 +1029,7 @@ REFRESHAPI uint32_t Refresh_PushFragmentShaderUniforms(
|
||||||
*/
|
*/
|
||||||
REFRESHAPI uint32_t Refresh_PushComputeShaderUniforms(
|
REFRESHAPI uint32_t Refresh_PushComputeShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_ComputePipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
|
|
@ -466,14 +466,14 @@ void Refresh_SetBufferData(
|
||||||
|
|
||||||
uint32_t Refresh_PushVertexShaderUniforms(
|
uint32_t Refresh_PushVertexShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
if (device == NULL) { return 0; }
|
if (device == NULL) { return 0; }
|
||||||
return device->PushVertexShaderUniforms(
|
return device->PushVertexShaderUniforms(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
commandBuffer,
|
pipeline,
|
||||||
data,
|
data,
|
||||||
dataLengthInBytes
|
dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
@ -481,14 +481,14 @@ uint32_t Refresh_PushVertexShaderUniforms(
|
||||||
|
|
||||||
uint32_t Refresh_PushFragmentShaderUniforms(
|
uint32_t Refresh_PushFragmentShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline * pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
if (device == NULL) { return 0; }
|
if (device == NULL) { return 0; }
|
||||||
return device->PushFragmentShaderUniforms(
|
return device->PushFragmentShaderUniforms(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
commandBuffer,
|
pipeline,
|
||||||
data,
|
data,
|
||||||
dataLengthInBytes
|
dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
@ -496,14 +496,14 @@ uint32_t Refresh_PushFragmentShaderUniforms(
|
||||||
|
|
||||||
uint32_t Refresh_PushComputeShaderUniforms(
|
uint32_t Refresh_PushComputeShaderUniforms(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_ComputePipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
if (device == NULL) { return 0; }
|
if (device == NULL) { return 0; }
|
||||||
return device->PushComputeShaderUniforms(
|
return device->PushComputeShaderUniforms(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
commandBuffer,
|
pipeline,
|
||||||
data,
|
data,
|
||||||
dataLengthInBytes
|
dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
|
|
@ -312,21 +312,21 @@ struct Refresh_Device
|
||||||
|
|
||||||
uint32_t(*PushVertexShaderUniforms)(
|
uint32_t(*PushVertexShaderUniforms)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline* pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
|
||||||
uint32_t(*PushFragmentShaderUniforms)(
|
uint32_t(*PushFragmentShaderUniforms)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
|
||||||
uint32_t (*PushComputeShaderUniforms)(
|
uint32_t (*PushComputeShaderUniforms)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_ComputePipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
);
|
);
|
||||||
|
|
|
@ -6553,21 +6553,21 @@ static void VULKAN_SetBufferData(
|
||||||
|
|
||||||
static uint32_t VULKAN_PushVertexShaderUniforms(
|
static uint32_t VULKAN_PushVertexShaderUniforms(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
VulkanGraphicsPipeline* graphicsPipeline = (VulkanGraphicsPipeline*) pipeline;
|
||||||
|
|
||||||
SDL_LockMutex(renderer->uniformBufferLock);
|
SDL_LockMutex(renderer->uniformBufferLock);
|
||||||
|
|
||||||
renderer->vertexUBOOffset += renderer->vertexUBOBlockIncrement;
|
renderer->vertexUBOOffset += renderer->vertexUBOBlockIncrement;
|
||||||
renderer->vertexUBOBlockIncrement = vulkanCommandBuffer->currentGraphicsPipeline->vertexUBOBlockSize;
|
renderer->vertexUBOBlockIncrement = graphicsPipeline->vertexUBOBlockSize;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
renderer->vertexUBOOffset +
|
renderer->vertexUBOOffset +
|
||||||
vulkanCommandBuffer->currentGraphicsPipeline->vertexUBOBlockSize >=
|
graphicsPipeline->vertexUBOBlockSize >=
|
||||||
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
||||||
) {
|
) {
|
||||||
Refresh_LogError("Vertex UBO overflow!");
|
Refresh_LogError("Vertex UBO overflow!");
|
||||||
|
@ -6589,21 +6589,21 @@ static uint32_t VULKAN_PushVertexShaderUniforms(
|
||||||
|
|
||||||
static uint32_t VULKAN_PushFragmentShaderUniforms(
|
static uint32_t VULKAN_PushFragmentShaderUniforms(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_GraphicsPipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
VulkanGraphicsPipeline* graphicsPipeline = (VulkanGraphicsPipeline*) pipeline;
|
||||||
|
|
||||||
SDL_LockMutex(renderer->uniformBufferLock);
|
SDL_LockMutex(renderer->uniformBufferLock);
|
||||||
|
|
||||||
renderer->fragmentUBOOffset += renderer->fragmentUBOBlockIncrement;
|
renderer->fragmentUBOOffset += renderer->fragmentUBOBlockIncrement;
|
||||||
renderer->fragmentUBOBlockIncrement = vulkanCommandBuffer->currentGraphicsPipeline->fragmentUBOBlockSize;
|
renderer->fragmentUBOBlockIncrement = graphicsPipeline->fragmentUBOBlockSize;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
renderer->fragmentUBOOffset +
|
renderer->fragmentUBOOffset +
|
||||||
vulkanCommandBuffer->currentGraphicsPipeline->fragmentUBOBlockSize >=
|
graphicsPipeline->fragmentUBOBlockSize >=
|
||||||
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
||||||
) {
|
) {
|
||||||
Refresh_LogError("Fragment UBO overflow!");
|
Refresh_LogError("Fragment UBO overflow!");
|
||||||
|
@ -6625,21 +6625,21 @@ static uint32_t VULKAN_PushFragmentShaderUniforms(
|
||||||
|
|
||||||
static uint32_t VULKAN_PushComputeShaderUniforms(
|
static uint32_t VULKAN_PushComputeShaderUniforms(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_CommandBuffer *commandBuffer,
|
Refresh_ComputePipeline *pipeline,
|
||||||
void *data,
|
void *data,
|
||||||
uint32_t dataLengthInBytes
|
uint32_t dataLengthInBytes
|
||||||
) {
|
) {
|
||||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
VulkanComputePipeline* computePipeline = (VulkanComputePipeline*) pipeline;
|
||||||
|
|
||||||
SDL_LockMutex(renderer->uniformBufferLock);
|
SDL_LockMutex(renderer->uniformBufferLock);
|
||||||
|
|
||||||
renderer->computeUBOOffset += renderer->computeUBOBlockIncrement;
|
renderer->computeUBOOffset += renderer->computeUBOBlockIncrement;
|
||||||
renderer->computeUBOBlockIncrement = vulkanCommandBuffer->currentComputePipeline->computeUBOBlockSize;
|
renderer->computeUBOBlockIncrement = computePipeline->computeUBOBlockSize;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
renderer->computeUBOOffset +
|
renderer->computeUBOOffset +
|
||||||
vulkanCommandBuffer->currentComputePipeline->computeUBOBlockSize >=
|
computePipeline->computeUBOBlockSize >=
|
||||||
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
UBO_BUFFER_SIZE * (renderer->frameIndex + 1)
|
||||||
) {
|
) {
|
||||||
Refresh_LogError("Compute UBO overflow!");
|
Refresh_LogError("Compute UBO overflow!");
|
||||||
|
|
Loading…
Reference in New Issue