blob: 13df23fcb79e00191f6ad1e1122105422e372387 [file] [log] [blame]
#ifndef _RRFRAGMENTPACKET_HPP
#define _RRFRAGMENTPACKET_HPP
/*-------------------------------------------------------------------------
* drawElements Quality Program Reference Renderer
* -----------------------------------------------
*
* Copyright 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*//*!
* \file
* \brief Fragment packet
*//*--------------------------------------------------------------------*/
#include "rrDefs.hpp"
#include "rrGenericVector.hpp"
namespace rr
{
constexpr int NUM_FRAGMENTS_PER_PACKET = 4;
/*--------------------------------------------------------------------*//*!
* \brief Fragment packet
*
* Fragment packet contains inputs and outputs for fragment shading.
*
* Fragment shading is always done in 2x2 blocks in order to easily estimate
* derivates for mipmap-selection etc.
*
* Values packed in vectors (such as barycentrics) are in order:
* (x0,y0), (x1,y0), (x0,y1), (x1,y1)
* OR:
* ndx = y*2 + x
*//*--------------------------------------------------------------------*/
struct FragmentPacket
{
tcu::IVec2 position; //!< Position of (0,0) fragment.
deUint64 coverage; //!< Coverage mask.
tcu::Vec4 barycentric[3]; //!< Perspective-correct barycentric values.
};
} // rr
#endif // _RRFRAGMENTPACKET_HPP