float fy = 2.0f * sy - 1.0f;
int vtxNdx = ((y * (gridSize+1)) + x);
- m_positions[vtxNdx] = tcu::Vec4(fx, fy, 0.0f, 1.0f);
- m_coords[vtxNdx] = getCoords(sx, sy);
+ m_positions[vtxNdx] = tcu::Vec4(fx, fy, 0.0f, 1.0f);
+ m_coords[vtxNdx] = getCoords(sx, sy);
m_unitCoords[vtxNdx] = getUnitCoords(sx, sy);
- m_attribOne[vtxNdx] = 1.0f;
+ m_attribOne[vtxNdx] = 1.0f;
m_screenPos[vtxNdx] = tcu::Vec4(sx, sy, 0.0f, 1.0f) * viewportScale;
for (int y = 0; y < gridSize; y++)
for (int x = 0; x < gridSize; x++)
{
- int stride = gridSize + 1;
- int v00 = (y * stride) + x;
- int v01 = (y * stride) + x + 1;
- int v10 = ((y+1) * stride) + x;
- int v11 = ((y+1) * stride) + x + 1;
+ int stride = gridSize + 1;
+ int v00 = (y * stride) + x;
+ int v01 = (y * stride) + x + 1;
+ int v10 = ((y+1) * stride) + x;
+ int v11 = ((y+1) * stride) + x + 1;
- int baseNdx = ((y * gridSize) + x) * 6;
+ int baseNdx = ((y * gridSize) + x) * 6;
m_indices[baseNdx + 0] = (deUint16)v10;
m_indices[baseNdx + 1] = (deUint16)v00;
m_indices[baseNdx + 2] = (deUint16)v01;
// Create quad grid.
const tcu::IVec2 viewportSize = getViewportSize();
const int width = viewportSize.x();
- const int height = viewportSize.y();
+ const int height = viewportSize.y();
QuadGrid quadGrid (m_isVertexCase ? s_gridSize : 4, width, height, tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f), m_userAttribTransforms, m_textures);
computeFragmentReference(refImage, quadGrid);
// Compare.
- const bool compareOk = compareImages(resImage, refImage, 0.05f);
+ const bool compareOk = compareImages(resImage, refImage, 0.05f);
if (compareOk)
return tcu::TestStatus::pass("Result image matches reference");
const DeviceInterface& vk = m_context.getDeviceInterface();
const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
- const VkBufferCreateInfo uniformBufferParams =
+ const VkBufferCreateInfo uniformBufferParams =
{
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
};
Move<VkBuffer> buffer = createBuffer(vk, vkDevice, &uniformBufferParams);
- de::MovePtr<Allocation> alloc = m_memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *buffer), MemoryRequirement::HostVisible);
+ de::MovePtr<Allocation> alloc = m_memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *buffer), MemoryRequirement::HostVisible);
VK_CHECK(vk.bindBufferMemory(vkDevice, *buffer, alloc->getMemory(), alloc->getOffset()));
deMemcpy(alloc->getHostPtr(), dataPtr, size);
vk::VkFormat format,
deUint32 sizePerElement,
deUint32 count,
- const void* dataPtr)
+ const void* dataPtr)
{
// Add binding specification
- const deUint32 binding = (deUint32)m_vertexBindingDescription.size();
+ const deUint32 binding = (deUint32)m_vertexBindingDescription.size();
const VkVertexInputBindingDescription bindingDescription =
{
- binding, // deUint32 binding;
+ binding, // deUint32 binding;
sizePerElement, // deUint32 stride;
VK_VERTEX_INPUT_RATE_VERTEX // VkVertexInputRate stepRate;
};
const DeviceInterface& vk = m_context.getDeviceInterface();
const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
- const VkDeviceSize inputSize = sizePerElement * count;
+ const VkDeviceSize inputSize = sizePerElement * count;
const VkBufferCreateInfo vertexBufferParams =
{
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType;
&queueFamilyIndex // const deUint32* pQueueFamilyIndices;
};
- Move<VkBuffer> buffer = createBuffer(vk, vkDevice, &vertexBufferParams);
+ Move<VkBuffer> buffer = createBuffer(vk, vkDevice, &vertexBufferParams);
de::MovePtr<vk::Allocation> alloc = m_memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *buffer), MemoryRequirement::HostVisible);
VK_CHECK(vk.bindBufferMemory(vkDevice, *buffer, alloc->getMemory(), alloc->getOffset()));
UNIFORM_CASE(UB4_TRUE, tcu::Vec4(1));
// Integer
- UNIFORM_CASE(UI_ZERO, 0);
- UNIFORM_CASE(UI_ONE, 1);
- UNIFORM_CASE(UI_TWO, 2);
- UNIFORM_CASE(UI_THREE, 3);
- UNIFORM_CASE(UI_FOUR, 4);
- UNIFORM_CASE(UI_FIVE, 5);
- UNIFORM_CASE(UI_SIX, 6);
- UNIFORM_CASE(UI_SEVEN, 7);
- UNIFORM_CASE(UI_EIGHT, 8);
+ UNIFORM_CASE(UI_ZERO, 0);
+ UNIFORM_CASE(UI_ONE, 1);
+ UNIFORM_CASE(UI_TWO, 2);
+ UNIFORM_CASE(UI_THREE, 3);
+ UNIFORM_CASE(UI_FOUR, 4);
+ UNIFORM_CASE(UI_FIVE, 5);
+ UNIFORM_CASE(UI_SIX, 6);
+ UNIFORM_CASE(UI_SEVEN, 7);
+ UNIFORM_CASE(UI_EIGHT, 8);
UNIFORM_CASE(UI_ONEHUNDREDONE, 101);
// IVec2
- UNIFORM_CASE(UI2_MINUS_ONE, tcu::IVec2(-1));
+ UNIFORM_CASE(UI2_MINUS_ONE, tcu::IVec2(-1));
UNIFORM_CASE(UI2_ZERO, tcu::IVec2(0));
UNIFORM_CASE(UI2_ONE, tcu::IVec2(1));
UNIFORM_CASE(UI2_TWO, tcu::IVec2(2));
VkSubresourceLayout layout;
vk.getImageSubresourceLayout(vkDevice, vkTexture, &subres, &layout);
- tcu::ConstPixelBufferAccess access = refTexture.getLevel(0);
+ tcu::ConstPixelBufferAccess access = refTexture.getLevel(0);
tcu::PixelBufferAccess destAccess (refTexture.getFormat(), refTexture.getWidth(), refTexture.getHeight(), 1, allocation->getHostPtr());
tcu::copy(destAccess, access);
Move<VkCommandPool> cmdPool = createCommandPool(vk, vkDevice, &cmdPoolParams);
// Create command buffer
- const VkCommandBufferAllocateInfo cmdBufferParams =
+ const VkCommandBufferAllocateInfo cmdBufferParams =
{
VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
const VkImageMemoryBarrier dstBarrier =
createImageMemoryBarrier(dstImage, VK_ACCESS_HOST_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT, 0u, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
- const void* const* barrier = (const void* const*)&dstBarrier;
+ const void* const* barrier = (const void* const*)&dstBarrier;
vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, false, 1, (const void* const*)&barrier);
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Create & alloc the image
Move<VkImage> vkTexture;
- de::MovePtr<Allocation> allocation;
+ de::MovePtr<Allocation> allocation;
if (isSupportedLinearTilingFormat(m_context.getInstanceInterface(), m_context.getPhysicalDevice(), format))
{
// Read back the result
{
const VkDeviceSize imageSizeBytes = (VkDeviceSize)(sizeof(deUint32) * m_renderSize.x() * m_renderSize.y());
- const VkBufferCreateInfo readImageBufferParams =
+ const VkBufferCreateInfo readImageBufferParams =
{
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
const Type type,
const tcu::Sampler& sampler);
~TextureBinding (void);
- Type getType (void) const { return m_type; }
+ Type getType (void) const { return m_type; }
const tcu::Sampler& getSampler (void) const { return m_sampler; }
const tcu::Texture2D& get2D (void) const { DE_ASSERT(getType() == TYPE_2D && m_binding.tex2D !=NULL); return *m_binding.tex2D; }
template<typename T>
void addUniform (deUint32 bindingLocation,
vk::VkDescriptorType descriptorType,
- const T& data);
+ const T& data);
void addUniform (deUint32 bindingLocation,
vk::VkDescriptorType descriptorType,
deUint32 dataSize,
private:
void setupTextures (void);
- de::MovePtr<vk::Allocation> uploadImage2D (const tcu::Texture2D& refTexture,
- const vk::VkImage& vkTexture);
+ de::MovePtr<vk::Allocation> uploadImage2D (const tcu::Texture2D& refTexture,
+ const vk::VkImage& vkTexture);
vk::Move<vk::VkImage> createImage2D (const tcu::Texture2D& texture,
const vk::VkFormat format,
const vk::VkImageUsageFlags usage,
const vk::VkImageTiling tiling);
- void copyTilingImageToOptimal (const vk::VkImage& srcImage,
- const vk::VkImage& dstImage,
- deInt32 width,
- deInt32 height);
+ void copyTilingImageToOptimal (const vk::VkImage& srcImage,
+ const vk::VkImage& dstImage,
+ deInt32 width,
+ deInt32 height);
void setupUniformData (deUint32 bindingLocation, deUint32 size, const void* dataPtr);
void setupDefaultInputs (const QuadGrid& quadGrid);
const bool m_isVertexCase;
const ShaderEvaluator& m_evaluator;
- const UniformSetup& m_uniformSetup;
+ const UniformSetup& m_uniformSetup;
const AttributeSetupFunc m_attribFunc;
struct EnabledBaseAttribute
vk::Move<vk::VkImage> m_colorImage;
de::MovePtr<vk::Allocation> m_colorImageAlloc;
- vk::Move<vk::VkImageView> m_colorImageView;
+ vk::Move<vk::VkImageView> m_colorImageView;
vk::Move<vk::VkRenderPass> m_renderPass;
vk::Move<vk::VkFramebuffer> m_framebuffer;
vk::DescriptorSetLayoutBuilder m_descriptorSetLayoutBuilder;
vk::DescriptorPoolBuilder m_descriptorPoolBuilder;
- vk::DescriptorSetUpdateBuilder m_descriptorSetUpdateBuilder;
+ vk::DescriptorSetUpdateBuilder m_descriptorSetUpdateBuilder;
- typedef de::SharedPtr<vk::Unique<vk::VkBuffer> > VkBufferSp;
+ typedef de::SharedPtr<vk::Unique<vk::VkBuffer> > VkBufferSp;
- typedef de::SharedPtr<vk::Unique<vk::VkImage> > VkImageSp;
+ typedef de::SharedPtr<vk::Unique<vk::VkImage> > VkImageSp;
typedef de::SharedPtr<vk::Unique<vk::VkImageView> > VkImageViewSp;
- typedef de::SharedPtr<vk::Unique<vk::VkSampler> > VkSamplerSp;
+ typedef de::SharedPtr<vk::Unique<vk::VkSampler> > VkSamplerSp;
typedef de::SharedPtr<vk::Allocation> AllocationSp;
class UniformInfo