Basic commands required to draw a simple triangle test
This cl adds the code needed to record and submit the minimal
subset of commands required to run a simple triangle example.
The commands themselves are still unimplemented.
Bug b/116336664
Change-Id: Id0109980225a64a2bb3599a89a5495091926c635
Reviewed-on: https://swiftshader-review.googlesource.com/c/22168
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Corentin Wallez <cwallez@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkQueue.cpp b/src/Vulkan/VkQueue.cpp
index 537849c..f0978cf 100644
--- a/src/Vulkan/VkQueue.cpp
+++ b/src/Vulkan/VkQueue.cpp
@@ -12,7 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+#include "VkCommandBuffer.hpp"
#include "VkQueue.hpp"
+#include "VkSemaphore.hpp"
namespace vk
{
@@ -21,4 +23,31 @@
{
}
+void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence)
+{
+ if(fence != VK_NULL_HANDLE)
+ {
+ UNIMPLEMENTED();
+ }
+
+ for(uint32_t i = 0; i < submitCount; i++)
+ {
+ auto& submitInfo = pSubmits[i];
+ for(uint32_t j = 0; j < submitInfo.waitSemaphoreCount; j++)
+ {
+ vk::Cast(submitInfo.pWaitSemaphores[j])->wait(submitInfo.pWaitDstStageMask[j]);
+ }
+
+ for(uint32_t j = 0; j < submitInfo.commandBufferCount; j++)
+ {
+ vk::Cast(submitInfo.pCommandBuffers[j])->submit();
+ }
+
+ for(uint32_t j = 0; j < submitInfo.signalSemaphoreCount; j++)
+ {
+ vk::Cast(submitInfo.pSignalSemaphores[j])->signal();
+ }
+ }
+}
+
} // namespace vk
\ No newline at end of file