.view = demo->depth.view,
.layout = XGL_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
};
- const float clear_color[4] = { 0.2f, 0.2f, 0.2f, 0.2f };
+ const XGL_CLEAR_COLOR clear_color = {
+ .color.floatColor = { 0.2f, 0.2f, 0.2f, 0.2f },
+ .useRawValue = false,
+ };
const float clear_depth = 1.0f;
XGL_IMAGE_SUBRESOURCE_RANGE clear_range;
XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = {
rp_info.renderArea.extent.width = demo->width;
rp_info.renderArea.extent.height = demo->height;
rp_info.colorAttachmentCount = 1;
+ rp_info.pColorLoadClearValues = &clear_color;
rp_info.pColorLoadOps = &load_op;
rp_info.pColorStoreOps = &store_op;
rp_info.depthLoadOp = XGL_ATTACHMENT_LOAD_OP_DONT_CARE;
.view = demo->depth.view,
.layout = XGL_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
};
- const float clear_color[4] = { 0.2f, 0.2f, 0.2f, 0.2f };
+ const XGL_CLEAR_COLOR clear_color = {
+ .color.floatColor = { 0.2f, 0.2f, 0.2f, 0.2f },
+ .useRawValue = false,
+ };
const float clear_depth = 0.9f;
XGL_IMAGE_SUBRESOURCE_RANGE clear_range;
XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = {
ICD_EXPORT void XGLAPI xglCmdClearColorImage(
XGL_CMD_BUFFER cmdBuffer,
XGL_IMAGE image,
- const float color[4],
- uint32_t rangeCount,
- const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
-{
- NULLDRV_LOG_FUNC;
-}
-
-ICD_EXPORT void XGLAPI xglCmdClearColorImageRaw(
- XGL_CMD_BUFFER cmdBuffer,
- XGL_IMAGE image,
- const uint32_t color[4],
+ XGL_CLEAR_COLOR color,
uint32_t rangeCount,
const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
#include "xglPlatform.h"
// XGL API version supported by this file
-#define XGL_API_VERSION XGL_MAKE_VERSION(0, 53, 0)
+#define XGL_API_VERSION XGL_MAKE_VERSION(0, 54, 0)
#ifdef __cplusplus
extern "C"
typedef void (XGLAPI *xglCmdCloneImageDataType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destImageLayout);
typedef void (XGLAPI *xglCmdUpdateBufferType)(XGL_CMD_BUFFER cmdBuffer, XGL_BUFFER destBuffer, XGL_GPU_SIZE destOffset, XGL_GPU_SIZE dataSize, const uint32_t* pData);
typedef void (XGLAPI *xglCmdFillBufferType)(XGL_CMD_BUFFER cmdBuffer, XGL_BUFFER destBuffer, XGL_GPU_SIZE destOffset, XGL_GPU_SIZE fillSize, uint32_t data);
-typedef void (XGLAPI *xglCmdClearColorImageType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const float color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
-typedef void (XGLAPI *xglCmdClearColorImageRawType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const uint32_t color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
+typedef void (XGLAPI *xglCmdClearColorImageType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_CLEAR_COLOR color, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
typedef void (XGLAPI *xglCmdClearDepthStencilType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth, uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
typedef void (XGLAPI *xglCmdResolveImageType)(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE destImage, uint32_t rectCount, const XGL_IMAGE_RESOLVE* pRects);
typedef void (XGLAPI *xglCmdSetEventType)(XGL_CMD_BUFFER cmdBuffer, XGL_EVENT event, XGL_SET_EVENT pipeEvent);
void XGLAPI xglCmdClearColorImage(
XGL_CMD_BUFFER cmdBuffer,
XGL_IMAGE image,
- const float color[4],
- uint32_t rangeCount,
- const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
-
-void XGLAPI xglCmdClearColorImageRaw(
- XGL_CMD_BUFFER cmdBuffer,
- XGL_IMAGE image,
- const uint32_t color[4],
+ XGL_CLEAR_COLOR color,
uint32_t rangeCount,
const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges);
xglCmdUpdateBufferType CmdUpdateBuffer;
xglCmdFillBufferType CmdFillBuffer;
xglCmdClearColorImageType CmdClearColorImage;
- xglCmdClearColorImageRawType CmdClearColorImageRaw;
xglCmdClearDepthStencilType CmdClearDepthStencil;
xglCmdResolveImageType CmdResolveImage;
xglCmdSetEventType CmdSetEvent;
nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const float color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
+XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_CLEAR_COLOR color, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
nextTable.CmdClearColorImage(cmdBuffer, image, color, rangeCount, pRanges);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImageRaw(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const uint32_t color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
-{
- GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
- if (pCB) {
- updateCBTracking(cmdBuffer);
- addCmd(pCB, CMD_CLEARCOLORIMAGERAW);
- }
- else {
- char str[1024];
- sprintf(str, "Attempt to use CmdBuffer %p that doesn't exist!", (void*)cmdBuffer);
- layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", str);
- }
- nextTable.CmdClearColorImageRaw(cmdBuffer, image, color, rangeCount, pRanges);
-}
-
XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth, uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
return (void*) xglCmdFillBuffer;
if (!strcmp(funcName, "xglCmdClearColorImage"))
return (void*) xglCmdClearColorImage;
- if (!strcmp(funcName, "xglCmdClearColorImageRaw"))
- return (void*) xglCmdClearColorImageRaw;
if (!strcmp(funcName, "xglCmdClearDepthStencil"))
return (void*) xglCmdClearDepthStencil;
if (!strcmp(funcName, "xglCmdResolveImage"))
nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const float color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
+XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_CLEAR_COLOR color, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
nextTable.CmdClearColorImage(cmdBuffer, image, color, rangeCount, pRanges);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImageRaw(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const uint32_t color[4], uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
-{
- GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
- if (pCB) {
- updateCBTracking(cmdBuffer);
- addCmd(pCB, CMD_CLEARCOLORIMAGERAW);
- }
- else {
- char str[1024];
- sprintf(str, "Attempt to use CmdBuffer %p that doesn't exist!", (void*)cmdBuffer);
- layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", str);
- }
- nextTable.CmdClearColorImageRaw(cmdBuffer, image, color, rangeCount, pRanges);
-}
-
XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth, uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
return (void*) xglCmdFillBuffer;
if (!strcmp(funcName, "xglCmdClearColorImage"))
return (void*) xglCmdClearColorImage;
- if (!strcmp(funcName, "xglCmdClearColorImageRaw"))
- return (void*) xglCmdClearColorImageRaw;
if (!strcmp(funcName, "xglCmdClearDepthStencil"))
return (void*) xglCmdClearDepthStencil;
if (!strcmp(funcName, "xglCmdResolveImage"))
nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const float color[4],
- uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
+XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_CLEAR_COLOR color, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
// TODO : Verify memory is in XGL_IMAGE_STATE_CLEAR state
loader_platform_thread_lock_mutex(&globalLock);
nextTable.CmdClearColorImage(cmdBuffer, image, color, rangeCount, pRanges);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImageRaw(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const uint32_t color[4],
- uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
-{
- // TODO : Verify memory is in XGL_IMAGE_STATE_CLEAR state
- loader_platform_thread_lock_mutex(&globalLock);
- XGL_GPU_MEMORY mem = getMemBindingFromObject(image);
- if (XGL_FALSE == updateCBBinding(cmdBuffer, mem)) {
- char str[1024];
- sprintf(str, "In xglCmdClearColorImageRaw() call unable to update binding of image buffer %p to cmdBuffer %p", image, cmdBuffer);
- layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str);
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- nextTable.CmdClearColorImageRaw(cmdBuffer, image, color, rangeCount, pRanges);
-}
-
-XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth,
- uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
+XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth, uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
{
// TODO : Verify memory is in XGL_IMAGE_STATE_CLEAR state
loader_platform_thread_lock_mutex(&globalLock);
return (void*) xglCmdFillBuffer;
if (!strcmp(funcName, "xglCmdClearColorImage"))
return (void*) xglCmdClearColorImage;
- if (!strcmp(funcName, "xglCmdClearColorImageRaw"))
- return (void*) xglCmdClearColorImageRaw;
if (!strcmp(funcName, "xglCmdClearDepthStencil"))
return (void*) xglCmdClearDepthStencil;
if (!strcmp(funcName, "xglCmdResolveImage"))
return ("{%s.channelFormat = %%s, %s.numericFormat = %%s}" % (name, name), "string_XGL_CHANNEL_FORMAT(%s.channelFormat), string_XGL_NUM_FORMAT(%s.numericFormat)" % (name, name))
if output_param:
return ("%p", "(void*)*%s" % name)
+ if xgl_helper.is_type(xgl_type, 'struct') and '*' not in xgl_type:
+ return ("%p", "(void*)(&%s)" % name)
return ("%p", "(void*)(%s)" % name)
def _gen_layer_dbg_callback_register(self):
for sp_index in sp_param_dict:
if 'index' == sp_param_dict[sp_index]:
cis_print_func = 'xgl_print_%s' % (proto.params[sp_index].ty.strip('const ').strip('*').lower())
- log_func += '\n if (%s) {' % (proto.params[sp_index].name)
- log_func += '\n tmp_str = %s(%s, " ");' % (cis_print_func, proto.params[sp_index].name)
+ var_name = proto.params[sp_index].name
+ if proto.params[sp_index].name != 'color':
+ log_func += '\n if (%s) {' % (proto.params[sp_index].name)
+ else:
+ var_name = '&%s' % (proto.params[sp_index].name)
+ log_func += '\n tmp_str = %s(%s, " ");' % (cis_print_func, var_name)
if "File" in layer:
if no_addr:
log_func += '\n fprintf(pOutFile, " %s (addr)\\n%%s\\n", pTmpStr);' % (proto.params[sp_index].name)
else:
- log_func += '\n fprintf(pOutFile, " %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, proto.params[sp_index].name)
+ log_func += '\n fprintf(pOutFile, " %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, var_name)
else:
if no_addr:
#log_func += '\n printf(" %s (addr)\\n%%s\\n", pTmpStr);' % (proto.params[sp_index].name)
log_func += '\n cout << " %s (addr)" << endl << tmp_str << endl;' % (proto.params[sp_index].name)
else:
#log_func += '\n printf(" %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, proto.params[sp_index].name)
- log_func += '\n cout << " %s (" << %s << ")" << endl << tmp_str << endl;' % (proto.params[sp_index].name, proto.params[sp_index].name)
+ log_func += '\n cout << " %s (" << %s << ")" << endl << tmp_str << endl;' % (proto.params[sp_index].name, var_name)
#log_func += '\n fflush(stdout);'
- log_func += '\n }'
+ if proto.params[sp_index].name != 'color':
+ log_func += '\n }'
else: # We have a count value stored to iterate over an array
print_cast = ''
print_func = ''
# TODO : Clean this if/else block up, too much duplicated code
if 'index' == sp_param_dict[sp_index]:
cis_print_func = 'xgl_print_%s' % (proto.params[sp_index].ty.strip('const ').strip('*').lower())
- log_func += '\n if (%s) {' % (proto.params[sp_index].name)
- log_func += '\n pTmpStr = %s(%s, " ");' % (cis_print_func, proto.params[sp_index].name)
+ var_name = proto.params[sp_index].name
+ if proto.params[sp_index].name != 'color':
+ log_func += '\n if (%s) {' % (proto.params[sp_index].name)
+ else:
+ var_name = "&%s" % proto.params[sp_index].name
+ log_func += '\n pTmpStr = %s(%s, " ");' % (cis_print_func, var_name)
if "File" in layer:
if no_addr:
- log_func += '\n fprintf(pOutFile, " %s (addr)\\n%%s\\n", pTmpStr);' % (proto.params[sp_index].name)
+ log_func += '\n fprintf(pOutFile, " %s (addr)\\n%%s\\n", pTmpStr);' % (var_name)
else:
- log_func += '\n fprintf(pOutFile, " %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, proto.params[sp_index].name)
+ log_func += '\n fprintf(pOutFile, " %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (var_name, var_name)
else:
if no_addr:
log_func += '\n printf(" %s (addr)\\n%%s\\n", pTmpStr);' % (proto.params[sp_index].name)
else:
- log_func += '\n printf(" %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, proto.params[sp_index].name)
+ log_func += '\n printf(" %s (%%p)\\n%%s\\n", (void*)%s, pTmpStr);' % (proto.params[sp_index].name, var_name)
log_func += '\n fflush(stdout);'
- log_func += '\n free(pTmpStr);\n }'
+ log_func += '\n free(pTmpStr);'
+ if proto.params[sp_index].name != 'color':
+ log_func += '\n }'
else: # should have a count value stored to iterate over array
if xgl_helper.is_type(proto.params[sp_index].ty.strip('*').strip('const '), 'struct'):
cis_print_func = 'pTmpStr = xgl_print_%s(&%s[i], " ");' % (proto.params[sp_index].ty.strip('const ').strip('*').lower(), proto.params[sp_index].name)
Proto("void", "CmdClearColorImage",
[Param("XGL_CMD_BUFFER", "cmdBuffer"),
Param("XGL_IMAGE", "image"),
- Param("const float[4]", "color"),
- Param("uint32_t", "rangeCount"),
- Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),
-
- Proto("void", "CmdClearColorImageRaw",
- [Param("XGL_CMD_BUFFER", "cmdBuffer"),
- Param("XGL_IMAGE", "image"),
- Param("const uint32_t[4]", "color"),
+ Param("XGL_CLEAR_COLOR", "color"),
Param("uint32_t", "rangeCount"),
Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),