|
e2d2270a
|
2018-09-19T08:11:48
|
|
Vulkan: Merge append/beginWriteResource.
The new API is named 'recordCommands'.
These two APIs were basically doing the same thing. We don't need to
have an understanding of creating a new graph node to know that we
want to record some Vulkan commands to a command buffer. The prior
design was actually masking a bug where we would allow appending
commands to a command graph node that had already started a render
pass. Fix this by adding a render pass check to recordCommands.
Also removes 'hasStartedWriteResource' since this method wasn't used
anywhere.
Also renames 'onResourceChanged' to 'finishCurrentCommands'.
Bug: angleproject:2828
Change-Id: I00bd5b893fcfc37172b6c1706cb2f5fc57e79f54
Reviewed-on: https://chromium-review.googlesource.com/1235654
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
55e57f96
|
2018-09-18T11:32:43
|
|
Remove some redundant dirty bits notifications.
These were already being signaled in the front end.
Bug: angleproject:2763
Change-Id: Id78d3d764e80e687c29c08395b59048d314bfbe2
Reviewed-on: https://chromium-review.googlesource.com/1204490
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3f3b358f
|
2018-09-14T10:38:44
|
|
Vulkan: Fix cube map attachment clears and readpixels.
These were both missing the correct layer offset. Cache the layer
inside the RenderTargetVk for easy access.
Bug: angleproject:2470
Change-Id: I690dbf0702d7ec52f44ba0a9429b6ef0e51baf6b
Reviewed-on: https://chromium-review.googlesource.com/1225910
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
7f232939
|
2018-09-12T11:03:06
|
|
Run git cl format on several files.
Bug: angleproject:2763
Change-Id: Idcb8a714a6dccdff3dd953679e17a7314866a37d
Reviewed-on: https://chromium-review.googlesource.com/1214206
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
097d3c0c
|
2018-09-12T11:03:05
|
|
Make SamplerState a contained class.
This will more easily allow us to use a cached completeness comparison
value. The cached value only gets updated on certain setters.
Bug: angleproject:2763
Change-Id: Ib80db8517560617087ae8360f7af69d6c2392b76
Reviewed-on: https://chromium-review.googlesource.com/1171507
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
71bb0267
|
2018-09-12T11:09:42
|
|
Vulkan: Implement cube map render targets.
Each TextureVk now stores vectors of RenderTargetVks and ImageViews
associated with the image faces. They are initialized lazily when the
RenderTarget is queried in getAttachmentRenderTarget.
There's still one missing edge case for handling clear with the
Framebuffer when using cube maps. Also one additional test failure on
Android.
Bug: angleproject:2470
Change-Id: Ib959a3434a992cef010a11940cf2ee49e118ac17
Reviewed-on: https://chromium-review.googlesource.com/1220727
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0d0fb43f
|
2018-09-07T17:43:32
|
|
Pass unpack buffer as explicit parameter to texSubImage.
This allows us to override it in the incomplete texture init. Any
back-end that used incomplete textures was vulnerable to a bug where
the unpack buffer would be used to initialize the incomplete texture.
Bug: chromium:880906
Change-Id: Ica558e4a4d81de9212f0bc6619ccd812a048ad45
Reviewed-on: https://chromium-review.googlesource.com/1214207
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3e29cf31
|
2018-08-31T17:19:17
|
|
Vulkan: Fix redefining TexStorage after TexImage.
This can be easily implemented via a release call.
Bug: angleproject:2651
Change-Id: I0adb3ed385284c6342716cd7c347de9966a81bab
Reviewed-on: https://chromium-review.googlesource.com/1200368
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4c310831
|
2018-08-29T13:43:17
|
|
Vulkan: Return VkDeviceSize from DynamicBuffer.
This obviates many static_casts. More closely represents what Vulkan
is doing. One cast remains where we are using uint32_t for dynamic
offsets with uniform buffers.
Bug: angleproject:2786
Change-Id: I043ebb5d965f46ee6ebbfcb91d75a58508cacfe3
Reviewed-on: https://chromium-review.googlesource.com/1188949
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
522095f7
|
2018-07-23T14:59:41
|
|
Rename "color" functions to "pixel" functions.
This extends of the copy, read and write functions to cover depth and
stencil formats.
Refactoring change only.
Bug: angleproject:2673
Change-Id: I4b0b2f4cf8621051cacd95cdbd6d70f94ca612e2
Reviewed-on: https://chromium-review.googlesource.com/1147152
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
db9c69ed
|
2018-07-18T17:23:47
|
|
Make PackPixels take an angle::Format.
This removes the format type parameter from places where it isn't
needed. It also removes the 'write color' functions map. This map was
redundant with the angle::Format write function.
Bug: angleproject:2729
Change-Id: I24e4548a89342237d7ed25180fea156fba51ccab
Reviewed-on: https://chromium-review.googlesource.com/1142300
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c685586b
|
2018-07-18T15:06:54
|
|
Vulkan: Fix size_t warning in TextureVk.
Bug: angleproject:2740
Change-Id: I5f942e3add90b0cbf82aff7280d3a256ee60ac3b
Reviewed-on: https://chromium-review.googlesource.com/1142381
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d691aeeb
|
2018-07-11T16:32:06
|
|
Vulkan: Implement GL_CHROMIUM_copy_texture with CPU copies.
BUG=angleproject:2723
Change-Id: Ic3905531d3e91f94ff0ce10a09ca5dcdf643e21f
Reviewed-on: https://chromium-review.googlesource.com/1134084
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d9618bf4
|
2018-06-24T19:57:31
|
|
Vulkan: prepare for buffer format fallbacks.
Generate code for buffer fallbacks as well as texture fallbacks.
No functional change.
BUG=angleproject:2405
Change-Id: I9f30a2cbb3cd9ba1d18474f99cba434b030b0232
Reviewed-on: https://chromium-review.googlesource.com/1113026
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
21061026
|
2018-07-12T23:56:30
|
|
Vulkan: Use angle::Result error handling.
Introduces a vk::Context class to contain an error handler and Renderer
pointer. This abtracts the common code path for ContextVk + DisplayVk.
Removes vk::Error in favor of the POD angle::Result class. There are a
few remaining usages of gl::Error that will have to be cleaned up when
we can change the front-end APIs.
Bug: angleproject:2713
Change-Id: I5e68f223d595c6c561b59d6a85759e5738ed43c6
Reviewed-on: https://chromium-review.googlesource.com/1128924
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
1617e69e
|
2018-07-11T11:08:19
|
|
Vulkan: Implement depth/stencil blit with flip of the viewport
- This makes all end2end tests pass successfully on Win/Nvidia
with viewport flipping enabled.
Bug: angleproject:2673
Change-Id: I031c0a0f5fb0aede58b59479e57c2c127bcb964c
Reviewed-on: https://chromium-review.googlesource.com/1133703
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
eebe2190
|
2018-07-11T09:01:18
|
|
Vulkan: Clean up Error usage.
* Adds a nodiscard to the Error class.
* Fixes the places where Error was discard.
* Uses more vk::Error instead of gl::Error.
This enables the Vulkan back-end Error refactoring.
Bug: angleproject:2713
Change-Id: I09606d965e8b7cfd341ad7fb95cf029b9d694ef4
Reviewed-on: https://chromium-review.googlesource.com/1128922
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
dec86230
|
2018-07-11T09:01:18
|
|
Generalize Context scratch buffer errors.
This refactor will allow us to generate different error types in
different backends. This makes Vulkan happy because it won't have to
generate gl::Errors and can stay with vk::Error.
Bug: angleproject:2713
Change-Id: I981402450f3b519d4f79851982547695d583355a
Reviewed-on: https://chromium-review.googlesource.com/1128921
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
ca2ff38b
|
2018-07-11T09:01:17
|
|
Refactor internal format pixel math methods.
This removes the use of the ErrorOrResult class from these methods.
This will enable more performant Error handling. Also cleans up the
ANGLE_TRY_CHECKED_MATH macro to be more general.
Bug: angleproject:2713
Change-Id: I349947d320907839ca88ec1f9251e6ddc3858a08
Reviewed-on: https://chromium-review.googlesource.com/1128920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
aa2126c4
|
2018-07-09T15:36:36
|
|
Vulkan: Fix all copyTexImage/copySubTexImage cases with Y flip
- Validated by running:
-functional_texture_specification_basic_copytexsubimage2d_*
-functional_texture_specification_basic_copyteximage2d_*
With the flip flag enabled.
Bug: angleproject:2673
Change-Id: I5a3041af79f9316256b0650ab7e3fd0e086e46e3
Reviewed-on: https://chromium-review.googlesource.com/1129820
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c94ba1d5
|
2018-06-18T11:26:28
|
|
Vulkan: Enable a bunch of texture related tests
Also adds a small bugfix in
PixelBuffer::stageSubresourceUpdateFromFramebuffer where we weren't
using the right format for the pack pixels params. The format should
be unsized so that the fastcopyfunc / colorwritefunc / colorreadfunc
are found correctly if needed when packing pixels.
Bug: angleproject:2653
Bug: angleproject:2501
Change-Id: Ie4aacc623ddc9583360ab0c99be19d3db2bdbf44
Reviewed-on: https://chromium-review.googlesource.com/1104395
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f6e160fa
|
2018-06-12T10:13:57
|
|
Vulkan: Don't use swizzle state when its not needed
Enables a bunch of dEQP tests in the functional.fbo.render.* namespace.
Bug: angleproject:2597
Change-Id: I1a06b335d5daf2987df52c460903081860887ce9
Reviewed-on: https://chromium-review.googlesource.com/1097596
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2f3f4141
|
2018-05-30T08:27:19
|
|
Vulkan: Fix texture completeness issues
The fix is to skip updates that are queued that are not valid for the
current image description. We keep these around in case they are used
in a later usage of the same texture but we issue a warning telling the
user that memory will be used indefinitely until they use that data.
Bug: angleproject:2596
Change-Id: I8c20fffbd473ae8e2e9d2123a49b675b824a9bf6
Reviewed-on: https://chromium-review.googlesource.com/1078913
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
05cd6dfc
|
2018-05-24T15:51:29
|
|
Vulkan: generateMipmaps with vkCmdBlitImage when possible
Bug: angleproject:2502
Change-Id: Ib32a128a453749c59d751e996017a8a6e2a9972e
Reviewed-on: https://chromium-review.googlesource.com/1072550
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
c57ee259
|
2018-05-30T19:53:48
|
|
Vulkan: Clean up object releasing APIs.
This cleans up the confusing releaseResource/releaseObject pair in the
RendererVk class. It also makes getQueueSerial private in ResourceVk
but keeps a public isResourceInUse API for external use.
Bug: angleproject:2539
Change-Id: I6b4f24db16e36130a85ef03fc2c3b26d8d9e1fba
Reviewed-on: https://chromium-review.googlesource.com/1069291
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
5dca651f
|
2018-05-30T10:53:51
|
|
Vulkan: Make Resource's updateSerial private.
This simplifies the API from the calling resource classes. This method
is called internally instead. beginWriteResource and
appendWriteResource both call updateSerial internally.
Additionally this removes hasStartedRenderPass and instead returns a
boolean from appendToStartedRenderPass indicating success.
Bug: angleproject:2539
Change-Id: Idcf72e6a80dde90e83dabc64644051bb536c6b12
Reviewed-on: https://chromium-review.googlesource.com/1066554
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c20b950e
|
2018-05-24T09:30:17
|
|
Vulkan: Fix clear of specific mip level was clearing all mip levels
Bug: angleproject:2502
Change-Id: Iffa012dce14584318c4dfd3d9b3a304291c9cebf
Reviewed-on: https://chromium-review.googlesource.com/1070666
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
22695bf5
|
2018-05-22T15:52:08
|
|
Vulkan: Support cube mimaps generation
Bug: angleproject:2502
Change-Id: I953d99d04608cec04aad824b8b38f388ed1e4c2b
Reviewed-on: https://chromium-review.googlesource.com/1069544
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c5181706
|
2018-05-17T09:44:42
|
|
Vulkan: generateMipmaps for 2D textures
- This implements cpu-only mipmaps generation.
To do in the next CLs:
- Cube textures support
- GPU faster path with vkCmdBlitImage
- Find the bug with clearing of level 0 mips.
- Investigate the intel linux specific bug.
Bug: angleproject:2502
Change-Id: Iecd73cb45ebc9c79ce6291c4529eb27330b51e2c
Reviewed-on: https://chromium-review.googlesource.com/1064194
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
316c6065
|
2018-05-29T10:49:45
|
|
Vulkan: Call GraphResource instead of GraphNode.
We don't need to use the CommandGraphNode class directly. This CL
consolidates our code so we never call the GraphNodes class directly.
Instead we call operations on GraphResource. This should simplify the
interaction with APIs from the various graph and dependency management
classes in the Vulkan back-end.
A new concept of 'starting' vs 'appending' commands is introduced.
Appending tries to avoid starting new command buffers when possible.
Should not change how the graphs are constructed, and mostly be a
refactoring change. There may be minor behaviour changes to some
commands.
Bug: angleproject:2539
Change-Id: Ia971e5cacb1164b9b3b22fa4a0a55b954d81f10e
Reviewed-on: https://chromium-review.googlesource.com/1052068
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
bcf467f2
|
2018-05-23T09:46:00
|
|
Vulkan: Encapsulate RenderTargetVk.
This makes the members private and adds more functionality. This moves
more responsibility out of vk::CommandGraphNode and also makes the
RenderPass init in the CommandGraphNode class better encapsulated.
Bug: angleproject:2539
Change-Id: Ia16f3f39cf011548c6473805b8b28e284808e856
Reviewed-on: https://chromium-review.googlesource.com/1040279
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
58675016
|
2018-05-22T14:54:07
|
|
Vulkan: Refactor CopyTexImage to use readPixelsImpl.
It turns out it won't be easy to just use the RenderTargetVk and
CommandBuffer with the Command Graph refactor. Better to use the
FramebufferVk directly.
Also cleans up a few incidental style issues.
Bug: angleproject:2539
Change-Id: I73c2767072a84e9e5042361c7bdf4e9aef0f8ac7
Reviewed-on: https://chromium-review.googlesource.com/1066471
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
31d3deb4
|
2018-05-18T18:32:16
|
|
Add `formatType` arg to computeSkipBytes.
Fix texture upload format tests:
- Format tests should definitely run on ES3 also.
- Also set filters to NEAREST since some formats aren't filterable.
- Fix RGB9_E5 test reference encoding and add a test for it.
- True int/uint textures require i/usamplers.
Bug: angleproject:2576
Change-Id: Ia5bac34cdee6554a88db339de443689a71a0cf70
Reviewed-on: https://chromium-review.googlesource.com/1068142
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
534b00db
|
2018-05-18T08:16:53
|
|
Vulkan: readPixels improvement - use DynamicBuffer
Reintroduce the change that was previously reverted here:
https://chromium-review.googlesource.com/c/angle/angle/+/1064770
This includes a tentative fix the issue on Android that prompted the revert,
we need to call invalidate on the mapped memory range before we read it on
the host side.
Bug: angleproject:2480
Change-Id: Id637bafa2845628ae38483c6fc8e6d7f26ad2d3e
Reviewed-on: https://chromium-review.googlesource.com/1066229
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
a9ab0f37
|
2018-05-17T17:03:55
|
|
Vulkan: Fix DynamicBuffer usages, need to use specific alignment
The alignment used to allocate VkBuffers in the VkBuffer needs to be at
least the size of the nonCoherentAtomSize defined in the limits of the
VkDevicePhysicalProperties. The latest roll of the
vulkan-validation-layers added that check and caused a bunch of errors.
This is fixing them.
Bug: angleproject:2565
Change-Id: Ia2ad506dce7966adb6220c52ea891903922c47d0
Reviewed-on: https://chromium-review.googlesource.com/1064950
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dd565786
|
2018-05-18T11:39:49
|
|
Revert "Vulkan: readPixels improvement - use DynamicBuffer"
The tentative fix did not fix the issue on Android Nexus 5x.
This reverts commit 8688bf46f1835dbe7fff4480350b1bc0ef02ff78.
NOTRY=true
Change-Id: If4a517028951a2232a87aeaf1045a5df731d17d3
Reviewed-on: https://chromium-review.googlesource.com/1065578
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
8688bf46
|
2018-05-18T08:16:53
|
|
Vulkan: readPixels improvement - use DynamicBuffer
Reintroduce the change that was previously reverted here:
https://chromium-review.googlesource.com/c/angle/angle/+/1064770
This includes a tentative fix the issue on Android that prompted the revert.
Bug: angleproject:2480
Change-Id: I04be55d9dead00500adaa5f56458cb93957f2535
Reviewed-on: https://chromium-review.googlesource.com/1065799
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6c6c76c0
|
2018-05-17T18:45:06
|
|
Revert "Vulkan: readPixels improvement - use DynamicBuffer"
This reverts commit 82a420bb9af221e659b9510aed6791a87ac97b25.
Reason for revert: breaks readPixels on Android, probably because memory there is not host coherent by default.
Original change's description:
> Vulkan: readPixels improvement - use DynamicBuffer
>
> - Instead of using a new Staging image everytime, we now
> just use a DynamicBuffer that should be bit less wasteful.
>
> Bug: angleproject:2480
>
> Change-Id: I09edfb16f6ec49a0ca320d9e5dd9ce34e9dbf99e
> Reviewed-on: https://chromium-review.googlesource.com/1059452
> Commit-Queue: Luc Ferron <lucferron@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,lucferron@chromium.org
Change-Id: Id7c493915ec7131f5202a7224267a79cd53007d2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2480
Reviewed-on: https://chromium-review.googlesource.com/1064770
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
82a420bb
|
2018-05-15T12:55:21
|
|
Vulkan: readPixels improvement - use DynamicBuffer
- Instead of using a new Staging image everytime, we now
just use a DynamicBuffer that should be bit less wasteful.
Bug: angleproject:2480
Change-Id: I09edfb16f6ec49a0ca320d9e5dd9ce34e9dbf99e
Reviewed-on: https://chromium-review.googlesource.com/1059452
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f299a378
|
2018-05-14T14:44:54
|
|
Vulkan: Implement copyImage and enable all tests for it
Bug: angleproject:2500
Change-Id: I9066861ed4db0330754b32995ed82c658d66a590
Reviewed-on: https://chromium-review.googlesource.com/1058034
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
daf7ace5
|
2018-05-14T13:44:15
|
|
Vulkan: Finish implementation of the copySubImage
- Enables all dEQP tests left for copySubImage.
Bug: angleproject:2501
Change-Id: I8ae301a94e9039f24e0a20b8fd4afdf7e65659f7
Reviewed-on: https://chromium-review.googlesource.com/1057904
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
018709fd
|
2018-05-10T13:53:11
|
|
Vulkan: Basic support of copySubImage
- Implement basic path that does a cpu readback for everything and
establish conformance for every case except the ones that need
conversion.
- Enables most copy sub image dEQP tests.
Bug: angleproject:2501
Change-Id: Ib67c184894625dde850f320c40fe51fe70ba974f
Reviewed-on: https://chromium-review.googlesource.com/1054387
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2a849bf3
|
2018-05-10T13:19:11
|
|
Vulkan: Pre-work for copyImage/copySubImage features
- Add vkCmdCopyImageToBuffer support in CommandBuffer
- Add a new function in the PixelBuffer to support staging changes
coming from an image.
Bug: angleproject:2500
Bug: angleproject:2501
Change-Id: Ic29101391edc6f25a71dcd318bc8a72b2ae1a054
Reviewed-on: https://chromium-review.googlesource.com/1054104
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
90968360
|
2018-05-04T08:47:22
|
|
Vulkan: Incomplete textures support
2D multisample is out of scope since its ES 3 only.
Bug: angleproject:2499
Change-Id: Id5f81d713a2882ba2a91b7d3f281d71a3e9289f4
Reviewed-on: https://chromium-review.googlesource.com/1046786
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
61859817
|
2018-05-09T14:17:39
|
|
Vulkan: Fix use-after-free with DynamicBuffer.
The implementation of DynamicBuffer before my changes could have some
issues in the following use case:
- Allocate buffer 1 for Texture 1 (with size as big as the full buffer
size)
- Allocate buffer 2 for Texture 2 (triggers creation of a new underlying
BufferVk and releases the buffer 1 to the Renderer)
- Render with Texture 2 (texture 1 hasn't been flushed yet)
- swap buffers (causes garbage in the renderer to be cleaned up)
- Try rendering with Texture 1, and you'll get an error stating that
the buffer we're trying to copy is not valid (because its already been
freed).
This set of changes:
- Add a new test that specifically triggers this case.
- enables the texture.filtering.cube* tests in dEQP.
- Fixes the issue by adding a manual releasing pattern of the buffers
in DynamicBuffer.
Bug: angleproject:2505
Change-Id: I207ce4a694016766f008cca67d82b252f460e0df
Reviewed-on: https://chromium-review.googlesource.com/1052551
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
7348fc5b
|
2018-05-09T07:17:16
|
|
Vulkan: Clear to opaque black instead of transparent
This is a problem when we emulate RGB8 with RGBA8.
Bug: angleproject:2536
Change-Id: I5665e513ef0138bc56f52ba35342378d8392989f
Reviewed-on: https://chromium-review.googlesource.com/1051687
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fa7503ca
|
2018-05-08T11:25:06
|
|
Vulkan: Support EXT_texture_storage
This is a prerequisite to support incomplete textures.
Bug: angleproject:2536
Change-Id: Ica40bbd185a67253f457148007b08f6735da788c
Reviewed-on: https://chromium-review.googlesource.com/1050308
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
b221486a
|
2018-04-26T07:25:48
|
|
Vulkan: Fix TexSubImage2D state change test.
Was simply a matter of triggering a new write node in the subImage
call.
Bug: angleproject:2495
Change-Id: I06334ba6ee816f671e5c599c8e8f079f56adb25e
Reviewed-on: https://chromium-review.googlesource.com/1028729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
1a186b16
|
2018-04-24T15:25:35
|
|
Vulkan: Fix issue with texsubimage2d barriers
Also re-enable the Windows AMD tests that were suppressed because of
that bug.
Bug: angleproject:2492
Change-Id: Ie9b5eb4c5705bbb390c3899fe4c66d3e47eff00d
Reviewed-on: https://chromium-review.googlesource.com/1026461
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
10434f67
|
2018-04-24T10:06:37
|
|
Vulkan: Issue when drawing with a texture and rebinding after.
Added 2 tests in StateChangeTest.cpp to validate the behavior and
reproduce the issue I saw in dEQP.
Bug: angleproject:2479
Change-Id: I29c3da0474ec2b13a10fc266284cb19a07675da2
Reviewed-on: https://chromium-review.googlesource.com/1025951
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
33e05bab
|
2018-04-23T15:12:34
|
|
Vulkan: Bugfix in TextureVk::setSubImage and DynamicBuffer
Bug 1) The offset wasn't plumbed through for setSubImage.
Bug 2) The DynamicBuffer allocation sometime allocates a bit more
than requested, but we were using the size requested as the next offset
instead of the actual allocated size. This could get us in a situation
in certain corner cases where the next allocation would be done on the
said buffer instead of using a new allocation as it should.
Also enables a bunch of new texture_specification_* tests that were
unable to run successfully without these 2 bug fixes.
Found a weird issue on WIN AMD only and suppressed these tests for now.
Will investigate part of the same bug number as a separate change.
Bug: angleproject:2495
Bug: angleproject:2492
Change-Id: I490b1bf2d1795b7a1033365e29eac12a8bc50bff
Reviewed-on: https://chromium-review.googlesource.com/1024380
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
66410530
|
2018-04-20T12:47:45
|
|
Vulkan: Textures mipmaps support
Note that generate mipmaps is not yet supported, but uploading mipmaps
is. This also enables 64 tests in dEQP gles2 to validate the changes.
While trying to enable tests in functional.texture.mipmap.*, I found
an issue where the graph ends up in an invalid state and triggers and
assert in onReadResource in ContextVk.cpp:188. It seems like an
unrelated bug to mip maps, I will investigate to enable these tests
separately in a following CL.
Bug: angleproject:2479
Change-Id: If51776d8ef3d994bee620d6a1cf982bb51838ff0
Reviewed-on: https://chromium-review.googlesource.com/1022232
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
20610901
|
2018-04-19T14:41:13
|
|
Vulkan: Implement Texture wrap modes and non-mipmapped filtering modes
Also added a test to validate we can change the filter mode between
two draws successfully.
Bug: angleproject:2478
Change-Id: I80730cdafc6bbdbf61839c6c8eb98d85f7423d92
Reviewed-on: https://chromium-review.googlesource.com/1020084
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4bba74f0
|
2018-04-19T14:40:45
|
|
Refactor Texture::syncState to pass down the Context
Also returning a gl::Error everywhere.
Bug: angleproject:2478
Change-Id: Ic8cae0ee7aee318bb95b3588044c34c62707b578
Reviewed-on: https://chromium-review.googlesource.com/1020083
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
a7be1f77
|
2018-04-13T15:16:26
|
|
Vulkan: Rename StagingStorage to PixelBuffer.
This more closely matches the OpenGL "Pixel Buffer" concept.
Bug: angleproject:2318
Change-Id: I930b24f68cde2995488737908aae469c86b74092
Reviewed-on: https://chromium-review.googlesource.com/1012456
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
20fa8d5c
|
2018-04-15T10:09:32
|
|
Vulkan: Implement cube map texture sampling.
This changes the TextureVk class to have a queue of staging
copies, instead of a single copy at a time. This will allow
us to upload multiple sub regions of a texture image at once
when we need to resolve the Image at sampling time.
Enables the remainder of the texture.format tests, and all
non-mipped tests in the texture.size tests. Also updates the
expectations with the bug number for mipmap support.
Bug: angleproject:2318
Change-Id: Ie55f8f2dc24d7b133ad735e37f0f78937f022b5b
Reviewed-on: https://chromium-review.googlesource.com/980775
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cc129377
|
2018-04-12T09:13:18
|
|
ImageIndex: Consolidate layer/cube face.
In terms of the Texture or Image resource, a cube face
refers to a layer of a 2D texture. This layer has a special
meaning for cube textures, but it is represented as a layer
with a layer index. Cube array textures are no different,
they just use a different indexing scheme for the array
layers.
This also cleans up the ImageIndex helper to have a class
structure with private data, and cleans up a few cases to
use generic Make functions and iterators where they were
setting properties of the index directly.
This will make it easier to have ImageIndexes address
entire levels of a Cube map in the future, and makes the
layer count logic in Vulkan cleaner.
Bug: angleproject:2318
Change-Id: Iea9842e233f974a9896282ca224cb001f7882bd1
Reviewed-on: https://chromium-review.googlesource.com/987525
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c4f27e4b
|
2018-03-31T14:19:18
|
|
Texture: Pass ImageIndex to relevant methods.
The Vulkan back-end will be using this helper struct, so make it
available everywhere. This cleans up a lot of the code for D3D.
Potentially in the future we could generate these in the entry
points if we supported packing multiple arguments into one.
Also changes a few parameter types to GLint for compatibility.
Also updates the Vulkan Texture implementation check the stored
vk::Format on setImage changes.
Bug: angleproject:2318
Change-Id: I57cea4a42483ab51859229517d783b58f206b8e7
Reviewed-on: https://chromium-review.googlesource.com/985203
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
26084d0a
|
2018-04-09T13:44:04
|
|
Vulkan: Create TextureVk's Image lazily.
This defers the actual Image initialization until the Image is used
as either a Framebuffer Attachment or OpenGL Texture object. This
will allow us to construct an Image from multiple sub resources, like
when we're initializing a mip chain, or a cube map texture.
Also adds a helper "hasDepthOrStencilBits" function to angle::Format.
Bug: angleproject:2318
Change-Id: Ife861560216581a90fc6da32a583f69886c7daea
Reviewed-on: https://chromium-review.googlesource.com/985202
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
858c1ccc
|
2018-03-31T14:19:13
|
|
Vulkan: Move image layout into helper.
Now that we're using the helper everywhere, we can clean up the
vk::Image class and move the layout tracking into ImageHelper.
Bug: angleproject:2318
Change-Id: I9636835a2a3a76f181dac629bd4182bc5815cdee
Reviewed-on: https://chromium-review.googlesource.com/980774
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
bc54342b
|
2018-03-30T10:43:19
|
|
Vulkan: Make RenderTargetVk use ImageHelper.
Bug: angleproject:2318
Change-Id: I9bc4bb7f5bcd3029a31c8570809f253cf5e4b12a
Reviewed-on: https://chromium-review.googlesource.com/980773
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
93edca16
|
2018-03-30T10:43:18
|
|
Vulkan: Add an Image helper class.
This class wraps a lot of the common functionality of a vk::Image.
It keeps an associated DeviceMemory and ImageView.
Eventually we can probably merge this class with RenderTargetVk. We
can also use it to implement the same functionality between
Renderbuffer and Texture and abstract different storage types, like
2D and Cube.
Bug: angleproject:2318
Change-Id: I39239f47b483cfb96290a15b06edd264f7f4bb34
Reviewed-on: https://chromium-review.googlesource.com/980772
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
49cef9a5
|
2018-03-21T17:28:53
|
|
Vulkan: Support of A8 textures
Bug:angleproject:2358
Change-Id: I56a86de7cc21dee00a95f1d054d2940262797ca7
Reviewed-on: https://chromium-review.googlesource.com/974305
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
60284223
|
2018-03-20T16:01:44
|
|
Vulkan: Support of npot textures
The bug was with the readPixels not using the rowPitch, and not really
with the support of npot.
Bug:angleproject:2413
Change-Id: I09c0d87768bc29d3beb452ae83996cd4d2b4a600
Reviewed-on: https://chromium-review.googlesource.com/971830
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
690c8eb7
|
2018-03-12T15:20:03
|
|
Framebuffer: syncState before internal format query.
Since querying the internal format of an attachment might need ot look
at the RenderTarget for some back-ends, or otherwise flush attachment
changes, we should call syncState internally. This means that we can't
mark these queries as const.
Bug: angleproject:2372
Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb
Reviewed-on: https://chromium-review.googlesource.com/948784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5164b797
|
2018-03-06T09:10:12
|
|
Vulkan: Support GL_LUMINANCE and GL_LUMINANCE_ALPHA
The dEQP tests cannot be turned on before immediate data for drawElements
is supported.
Bug:angleproject:2364
Change-Id: Id5fd6fbc0c74f2dba08341f36ca0091d540f4ed8
Reviewed-on: https://chromium-review.googlesource.com/951402
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
e4c5a23b
|
2018-03-02T21:00:31
|
|
Vulkan: Always use LOAD for RenderPass attachments.
The RenderPass load/store ops allow us to specify how we want to use
the data from the attachments. Previously we had the load op set to
CLEAR always, which would prevent us from doing multiple kinds of
operation. Using LOAD should conversatively work in any situation
as long as we can ensure each Image is cleared before we use it.
To this effect this patch also inserts a preliminary clear into each
Texture or Renderbuffer Image's initialization. We already had this
for Surfaces.
In the future we'll improve this by inserting proper load/store ops,
but this unblocks a lot more functionality in the interim.
Bug: angleproject:2361
Change-Id: I7610eaa39d81b23dd74b4a24b7f28a66a6dfffc6
Reviewed-on: https://chromium-review.googlesource.com/948782
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
99d492c2
|
2018-02-27T15:17:10
|
|
Use packed enums for the texture types and targets, part 2
This completes the refactor by using the packed enums in the gl:: layer
and in the backends.
The packed enum code generation is modified to support explicitly
assigning values to the packed enums so that the TextureTarget cube map
faces are in the correct order and easy to iterate over.
BUG=angleproject:2169
Change-Id: I5903235e684ccf382e92a8a1e10c5c85b4b16a04
Reviewed-on: https://chromium-review.googlesource.com/939994
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7b21381e
|
2018-03-06T10:13:13
|
|
Vulkan: Support changing in-flight Renderbuffers.
Bug: angleproject:2347
Change-Id: I9bb1494a960969bb6e7c8656c27c7c180ddba069
Reviewed-on: https://chromium-review.googlesource.com/922458
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dc0cdba8
|
2018-02-28T00:42:20
|
|
Vulkan: Fix Texture attachment state changes.
This implements a notification to the Framebuffer that an attachment
had a state change that might require recreating the VkFramebuffer.
This implementation is much simpler than the prior method with
signal notifications. Only currently implemented for TextureVk but
will also be implemented for RenderbufferVk.
Bug: angleproject:2347
Change-Id: I05f7da4132f6ed2bda02671e8ba5ee9805252928
Reviewed-on: https://chromium-review.googlesource.com/930024
Reviewed-by: Luc Ferron <lucferron@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1f46bc12
|
2018-02-20T16:09:43
|
|
Vulkan: Add CommandGraph class.
This also renames CommandBufferNode to CommandGraphNode. It also
renames some of the intenal members to more closely represent the
tree relationships (parents/children). This should clean up the
command graph classes and make them a bit easier to understand.
Bug: angleproject:2361
Change-Id: I024bffcc7f4157c78072ef902a3c40a07a08b18a
Reviewed-on: https://chromium-review.googlesource.com/922121
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
57fbfd80
|
2018-02-14T12:45:34
|
|
Vulkan: Pass RendererVk to Allocate helpers.
Passing the Renderer pointer instead of the Context pointer makes
these methods a bit easier to work with from the "EGL" sections of
the code. This is a refactoring-only change to aid the Depth/Stencil
implementation.
Bug: angleproject:2357
Change-Id: Icbcc72a1daff4edd947a21672744498781cfc064
Reviewed-on: https://chromium-review.googlesource.com/919523
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0e65454d
|
2018-02-07T14:50:06
|
|
Vulkan: Fix circular dependency with resource updates.
The old implementation would try to keep recording draw commands to
the same framebuffer write operation even if the vertex array buffer
data changed. This would lead to a broken dependency graph. Fix this
by forcing any current render operations to create a new node in this
case, giving a correct command graph.
Old design:
- render (creates a CommandBufferNode A)
- update buffer (creates a CommandBufferNode B which happens after A)
- render (to CommandBuffer A, and gives a circular dependency with B)
New design
- render (CommandBufferNode A)
- update buffer (CommandBufferNode B, happens after A)
- render (CommandBufferNode C, happens after B)
This also renames some methods to try to clarify them.
Bug: angleproject:2350
Change-Id: I6559bed4ed3f58f68771662422c5bef6a505282b
Reviewed-on: https://chromium-review.googlesource.com/907416
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
57dd97aa
|
2018-02-06T17:10:49
|
|
Vulkan: Add helper for allocating image memory.
Also refactors some memory index searching code that was duplicated.
This will lead the way to having more code reuse for our Renderbuffers
implementation in Vulkan, and for other types of Texture.
Bug: angleproject:2347
Change-Id: I49cbd77328c01f945d66f92e6ec4ba7c552abeff
Reviewed-on: https://chromium-review.googlesource.com/904684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
bd6ae4aa
|
2018-01-29T15:51:18
|
|
Vulkan: Don't create zero-sized textures.
Make sure the old resources are deleted but do not create new resources.
BUG=angleproject:2161
Change-Id: Ia6685e5c67b160d9bcd503983aee9607b2bd402c
Reviewed-on: https://chromium-review.googlesource.com/891644
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3c424b48
|
2018-01-19T12:35:09
|
|
Vulkan: Add vk_cache_utils.h.
This file contains the Pipeline and RenderPass cache utils.
Also renames renderervk_utils.h to vk_utils.h and the format utils
file.
Refactoring change only.
Bug: angleproject:2163
Change-Id: I5113a9a2c6f0b0960d38e6c2d8e391fa2d9f5f6a
Reviewed-on: https://chromium-review.googlesource.com/876505
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
49ac74bd
|
2017-12-21T14:42:33
|
|
Vulkan: Implement command re-ordering.
This introduces a new CommandBufferNode class. Nodes are linked
together to form a graph based on their dependencies. When the app
triggers a readback or swap, the graph is flushed entirely. This
sends the queued ANGLE Vulkan work to the Vulkan queue which is
then processed on the GPU with the right dependencies.
This design allows us to save on some unnecessary RenderPass creation
and also allows us to know what load/store ops to use. It also allows
us to take advantage of the Vulkan automatic RenderPass transitions
for performance. Load/Store ops and automatic transitions will be
implemented in later patches.
Bug: angleproject:2264
Change-Id: I0e729c719e38254202c6fedcede4e63125eb4810
Reviewed-on: https://chromium-review.googlesource.com/780849
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5b18f487
|
2017-11-30T17:24:22
|
|
Vulkan: Implement basic TexSubImage2D.
This also adds a test for updating a Texture that is in-use. This will
ensure our Texture updates occur at the right time when we're
implementing command re-ordering.
Bug: angleproject:2264
Bug: angleproject:2200
Change-Id: Id6040d7238eca031e3cc7b27564d8ea815bf3d73
Reviewed-on: https://chromium-review.googlesource.com/801031
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
7f738d4e
|
2017-11-20T17:06:27
|
|
Vulkan: Refactor CommandBuffer helper class.
This makes the base vk::CommandBuffer class as close to the Vulkan
API as possible. It moves the extra functionality and state tracking
to a CommandBufferAndState helper class.
Also no longer stores a reference to a CommandPool in a CommandBuffer.
Eventually we won't need to free CommandBuffers explicitly, since they
can be freed en-masse by deallocating the CommandPool on a flush.
Bug: angleproject:2200
Change-Id: I5095fe89e8da935ff8273b1a402ccfd6a3ffe0df
Reviewed-on: https://chromium-review.googlesource.com/778184
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
92019431
|
2017-11-20T13:09:34
|
|
Make conversion from GL types to native bools consistant.
Some places would compare with "== GL_TRUE" and others with "!= GL_FALSE".
This behaviour is not in the OpenGL spec but "!= GL_FALSE" is the most
standard and follows the same rules as C and C++.
Remove un-necessary validation that params are either GL_TRUE or
GL_FALSE.
Update some internal storage from GLboolean to bool.
BUG=angleproject:2258
Change-Id: I12adbe2d24318a206521ca6ad1099ee7e2bf677e
Reviewed-on: https://chromium-review.googlesource.com/779799
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d33c77c0
|
2017-11-09T13:08:30
|
|
Vulkan: Use correct transfer access mask in layout change.
When using a transfer destination, we should be using the transfer
access mask, not bottom of pipe or other bits.
Uncovered by using a newer version of the layers SDK.
BUG=angleproject:2237
Change-Id: I3ebcca707ac8889d2ece099e3765f5b0ca3dfdbc
Reviewed-on: https://chromium-review.googlesource.com/760636
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d7be50a
|
2017-10-29T18:06:50
|
|
Vulkan: Upgrade RGB8 textures to RGBA8.
It's unlikely any real hardware supports this format. Hack in a fixed
fallback format for RGB8. We could consider implementing conditional
support by checking the VkPhysicalDevice properties.
This extends the Vulkan format support info in the RendererVk class
to distinguish between a Buffer and Texture format. This is closely
related to how Vulkan has separate format support bits for Linear
Textures, Optimal Textures, and Buffers. We probably won't need to
keep separate caps for Linear/Optimal, but it makes sense for Buffers
to eventually use the same format tables.
BUG=angleproject:2207
Change-Id: I8d427a99db15b314b13dd99f31aa1ac5055f0881
Reviewed-on: https://chromium-review.googlesource.com/742376
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
6a89d227
|
2017-11-02T11:59:51
|
|
Vulkan: Refactor format table.
This moves the Vulkan format table to dynamically generated, but
keeps it easily indexed. Because Vulkan format support is not able
to be fully determined until runtime, we'll need a dynamic way to
build the table. The most straight-forward way seems to be to keep
a copy of the full table in the Renderer. Initializing it once at
startup makes it a bit slower to init, but saves us from any threading
shenanigans with lazy init when (and if) we ever support multi-
threaded Contexts.
BUG=angleproject:2207
Change-Id: Ib1ac879daa562c7ad1a965390be401fa2314e42c
Reviewed-on: https://chromium-review.googlesource.com/742374
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e1f3ad4d
|
2017-10-28T23:00:42
|
|
Vulkan: Add vk::GetImpl helper.
Using reflection helpers, we can avoid having to pass the return
type to the GetImpl method.
BUG=angleproject:2200
Change-Id: Id160fbdf0ea8b3de2f219d3cc92394c678189a48
Reviewed-on: https://chromium-review.googlesource.com/742371
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
1b038241
|
2017-11-01T15:14:36
|
|
Vulkan: Support Texture redefinition.
Because initializing the texture can queue a copy from a staging
vk::Image, we must ensure we're not in a render pass. To make this
easier we move the current render pass tracking into the RendererVk
from the FramebufferVk class. (Note: in the future we will have
deferred command submission and this will become unnecessary.)
BUG=angleproject:2200
Change-Id: Ide8d4d70b50efbd79bbfa7006ad75cbc57cdf4c7
Reviewed-on: https://chromium-review.googlesource.com/741549
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e88ec8ee
|
2017-10-31T17:18:14
|
|
Vulkan: Refactor GarbageObject.
Instead of allocating a small bundle for deferred deletion, store a
small triple of {Serial,VkHandle,HandleType}. The HandleType can be
used in a generic way to release the VkHandle, without needing to
store a pointer and use a virtual call.
BUG=angleproject:2200
Change-Id: I30925c2f50fd11dafb1b986ced7d279a7dde827b
Reviewed-on: https://chromium-review.googlesource.com/741163
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
b79e7bb6
|
2017-10-24T13:55:50
|
|
Vulkan: Implement simple render-to-texture.
This was mostly working already, just needed to set up a few entry
points.
BUG=angleproject:2200
Change-Id: I9c13d6d4dd42f23c69a58e42e07e3e28877671a1
Reviewed-on: https://chromium-review.googlesource.com/734237
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
5547b384
|
2017-10-23T18:16:01
|
|
Vulkan: Implement simple static textures.
After this change, the SimpleTexture2D sample mostly runs.
BUG=angleproject:2167
Change-Id: Ie6d56f890b1aede329e11d1e987d0f8c17a2d0b4
Reviewed-on: https://chromium-review.googlesource.com/720072
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
815a6c9a
|
2017-10-21T14:33:04
|
|
Vulkan: Fix copyImage region parameters.
In cases where we were reading back more than one pixel in ReadPixels,
and in some cases for texture init, we weren't using the correct
parameters to vkCmdCopyImage. This CL fixes both of those by using
more correct copy regions, and fixing the row and depth pitch
computation using vkGetImageSubresourceLayout.
BUG=angleproject:2167
Change-Id: Ib70217ed4a17be6b4b1b8aeec9a8a6199d210d88
Reviewed-on: https://chromium-review.googlesource.com/732190
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
035fd6b3
|
2017-10-03T15:43:22
|
|
Vulkan: Implement very basic textures.
This is a quick implementation which supports only one backing Image
and one type of ImageView at a time, for 2D texture only.
It also implements a helper class for finding compatible memory pools.
It's possible we can keep a cache of memory pool indexes given the
guarantees the Vulkan spec has on compatible memory types (see the
documentation for VkMemoryRequirements).
BUG=angleproject:2167
Change-Id: I1d7a8eaec90f240273ad75194e23430d6d4c5dc1
Reviewed-on: https://chromium-review.googlesource.com/680000
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
05b35b21
|
2017-10-03T09:01:44
|
|
D3D11: Lazy robust resource init.
This patch moves the robust resource init logic to the GL front-end.
Instead of initializing texture resources immediately on creation in
D3D11, it defers the clear until before a draw call in some cases, or
skips the update if we can determine if a texture (or other resource)
has been fully initialized.
Currently lazy init is only implemented for Textures, Renderbuffers,
and Surfaces.
Various places where lazy resource init is triggered:
* Framebuffer operations (Draw, Blit, CopyTexImage, Clear, ReadPixels)
* Texture operations (SubImage, GenerateMipmap, CopyTexImage)
Some efficiency gains remain to be implemented, such as when a
SubImage call fills the entire object. Similarly for Blit, and a few
other operations. In these cases we can skip lazy init as an
optimization. Edge cases with EGLImage are mostly untested.
BUG=angleproject:2107
Change-Id: I2bf3a69b1eae0d4feeb5b17daca23451f1037be8
Reviewed-on: https://chromium-review.googlesource.com/576058
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c564c070
|
2017-06-01T12:45:42
|
|
Pass gl::Context to impl methods instead of ContextImpl.
In some cases we might have to call back into the GL layer, passing
the Context, and if we just have a ContextImpl pointer this isn't
possible. It also removes the need for SafeGetImpl.
BUG=angleproject:2044
Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6
Reviewed-on: https://chromium-review.googlesource.com/516835
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4fd95d54
|
2017-04-05T11:22:18
|
|
Stop using FramebufferAttachment::Target.
Target includes the binding (DEPTH/STENCIL/COLOR), which is not useful
for many operations. Simplify this to just passing the mip/layer.
This allows us to stop using this internal struct in other classes.
BUG=angleproject:1635
Change-Id: Ic5a11781bf45fe7835437fa1e363c190b876d453
Reviewed-on: https://chromium-review.googlesource.com/469152
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8897afa1
|
2017-02-06T17:17:23
|
|
Pass Context around to Texture::copyImage.
Passing this through the chain will allow us to have access to the
platform methods, as well as be useful in the future for Vulkan.
BUG=angleproject:1660
Change-Id: I819984fceeb5a2a299aa54e59ef3b428f5f9c91f
Reviewed-on: https://chromium-review.googlesource.com/438684
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bddc46b4
|
2016-12-09T09:50:51
|
|
ES31: Implement multisampled Textures.
Implement TexStorage2DMultisample and getMultisamplefv entry point.
Also modify sample state for Textures and Framebuffers.
BUG=angleproject:1590
TEST=angle_unittests
TEST=angle_end2end_tests
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.sample_position
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_color_2d
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_depth_2d
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_tex
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_rbo
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_non_zero_level
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_high_sample_count
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_zero_sample_count
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_1_texture_2d
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_4_texture_2d
Change-Id: I8fa7bd4e73b95745858a3e16b1b92004b4a18712
Reviewed-on: https://chromium-review.googlesource.com/414309
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
22416868
|
2016-06-08T16:14:36
|
|
Add dirty bits for internal texture state.
Synchronize TextureGL internal state using the dirty bits.
TexturesBenchmark scores:
Before: 5051
After: 7639
Diff: +51.2%
BUG=angleproject:1386
Change-Id: Id04aef778a47175d1a284564495a646045855b4b
Reviewed-on: https://chromium-review.googlesource.com/393866
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9e54b5af
|
2016-05-25T12:57:39
|
|
Add Vulkan stubs.
Currently enabled for Windows by default.
BUG=angleproject:1319
Change-Id: I87921c579bee466465fb1e3f629bb3a40fdff659
Reviewed-on: https://chromium-review.googlesource.com/328730
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|