Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: src/gpu/vk/GrVkPipeline.cpp

Issue 1812223002: added support for glMinSampleShading (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: updated for Jim's change Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/vk/GrVkCaps.cpp ('k') | src/views/mac/SkNSView.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrVkPipeline.h" 8 #include "GrVkPipeline.h"
9 9
10 #include "GrGeometryProcessor.h" 10 #include "GrGeometryProcessor.h"
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 196
197 viewportInfo->viewportCount = 1; 197 viewportInfo->viewportCount = 1;
198 viewportInfo->pViewports = nullptr; // This is set dynamically 198 viewportInfo->pViewports = nullptr; // This is set dynamically
199 199
200 viewportInfo->scissorCount = 1; 200 viewportInfo->scissorCount = 1;
201 viewportInfo->pScissors = nullptr; // This is set dynamically 201 viewportInfo->pScissors = nullptr; // This is set dynamically
202 202
203 SkASSERT(viewportInfo->viewportCount == viewportInfo->scissorCount); 203 SkASSERT(viewportInfo->viewportCount == viewportInfo->scissorCount);
204 } 204 }
205 205
206 void setup_multisample_state(const GrPipeline& pipeline, 206 void setup_multisample_state(const GrPipeline& pipeline,
207 const GrPrimitiveProcessor& primProc,
208 const GrCaps* caps,
207 VkPipelineMultisampleStateCreateInfo* multisampleIn fo) { 209 VkPipelineMultisampleStateCreateInfo* multisampleIn fo) {
208 memset(multisampleInfo, 0, sizeof(VkPipelineMultisampleStateCreateInfo)); 210 memset(multisampleInfo, 0, sizeof(VkPipelineMultisampleStateCreateInfo));
209 multisampleInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE _INFO; 211 multisampleInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE _INFO;
210 multisampleInfo->pNext = nullptr; 212 multisampleInfo->pNext = nullptr;
211 multisampleInfo->flags = 0; 213 multisampleInfo->flags = 0;
212 int numSamples = pipeline.getRenderTarget()->numColorSamples(); 214 int numSamples = pipeline.getRenderTarget()->numColorSamples();
213 SkAssertResult(GrSampleCountToVkSampleCount(numSamples, 215 SkAssertResult(GrSampleCountToVkSampleCount(numSamples,
214 &multisampleInfo->rasterizationSamples)); 216 &multisampleInfo->rasterizationSamples));
215 multisampleInfo->sampleShadingEnable = VK_FALSE; 217 float sampleShading = primProc.getSampleShading();
216 multisampleInfo->minSampleShading = 0; 218 SkASSERT(sampleShading == 0.0f || caps->sampleShadingSupport());
219 multisampleInfo->sampleShadingEnable = sampleShading > 0.0f;
220 multisampleInfo->minSampleShading = sampleShading;
217 multisampleInfo->pSampleMask = nullptr; 221 multisampleInfo->pSampleMask = nullptr;
218 multisampleInfo->alphaToCoverageEnable = VK_FALSE; 222 multisampleInfo->alphaToCoverageEnable = VK_FALSE;
219 multisampleInfo->alphaToOneEnable = VK_FALSE; 223 multisampleInfo->alphaToOneEnable = VK_FALSE;
220 } 224 }
221 225
222 static VkBlendFactor blend_coeff_to_vk_blend(GrBlendCoeff coeff) { 226 static VkBlendFactor blend_coeff_to_vk_blend(GrBlendCoeff coeff) {
223 static const VkBlendFactor gTable[] = { 227 static const VkBlendFactor gTable[] = {
224 VK_BLEND_FACTOR_ZERO, // kZero_GrBlendCoeff 228 VK_BLEND_FACTOR_ZERO, // kZero_GrBlendCoeff
225 VK_BLEND_FACTOR_ONE, // kOne_GrBlendCoeff 229 VK_BLEND_FACTOR_ONE, // kOne_GrBlendCoeff
226 VK_BLEND_FACTOR_SRC_COLOR, // kSC_GrBlendCoeff 230 VK_BLEND_FACTOR_SRC_COLOR, // kSC_GrBlendCoeff
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 424
421 VkPipelineDepthStencilStateCreateInfo depthStencilInfo; 425 VkPipelineDepthStencilStateCreateInfo depthStencilInfo;
422 setup_depth_stencil_state(gpu, pipeline.getStencil(), &depthStencilInfo); 426 setup_depth_stencil_state(gpu, pipeline.getStencil(), &depthStencilInfo);
423 427
424 GrRenderTarget* rt = pipeline.getRenderTarget(); 428 GrRenderTarget* rt = pipeline.getRenderTarget();
425 GrVkRenderTarget* vkRT = static_cast<GrVkRenderTarget*>(rt); 429 GrVkRenderTarget* vkRT = static_cast<GrVkRenderTarget*>(rt);
426 VkPipelineViewportStateCreateInfo viewportInfo; 430 VkPipelineViewportStateCreateInfo viewportInfo;
427 setup_viewport_scissor_state(gpu, pipeline, vkRT, &viewportInfo); 431 setup_viewport_scissor_state(gpu, pipeline, vkRT, &viewportInfo);
428 432
429 VkPipelineMultisampleStateCreateInfo multisampleInfo; 433 VkPipelineMultisampleStateCreateInfo multisampleInfo;
430 setup_multisample_state(pipeline, &multisampleInfo); 434 setup_multisample_state(pipeline, primProc, gpu->caps(), &multisampleInfo);
431 435
432 // We will only have one color attachment per pipeline. 436 // We will only have one color attachment per pipeline.
433 VkPipelineColorBlendAttachmentState attachmentStates[1]; 437 VkPipelineColorBlendAttachmentState attachmentStates[1];
434 VkPipelineColorBlendStateCreateInfo colorBlendInfo; 438 VkPipelineColorBlendStateCreateInfo colorBlendInfo;
435 setup_color_blend_state(gpu, pipeline, &colorBlendInfo, attachmentStates); 439 setup_color_blend_state(gpu, pipeline, &colorBlendInfo, attachmentStates);
436 440
437 VkPipelineRasterizationStateCreateInfo rasterInfo; 441 VkPipelineRasterizationStateCreateInfo rasterInfo;
438 setup_raster_state(gpu, pipeline, &rasterInfo); 442 setup_raster_state(gpu, pipeline, &rasterInfo);
439 443
440 VkDynamicState dynamicStates[3]; 444 VkDynamicState dynamicStates[3];
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 548 }
545 549
546 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu, 550 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu,
547 GrVkCommandBuffer* cmdBuffer, 551 GrVkCommandBuffer* cmdBuffer,
548 const GrPipeline& pipeline) { 552 const GrPipeline& pipeline) {
549 const GrRenderTarget& target = *pipeline.getRenderTarget(); 553 const GrRenderTarget& target = *pipeline.getRenderTarget();
550 set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target); 554 set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target);
551 set_dynamic_viewport_state(gpu, cmdBuffer, target); 555 set_dynamic_viewport_state(gpu, cmdBuffer, target);
552 set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline); 556 set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline);
553 } 557 }
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkCaps.cpp ('k') | src/views/mac/SkNSView.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698