13 #ifndef RV_VKPipeline_h
14 #define RV_VKPipeline_h
62 {(uint32_t)rect.
width(),
101 UT_ASSERT(
false &&
"Unrecognized Topology Type used for Pipeline");
182 myRenderPassInfo = info;
206 bool myIsVertexInputDynamic =
false;
213 bool myIsTopologyDynamic =
false;
216 bool myIsPrimRestartDynamic =
false;
217 bool myPrimitiveRestartEnable =
220 #else // keep enabled on MacOS, doesn't support disabling
225 bool myHasTesselation =
false;
226 bool myIsControlPointsDynamic =
false;
227 uint32_t myTessControlPoints = 4;
234 bool myIsViewportDynamic =
false;
238 bool myIsScissorDynamic =
false;
246 bool myDepthClamp =
false;
249 bool myIsRasterDiscardDynamic =
false;
250 bool myRasterDiscard =
false;
252 bool myIsCullModeDynamic =
false;
255 bool myIsFrontFaceDynamic=
false;
258 bool myIsBiasDynamic =
false;
259 bool myDepthBiasEnable =
false;
261 bool myIsBiasParamDynamic=
false;
262 float myBiasConst = 0.f;
263 float myBiasClamp = 0.f;
264 float myBiasSlope = 0.f;
266 bool myIslineWidthDynamic =
false;
267 float myLineWidth = 1.f;
270 int mySampleCount = -1;
278 bool myIsDepthTestDynamic =
false;
279 bool myDepthTest =
true;
281 bool myIsDepthWriteDynamic =
false;
282 bool myDepthWrite =
true;
284 bool myIsDepthOpDynamic =
false;
287 bool myIsDepthBoundsEnableDynamic =
false;
288 bool myDepthBoundsTest =
false;
290 bool myIsDepthBoundsDynamic =
false;
291 float myMinDepth = 0.f;
292 float myMaxDepth = 1.f;
294 bool myIsStencilTestDynamic =
false;
295 bool myStencilTest =
false;
297 bool myIsStencilOpDynamic =
false;
298 bool myIsStencilWriteMaskDynamic =
false;
299 bool myIsStencilCompMaskDynamic =
false;
300 bool myIsStencilRefDynamic =
false;
327 bool myLogicOpEnable =
false;
344 bool myIsBlendConstDynamic =
false;
345 float myBlendConst[4] = {0.f, 0.f, 0.f, 0.f};
398 { binding,
stride, input_rate};
409 used_bindings.insert(attr.binding);
413 for (uint32_t binding : used_bindings)
463 : myInst(inst), myVkPipeline(vk_pipeline)
472 : myInst(other.myInst), myVkPipeline(other.myVkPipeline)
474 other.myInst =
nullptr;
502 const char* filenames,
RV_VKPipeline & operator=(RV_VKPipeline &)=delete
VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks *pAllocator)
static RV_VKPipelinePtr createCompute(RV_Instance *inst, const RV_VKPipelineLayout &layout)
static RV_VKPipelinePtr create(RV_Instance *inst, const RV_VKPipelineLayout &layout_info, const RV_VKPipelineStateInfo &state_info, const RV_VKPipelineInputInfo &input_info)
RV_VKPipeline(RV_VKPipeline &&other) noexcept
void setCapacity(exint new_capacity)
std::pair< float, float > RV_DepthRange
void setSize(exint newsize)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
void setRenderRegion(const UT_DimRect ®ion)
RAII wrapper class for VkPipeline.
GLint GLint GLsizei GLint GLenum format
GLint GLenum GLboolean GLsizei stride
void setRenderPassInfo(const RV_RenderPassFormatInfo &info)
int x() const
Get lower-left corner.
exint removeIf(IsEqual is_equal)
Handle to the main interface of Vulkan.
int width() const
Get width/height dimensions.
VkPipeline getVkPipeline()
RAII wrapper class for Vk Shader Module.
IMATH_NAMESPACE::V2f IMATH_NAMESPACE::Box2i std::string this attribute is obsolete as of OpenEXR v3 float
RV_RenderPassFormatInfo myRenderPassInfo
RV_VKPipeline(RV_Instance *inst, VkPipeline vk_pipeline)
RV_TopologyClass RVgetTopologyClass(VkPrimitiveTopology t)
LeafData & operator=(const LeafData &)=delete
VkRect2D RVmakeVkRect(const UT_DimRect &rect)
RV_API void RVloadSpirvFiles(RV_Instance *inst, const UT_StringArray &filenames, UT_Array< RV_VKShaderModuleInfoPtr > &shader_modules)
int y() const
Get lower-left corner.
VkDevice getDevice()
Get the raw vulkan device assocated with this instance.
int height() const
Get width/height dimensions.
UT_UniquePtr< RV_VKPipeline > RV_VKPipelinePtr
bool RVisSameTopologyClass(VkPrimitiveTopology lhs, VkPrimitiveTopology rhs)
void clear()
Resets list to an empty list.
VkViewport RVmakeViewport(const UT_DimRect &view_rect, RV_DepthRange depth_range={0.f, 1.f})