This is part of rev 47 but was accidentally skipped.
XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = {
.sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO,
.pNext = NULL,
- .operation = XGL_RENDER_PASS_OPERATION_BEGIN_AND_END,
};
XGL_CMD_BUFFER_BEGIN_INFO cmd_buf_info = {
.sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO,
XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = {
.sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO,
.pNext = NULL,
- .operation = XGL_RENDER_PASS_OPERATION_BEGIN_AND_END,
};
XGL_CMD_BUFFER_BEGIN_INFO cmd_buf_info = {
.sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO,
break;
case XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO:
ginfo = (XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO *) next;
- cmd->bind.render_pass = (struct intel_render_pass *)
- ginfo->renderPass;
+ intel_cmd_begin_render_pass(cmd, (struct intel_render_pass *)
+ ginfo->renderPass);
break;
default:
return XGL_ERROR_INVALID_VALUE;
#include "obj.h"
#include "view.h"
#include "img.h"
+#include "cmd.h"
#include "fb.h"
static void fb_destroy(struct intel_obj *obj)
intel_base_destroy(&rp->obj.base);
}
+void intel_cmd_begin_render_pass(struct intel_cmd *cmd,
+ const struct intel_render_pass *rp)
+{
+ cmd->bind.render_pass = (struct intel_render_pass *) rp;
+}
+
+void intel_cmd_end_render_pass(struct intel_cmd *cmd,
+ const struct intel_render_pass *rp)
+{
+ //note what to do if rp != bound rp
+ cmd->bind.render_pass = 0;
+}
+
XGL_RESULT XGLAPI xglCreateFramebuffer(
XGL_DEVICE device,
const XGL_FRAMEBUFFER_CREATE_INFO* info,
return intel_render_pass_create(dev, info, (struct intel_render_pass **) rp_ret);
}
+void XGLAPI xglCmdBeginRenderPass(
+ XGL_CMD_BUFFER cmdBuffer,
+ XGL_RENDER_PASS renderPass)
+{
+ struct intel_cmd *cmd = intel_cmd(cmdBuffer);
+
+ intel_cmd_begin_render_pass(cmd, (struct intel_render_pass *) renderPass);
+}
+void XGLAPI xglCmdEndRenderPass(
+ XGL_CMD_BUFFER cmdBuffer,
+ XGL_RENDER_PASS renderPass)
+{
+ struct intel_cmd *cmd = intel_cmd(cmdBuffer);
+
+ intel_cmd_end_render_pass(cmd, (struct intel_render_pass *) renderPass);
+}
const XGL_RENDER_PASS_CREATE_INFO* pInfo,
struct intel_render_pass** ppRenderPass);
void intel_render_pass_destroy(struct intel_render_pass *rp);
-
+void intel_cmd_begin_render_pass(struct intel_cmd *cmd,
+ const struct intel_render_pass *rp);
+void intel_cmd_end_render_pass(struct intel_cmd *cmd,
+ const struct intel_render_pass *rp);
XGL_RESULT XGLAPI intelCreateFramebuffer(
XGL_DEVICE device,
const XGL_FRAMEBUFFER_CREATE_INFO* pCreateInfo,
XGL_MAX_ENUM(_XGL_SHADER_STAGE_FLAGS)
} XGL_SHADER_STAGE_FLAGS;
-// Graphics workload submit type. Used for rendering workloads.
-typedef enum _XGL_RENDER_PASS_OPERATION
-{
- XGL_RENDER_PASS_OPERATION_BEGIN, // Start rendering
- XGL_RENDER_PASS_OPERATION_CONTINUE, // Continue rendering
- XGL_RENDER_PASS_OPERATION_END, // End rendering
- XGL_RENDER_PASS_OPERATION_BEGIN_AND_END, // Start and finish rendering in a single command buffer
-
- XGL_MAX_ENUM(_XGL_RENDER_PASS_OPERATION)
-} XGL_RENDER_PASS_OPERATION;
-
// Structure type enumerant
typedef enum _XGL_STRUCTURE_TYPE
{
const void* pNext; // Pointer to next structure
XGL_RENDER_PASS renderPass;
- XGL_RENDER_PASS_OPERATION operation;
} XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO;
typedef void (XGLAPI *xglCmdSaveAtomicCountersType)(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, XGL_BUFFER destBuffer, XGL_GPU_SIZE destOffset);
typedef XGL_RESULT (XGLAPI *xglCreateFramebufferType)(XGL_DEVICE device, const XGL_FRAMEBUFFER_CREATE_INFO* pCreateInfo, XGL_FRAMEBUFFER* pFramebuffer);
typedef XGL_RESULT (XGLAPI *xglCreateRenderPassType)(XGL_DEVICE device, const XGL_RENDER_PASS_CREATE_INFO* pCreateInfo, XGL_RENDER_PASS* pRenderPass);
-
+typedef void (XGLAPI *xglCmdBeginRenderPassType)(XGL_CMD_BUFFER cmdBuffer, XGL_RENDER_PASS renderPass);
+typedef void (XGLAPI *xglCmdEndRenderPassType)(XGL_CMD_BUFFER cmdBuffer, XGL_RENDER_PASS renderPass);
#ifdef XGL_PROTOTYPES
// GPU initialization
const XGL_RENDER_PASS_CREATE_INFO* pCreateInfo,
XGL_RENDER_PASS* pRenderPass);
+void XGLAPI xglCmdBeginRenderPass(
+ XGL_CMD_BUFFER cmdBuffer,
+ XGL_RENDER_PASS renderPass);
+
+void XGLAPI xglCmdEndRenderPass(
+ XGL_CMD_BUFFER cmdBuffer,
+ XGL_RENDER_PASS renderPass);
+
#endif /* XGL_PROTOTYPES */
#ifdef __cplusplus
xglCmdSaveAtomicCountersType CmdSaveAtomicCounters;
xglCreateFramebufferType CreateFramebuffer;
xglCreateRenderPassType CreateRenderPass;
+ xglCmdBeginRenderPassType CmdBeginRenderPass;
+ xglCmdEndRenderPassType CmdEndRenderPass;
xglDbgSetValidationLevelType DbgSetValidationLevel;
xglDbgRegisterMsgCallbackType DbgRegisterMsgCallback;
xglDbgUnregisterMsgCallbackType DbgUnregisterMsgCallback;
.sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO,
.pNext = NULL,
.renderPass = renderpass_obj,
- .operation = XGL_RENDER_PASS_OPERATION_BEGIN_AND_END,
};
info.flags = XGL_CMD_BUFFER_OPTIMIZE_GPU_SMALL_BATCH_BIT |
XGL_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT;
Param("const XGL_RENDER_PASS_CREATE_INFO*", "pCreateInfo"),
Param("XGL_RENDER_PASS*", "pRenderPass")]),
+ Proto("void", "CmdBeginRenderPass",
+ [Param("XGL_CMD_BUFFER", "cmdBuffer"),
+ Param("XGL_RENDER_PASS", "renderPass")]),
+
+ Proto("void", "CmdEndRenderPass",
+ [Param("XGL_CMD_BUFFER", "cmdBuffer"),
+ Param("XGL_RENDER_PASS", "renderPass")]),
+
Proto("XGL_RESULT", "DbgSetValidationLevel",
[Param("XGL_DEVICE", "device"),
Param("XGL_VALIDATION_LEVEL", "validationLevel")]),