X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fswr%2Frasterizer%2Fcore%2Fstate.h;h=dc6cb3ca43a0fc979eaa88b0b7359078d9698c6f;hb=60a27ad122128145d28be37e9c0b0bc86a8e5181;hp=a71eb6d7853c5c131b5fd26dce7bae8bf26119c2;hpb=abd4aa68cc1a7d8a20547069c617388eedb3673e;p=mesa.git diff --git a/src/gallium/drivers/swr/rasterizer/core/state.h b/src/gallium/drivers/swr/rasterizer/core/state.h index a71eb6d7853..dc6cb3ca43a 100644 --- a/src/gallium/drivers/swr/rasterizer/core/state.h +++ b/src/gallium/drivers/swr/rasterizer/core/state.h @@ -197,8 +197,7 @@ enum SWR_OUTER_TESSFACTOR_ID #define VERTEX_CLIPCULL_DIST_LO_SLOT 35 // VS writes lower 4 clip/cull dist #define VERTEX_CLIPCULL_DIST_HI_SLOT 36 // VS writes upper 4 clip/cull dist #define VERTEX_POINT_SIZE_SLOT 37 // VS writes point size here -static_assert(VERTEX_POINT_SIZE_SLOT < KNOB_NUM_ATTRIBUTES, "Mismatched attribute slot size"); - +#define VERTEX_VIEWPORT_ARRAY_INDEX_SLOT 38 // SoAoSoA struct simdvertex { @@ -497,7 +496,6 @@ struct SWR_SURFACE_STATE uint32_t lod; // for render targets, the lod being rendered to uint32_t arrayIndex; // for render targets, the array index being rendered to for arrayed surfaces SWR_TILE_MODE tileMode; // @llvm_enum - bool bInterleavedSamples; // are MSAA samples stored interleaved or planar uint32_t halign; uint32_t valign; uint32_t xOffset; @@ -506,6 +504,8 @@ struct SWR_SURFACE_STATE uint32_t lodOffsets[2][15]; // lod offsets for sampled surfaces uint8_t *pAuxBaseAddress; // Used for compression, append/consume counter, etc. + + bool bInterleavedSamples; // are MSAA samples stored interleaved or planar }; // vertex fetch state @@ -627,7 +627,7 @@ struct SWR_STREAMOUT_STATE // The stream masks specify which attributes are sent to which streams. // These masks help the FE to setup the pPrimData buffer that is passed - // the the Stream Output Shader (SOS) function. + // the Stream Output Shader (SOS) function. uint32_t streamMasks[MAX_SO_STREAMS]; // Number of attributes, including position, per vertex that are streamed out. @@ -676,6 +676,9 @@ struct SWR_GS_STATE // geometry shader emits PrimitiveID bool emitsPrimitiveID; + // geometry shader emits ViewportArrayIndex + bool emitsViewportArrayIndex; + // if true, geometry shader emits a single stream, with separate cut buffer. // if false, geometry shader emits vertices for multiple streams to the stream buffer, with a separate StreamID buffer // to map vertices to streams @@ -789,7 +792,8 @@ typedef void(__cdecl *PFN_CS_FUNC)(HANDLE hPrivateData, SWR_CS_CONTEXT* pCsConte typedef void(__cdecl *PFN_SO_FUNC)(SWR_STREAMOUT_CONTEXT& soContext); typedef void(__cdecl *PFN_PIXEL_KERNEL)(HANDLE hPrivateData, SWR_PS_CONTEXT *pContext); typedef void(__cdecl *PFN_CPIXEL_KERNEL)(HANDLE hPrivateData, SWR_PS_CONTEXT *pContext); -typedef void(__cdecl *PFN_BLEND_JIT_FUNC)(const SWR_BLEND_STATE*, simdvector&, simdvector&, uint32_t, BYTE*, simdvector&, simdscalari*, simdscalari*); +typedef void(__cdecl *PFN_BLEND_JIT_FUNC)(const SWR_BLEND_STATE*, simdvector&, simdvector&, uint32_t, uint8_t*, simdvector&, simdscalari*, simdscalari*); +typedef simdscalar(*PFN_QUANTIZE_DEPTH)(simdscalar); ////////////////////////////////////////////////////////////////////////// /// FRONTEND_STATE @@ -799,6 +803,7 @@ struct SWR_FRONTEND_STATE // skip clip test, perspective divide, and viewport transform // intended for verts in screen space bool vpTransformDisable; + bool bEnableCutIndex; union { struct @@ -808,7 +813,7 @@ struct SWR_FRONTEND_STATE uint32_t triStripList : 2; }; uint32_t bits; - }provokingVertex; + } provokingVertex; uint32_t topologyProvokingVertex; // provoking vertex for the draw topology }; @@ -896,22 +901,23 @@ enum SWR_MSAA_RASTMODE ////////////////////////////////////////////////////////////////////////// struct SWR_RASTSTATE { - uint32_t cullMode : 2; - uint32_t fillMode : 2; - uint32_t frontWinding : 1; - uint32_t scissorEnable : 1; - uint32_t depthClipEnable : 1; + uint32_t cullMode : 2; + uint32_t fillMode : 2; + uint32_t frontWinding : 1; + uint32_t scissorEnable : 1; + uint32_t depthClipEnable : 1; + uint32_t pointParam : 1; + uint32_t pointSpriteEnable : 1; + uint32_t pointSpriteTopOrigin : 1; + uint32_t msaaRastEnable : 1; + uint32_t forcedSampleCount : 1; + uint32_t pixelOffset : 1; + uint32_t depthBiasPreAdjusted : 1; ///< depth bias constant is in float units, not per-format Z units + uint32_t conservativeRast : 1; + float pointSize; float lineWidth; - // point size output from the VS - bool pointParam; - - // point sprite - bool pointSpriteEnable; - bool pointSpriteTopOrigin; - - // depth bias float depthBias; float slopeScaledDepthBias; float depthBiasClamp; @@ -919,14 +925,11 @@ struct SWR_RASTSTATE ///@todo: MSAA lines // multisample state for MSAA lines - bool msaaRastEnable; SWR_MSAA_RASTMODE rastMode; // @llvm_enum // sample count the rasterizer is running at SWR_MULTISAMPLE_COUNT sampleCount; // @llvm_enum - bool bForcedSampleCount; uint32_t pixelLocation; // UL or Center - bool pixelOffset; // offset pixel positions by .5 in both the horizontal and vertical direction SWR_MULTISAMPLE_POS iSamplePos[SWR_MAX_NUM_MULTISAMPLES]; SWR_MSAA_SAMPLE_PATTERN samplePattern; // @llvm_enum @@ -991,6 +994,7 @@ enum SWR_INPUT_COVERAGE { SWR_INPUT_COVERAGE_NONE, SWR_INPUT_COVERAGE_NORMAL, + SWR_INPUT_COVERAGE_INNER_CONSERVATIVE, SWR_INPUT_COVERAGE_MAX, }; @@ -1018,7 +1022,7 @@ struct SWR_PS_STATE // dword 2 uint32_t killsPixel : 1; // pixel shader can kill pixels - uint32_t inputCoverage : 1; // type of input coverage PS uses + uint32_t inputCoverage : 1; // ps uses input coverage uint32_t writesODepth : 1; // pixel shader writes to depth uint32_t usesSourceDepth : 1; // pixel shader reads depth uint32_t shadingRate : 2; // shading per pixel / sample / coarse pixel