const SVGA3dInputElementDesc *elements)
{
SVGA3dCmdDXDefineElementLayout *cmd;
- unsigned i;
cmd = SVGA3D_FIFOReserve(swc, SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT,
sizeof(SVGA3dCmdDXDefineElementLayout) +
if (!cmd)
return PIPE_ERROR_OUT_OF_MEMORY;
- /* check that all offsets are multiples of four */
- for (i = 0; i < count; i++) {
- assert(elements[i].alignedByteOffset % 4 == 0);
- }
- (void) i; /* silence unused var in release build */
-
cmd->elementLayoutId = elementLayoutId;
memcpy(cmd + 1, elements, count * sizeof(SVGA3dInputElementDesc));
for (i = 0; i < count; i++) {
bufs[i].stride = bufferInfo[i].stride;
bufs[i].offset = bufferInfo[i].offset;
- assert(bufs[i].stride % 4 == 0);
- assert(bufs[i].offset % 4 == 0);
swc->surface_relocation(swc, &bufs[i].sid, NULL, surfaces[i],
SVGA_RELOC_READ);
}
bufs[i].stride = bufferInfo[i].stride;
bufs[i].offset = bufferInfo[i].offset;
bufs[i].sizeInBytes = bufferInfo[i].sizeInBytes;
- assert(bufs[i].stride % 4 == 0);
- assert(bufs[i].offset % 4 == 0);
}
swc->commit(swc);
case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
return 64;
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
+ return sws->have_vgpu10 ? 0 : 1;
+ case PIPE_CAP_VERTEX_ATTRIB_ELEMENT_ALIGNED_ONLY:
+ /* This CAP cannot be used with any other alignment-requiring CAPs */
+ return sws->have_vgpu10 ? 1 : 0;
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
- return 1; /* need 4-byte alignment for all offsets and strides */
+ return sws->have_vgpu10 ? 0 : 1;
case PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE:
return 2048;
case PIPE_CAP_MAX_VIEWPORTS: