...
 
Commits (2)
......@@ -780,12 +780,8 @@ namespace dxvk {
InitReturnPtr(ppGeometryShader);
D3D11CommonShader module;
if (!m_dxvkDevice->features().extTransformFeedback.transformFeedback) {
Logger::err(
"D3D11: CreateGeometryShaderWithStreamOutput:"
"\n Transform feedback not supported by device");
return S_OK;
}
if (!m_dxvkDevice->features().extTransformFeedback.transformFeedback)
return DXGI_ERROR_INVALID_CALL;
// Zero-init some counterss so that we can increment
// them while walking over the stream output entries
......@@ -1949,8 +1945,8 @@ namespace dxvk {
enabled.core.features.shaderImageGatherExtended = VK_TRUE;
enabled.core.features.variableMultisampleRate = supported.core.features.variableMultisampleRate;
enabled.extConditionalRendering.conditionalRendering = supported.extConditionalRendering.conditionalRendering;
enabled.extTransformFeedback.transformFeedback = supported.extTransformFeedback.transformFeedback;
enabled.extTransformFeedback.geometryStreams = supported.extTransformFeedback.geometryStreams;
enabled.extTransformFeedback.transformFeedback = VK_TRUE;
enabled.extTransformFeedback.geometryStreams = VK_TRUE;
}
if (featureLevel >= D3D_FEATURE_LEVEL_10_1) {
......
......@@ -3110,7 +3110,12 @@ void DxsoCompiler::emitControlFlowGenericLoop(
textureSize.type = { DxsoScalarType::Float32, samplerInfo.dimensions };
textureSize.id = m_module.opConvertStoF(getVectorTypeId(textureSize.type), textureSize.id);
textureSize.id = m_module.opFDiv(getVectorTypeId(textureSize.type), m_module.constfReplicant(1.0f, samplerInfo.dimensions), textureSize.id);
// HACK: Bias fetch4 half-texel offset to avoid a "grid" effect.
// Technically we should only do that for non-powers of two
// as only then does the imprecision need to be biased
// towards infinity -- but that's not really worth doing...
float numerator = 1.0f - 1.0f / 256.0f;
textureSize.id = m_module.opFDiv(getVectorTypeId(textureSize.type), m_module.constfReplicant(numerator, samplerInfo.dimensions), textureSize.id);
// coord => same dimensions as texture size (no cube here !)
const std::array<uint32_t, 4> naturalIndices = { 0, 1, 2, 3 };
......