Lines Matching defs:layout
21 * \brief SSBO layout case.
319 int findBlockIndex (const BufferLayout& layout, const string& name)
321 for (int ndx = 0; ndx < (int)layout.blocks.size(); ndx++)
323 if (layout.blocks[ndx].name == name)
457 //! Appends all child elements to layout, returns value that should be appended to offset.
459 BufferLayout& layout,
466 // Reference layout uses std430 rules by default. std140 rules are
467 // choosen only for blocks that have std140 layout.
510 layout.bufferVars.push_back(entry);
535 layout.bufferVars.push_back(entry);
560 layout.bufferVars.push_back(entry);
567 curOffset += computeReferenceLayout(layout, curBlockNdx, curOffset, curPrefix + "[" + de::toString(elemNdx) + "]", type.getElementType(), layoutFlags);
575 curOffset += computeReferenceLayout(layout, curBlockNdx, curOffset, curPrefix + "." + memberIter->getName(), memberIter->getType(), layoutFlags);
583 //! Appends all child elements to layout, returns offset increment.
584 int computeReferenceLayout (BufferLayout& layout, int curBlockNdx, const std::string& blockPrefix, int baseOffset, const BufferVar& bufVar, deUint32 blockLayoutFlags)
619 layout.bufferVars.push_back(entry);
648 layout.bufferVars.push_back(entry);
661 // the layout computation twice. Instead we fix stride to child elements afterwards.
663 const int firstChildNdx = (int)layout.bufferVars.size();
664 const int stride = computeReferenceLayout(layout, curBlockNdx, curOffset, prefix, varType.getElementType(), combinedFlags);
666 for (int childNdx = firstChildNdx; childNdx < (int)layout.bufferVars.size(); childNdx++)
668 layout.bufferVars[childNdx].topLevelArraySize = topLevelArraySize;
669 layout.bufferVars[childNdx].topLevelArrayStride = stride;
678 return computeReferenceLayout(layout, curBlockNdx, baseOffset, blockPrefix + bufVar.getName(), varType, combinedFlags);
681 void computeReferenceLayout (BufferLayout& layout, const ShaderInterface& interface)
691 int activeBlockNdx = (int)layout.blocks.size();
692 int firstVarNdx = (int)layout.bufferVars.size();
697 curOffset += computeReferenceLayout(layout, activeBlockNdx, blockPrefix, curOffset, bufVar, block.getFlags());
700 int varIndicesEnd = (int)layout.bufferVars.size();
704 // Create block layout entries for each instance.
708 layout.blocks.push_back(BlockLayoutEntry());
709 BlockLayoutEntry& blockEntry = layout.blocks.back();
776 void generateValues (const BufferLayout& layout, const vector<BlockDataPtr>& blockPointers, deUint32 seed)
779 const int numBlocks = (int)layout.blocks.size();
785 const BlockLayoutEntry& blockLayout = layout.blocks[blockNdx];
787 const int numEntries = (int)layout.blocks[blockNdx].activeVarIndices.size();
792 const BufferVarLayoutEntry& varEntry = layout.bufferVars[varNdx];
934 src << "layout(" << LayoutFlagsFmt(bufferVar.getFlags() & LAYOUT_MASK) << ") ";
941 src << "layout(";
1168 void generateCompareSrc (std::ostream& src, const char* resultVar, const ShaderInterface& interface, const BufferLayout& layout, const vector<BlockDataPtr>& blockPointers)
1181 const int blockNdx = layout.getBlockIndex(instanceName);
1191 generateCompareSrc(src, resultVar, layout, block, instanceNdx, blockPtr, bufVar, glu::SubTypeAccess(bufVar.getType()));
1251 void generateWriteSrc (std::ostream& src, const ShaderInterface& interface, const BufferLayout& layout, const vector<BlockDataPtr>& blockPointers)
1264 const int blockNdx = layout.getBlockIndex(instanceName);
1274 generateWriteSrc(src, layout, block, instanceNdx, blockPtr, bufVar, glu::SubTypeAccess(bufVar.getType()));
1280 string generateComputeShader (const glw::Functions& gl, glu::GLSLVersion glslVersion, const ShaderInterface& interface, const BufferLayout& layout, const vector<BlockDataPtr>& comparePtrs, const vector<BlockDataPtr>& writePtrs)
1292 src << "layout(local_size_x = 1) in;\n";
1334 generateCompareSrc(src, "allOk", interface, layout, comparePtrs);
1341 generateWriteSrc(src, interface, layout, writePtrs);
1348 void getGLBufferLayout (const glw::Functions& gl, BufferLayout& layout, deUint32 program)
1359 layout.blocks.resize(numActiveBlocks);
1362 BlockLayoutEntry& entry = layout.blocks[blockNdx];
1415 layout.bufferVars.resize(numActiveBufferVars);
1418 BufferVarLayoutEntry& entry = layout.bufferVars[bufVarNdx];
1545 // \note Src layout is used as reference in case of activeVarIndices happens to be incorrect in dstLayout blocks.
1573 const BufferLayout& layout,
1588 copyNonWrittenData(layout, block, instanceNdx, srcBlockPtr, dstBlockPtr, bufVar, accessPath.element(elemNdx));
1595 copyNonWrittenData(layout, block, instanceNdx, srcBlockPtr, dstBlockPtr, bufVar, accessPath.member(memberNdx));
1602 const int varNdx = layout.getVariableIndex(apiName);
1606 const BufferVarLayoutEntry& varLayout = layout.bufferVars[varNdx];
1612 void copyNonWrittenData (const ShaderInterface& interface, const BufferLayout& layout, const vector<BlockDataPtr>& srcPtrs, const vector<BlockDataPtr>& dstPtrs)
1625 const int blockNdx = layout.getBlockIndex(instanceName);
1636 copyNonWrittenData(layout, block, instanceNdx, srcBlockPtr, dstBlockPtr, bufVar, glu::SubTypeAccess(bufVar.getType()));
1836 static bool hasUnsizedArray (const BufferLayout& layout, const BlockLayoutEntry& entry)
1840 if (isUnsizedArray(layout.bufferVars[*varNdx]))
1847 static int getUnsizedArrayStride (const BufferLayout& layout, const BlockLayoutEntry& entry)
1851 const BufferVarLayoutEntry& varEntry = layout.bufferVars[*varNdx];
1862 vector<int> computeBufferSizes (const ShaderInterface& interface, const BufferLayout& layout)
1864 vector<int> sizes(layout.blocks.size());
1875 const int blockNdx = layout.getBlockIndex(apiName);
1879 const BlockLayoutEntry& blockLayout = layout.blocks[blockNdx];
1881 const bool isLastUnsized = hasUnsizedArray(layout, blockLayout);
1883 const int stride = isLastUnsized ? getUnsizedArrayStride(layout, blockLayout) : 0;
1893 BlockDataPtr getBlockDataPtr (const BufferLayout& layout, const BlockLayoutEntry& blockLayout, void* ptr, int bufferSize)
1895 const bool isLastUnsized = hasUnsizedArray(layout, blockLayout);
1900 const int lastArrayStride = getUnsizedArrayStride(layout, blockLayout);
1936 void initRefDataStorage (const ShaderInterface& interface, const BufferLayout& layout, RefDataStorage& storage)
1940 const vector<int> bufferSizes = computeBufferSizes(interface, layout);
1953 DE_ASSERT(bufferSizes.size() == layout.blocks.size());
1956 storage.pointers.resize(layout.blocks.size());
1958 for (int blockNdx = 0; blockNdx < (int)layout.blocks.size(); blockNdx++)
1960 const BlockLayoutEntry& blockLayout = layout.blocks[blockNdx];
1963 storage.pointers[blockNdx] = getBlockDataPtr(layout, blockLayout, basePtr + curOffset, bufferSize);
1970 vector<BlockDataPtr> blockLocationsToPtrs (const BufferLayout& layout, const vector<BlockLocation>& blockLocations, const vector<void*>& bufPtrs)
1974 DE_ASSERT(layout.blocks.size() == blockLocations.size());
1976 for (int blockNdx = 0; blockNdx < (int)layout.blocks.size(); blockNdx++)
1978 const BlockLayoutEntry& blockLayout = layout.blocks[blockNdx];
1981 blockPtrs[blockNdx] = getBlockDataPtr(layout, blockLayout, (deUint8*)bufPtrs[location.index] + location.offset, location.size);
2102 BufferLayout refLayout; // std140 / std430 layout.
2131 // Query layout from GL.
2134 // Print layout to log.
2151 m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Invalid layout");
2152 return STOP; // It is not safe to use the given layout.
2156 m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Invalid std140 or std430 layout");
2159 m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Invalid shared layout");
2302 continue; // Not std* layout.
2378 continue; // Not shared layout.
2467 log << TestLog::Message << "Error: Buffer variable '" << cmpEntry.name << "' not found in reference layout" << TestLog::EndMessage;
2501 bool SSBOLayoutCase::checkLayoutIndices (const BufferLayout& layout) const
2504 int numVars = (int)layout.bufferVars.size();
2505 int numBlocks = (int)layout.blocks.size();
2511 const BufferVarLayoutEntry& bufVar = layout.bufferVars[varNdx];
2523 const BlockLayoutEntry& block = layout.blocks[blockNdx];
2538 bool SSBOLayoutCase::checkLayoutBounds (const BufferLayout& layout) const
2541 const int numVars = (int)layout.bufferVars.size();
2546 const BufferVarLayoutEntry& var = layout.bufferVars[varNdx];
2551 const BlockLayoutEntry& block = layout.blocks[var.blockNdx];
2586 bool SSBOLayoutCase::checkIndexQueries (deUint32 program, const BufferLayout& layout) const
2594 for (int blockNdx = 0; blockNdx < (int)layout.blocks.size(); blockNdx++)
2596 const BlockLayoutEntry& block = layout.blocks[blockNdx];