Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
authorPyry Haulos <phaulos@google.com>
Thu, 16 Mar 2017 20:26:40 +0000 (13:26 -0700)
committerPyry Haulos <phaulos@google.com>
Thu, 16 Mar 2017 20:26:40 +0000 (13:26 -0700)
1  2 
external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp

@@@ -364,44 -256,15 +364,44 @@@ tcu::TestStatus IndirectDraw::iterate (
                                                           m_context.getDevice(),
                                                           m_indirectBuffer->getBoundMemory().getMemory(),
                                                           m_indirectBuffer->getBoundMemory().getOffset(),
-                                                          dataSize);
+                                                          dataSize + m_offsetInBuffer);
  
        m_vk.cmdBindPipeline(*m_cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
 +
 +      if (m_drawType == DRAW_TYPE_INDEXED)
 +      {
 +              m_vk.cmdBindIndexBuffer(*m_cmdBuffer, m_indexBuffer->object(), DE_NULL, vk::VK_INDEX_TYPE_UINT32);
 +      }
 +
        if (m_isMultiDrawEnabled && m_drawCount <= m_drawIndirectMaxCount)
 -              m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +      {
 +              switch (m_drawType)
 +              {
 +                      case DRAW_TYPE_SEQUENTIAL:
 +                              m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +                              break;
 +                      case DRAW_TYPE_INDEXED:
 +                              m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +                              break;
 +                      default:
 +                              TCU_FAIL("impossible");
 +              }
 +      }
        else
        {
 -              for(deUint32 drawNdx = 0; drawNdx < m_drawCount; drawNdx++){
 -                      m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1, m_strideInBuffer);
 +              for (deUint32 drawNdx = 0; drawNdx < m_drawCount; drawNdx++)
 +              {
 +                      switch (m_drawType)
 +                      {
 +                              case DRAW_TYPE_SEQUENTIAL:
 +                                      m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
 +                                      break;
 +                              case DRAW_TYPE_INDEXED:
 +                                      m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
 +                                      break;
 +                              default:
 +                                      TCU_FAIL("impossible");
 +                      }
                }
        }
        m_vk.cmdEndRenderPass(*m_cmdBuffer);
@@@ -629,44 -439,15 +629,44 @@@ tcu::TestStatus IndirectDrawInstanced<F
                                                           m_context.getDevice(),
                                                           m_indirectBuffer->getBoundMemory().getMemory(),
                                                           m_indirectBuffer->getBoundMemory().getOffset(),
-                                                          dataSize);
+                                                          dataSize + m_offsetInBuffer);
  
        m_vk.cmdBindPipeline(*m_cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
 +
 +      if (m_drawType == DRAW_TYPE_INDEXED)
 +      {
 +              m_vk.cmdBindIndexBuffer(*m_cmdBuffer, m_indexBuffer->object(), DE_NULL, vk::VK_INDEX_TYPE_UINT32);
 +      }
 +
        if (m_isMultiDrawEnabled && m_drawCount <= m_drawIndirectMaxCount)
 -              m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +      {
 +              switch (m_drawType)
 +              {
 +                      case DRAW_TYPE_SEQUENTIAL:
 +                              m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +                              break;
 +                      case DRAW_TYPE_INDEXED:
 +                              m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
 +                              break;
 +                      default:
 +                              TCU_FAIL("impossible");
 +              }
 +      }
        else
        {
 -              for (deUint32 drawNdx = 0; drawNdx < m_drawCount; drawNdx++){
 -                      m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1, m_strideInBuffer);
 +              for (deUint32 drawNdx = 0; drawNdx < m_drawCount; drawNdx++)
 +              {
 +                      switch (m_drawType)
 +                      {
 +                              case DRAW_TYPE_SEQUENTIAL:
 +                                      m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
 +                                      break;
 +                              case DRAW_TYPE_INDEXED:
 +                                      m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
 +                                      break;
 +                              default:
 +                                      TCU_FAIL("impossible");
 +                      }
                }
        }
        m_vk.cmdEndRenderPass(*m_cmdBuffer);