13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _RRPRIMITIVEPACKET_HPP
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _RRPRIMITIVEPACKET_HPP
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Reference Renderer
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * -----------------------------------------------
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License");
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License.
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *      http://www.apache.org/licenses/LICENSE-2.0
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS,
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License.
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*!
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Primitive packet
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "rrDefs.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "rrGenericVector.hpp"
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <vector>
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace rr
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct VertexPacket;
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass VertexPacketAllocator;
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*!
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Geometry packet
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Geometry packet contains inputs for geometry shading.
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct PrimitivePacket
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int						primitiveIDIn;
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const VertexPacket*		vertices[6];
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*!
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Geometry emitter
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Geometry emitter handles outputting of new vertices from geometry shader
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass GeometryEmitter
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								GeometryEmitter	(VertexPacketAllocator& vpalloc, size_t numVertices);
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void						EmitVertex		(const tcu::Vec4& position, float pointSize, const GenericVec4* varyings, int primitiveID);
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void						EndPrimitive	(void);
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void						moveEmittedTo	(std::vector<VertexPacket*>&);
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								GeometryEmitter	(const GeometryEmitter&);
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	GeometryEmitter&			operator=		(const GeometryEmitter&);
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	std::vector<VertexPacket*>	m_emitted;	//!< NULL elements mean primitive end
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	VertexPacketAllocator&		m_vpalloc;
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	size_t						m_numEmitted;
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	size_t						m_maxVertices;
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // rr
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _RRPRIMITIVEPACKET_HPP
77